Seite 2 von 4

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Mi 21. Apr 2021, 13:42
von Bogeyof
Also die Register werden dezimal angegeben, das solltest Du wieder so lassen.
Die Abfrage über 8 Byte und das ganze als Float halte ich für falsch. Die Seriennummer ist doch hier auf 8 Register aufgeteilt und enthält jeweils 2 Stellen der Seriennummer, vermutlich als Zahlen.
Auch steht in der Beschreibung, dass die Register mit Modbus command 0x06 or 0x10 gelesen werden können.
Woher hast Du die Geräteadresse?

Probiere doch mal die Abfrage der ersten beiden Stellen mit:

Code: Alles auswählen

  $rc = $funktionen->modbus_register_lesen($COM1,"1018","0001","Dec16Bit","01","06");
oder

Code: Alles auswählen

  $rc = $funktionen->modbus_register_lesen($COM1,"1018","0001","String","01","06");
oder mit Geräteadresse 255

Code: Alles auswählen

  $rc = $funktionen->modbus_register_lesen($COM1,"1018","0001","String","FF","06");

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Mi 21. Apr 2021, 13:56
von Yoda68
Danke dir fürs darüberschauen. Die Geräteadresse hatte ich aus den Hardware Geräteeinstellungen bei der Inbetriebnahme des Geräts. Auslesen mit 06 oder 16 kannte ich nicht. Dachte lesen ist 03. wieder was gelernt. Ich habe gerade noch einen Notfall reinbekommen und kann erst morgen weiter machen. Melde mich dann.

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 22. Apr 2021, 11:16
von Yoda68
Auslesen geht nur mit 10 gelesen.
Geräteadresse FF geht genauso wie 01 scheint egal zu sein.
Die Register gehen nur dezimal.
ankommende werte sind utopisch. so weit so gut.
Kannst du mir kurz erklären was das mit dem Format auf sich hat?
Ich möchte zum Beispiel aus der Adresse 1002 die Temperatur auslesen

Code: Alles auswählen

  $rc = $funktionen->modbus_register_lesen($COM1,"1002","0002","?????","01","10");
  $aktuelleDaten["Status"] = $rc["Wert"] / 10;

das wäre dann $COM1,"1002(Adresse)","0002(2 Byte Länge im Block)","?????(Format?)","01(Geräteid)","10(Befehl)"
Welches Format ist dann das richtige für Temperatur. U16-1 verstehe ich das so richtig?

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 22. Apr 2021, 11:50
von Yoda68
uint16be sollte der richtige FormatTyp sein.

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Fr 23. Apr 2021, 14:52
von Yoda68
Hallo Bogeyof,
ich kann schon mal Teilerfolge vermelden.
Die beiden Abfragen liefern die Gewünschten Werte.

Code: Alles auswählen

 $rc = $funktionen->modbus_register_lesen($COM1,"1003","0001","Dec16Bit","01","03");
  $aktuelleDaten["Status"] = $rc["Wert"];
  $rc = $funktionen->modbus_register_lesen($COM1,"1004","0001","U16-1","01","03");
  $aktuelleDaten["Power_Timeout"] = $rc["Wert"];
das sieht dann so aus

Code: Alles auswählen

,Status=2,Power_Timeout=10
warum die Befehlsabfrage mit "03" funktioniert obwohl diese nicht dokumentiert ist weiß ich nicht.
Bei meinem Testen wurden mit Befehl "10" zwar gelesen aber die Werte waren nicht plausibel mit Befehl "03" schon.
Jedoch wurde sobald eine Adresse mit Befehl"03" abgefragt ist und danach im Skript die nächste Adresse mit Befehl"10" abgefragt wird passiert es , dass sofern die Adresse "schreib Rechte" hat, Werte gesetzt werden welche ich mir nicht erklären kann.

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Fr 23. Apr 2021, 18:23
von Bogeyof
Ich denke, das wird eine Trial and Error Geschichte. Ich werde aus der Dokumentation und der Reaktion die Du dann beschreibst auch nicht schlau. Aber ich denke Du bist schon auf einem guten Weg. Was sicherlich auch nicht wirklich schwer wäre ist die HTML JSON-Ausgabe zu nutzen, das wäre in PHP ebenfalls leicht umsetzbar. Da hättest Du alle Werte mit einem Aufruf in einem JSON-Konstrukt, ein Befehl später könntest Du in PHP jedes einzelne Feld nutzen. Auch ein Setzen von Werten scheint über die HTML-Schnittstelle möglich zu sein...

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Fr 23. Apr 2021, 18:54
von Yoda68
Okay so habe ich das noch gar nicht betrachtet. Aber mit JSON kenne ich mich so ganz und gar nicht aus. Ich glaube das lesen in Modbus habe ich hin bekommen und durch Zufall bin ich über das Schreiben gestolpert. Ich teste mich halt durch so als „Anfänger“. Wenn ich fertig bin würdest du dann bitte mal die .php Korrektur lesen?
Wäre echt nett und vielleicht kann man es Ulrich mit einbauen. Das wird bei mir noch ein Stück dauern. So schnell wie Du bin ich nicht. ;)

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Fr 23. Apr 2021, 19:07
von Bogeyof
Klar gerne schaue ich mal drüber...

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Sa 24. Apr 2021, 09:44
von Bogeyof
Falls Du mal testweise die Daten per JSON abrufen willst, das würde in etwa so aussehen:

Code: Alles auswählen

  $ch = curl_init("http://192.168.178.99/data.jsn"); // cURL initialisieren
  curl_setopt($ch, CURLOPT_HEADER, 0); // Header soll nicht in Ausgabe enthalten sein
  curl_setopt($ch, CURLOPT_POST, 1); // POST-Request wird abgesetzt
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
  $EnergyStr = curl_exec($ch); // Ausfuehren
  curl_close($ch); // Objekt schliessen und Ressourcen freigeben

  $EnergyA = json_decode($EnergyStr, true);
  $aktuelleDaten["device"] = $EnergyA["device"];
Die Antwort vom Aufruf "http://192.168.178.99/data.jsn" im Webbrowser könntest Du mal hier anhängen (falls dieser Aufruf funktioniert wie in der Anleitung beschrieben, anscheinend erst ab einer bestimmten Firmware), evtl. sind in der JSON-Antwort noch diverse Unterarrays definiert. Evtl. ist die Ausgabe auch wie in der Doku dargestellt, das ist aber leider kein verwertbares JSON als Antwort.
Vorteil wäre, Du hättest alle Werte auf einmal und müsstest Dir um Umwandlung keine Gedanken machen...

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Sa 24. Apr 2021, 11:35
von Yoda68
Danke, und Sorry - wie gesagt bei JSON fang ich ganz bei Null an, da weiss ich nicht mal wie ich eben schnell Testen soll.
Frage: Wie lautet der Befehl zum löschen eines Measurements aus der Solaranzeige (zb. das ganze Blatt "Wetterprognosen")
wenn es nicht mehr gebraucht wird?