Moin
ich habe woanders ein Bash Script gefunden welches von einem Deye Wechselrichter die Leistung ausliest (Status.html). Funktioniert auch. Aber ich würde das gerne in eine JSON parsen damit ich das in OH einlesen kann
Ich habe versucht, die " in den Echo Befehl mit reinzupacken aber die landen nicht im JSON File
So sollte das JSON aussehen
{ "wechselrichter": [ { "name": "torum", "ablese": "08.02.2023 11:21", "value": 158 } ]}
und so kommt es immer raus
{ wechselrichter: [ { name: torum, ablese: 08.02.2023 11:55, value: 183 } ]}
Hier die BASH Datei
Wie muss ich die " maskieren damit ich die auch in die Datei schreibe?
Spoiler anzeigen
#!/bin/bash
#
# Einfaches script um die aktuelle Stromproduktion des Deye Wechselrichters über den internen Webserver auszulesen
# Der Wert findet sich in der Webseite <deye_ip>/status.html und die Variable ist webdata_now_p
# In der Webseite sind auch weitere Variablen, siehe Browser -> Seitenquelltext anzeigen
# Das script nutzt curl, es ginge aber auch mit wget
# IP Adresse und Zugangsdaten sind als Demo, bei Bedarf entsprechend ändern...
host="192.168.1.45"
user="USER"
password="PWD"
[definition='1','0']log[/definition]="/homes/deye/deye3.json"
ping -c3 "$host" > /dev/null 2>&1
if [ $? != 0 ]
then
echo "$host not available"
exit 1
fi
# 3 Versuche Datenabfrage
for i in 1 2 3
do
cp=$(curl -s -u "$user:$password" "$host"/status.html | grep "webdata_now_p = " | awk -F '"' '{print $2}')
if [ "$cp" != "" ]
then
DATETIME=`date "+%d.%m.%Y %H:%M"`
JSONInhalt="{ wechselrichter: [ { name: torum, ablese: "$DATETIME", value: "$cp" } ]}"
echo "$JSONInhalt" >"$[definition='1','0']log[/definition]"
exit 0
fi
sleep 3
done
# Wenn Abfrage nicht erfolgreich war
echo Datenabfrage nicht erfolgreich
BTW: Die beiden OpenDTU Platinen benötige ich nicht mehr
Wären verfügbar