Zitat von gulp2k
Beitrag anzeigen
- SMA CSV/XLS liefert für die Register mit Format-Infos, etc. Mein Ziel war es, die gwünschten Zeilen 1:1 aus der CSV oder XLS kopieren un nutzen zu können inkl. der Format-Informationen (Länge, Nachkommstellen, EIniheit, Skalierungsfaktoren,...)
- Ich mit den vorherigen Lösungen bzw. den Umrechnunegn aus dem github-Paket nie auf sinnvolle Werte kam. Daher auf das PDF von SMA aufbauend eine eigene Umrechungsmimik.
Code:
30775 Power S32 FIX0 W RO 30845 Current battery state of charge U32 FIX0 % RO 30861 Load power S32 FIX0 W RO 30849 Battery temperature S32 TEMP °C RO 0.1 30783;Grid voltage phase L1;U32;FIX2;V;RO;;; 30849 Battery temperature S32 TEMP °C RO 0.1 30803;Grid frequency;U32;FIX2;Hz;RO;;; 30865 Power grid reference S32 FIX0 W RO 30867 Power grid feed-in S32 FIX0 W RO
--> Läuft auch schon prima, weil ich von meinen WR und dem Batterie-System wunderbar Daten bekommen.
--> Läuft leider nicht gut, weil ich zwar Werte bekomme, aber auch einen ganzen Sack Fehlermeldungen vom ModBusMaster.php-include
2018-05-03 15:20:43 954221 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 8 | Zeile: 167 | Uninitialized string offset: 5 ERROR
2018-05-03 15:20:43 954524 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 8 | Zeile: 167 | Uninitialized string offset: 5 ERROR
2018-05-03 15:20:43 954642 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 8 | Zeile: 167 | Uninitialized string offset: 5 ERROR
2018-05-03 15:20:43 954782 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 2 | Zeile: 166 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable ERROR
2018-05-03 15:20:43 954891 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 2 | Zeile: 166 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable ERROR
2018-05-03 15:20:43 954993 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 2 | Zeile: 166 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable ERROR
2018-05-03 15:20:43 955094 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 2 | Zeile: 166 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable ERROR
2018-05-03 15:20:43 955202 ? 3152 Datei: /usr/local/edomi/main/include/php/modbus_sma/ModbusMaster.php | Fehlercode: 2 | Zeile: 166 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable ERROR
Mein Log higegen liefert mir den Inhalt von MODBUS ohne Fehler:
START
Connected
Packet: 0c4600000006030378370002
Send
Wait data ...
Data received
Packet: 0c4600000007030304fffffff6
Modbus response error code: NOERROR
Disconnected
readMultipleRegisters: DONE
Dürfte wohl irgendwo in private function rec() zwischen "Wait data..." und "Data received" passieren...

Frage:Hat das schon mal jemand gehabt und gelöst? An anderen Stellen las ich im Forum zum Fehler von "vielleicht andere Clients, die zugreifen"... kann es sein, dass ich mioch selber blockiere? Ich starte den Daemon mit 1x "new ModbusMaster" und rufe dann regelmäßig und in der Schleife für jedes Register "$modbus->readMultipleRegisters"... Sollte/kann man das ModBus-Object freigeben? Wie kann man das anaylsieren? Und: Es liegt in der Natur der Saceh, dass mein SMA Homemanger die WR auch abfragt (Daten gehen in das SunnyPortal); wäre es da nicht besser, es wären Infos/Warnungen, keine Fehler? Scheint mir fast ein Implemntierungsfehler in dem Include...
Wenn das gelöst ist, kommt der LBS direkt in den Download-Bereich.
Der LBS kann über entweder einen externen Trigger regelmäßig ausgelöst werden (Delay = 0) oder als daemon (wenn Trigger =1) mit einstellbarer Periodizität (z.B. 1000ms). Es kann also jeder machen, wie er es bevorzugt. Von der Last scheint es kaum aufzutragen (NUC core i3) bei sekündlich. @André: Habe mich für usleep entschieden - das kannte ich schon und entspricht dem Dämon-Schema von Christian.
ModBus Read SMA.JPG ModBus Read SMA2.JPG




. Nein, im Ernst, die Loop (0) deines LBS hat nicht funktioniert und den Baustein immer in der Schleife laufen zu lassen, war mir zu ressourcenhungrig. Mein LBS beendet sich nach jedem Durchlauf und wird durch den Taktgeber alle 10s wieder neu gestartet. Eine 1s Schleife hat auch den Nachteil, dass sich die Werte auf dem Display zu schnell ändern, was ich verwirrend fand. Setstate möchte ich vermeiden, wenn es möglich ist.
Einen Kommentar schreiben: