NEWS
Deye Wechselrichter Modbus Register beschreiben
-
@lars-2 wieviel gb hast du da gepostet.
Die Seite lässt sich auf meinem Handy nicht mehr öffnen, hängt im Aufbau des codes fest -
@homoran said in Deye Wechselrichter Modbus Register beschreiben:
@lars-2 wieviel gb hast du da gepostet.
Die Seite lässt sich auf meinem Handy nicht mehr öffnen, hängt im Aufbau des codes festhabs nochmal geändert auf nur fehler, ist aber doch nur text?
-
@lars-2 sagte in Deye Wechselrichter Modbus Register beschreiben:
habs nochmal geändert
Danke!
da steht jetzt leider nicht wirklich was erquickliches drin.@lars-2 sagte in Deye Wechselrichter Modbus Register beschreiben:
Client in error state.
ist leider auch nicht sehr spezifisch.
@lars-2 sagte in Deye Wechselrichter Modbus Register beschreiben:
ist aber doch nur text?
der aber im Browser in code formatiert wird.
das dauert und bei zuwenig RAM friert's ein -
ok, ändert aber leider nicht daran das er keine Verbindung aufbaut, hab langsam keine Idee mehr was ich noch testen könnte.
Parallel werde ich mal versuchen per Tasmota mit Wemos und TTL adapter an die Werte zu kommen, evtl klappt das ja, alle anderen Programme bekommen über den Waveshare daten... alles merkwürdig -
@lars-2
Lösche Mal spaßeshalber nur die Zeile 7 bei dir in den Registern 40147
Ich bin mir nicht sicher klingt aber für mich so als wenn ein register nicht passt und der deswegen abstützt.
Ansonsten würde ich das morgen selbst Mal probieren mit deinen Einstellungen heute bekomme ich keine Zeit dazu.
Normal muss das gehen. Auf welchem Gerät hast du das denn laufen? Ist das ein anderes die der cas Scanner? Nicht das da irgendeine Firewall den Port blockiert oder so -
@thebam said in Deye Wechselrichter Modbus Register beschreiben:
@lars-2
Lösche Mal spaßeshalber nur die Zeile 7 bei dir in den Registern 40147
Ich bin mir nicht sicher klingt aber für mich so als wenn ein register nicht passt und der deswegen abstützt.
Ansonsten würde ich das morgen selbst Mal probieren mit deinen Einstellungen heute bekomme ich keine Zeit dazu.
Normal muss das gehen. Auf welchem Gerät hast du das denn laufen? Ist das ein anderes die der cas Scanner? Nicht das da irgendeine Firewall den Port blockiert oder soKann ich morgen testen...
Habe den iobroker in einem Proxmox Container laufen.
Firewalls sind innerhalb der Netzwerkstruktur keine vorhanden ich kann aus der Shell des iobrokers die IP Adresse und auch den Port scannen/anpingen
Die 2. Iobroker Instanz läuft auch auf einem Proxmox Container aber in dem Subnetz vom Waveshare... Trotzdem keine VerbindungUnd der Windows Rechner wo der Scanner drauf läuft habe ich in allen Subnetzen probiert, geht immer
hab mal schnell getestet, einmal nur die 40147 gelöscht und einmal alles dahinter komplett.
modbus.0 13973 2023-07-15 20:56:54.909 debug Socket closed with error modbus.0 13973 2023-07-15 20:56:54.908 warn Poll error count: 2 code: {"err":"timeout","timeout":8000} modbus.0 13973 2023-07-15 20:56:54.908 error Client in error state. modbus.0 13973 2023-07-15 20:56:54.908 error Request timed out. modbus.0 13973 2023-07-15 20:56:54.908 warn Error: undefined modbus.0 13973 2023-07-15 20:56:46.907 debug [DevID_1/holdingRegs] Poll address 0 - 1 registers modbus.0 13973 2023-07-15 20:56:46.906 debug [DevID_1] Poll start --------------------- modbus.0 13973 2023-07-15 20:56:46.906 info Connected to slave 192.168.30.223 modbus.0 13973 2023-07-15 20:56:41.904 info Disconnected from slave 192.168.30.223 modbus.0 13973 2023-07-15 20:56:41.904 debug Closing client on purpose. modbus.0 13973 2023-07-15 20:56:40.905 debug Cleaning up request fifo. modbus.0 13973 2023-07-15 20:56:40.905 debug Clearing timeout of the current request. modbus.0 13973 2023-07-15 20:56:40.905 debug Socket closed with error modbus.0 13973 2023-07-15 20:56:40.904 warn Poll error count: 1 code: {"err":"timeout","timeout":8000} modbus.0 13973 2023-07-15 20:56:40.903 error Client in error state. modbus.0 13973 2023-07-15 20:56:40.903 error Request timed out. modbus.0 13973 2023-07-15 20:56:40.903 warn Error: undefined modbus.0 13973 2023-07-15 20:56:32.900 debug [DevID_1/holdingRegs] Poll address 0 - 1 registers modbus.0 13973 2023-07-15 20:56:32.900 debug Initialization of scale factors done! modbus.0 13973 2023-07-15 20:56:32.899 debug [DevID_1] Poll start --------------------- modbus.0 13973 2023-07-15 20:56:32.899 info Connected to slave 192.168.30.223 modbus.0 13973 2023-07-15 20:56:32.776 debug Add holdingRegisters.40144_Max_Limit_Power_Output_Grid_Connection: {"_id":"holdingRegisters.40144_Max_Limit_Power_Output_Grid_Connection","type":"state","common":{"name":"Begrenzen Sie die maximale Ausgangsleistung des Netzes","role":"level","type":"number","read":true,"write":true,"def":0,"unit":"W"},"native":{"regType":"holdingRegs","address":143,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}} modbus.0 13973 2023-07-15 20:56:32.776 debug Add holdingRegisters.40110_Max_A_discharge: {"_id":"holdingRegisters.40110_Max_A_discharge","type":"state","common":{"name":"Max A Entladung","role":"level","type":"number","read":true,"write":true,"def":0,"unit":"A"},"native":{"regType":"holdingRegs","address":109,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}} modbus.0 13973 2023-07-15 20:56:32.775 debug Add holdingRegisters.40109_Max_A_Charge: {"_id":"holdingRegisters.40109_Max_A_Charge","type":"state","common":{"name":"Maximaler Ladestrom der Batterie","role":"level","type":"number","read":true,"write":true,"def":0,"unit":"A"},"native":{"regType":"holdingRegs","address":108,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}} modbus.0 13973 2023-07-15 20:56:32.775 debug Add holdingRegisters.40105_ZeroExport_power: {"_id":"holdingRegisters.40105_ZeroExport_power","type":"state","common":{"name":"ZeroExport-Leistung","role":"level","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":104,"deviceId":1,"type":"floatbe","len":2,"offset":0,"factor":1,"poll":true}} modbus.0 13973 2023-07-15 20:56:32.775 debug Add holdingRegisters.40001_Device_type: {"_id":"holdingRegisters.40001_Device_type","type":"state","common":{"name":"Gerätetyp","role":"level","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":0,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}} modbus.0 13973 2023-07-15 20:56:32.775 debug Initialize Objects for holdingRegs: [{"_address":40001,"name":"Device type","description":"Gerätetyp","unit":"","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":0,"id":"holdingRegisters.40001_Device_type"},{"_address":40105,"name":"ZeroExport power","description":"ZeroExport-Leistung","unit":"","type":"floatbe","len":2,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":104,"id":"holdingRegisters.40105_ZeroExport_power"},{"_address":40109,"name":"Max A Charge","description":"Maximaler Ladestrom der Batterie","unit":"A","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":108,"id":"holdingRegisters.40109_Max_A_Charge"},{"_address":40110,"name":"Max A discharge","description":"Max A Entladung","unit":"A","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":109,"id":"holdingRegisters.40110_Max_A_discharge"},{"_address":40144,"name":"Max Limit Power Output Grid Connection","description":"Begrenzen Sie die maximale Ausgangsleistung des Netzes","unit":"W","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":143,"id":"holdingRegisters.40144_Max_Limit_Power_Output_Grid_Connection"}] modbus.0 13973 2023-07-15 20:56:32.775 debug Initialize Objects for inputRegs: [] modbus.0 13973 2023-07-15 20:56:32.774 debug Initialize Objects for coils: [] modbus.0 13973 2023-07-15 20:56:32.774 debug Initialize Objects for disInputs: [] modbus.0 13973 2023-07-15 20:56:32.714 info starting. Version 5.0.11 in /opt/iobroker/node_modules/iobroker.modbus, node: v16.19.1, js-controller: 4.0.24 modbus.0 13973 2023-07-15 20:56:32.605 info Plugin sentry Sentry Plugin disabled for this process because sending of statistic data is disabled for the system modbus.0 13973 2023-07-15 20:56:32.603 debug Plugin sentry Initialize Plugin (enabled=true)
-
Guten morgen zusammen,
ich habe jetzt nochmal verschieden Sachen probiert. Keine Chance irgendeine Verbindung über IObroker und den Modbusadapter herzustellen. Es ist auch egal ich welchem Netzwerk sich der IObroker befindet
ich habe auch mal probiert meinen SDM über Modbus auszulesen, auch hier Verbindungsabbruch ohne irgendwelche Daten zu erhalten.
Auslesen am Laptop über den CAS ModBus Scanner funktioniert problemlos egal welcher Waveshare und welcher Port (502/8899) und auch egal ob Eingangsregister oder Holdingregister
Es kommt lediglich beim ersten Verbindungsaufbau ein Fehler, danach läuft es mit 1s abfrage Intervall.
Für mich kann es eigentlich nur am IObroker liegen bzw. irgendwelchen Einstellungen aber leider weiß ich nicht mehr was ich noch einstellen könnten.
Selbst bei der neu aufgesetzten IOBroker instanz geht es ja nicht.... -
@lars-2 sagte in Deye Wechselrichter Modbus Register beschreiben:
Für mich kann es eigentlich nur am IObroker liegen
wieso?
@lars-2 sagte in Deye Wechselrichter Modbus Register beschreiben:
Es kommt lediglich beim ersten Verbindungsaufbau ein Fehler,
ich weiss nicht was der CAS dann unter der Haube umbiegt.
Aber da scheint es ja wirklich eine Ursache zu geben. -
ich nochmal
ich habe jetzt alles noch einmal vorn von gemacht. d.h. ein komplettes Autarkes Netzwerk mit Raspberry und IObroker, Waveshare, Fritzbox und Laptop.
Alles nach genannter Konfig eingestellt und siehe da, Verbindung steht, Daten kommen an.
Die gleichen Konfig Schritte im Mainsystem gemacht, also Modbus komplett gelöscht, Waveshare angepasst, Modbus neu installiert... jetzt geht auch hier die VerbindungWarum auch immer oder was auch immer dazu geführt hat, keine Ahnung. Es kommen jetzt Daten und ich kann sie weiterverwenden.
Ein paar Sachen sind mir noch komisch wie z.B. Charge/Discharge Batterie 40592 bei Discharge werden die richten Ampere angezeigt, lädt er den Akku ist der wert z.b. DEYE=1A laden->IOBroker 650A laden
Genauso 40593_Corrected_AH- hier stehen 211Ah obwohl 302Ah im Deye stehen -
@lars-2
Es freut mich das du eine verbindung hin bekommen hast. Da ich auf dein Problem keine Lösung hatte. Kann mir nur vorstellen das vielleicht irgendwo eine Einstellung nicht gepasst hat.Ich habe die werte gerade mal bei mir geprüft. Da er bei mir Aktuell die Batterie entlädt stimmen diese.
Ich werde versuchen mir die werte morgen noch mal beim Laden anzusehen. Deye schickt keine Minus werte wenn er läd dann rechnet der vom Max. Integer wert nach unten. Also als Beispiel (65535 Max Integer) 300 watt laden wäre dann 65235. Dafür habe ich ja in der Liste eine Formel hinterlegt ich weiß nur nicht auf welche werte diese formel alles hinterlegt werden muss und wo die evtl. angepasst werden muss.
Also der wert 40593 vermute ich das der den aus der Batterie liest und man den nirgends eintragen kann so das deine Batterie eine Kapazität von 211 AH hat. -
@coyote
ich bin gerade noch an einem Skript was in beide Richtungen geht am Arbeiten. Daher kann ich dir eine fertige Lösung noch nicht geben.
Anbei aber das andere Skript mit dem kannst du schon mal die Werte in das objekt schreiben.function bla (){ //erstellen einer funktion //anlegen von Variablen (eingang) createState("javascript.0.Rechner.Bit_0",false,{ read: true, write: true, desc: "Bit 0", type: "boolean"}); createState("javascript.0.Rechner.Bit_1",false,{ read: true, write: true, desc: "Bit 1", type: "boolean"}); createState("javascript.0.Rechner.Bit_2",false,{ read: true, write: true, desc: "Bit 2", type: "boolean"}); createState("javascript.0.Rechner.Bit_3",false,{ read: true, write: true, desc: "Bit 3", type: "boolean"}); createState("javascript.0.Rechner.Bit_4",false,{ read: true, write: true, desc: "Bit 4", type: "boolean"}); createState("javascript.0.Rechner.Bit_5",false,{ read: true, write: true, desc: "Bit 5", type: "boolean"}); createState("javascript.0.Rechner.Bit_6",false,{ read: true, write: true, desc: "Bit 6", type: "boolean"}); createState("javascript.0.Rechner.Bit_7",false,{ read: true, write: true, desc: "Bit 7", type: "boolean"}); createState("javascript.0.Rechner.Bit_8",false,{ read: true, write: true, desc: "Bit 8", type: "boolean"}); createState("javascript.0.Rechner.Bit_9",false,{ read: true, write: true, desc: "Bit 9", type: "boolean"}); createState("javascript.0.Rechner.Bit_10",false,{ read: true, write: true, desc: "Bit 10", type: "boolean"}); createState("javascript.0.Rechner.Bit_11",false,{ read: true, write: true, desc: "Bit 11", type: "boolean"}); createState("javascript.0.Rechner.Bit_12",false,{ read: true, write: true, desc: "Bit 12", type: "boolean"}); createState("javascript.0.Rechner.Bit_13",false,{ read: true, write: true, desc: "Bit 13", type: "boolean"}); createState("javascript.0.Rechner.Bit_14",false,{ read: true, write: true, desc: "Bit 14", type: "boolean"}); createState("javascript.0.Rechner.Bit_15",false,{ read: true, write: true, desc: "Bit 15", type: "boolean"}); //anlegen von Variablen (Ausgang) createState("javascript.0.Rechner.Out_Byte",{read: true,write: true,desc: "Byte out",type: "number",min:'0', max:'65536',def:0}); const id0 ="javascript.0.Rechner.Bit_0";//T const id1 ="javascript.0.Rechner.Bit_1";//A const id2 ="javascript.0.Rechner.Bit_2";//A const id3 ="javascript.0.Rechner.Bit_3";//S const id4 ="javascript.0.Rechner.Bit_4";//V const id5 ="javascript.0.Rechner.Bit_5";//V const id6 ="javascript.0.Rechner.Bit_6";//V const id7 ="javascript.0.Rechner.Bit_7";//V const id8 ="javascript.0.Rechner.Bit_8";//V const id9 ="javascript.0.Rechner.Bit_9";//V const id10 ="javascript.0.Rechner.Bit_10";//V const id11 ="javascript.0.Rechner.Bit_11";//V const id12 ="javascript.0.Rechner.Bit_12";//V const id13 ="javascript.0.Rechner.Bit_13";//V const id14 ="javascript.0.Rechner.Bit_14";//V const id15 ="javascript.0.Rechner.Bit_15";//V const id17 ="javascript.0.Rechner.Out_Byte"; //Bit deglarieren var Bit_0 = getState(id0).val; var Bit_1 = getState(id1).val; var Bit_2 = getState(id2).val; var Bit_3 = getState(id3).val; var Bit_4 = getState(id4).val; var Bit_5 = getState(id5).val; var Bit_6 = getState(id6).val; var Bit_7 = getState(id7).val; var Bit_8 = getState(id8).val; var Bit_9 = getState(id9).val; var Bit_10 = getState(id10).val; var Bit_11 = getState(id11).val; var Bit_12 = getState(id12).val; var Bit_13 = getState(id13).val; var Bit_14 = getState(id14).val; var Bit_15 = getState(id15).val; var Out_Byte = getState(id17).val; //Augang auf 0 setzen Out_Byte=0; //eingangsvariabeln erfassen und mit Ausgang verrechnen if(Bit_0==true){ Out_Byte=Out_Byte+1 } if(Bit_1==true){ Out_Byte=Out_Byte+2 } if(Bit_2==true){ Out_Byte=Out_Byte+4 } if(Bit_3==true){ Out_Byte=Out_Byte+8 } if(Bit_4==true){ Out_Byte=Out_Byte+16 } if(Bit_5==true){ Out_Byte=Out_Byte+32 } if(Bit_6==true){ Out_Byte=Out_Byte+64 } if(Bit_7==true){ Out_Byte=Out_Byte+128 } if(Bit_8==true){ Out_Byte=Out_Byte+256 } if(Bit_9==true){ Out_Byte=Out_Byte+512 } if(Bit_10==true){ Out_Byte=Out_Byte+1024 } if(Bit_11==true){ Out_Byte=Out_Byte+2048 } if(Bit_12==true){ Out_Byte=Out_Byte+4096 } if(Bit_13==true){ Out_Byte=Out_Byte+8192 } if(Bit_14==true){ Out_Byte=Out_Byte+16384 } if(Bit_15==true){ Out_Byte=Out_Byte+32768 } //Ausgang auf wert setzen setState(id17, Out_Byte); } //Funktion erneut aufrufen setInterval(function() { bla(); }, 3000);// alle 3 Sekunden ausführen
-
@thebam sagte in Deye Wechselrichter Modbus Register beschreiben:
ich bin gerade noch an einem Skript was in beide Richtungen geht am Arbeiten
Ok, wenn ich es richtig verstehe, meinst du mit den 2 Richtungen, dass wir einmal die Werte schreiben können über iob, aber auch den richtigen Wert angezeigt bekommen, wenn er am Gerät geändert wird.
Zu meinem Verständnis, das Register wird dann mit Integer beschrieben, heißt als Beispiel im Script, wenn ich den DP für Bit 5 auf true setze, setzt das Script mir den Wert auf 32, richtig? -
@coyote
Ja genau mit Bit 5 also einer 32 in Modbus datenpunkt hast du den Donnerstag aktiviert. Wenn du Mittwoch und Donnerstag aktivieren willst musst 32+16 addieren. Also eine 48 rein schreiben.
Das Skript. Kann dir also die Werte ausrechnen und du musst die dann nur noch in den Modbus datenpunkt schreiben.Mit beide Richtungen soll der Wert aus dem dp in die einzelnen Bits geschrieben werden da bin ich aber noch dran ich hoffe das ich es bis Sonntag gelöst habe.
-
@thebam so ganz passt das noch nicht, wenn ich den 40146 Solar Sell mit 32 beschreibe, geht nur Solar Sell an und Time of Use und die Tage sind nicht angehakt.
-
@coyote
Probier Mal mit 40147 ich mein der 40146 setzt nur den Haken ob überschuss verkauft werden darf oder nicht -
EDIT: Sorry, nehme alles zurück. Natürlich ist es 40147......
@thebam nee, dass ist ja genau das was ich meinte. 40147 is Grid Phase.
Schau mal:Ich habe leider keine Ahnung, wie man Bit0-7 einzeln mit 0/1 beschreiben kann im Register. Muss ich mal bisschen googeln, ob ich dazu was finde. Zumal es ja dann quasi auch falsch ausgelesen wird, bzw. nur das erste Bit ausgelesen wird.
-
@thebam ich denke, ich habe es rausgefunden. 40417 wird Dezimal beschrieben von 0-255. Damit kannst du dann den Haken bei Time of Use und die Haken bei den Tagen setzen.
Beispiel:
Dez 0 = Time of use aus und alle Tage nicht angehakt
Dez 65 = Time of use an und nur Samstag an
Dez 255 = Time of use an und alle Tage angehakt -
@coyote
Irgendwie ist da eine Verschiebung zwischen Liste und Auslesen. Deswegen ist der 40146 laut Liste im Adapter der 40146.Das andere hatte ich dir ja auch so versucht zu sagen.
Bei einer 1 ist der Time of use. Angehackt.
Bei einer 2 nur der Montag
bei einer 3 time of use und Montag
Usw. Bei einer 4 nur der DienstagZumindest habe ich das so verstanden ausprobiert habe ich es noch nicht können
-
@thebam sagte in Deye Wechselrichter Modbus Register beschreiben:
Irgendwie ist da eine Verschiebung zwischen Liste und Auslesen. Deswegen ist der 40146 laut Liste im Adapter der 40146.
Ja, hab ich ja gemerkt, da hatte ich den Beitrag schon geschrieben, daher mein EDIT.
Genau so ist es. Habe es ausprobiert und funktioniert auch. Habe aber erst heut gesehen, dass es Dezimal geschrieben wird.
-
Mal eine blöde Frage: ich war davon ausgegangen, dass Modbus TCP direkt über den WLAN Adapter auf Port 8899 funktioniert, man also keine zusätzliche Hardware (Modbus/Ethernet Adapter) benötigt. Da liege ich anscheinend falsch?
Überlege, für meine Eltern einen DEYE Hybrid zu besorgen, weil deren Niedervolt Wechselrichter kaputt gegangen ist, und sie dann die vorhandenen Bleiakkus weiternutzen könnten. Das würde ja zumindest gehen, richtig? Also man kann ganz normale 48V Akkus ohne BMS verwenden?