NEWS
[Adapter] cloudfreie Auslesung von Deye-Invertern
-
@rene55 Kann ich bestätigen. Ich pinge den Deye regelmäßig an und bekomme regelmäßig den Hinweis das das Gerät per Ping nicht erreichbar ist. Die Pingabfrage erfolgt alle 10 Minuten und meist ist es bei der nächsten Abfrage wieder erreichbar. Produziert wird dabei durchgehend. WLAN ist im Garten sehr gut. Inverter ist auch nur 2 meter - eher weniger vom WLan entfernt. Die Chinesen können den Inverter ja auch neu starten und die Firmware aktualisieren.
-
@cash ja das kann schon sein. Ich würde es halt so machen.
Ich komme aus der Branche Prozessautomatiesierung und Bigdata. Da ist das Standard.
Wenn eine Abfrage auf eine Maschine keine Daten liefert, dann bleiben die alten Daten erhalten und der Qualitycode geht auf Bad, uncertain oder halt Device not connected (0x42). Kommt immer auf den Hersteller an. 0x00 Good ist aber in jedem Fall falsch.
Grüße
Chris -
@christianblenk sagte in [neuer Adapter] cloudfreie Auslesung von Deye-Invertern:
Good ist aber in jedem Fall falsch
Das nehm ich mal als Auftrag. Wobei die meisten Adapter, die ich so in Gebrauch habe immer 0x00 in den State geben. Oder kennst du einen, der das so umgesetzt hat?
-
@rene55 jetzt hast du mich.
Nein, aktuell weiß ich das nicht. Soweit ich das aber in Erinnerung habe, gehen die Werte aber auf 0. -
Ich habe mir gestern den Adapter installiert/eingerichtet, bekomme ihn aber nicht zum Laufen wegen eines "offset"-Fehlers. Ich habe unter "Register" 2 einzelne (3, 86) ausgewählt:
deyeidc.0 2023-05-05 09:16:04.568 error
Exception-Code: ERR_OUT_OF_RANGE: The value of "offset" is out of range. It must be >= 0 and <= 1. Received 2deyeidc.0 2023-05-05 09:16:04.567 error
RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 and <= 1. Received 2 at new NodeError (node:internal/errors:399:5) at boundsError (node:internal/buffer:88:9) at Buffer.readUInt8 (node:internal/buffer:254:5) at idcCore.readCoils (/opt/iobroker/node_modules/iobroker.deyeidc/lib/idc-core.js:181:35) at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.deyeidc/main.js:161:31) at Socket.emit (node:events:513:28) at addChunk (node:internal/streams/readable:324:12) at readableAddChunk (node:internal/streams/readable:297:9) at Readable.push (node:internal/streams/readable:234:10) at TCP.onStreamRead (node:internal/stream_base_commons:190:23)deyeidc.0 2023-05-05 09:16:04.561 error
uncaught exception: The value of "offset" is out of range. It must be >= 0 and <= 1. Received 2Wenn ich 2 Ranges mit je 3 Register (2 - 4, 85 - 87) auswähle lautet die Fehlermeldung:
uncaught exception: The value of "offset" is out of range. It must be >= 0 and <= 5. Received 6Gibt hier der WR ein Register mehr zurück als angefragt wird?
WR: Deye sun600g3-eu-230
Firmware des WR: MW3_16U_5406_1.57 -
@ah179 die Abfrage enthält Register ausserhalb deiner Deklaration unter dem Reiter Register. Dort einfach so anpassen, dass die Abfrage hinein passt.
-
@rene55 ich hab das für mich jetzt erstmal so gelöst.
-
@christianblenk vielen Dank, ich konnte zwar keinen "Spulen"-Eintrag außerhalb der "Register"-Ranges entdecken, aber alles zu löschen und neu anlegen brachte dann den Erfolg. Der Adapter läuft und tut was er soll.
Da du den "Running Status" verwendest, wo gibt es hierzu eine Auflistung welcher Wert was bedeutet?
-
Als Anregung, so habe ich es bei mir gelöst, damit nicht beim kleinsten Schluckauf die Werte genullt werden.
-
@ah179 Kannst du noch nachvollziehen, was du eingetragen hattest? Selbst wenn eine "Spule" ausserhalb der "Register" liegt, darf der Adapter keinen Error werfen. Er beachtet diesen Wert einfach nicht.
-
@christianblenk Ja, so kann man es machen. Für mich stellt sich die Frage, wann ich das machen soll? Und ist es dann sinnvoll, dem Anwender in den "Spulen" noch einen Haken setzen lassen, wo er eben das Nullen auswählen kann. Oder eine geschicktere Lösung?
-
@medea Solange sollte man mindestens Warten. Könnte ich als Parameter auch noch einbauen.
-
@rene55 du fragst doch alle x Sekunden ab. Wenn nach x Versuchen keine Verbindung zu stande kommt die Werte auf einen vorzugebenen Wert nehmen. In der Industrie nennt man das dann Ersatzwert bei Verbindungsfehler.
Für mich mich ist immer nur die tatsächlich generierte Arbeit interessant. Deshalb nulle ich auch sofort beim Verbindungsverlust. Die Summenzähler nulle ich nicht. Hier könnte man drüber nachdenken NULL in die DB zu schreiben. Da weiß ich aber nicht, ob das mit dem Adapter möglich ist.
-
@christianblenk Einen Zähler hab ich schon ins Auge gefasst. Das Problem dabei ist, der eine fragt jede Minute, der andere nur alle 6 Minuten. Na gut, ich könnte den Zähler in Abhangigkeit der Abtastrate bringen. Also würde es dir helfen, in der Konfiguration die Werte zu markieren, die dann genullt werden sollen.
Auch der Wunsch nach der Qualität ist noch ein Problem. Werte, die bestimmt richtig sind, werde ich bei Verbindungsabbruch nicht auf 0x42 setzen. Hier muss ich noch eine Lösung ausbrüten. -
Hallo zusammen, vielen Dank für die bisherige Entwicklung des Adapters. Ich bin kurz davor mir einen Deye SUN Mikrowechselrichter mit 600 Watt zu kaufen. Die Installation des Adapters hat auf jeden Fall problemlos mit den Infos hier im Thread geklappt.
Eine Sache zu den Registern: Halten sich die Deye-Wechselrichter ans Sunspec-Protokoll bei der Registerabfrage? Laut Sunspec-Website sind diese zumindest für das Protokoll zertifiziert, allerdings unterscheiden sich die Register, die ich hier lese vom Sunspec-Protokoll. Wobei man bei der Zählung der Modbus-Register immer sehr vorsichtig sein muss und evtl. einen Offset berücksichtigen muss. Bei Sunspec sind die Register für einphasige und dreiphasige Wechselrichter leicht unterschiedlich.
-
@oromis Nach der ersten Durchsicht des Sunspec-Protokolls sehe ich doch starke Abweichungen zu Deye. Bisher kann ich nur sagen, dass die Deye 300 - 2000 mit den bekannten Registern auslesbar sind. Sicher haben die 3-phasigen und die Hybrid-Inverter mehr und andere Register - die mir aber(da ich keinen habe) nicht bekannt sind. Hier sind wir also auf Rückmeldungen anderer User angewiesen.
-
@rene55 Danke dir! Dann ist es wohl kein Ansatzpunkt, um die Adressen weiter zu verfolgen. Hier übrigens das "Zertifikat", das ich auf der Sunspec-Seite dazu zu den Deye-Wechselrichtern gefunden habe. https://sunspec.org/wp-content/uploads/2020/08/SunSpec-Deye-certificate-SM-000007.pdf
-
Hi,
habe den Deye 800.
Mir wird nur folgendes angezeigt:
Folgende Einstellungen habe ich gewählt:
Wo habe ich den Denkfehler, dass keine Werte generiert werden?
Danke für Tipps -
@edrivede Was hast du für Systemdaten vom ioBroker? Könnte es sein, dass die InverterSeriennummer falsch ist? Normal sind Nummern 4xxxx .
-
@edrivede Zwei Fehler:
Statt der Inverter serial number die Device serial number aus der Device Information verwenden.
Und in der Berechnung noch in der ersten Zeile korrigieren: Statt DV1*DV1 muss es DV1*DC1 sein, um DP1 zu erhalten.