Neue Firmware für den Shine-F, Software, Raspberry als Datengrab und Visualisierung
Die ewigen Verbindungsprobleme mit dem Growatt-Server, den ständigen abstürzen des Shine-F Sticks, pepaart mit den ungenauen Angaben in der App, haben mich dazu bewogen etwas eigenes zu programmieren. Der Einstieg war auf grund meiner doch begrenzten Kenntnisse sehr anstrengend ab lehrreich.
Nach der Demontage des Shione-F, wurde eine Reihe von Lötpunkten mit Beschriftung sichtbar. Ok das könnte unser Zugriff auf den Chip sein.
Der Chip entpuppte sich als ein ESP-07 welcher in der Arduino-Fangemeinde sehr bekannt ist.
In mir wuchs der Mut für ein Projekt und es schien mir machbar.
Was benötigen wir?
Als Hardware benötigen wir einen Raspberry als Datenspeicher. Sicher geht auch ein anderer Rechner, Server.
Für das Flashing, die Verbindung vom Computer zum Shine-F wird einen UART-TTL USB Adapter mit CH340G Konverter für 3.3V/5V mit Jumperkabel benötigt. Ein direktes beschreiben über die USB-Schnittstelle vom Shine-F geht nicht!
Ich habe hier diesen genommen
Folgende Software wird auf dem Raspberry benötigt. Ein Betriebssystem, ich habe Raspbian genommen. Als Datenbank werden wir Influxdb verwenden. Mit Grafanan hübschen wir unsere Daten auf.
Wie man das alles installiert, bitte lest es hier nach. Besser kann man das nicht erklären.
smarthome-tricks.de
Kleiner Tipp: Wenn alles läuft, die Speicherkarte klonen. Damit haben wir ein Backup. Wenn auch die Influxdaten nicht aktuell sind. Aber das System neu aufsetzen ist nach ein paar Wochen und viel Vergesslichkeit nicht schön.
Die Firmware für den Shine-F
Anmerkung: Die Firmware ist für den Wechselrichter Growatt SPF 5000 ES zugeschnitten. Falls du diese Firware auf eine nanderen Typ verwenden möchtest, musst du die Register anpassen und die Adresse vom Modbuss überprüfen. Ob das immer so funktionier, ich weiß es nicht.
Firmware, Bausteine, Erklärung
Grundlegendes
- Shine-F anschließen Zuerst öffen wir den Shine-F vorsichtig durch das entfernen der vier kleinen Schrauben an der Stirnseite. Alles herraus ziehen und freuen.
- GND
- GpIa0
- TX --> RX vom UART-TTL USB Adapter
- RX --> TX vom UART-TTL USB Adapter
- GND
- 3,3V --> am vom UART-TTL USB Adapter muß er auf 3,3V (Jumper) eingestellt sein!
- Arduino IDE Die Software für die Programmierung und das beschreiben des Shine-F bekommst du hier. https://www.arduino.cc/en/software
- sonstiges Aktuell besitzt der Shine-F, also die neu Firmware noch keine eigene Webseite zur Ansicht der aktuellen Daten. Dies ist geplant. Auch habe ich die Batterie nicht wieder eingesetzt. Sie ist für die Pufferung der Daten im Stick bei Stromausfall vorgesehen. Um etwas zu sehen, muß der Raspberry laufen, die Datenbank Influxdb sowie Grafanan eingerichtet sein. Dazu ruft ihr die IP-Adresse vom Raspberry mit dem Port 3000 auf.
-
wir sehen folgende Lötaugen welche wir mit Pins versehen
Diese Zwei Pins verbinden wir vor dem einstecken des USB-TTL-Adapters in den Rechner-USB, kurzzeitig oder dauerhaft ist dabei egal, um den ESP-07 in den Programmiermodus zu ziehen
Unsere Schnittstelle zum UART-TTL USB Adapter
Das schaut dann in etwa so aus.
Wichtig:RX-TX Leitung sind gekreuzt! Jumper auf 3.3V!
Auf dem Shine-F ist noch ein Speicher verbaut, den wir nicht nutzen. Wäre aber eine Option dies zu tun.
Da ich mit dem Raspberry und einer Software mit Python einen Lastabwurf steuere, sind Daten aus der Vergangenheit uninteressant.
Für die interesierten, ich verwende eine Relaiskarte auf dem der Raspberry aufgesetzt wird.
Firmaware flashen
In der Arduino IDE muss unter Voreinstellung/Einstellung/zusätzliche Bordverwalter-URLs dieser Link hinzugefügt werden.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Als Board wählen wir Generic ESP8266 Module
http://IP-Adresse:3000
Download der neuen Firmaware:
Shine-F.zip
Die Shine-F.zip enthält die Setup-Datei setup.h. Dies ist die einziege Date in der wir etwas einstellen müssen. Sie enthält die Zugangsdaten vom Wlan und andere wichtige IPs, Kenndaten. Ersetzt die xxx durch eure Werte. Ausrufezeichen bitte nicht entfernen.
setup.h
const char* SSID = "xxx";
//deine SSID vom WLAN
const char* PSK = "xxx";
//Dein WLAN-Password
const char* GATEWAY = "xxx.xxx.xxx.xxx";
//GATEWAY-IP, Die IP-Adresse vom der Fritzbox zum Beispiel.
int modbuss_adresse = 1;
//Modbus-Adresse vom Wechselrichter wird im Wechselrichter-Menu geändert. Falls nicht, hier ändern.
const char* myhostname = "Growatt";
//Hostname vom Stick, ist im Netz so sichtbar, auf Vorgaben vom Server achten
int intervall = 50000;
//Daten aller x Secunden abrufen 1000=1s
#define INFLUXDB_URL "http://xxx.xxx.xxx.xxx:8086"
//IP und PORT von der Influxdb, also die Ip-Adresse vom Raspberry
#define INFLUXDB_DB_NAME "xxx"
//Influxdb Name, legst du bei der Installation von Influxdb auf dem Raspberry fest.
#define DEVICE "Growatt"
// Bei mehreren Wechselrichtern, einen eigenen Namen vergeben.... Nicht getestet
Einstellungen am Wechselrichter SPF 5000 ES
Der Parameter 28 ist die Adresse der Wechselrichterschnittstelle auf die zugegriffen wird. Also die Telefonnummer des abzufragenden Gerätes ;-)
So, alles richtig gemacht? Nichts vergessen? Wir werden es sehen
Wenn alles geklapt hat, könnt ihr die IP-Adresse vom Raspberry mit dem Port 3000 aufrufen. Jetzt könnt ihr eure Daten aus der Influxdb mittels Grafana aufarbeiten.