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

  1. Shine-F anschließen
  2. Zuerst öffen wir den Shine-F vorsichtig durch das entfernen der vier kleinen Schrauben an der Stirnseite. Alles herraus ziehen und freuen.

      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
    • GND
    • GpIa0

    • Unsere Schnittstelle zum UART-TTL USB Adapter
    • 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!

    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

  3. Arduino IDE
  4. Die Software für die Programmierung und das beschreiben des Shine-F bekommst du hier. https://www.arduino.cc/en/software

    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



  5. sonstiges
  6. 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.

    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.