NEWS
[Adapter] cloudfreie Auslesung von Deye-Invertern
-
@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. -
Erstmal danke für den Adapter.
Hab gestern den Sun600 eingerichtet, da hatte ich auch Probleme mit der Seriennummer,
habs dann aber hier im Forum gefunden, meine beginnt mit 3915xxxxxx, das soll laut der Anleitung die APSN sein,
also die WLan-SSid ohne "AP_" die bei verbinden mit dem WR verwendet wird.
Da ich den Wechselrichter zum testen im Zimmer eingerichtet habe, hatte ich wohl zuwenig auf den PV-Modulen,
hatte dann in der Instanz einen Fehler bei "Verbunden mit Gerät oder Dienst". Hab mir schon gedacht das der Wechselrichter dann ausgeschalten hat.
Heute hab ich ein Modul provisorisch auf den Balkon gestellt, bei bewölktem Himmel funktioniert alles und
Daten werden im IO-Broker angezeigt.
Tolle Arbeit von Dir.Ich bin noch recht neu auf IO-Broker, hab ein paar ESP mit Thermometern, ein paar Shelly Plug mit Tasmota und einen Volkszähler am laufen.
Aber wo finde ich DP1 und DP2 das ich die Daten in Grafana einbinden kann?
Die sollten doch unter Objekte -> deyeidc -> 0 -> 3915.... stehen.
Bei Berechnete Werte hab ich das so wie im Json stehenDV1*DC1 DP1 DC Power PV1 W 0Hab die Spulen nochmal gespeichert, hab bei Apo_t1 beim Namen einfach ein Leerzeichen dran gemacht,
dann gings. DP1 und DP2 werden jetzt angezeigt. -
@yettiz Schön, dass es bei dir auch funktioniert. DP1 und DP2 sind Werte, die der Wechselrichter selbst nicht produziert. Die musst du dir über berechnete Werte selbst machen, so wie du es ja auch gemacht hast.
Die Aktion mit dem Leerzeichen bei Apo_t1 hab ich nicht so ganz verstanden. Kannst du mir das bitte mal erklären?