Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Growatt Wechselrichter
Einleitung
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
Vorraussetzung
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
<note tip>Beim D1-mini benötigt man keine Zusätzliche Beschaltung das Programmier USB-Kabel kann direkt am WR ebenfalls genutzt werden </note>
==== Installation ====
Bitte über <IP/status> einmal die JSON Datenblock abfragen und schauen welche Daten der WR bereitstellt
<note>der Nachfolgende Script ist für Modbus v1.24 und einem Growatt 600TL-x Einphasig ausgelegt </note>
* Als nächstes Abfragedatei erstellen
- Manuelle erstellen <code>sudo nano Growatt_JSON_read.sh</code>
- alternativ git clone <code>sudo git clone https://github.com/RaptorSDS/VZ_Growatt_JSON_read.git</code>
* Abfragedatei bearbeiten
<code>sudo nano Growatt_JSON_read.sh</code>
* darin folgenden Inhalt hinzufügen/editieren
<code>
#!/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
</code>
<note>Bitte IP und UUID an deine Gegebenheiten anpassen.</note>
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.
* Datei Speichern und ausführbar machen
chmod +x Growatt_JSON_read.sh
* Datei zu CRON hinzufügen (hier als Beispiel Raspberry Pi mit 1 minuten Intervall)
<code>*/1 * * * * /bin/bash /home/pi/Growatt_JSON_read.sh</code>
Grundsätzlich aktuallisiert der Wifi-Stick alle 5 sek die JSON-Daten