NEWS
Growatt Wechselrichter über Modbus auslesen - gelöst -
-
aber das war ein guter Hinweis. Wenn ich auf 8-bit unsigned (litte und big endian) umstelle, kommen die richtigen Minuten. Top
-
@pingo sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
aber das war ein guter Hinweis. Wenn ich auf 8-bit unsigned (litte und big endian) umstelle, kommen die richtigen Minuten. Top
warum zeigst du nie von alleine die jeweils aktuellen Einstellungen?
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1
-
@homoran Mach ich gerne:
damit funktioniert jetzt das Auslesen perfekt. Danke für die Inputs
Edit: Mittlerweile habe ich in der Dokumentation gefunden, dass das oben alles Holding Register sind. Eingangsregister gibt es auch. Die liest aber der Growatt Adapter auch aus.
-
@pingo sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
Mittlerweile habe ich in der Dokumentation gefunden
und vorher natürlich nicht gelesen
-
Eine Frage habe ich aber noch:
Ziel ist es, dass ich die Holdingregister auch via Script beschreiben kann. Das habe ich nun versucht, aber das klappt nur für wenige Sekunden, dann überschreibt wohl der Modbus Adapter meinen Objektwert bei den Minuten und Stunden wieder mit dem Wert davor. Welche Einstellung brauche ich bitte für den Holding-Registerwert, dass meine Objektveränderung bleibt? (CW zusätzlich zur Abfrage funktioniert bei den Zeiten und Switches leider nicht; nur bei den SOC-Werten)
setState('modbus.0.holdingRegisters.41092_wBatFirststop_SOC'/*41092 Wbatfirststop Soc*/,99); setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_hour'/*41101 Bat First Start Time 1 Hour*/,3); setState('modbus.0.holdingRegisters.41103_Bat_First_on/off_Switch_1'/*41103 Bat First On/off Switch 1*/,1);
Danke
-
@pingo sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
CW zusätzlich zur Abfrage
schreddert dir binnen kurzem dein EEPROM, wenn nicht nur im RAM geschrieben eird.
diese halten etwa 100.000 Schreibvorgänge.
bei je einer bei jeder Afrage (jede Sekunde??) kannst du ja mal rechnen.was willst du denn am SoC verändern?
oder an sonstigen Ausleseparametern? -
@homoran
ok. CW habe ich wieder abgeschaltet
den SOC will ich per Script verändern (je nachdem wie weit die Batterie mit Netzstrom nachts geladen werden soll)
die Zeit will ich per Script passend zur billigsten Stromeinkaufszeit verändern
den dazu passenden Switch dafür muss ich laut APP am Ende aktivieren (0 bedeutet m.E. deaktiviert)
Edit: komischerweise kann ich die Zeit mittlerweile ändern, aber den Switch nicht. Vielleicht ist das gar keine Zahl? Es gibt ja nur die Zustände 0 und 1 laut Dokumentation. -
@pingo sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
den SOC will ich per Script verändern (je nachdem wie weit die Batterie mit Netzstrom nachts geladen werden soll)
das wäre aber nicht der SoC selbst sondern der minimal SoC, der sogenannte Entladeboden.
-
@homoran genau MinSOC
Also nach weiteren Tests kann ich die Bat First on/off Switche per Javascript von 1 auf 0 setzen, aber nicht von 0 auf 1.
da kann man zusehen, wie sie vom Script kurz auf 1 gesetzt werden (grüne 1) und dann wieder "magisch" zurück auf 0 (zuerst kommt eine rote 1).
Wenn ich die hour auf einen anderen Wert setzen will, steht dann nach kurzer Zeit 0 im Objekt, obwohl vorher eine andere Zeit drin stand. Seltsamdas ist jetzt der aktuelle Status der Holdingregistereinstellungen:
-
Ich vermute, dass ich nicht den richtigen Typ/Rolle für die Holdingregister ausgewählt habe oder der JavaScript SetState-Befehl für dieses zusammengesetzte Register aus Minuten und Stunde nicht korrekt ist.
-
@pingo sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
der JavaScript SetState-Befehl
mit ack=false?
-
@homoran wie gebe ich dem setState-Befehl die Bestätigung bitte mit?
so ist das Javascript momentan:
setState('modbus.0.holdingRegisters.41092_wBatFirststop_SOC'/*41092 Wbatfirststop Soc*/,95); setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_hour'/*41101 Bat First Start Time 1 Hour*/,4); setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_Minute'/*41101 Bat First Start Time 1 Minute*/,6); setState('modbus.0.holdingRegisters.41103_Bat_First_on/off_Switch_1'/*41103 Bat First On/off Switch 1*/,0);
-
@pingo ich kann kein js
-
So das Problem ist gelöst. Man muss das Acknowledgment mitliefern. Das ist das zusätzliche "false" im Befehl.
Zusätzlich muss man in 16-bit schreiben und dabei folgende Zahl übergeben:
Stunde * 256 + Minute. Im Beispiel unten wird 10h 5min übergebensetState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_16bit'/*41101 Bat First Start Time 1 16bit*/,2565,false);
-
@pingo sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
So das Problem ist gelöst. Man muss das Acknowledgment mitliefern.
eben nicht!
deswegen ja
@pingo sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
Das ist das zusätzliche "false" im Befehl.
-
Hallo, ich wage mich mal mit meinen Basic-Problemen hier in die "Höhle der Löwen".
Mein Kernproblem: Ich bekomme keine Verbindung zwischen dem ioBroker-Adapter und dem Growatt-WR per Modbus hin.
Ich bin in dem Thema Modbus nicht drin, nur soweit, dass ich die Daten aus meinem MIN 4600 TL-XH per Modbus auslesen möchte.
Dazu habe ich mir einen ESP32 mit dem Breakout-Board HW-0519 zusammengesteckt, SV dran, mit PIN 3+4 am WR und auch mit meinem WLAN verbunden. Mein Router zeigt das Device unter der IP-Adresse 192.168.2.197 an.
Den ioB-Adapter habe ich wie folgt konfiguriert
Zum Testen habe ich 2 Eingangsregister konfiguriert
Wenn ich dem Wiki von Tobias Faust folge
(https://github-com.translate.goog/tobiasfaust/SolaxModbusGateway/wiki/configuration-modbus?_x_tr_sl=auto&_x_tr_tl=de&_x_tr_hl=de&_x_tr_pto=wapp)
muss ich doch sicher noch über das WebUI konfigurieren!
Nur wie und mit welchem Befehl oder welchen Port an der IP-Adresse?
Im ioB bekomme ich im Log die Fehlermeldungmodbus.0 2024-02-24 14:50:21.563 warn On error: {"errno":-111,"code":"ECONNREFUSED","syscall":"connect","address":"192.168.2.197","port":502} modbus.0 2024-02-24 14:50:21.562 error Client in error state. modbus.0 2024-02-24 14:50:21.561 error Socket Error
Ich hoffe, ich habe genügend Infos mitgegeben und hoffe gleichzeitig inständig, dass ihr mir auf die Sprünge helft und meine Defizite ausgleicht.
-
Hallo,
ich habe genau das gleiche Problem. Hast du schon eine Lösung ?Ich habe den Modbus Adapter auf dem ioBroker bekomme aber keine Verbindung zum Stick auf dem die ShineWIFI Software läuft.
https://github.com/OpenInverterGateway/OpenInverterGateway
Fehler:
warn: modbus.1 (11484) On error: {"errno":-111,"code":"ECONNREFUSED","syscall":"connect" -
@stobli Leider habe ich noch keine Lösung, kannst du denn auch nicht auf das WebUI zugreifen?
Wenn doch, verrate mir bitte wie? -
@nobbiman
Auf die das Webinterface komme ich mit der IP -
@stobli sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
Klappt bei mir auch nicht - natürlich mit meiner IP!
Update: Nun ist es mir tatsächlich nach erneutem Flashen des Boards gelungen,, auf das Webinterface zuzugreifen !
Der Zugriff funktionierte aber einfach über die IP-Adresse; der Zugriff über IP/postCommunicationModbus klappt nicht.
Wie dem auch sei, zunächst bin ich zufrieden, mal sehen, wie es weitergeht.