Viele Growatt Wechselrichter werden mit einen WLAN, 4G oder Ethernet Stick verkauft bzw diese kann dazu erworben werden „Shine-Stick“.
Diese Sticks werden an einen RS-232 bzw an einem USB Anschluss betrieben, alternativ besitzen viele dieser WR eine RS-485 Schnittstelle .
Grundsätzlich läuft auf allen diesen Schnittstellen ModBus.
Leider stellt der orginal Wlan Stick keine direkten Daten zum auslesen bereit.
Viele Projekte haben sich der Growatt API Datenbank bedient um die Daten wieder aus der Cloud auszulesen.
Mitlerweile gibt es ein Projekt das auch den Stick selber erkundet hat und eine Lösung präsentiert.
In diesem Abschnitt beschreiben wir die Möglichkeit den WR ohne Cloud und Internet abzufragen.
Growatt WR mit modifizierten ShineWifi-X oder ShineWifi-S alternativ einen D1-mini (ch340) oder ESP32 (ch340)
Bitte dazu auf den einschlägigen Seiten Informieren wie man einen D1-mini programmiert
(der Orginal ShineWifi besitzt ebenfalls einen ESP8622 (ESP07s) Controller)
zusätzlich finden auf der Projektseite weitere information .
ShineWifi Mod
Bitte über <IP/status> einmal die JSON Datenblock abfragen und schauen welche Daten der WR bereitstellt
sudo nano Growatt_JSON_read.sh
sudo git clone https://github.com/RaptorSDS/VZ_Growatt_JSON_read.git
sudo nano Growatt_JSON_read.sh
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin #set -e bricht script ab wenn etwas nicht stimmt set -e #login daten host_pv="192.168.x.xx" UUID1="e4f6a700-xxx" UUID2="35edd970-xxx" host_db="192.168.x.xxx" TOTAL="" TODAY="" ACTUAL="" STATUS="" #read inverter JSON=$(curl -s $host_pv/status) #extract status STATUS=$(echo "$JSON" | grep -o '"InverterStatus":[0-9.]*' | cut -d ":" -f 2) #when status 1 inverter ready use than the other value if [ $STATUS != 0 ]; then #extract other TOTAL=$(echo "$JSON" | grep -o '"TotalGenerateEnergy":[0-9.]*' | cut -d ":" -f 2) #TODAY=$echo "$JSON" | grep -o '"TodayGenerateEnergy":[0-9.]*' | cut -d ":" -f 2) ACTUAL=$(echo "$JSON" | grep -o '"OutputPower":[0-9.]*' | cut -d ":" -f 2) #an DB senden #echo "SEND" wget -O - -q "http://"$host_db"/middleware/data/"$UUID1".json?operation=add&value="$TOTAL"" wget -O - -q "http://"$host_db"/middleware/data/"$UUID2".json?operation=add&value="$ACTUAL"" fi #print for Debug #echo "Today:"$DAY #echo "ACTUAL:"$ACTUAL #echo "Total:"$TOTAL
Dieses Script sendet nur die aktuellen Zählerstand und zusätzlich die Leistung an die Middleware.
Zeilen mit „#“ sind auskommentiert und können bei Bedarf genutzt werden für Debug oder um einen weitere Kanäle hinzuzufügen.
chmod +x Growatt_JSON_read.sh
*/1 * * * * /bin/bash /home/pi/Growatt_JSON_read.sh
Grundsätzlich aktuallisiert der Wifi-Stick alle 5 sek die JSON-Daten
Nachteile Vzlogger darf nicht als root laufen –> umstellung vzlogger siehe vzlogger „vzlogger als anderer Benutzer ausführen“
Bitte über <IP/status> einmal die JSON Datenblock abfragen und schauen welche Daten der WR bereitstellt
sudo nano Growatt_JSON_exec.sh
sudo git clone https://github.com/RaptorSDS/VZ_Growatt_JSON_read.git
der Inhalt sieht wie folgt aus
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin #!/bin/bash set -u set -e # Script: Growatt_JSON_exec.sh # Author: Tobias Baumann aka RaptorSDS # License: MIT # with help of OpenAI GPT-3.5 and VZlogger Group # idee by script for KOSTAL_Pico JSON VZlogger exec # Function to display script usage usage() { echo "Usage: $0 <hostname> <reading1> <reading2> ..." exit 1 } # Validate required arguments if [ "$#" -lt 2 ]; then usage fi # Extract hostname HOSTNAME="$1" shift # Extract readings READINGS="$*" #build URL URL="http://${HOSTNAME}/status" #echo $URL #get json JSON=$(curl --connect-timeout 5 -s "$URL") #first check status STATUS=$(echo "$JSON" | jq '. | to_entries[0].value') if [ "$STATUS" != 0 ]; then # process json for READING in $READINGS; do OUTPUT=$(echo "$JSON" | jq -r --arg readings "$READING" '.[$readings]') printf "%s = %s\n" "$READING" "$OUTPUT" done #else #echo "Inverter status is not 1" fi
chmod +x Growatt_JSON_exec.sh * Die Datei kan jetzt an einen Bekannt Ort kopiert werden bsp /etc/growatt/
{ "enabled": true, "allowskip": true, "interval": 60, "aggtime": -1, "aggfixedinterval": false, "channels": [ { "api": "volkszaehler", "uuid": "e4f6a700-xxxxx", "identifier": "TotalGenerateEnergy", "middleware": "http://localhost/middleware.php", "aggmode": "none", "duplicates": 43200 }, { "api": "volkszaehler", "uuid": "35edd970-xxxxx", "identifier": "OutputPower", "middleware": "http://localhost/middleware.php", "aggmode": "avg", "duplicates": 0 } ], "protocol": "exec", "command": "/etc/growatt/growatt_json_exec.sh 192.xxxx TotalGenerateEnergy OutputPower", "format": "$i = $v" },