Hallo zusammen,
mit der Symcon Modbus Unterstützung kann man sich ja einzelne Daten aus PV Invertern einfach ziehen, inkl. eventuell angeschlossener Meßgeräte. Ich wollte aber unbedingt alle Daten haben - und dafür Feld für Feld eine Definition anzulegen, war mir zu viel Arbeit. Das sind über 200 Felder.

Deswegen habe ich mir einmal ein recht universelles Script gebaut, um mit Hilfe des sog. Sunspec Protokolls die Inverter und Meßgerätedaten auszulesen. Viele PV Solar Inverter unterstützen das. Mein Inverter ist von Solaredge, aber das schöne an diesem Skript ist, es sollte sich leicht auf andere Inverter (Fronius, SMA, etc.), welche dieses Protokoll unterstützen, umbauen lassen. Das Script legt auch gleich die Variablen an. Eine Stunde Arbeit zur Anpassung müsst ihr sicher einkalkulieren.

Vorgehensweise:

  1. Die zu Eurem Inverter gehörige Sunspec Dokumentation laden - in der Regel ein PDF file, in dem alle Sunspec Felder zu den Inverter-Registern aufgelistet sind. Google z.b "Solaredge Sunspec". Wie wir daraus die Struktur isolieren, siehe weiter unten.
  2. Von phpmodbus/Phpmodbus at master · adduc/phpmodbus · GitHub die 5 Dateien "PhpModbusMaster ... usw" in das symcon Skripte Verzeichnis laden
  3. Aus dem beigefügten ZIP file die Datei Sunspec_load.ips.php in ein beliebiges Script laden (Copy-Paste). Das ist das Hauptprogramm.
  4. Einen Kategorie-Einstiegsbaum anlegen - bei mir eine Kategorie Sunspec, und darunter 3 Kategorien "Common Model", "Inverter Model" und "Meter 1 Model". Ggfs. weitere, falls euer Inverter mehr unterstützt.
  5. Nun brauchen wir die Sunspec Definitionen. Mein Ansatz war, aus dem PDF file aus Punkt 1 die Definitionen zu isolieren. Das ging ganz einfach - PDF nach Word importieren, die entsprechenden Sektionen nach Excel kopieren und von dort ein csv file erzeugen. Siehe als Beispiel das beigefügte CSV file. Das laden wir nun in ein Script (copy-paste), und mißbrauchen dieses Script als Eingabe für das Hauptprogramm, um die notwendigen Variablen alle zu erzeugen. Ggfs. müsst ihr eure csv Ausgabe an die Einlese-Funktion anpassen oder umgekehrt.
  6. Zuguterletzt durch die Anfangssektion im Programm gehen, und eure Kategorie-ID's eintragen, die Start-/Stop Addressen für die Sektionen anpassen (z.B. Start des Meter 1 Models ab Addresse 40121, usw). Diese aus der Sunspec Doku eures Inverters entnehmen.


Dann das Hauptprogramm alle z.b. 30sek laufen lassen. Das erzeugt die Sunspec Struktur (beim ersten Mal) sowie lädt alle Daten. Im Programm selbst sind viele print_r's und echo's eingestreut, um das zu debuggen. Das Ergebnis sind dann so ähnlich aus wie im angefügten Bild. Weiteres Post-Processing ist nötig - da z.B. einzelne Variablen mit Skale-Faktors belegt sind - d.h. man muß nochmal durch 100 oder 10 teilen, um auf die Watt Zahl o.ä. zu kommen. Sicherlich alles noch nicht perfekt.

In der Hoffnung, daß dies mal wer brauchen kann - viel Spass.

Grüsse


Sunspec_Symcon.zipKlicken Sie auf die Grafik für eine größere Ansicht 

Name:	bild.png 
Hits:	16 
Größe:	106.4 KB 
ID:	48887