NEWS
[Adapter] cloudfreie Auslesung von Deye-Invertern
-
@rene55 ich kann leider keine attachments laden. gibt einen Fehler im Browser. Habe dir eine email gesendet
Register:
600 699
Coils:
676 3 676 PV1 Voltage V@frank70 Danke für die Infos: Ich kann natürlich die Register mit meinem kleinen WR nicht nachvollziehen. Da du ein Problem beim Register 599 hast, kannst du ja mal probieren, die Range von 500 - 600 einzustellen. Auch wenn das mit dem nächsten Bereich 600-699 überlappt. Möglicherweise kommt dann etwas.
-
@frank70 Danke für die Infos: Ich kann natürlich die Register mit meinem kleinen WR nicht nachvollziehen. Da du ein Problem beim Register 599 hast, kannst du ja mal probieren, die Range von 500 - 600 einzustellen. Auch wenn das mit dem nächsten Bereich 600-699 überlappt. Möglicherweise kommt dann etwas.
@rene55 überlappen mit 600 hat geklappt. Mir kommt es so vor als obe zu grosse Registerbereiche bei den Abfragen Probleme machen. Istz es besser viele Einträge mit kleinen Registerbereichen einzustellen?
-
@rene55 überlappen mit 600 hat geklappt. Mir kommt es so vor als obe zu grosse Registerbereiche bei den Abfragen Probleme machen. Istz es besser viele Einträge mit kleinen Registerbereichen einzustellen?
@frank70 Darum habe ich auch Platz für mehrere Bereiche gelassen. Wenn alles in einem Bereich hinge, wäre auch die Antwort ellenlang. Zum Problem 599: du holst ja auch 32-Bit-Werte ab - also zwei aufeinanderfolgende Register (599+600). Hauptsache, die Werte die da rauskommen sind plausibel.
-
@frank70 Darum habe ich auch Platz für mehrere Bereiche gelassen. Wenn alles in einem Bereich hinge, wäre auch die Antwort ellenlang. Zum Problem 599: du holst ja auch 32-Bit-Werte ab - also zwei aufeinanderfolgende Register (599+600). Hauptsache, die Werte die da rauskommen sind plausibel.
600 ist ok aber 598 und 599 macht wenig sinn
Ich habe nicht besonders viel Erfahrung mit modbus. Ist es problematisch aufeinanderfolgende Register abzufragen?
Werden alle Einträge in den Coils zu einem Registerbereich (Start-Ende) in eine Antwort gepackt? -
600 ist ok aber 598 und 599 macht wenig sinn
Ich habe nicht besonders viel Erfahrung mit modbus. Ist es problematisch aufeinanderfolgende Register abzufragen?
Werden alle Einträge in den Coils zu einem Registerbereich (Start-Ende) in eine Antwort gepackt?@frank70 sagte in [neuer Adapter] cloudfreie Auslesung von Deye-Invertern:
problematisch aufeinanderfolgende Register
Nö, muss nur zum Register Anfang - Ende passen.
Ja, ein Register-Bereich bewirkt eine (mehr oder weniger lange) Antwort.Versuch mal die Register 598, 599 und 600 mit Regel 1 auszulesen.
-
@frank70 sagte in [neuer Adapter] cloudfreie Auslesung von Deye-Invertern:
problematisch aufeinanderfolgende Register
Nö, muss nur zum Register Anfang - Ende passen.
Ja, ein Register-Bereich bewirkt eine (mehr oder weniger lange) Antwort.Versuch mal die Register 598, 599 und 600 mit Regel 1 auszulesen.
@rene55 said in [neuer Adapter] cloudfreie Auslesung von Deye-Invertern:
Register 598, 599 und 600 mit Reg
macht keinen unterschied mit regel 1.
ich habe die befürchtung dass modbus tcp nicht gleich modbus rtu ist. weisst du ob die idr. diese protokolle gleich halten? -
@rene55 said in [neuer Adapter] cloudfreie Auslesung von Deye-Invertern:
Register 598, 599 und 600 mit Reg
macht keinen unterschied mit regel 1.
ich habe die befürchtung dass modbus tcp nicht gleich modbus rtu ist. weisst du ob die idr. diese protokolle gleich halten?@frank70 sagte in [neuer Adapter] cloudfreie Auslesung von Deye-Invertern:
modbus tcp nicht gleich modbus rtu
Da kann ich nicht viel zu sagen. Wo genau da die Unterschiede sind? Ich dachte erstmal nur im Übertragungsweg.
-
@frank70 sagte in [neuer Adapter] cloudfreie Auslesung von Deye-Invertern:
modbus tcp nicht gleich modbus rtu
Da kann ich nicht viel zu sagen. Wo genau da die Unterschiede sind? Ich dachte erstmal nur im Übertragungsweg.
@rene55 Ich versuche gerade checkbox felder im GUI des WR auszulesen. was würdest als ergebnis bei einem boolschen wert im iobroker feld erwarten?
-
@rene55 Ich versuche gerade checkbox felder im GUI des WR auszulesen. was würdest als ergebnis bei einem boolschen wert im iobroker feld erwarten?
-
@frank70 Kann verschieden sein true/false, 0/-1. Aber ist jetzt ne andere Baustelle und hat mit dem Adapter nichts zu tun, oder?
@rene55 ist ne andere baustelle. ich versuche die richtigen register zu finden
-
Ich habe den Adapter mittlerweile in 5 Instanzen installiert, und er macht das was er soll, dafür ein dickes Lob!:+1: :+1: :+1: :slightly_smiling_face:
Mir ist aber Folgendes aufgefallen:
Ich hatte mich bei der Installation der ersten und zweiten Instanz irgendwie mit den Seriennummern und den IP-Adressen verhaspelt und hab ein paar mal rumgeändert, bis ess dann gepasst hat.
Das hatte zur Folge, dass bei einer Instanz ein Ordner "1" angelegt war, in dem noch ein alter Wert des Registers 86 des anderen WR festhing.
Nach dem ich die Instanz gelöscht und wieder neu angelegt hatte, war wieder alles OK.
War das ein Bug oder ein Hinweis auf ein kommendes Feature, mit einer Instanz mehrere WR auslesen zu können? -
Ich habe den Adapter mittlerweile in 5 Instanzen installiert, und er macht das was er soll, dafür ein dickes Lob!:+1: :+1: :+1: :slightly_smiling_face:
Mir ist aber Folgendes aufgefallen:
Ich hatte mich bei der Installation der ersten und zweiten Instanz irgendwie mit den Seriennummern und den IP-Adressen verhaspelt und hab ein paar mal rumgeändert, bis ess dann gepasst hat.
Das hatte zur Folge, dass bei einer Instanz ein Ordner "1" angelegt war, in dem noch ein alter Wert des Registers 86 des anderen WR festhing.
Nach dem ich die Instanz gelöscht und wieder neu angelegt hatte, war wieder alles OK.
War das ein Bug oder ein Hinweis auf ein kommendes Feature, mit einer Instanz mehrere WR auslesen zu können?@thilo-frank Eigentlich soll eine Instanz die Daten eines WR verarbeiten. Der Ordner unterhalb von deyeidc.0 wird erst angelegt, wenn der WR eine gültige Antwort zurückgibt. Das tut er, wenn er mit einer passenden Seriennummer angesprochen wird. Woher der bei dir jetzt eine '1' erwischt hat, kann ich nicht sagen.
Hast du tatsächlich 5 WR? Welche Typen? -
@thilo-frank Eigentlich soll eine Instanz die Daten eines WR verarbeiten. Der Ordner unterhalb von deyeidc.0 wird erst angelegt, wenn der WR eine gültige Antwort zurückgibt. Das tut er, wenn er mit einer passenden Seriennummer angesprochen wird. Woher der bei dir jetzt eine '1' erwischt hat, kann ich nicht sagen.
Hast du tatsächlich 5 WR? Welche Typen?@rene55 Ich habe 4x den Bosswerk MI-600 und 1x den Deyesun 600g3.
Den Ordner "1" hatte er zusätzlich zum Ordner "0" angelegt, falls ich mich hier unklar ausgedrückt hatte... -
@rene55 Ich habe 4x den Bosswerk MI-600 und 1x den Deyesun 600g3.
Den Ordner "1" hatte er zusätzlich zum Ordner "0" angelegt, falls ich mich hier unklar ausgedrückt hatte... -
Aktuelle Version 0.1.0. Veröffentlichungsdatum 14.03.2023 Github Link https://github.com/raschy/ioBroker.deyeidc Neuer Adapter für cloudfreie Auslesung von Mikro-Wechselrichtern aus dem Hause Deye
Dieser Adapter ermöglicht es, Daten aus einem Wechselrichter im lokalen Netzwerk auszulesen. Diese Daten werden über die bekannten Modbus-Ports abgerufen und in den Datenpunkten gespeichert. Dies wurde an einem "Deye-kompatiblen" Mikro-Wechselrichter entwickelt und getestet. Die abzufragenden Register können daher bei anderen Modellen abweichen. Hierfür muss lediglich die IP des Wechselrichters und die Seriennummer des Loggers eingegeben werden. Falls der Port vom Standardwert abweicht, kann dieser ebenfalls angepasst werden. Als praktikabler Wert für die Abtastrate sind 60 Sekunden voreingestellt. Dieser Adapter soll all den jenigen entgegen kommen, die mit der SolarmanPV App nicht oder nur ungerne (China-Cloud) arbeiten wollen.
Was muss gemacht werden: unter Einstellungen mindestens die lokale IP des Inverters und die Seriennummer des Loggers (fängt meistens mit 4xxxx an) eintragen.
Im nachfolgenden Tab Register das erste und letzte Register eintragen, welches abgefragt werden soll. Hier sind mehrere Zeilen möglich, um die nicht benötigten oder unsinnigen Register zu überspringen. Voreingestellt sind hier die Register 59 - 90.
In einem weiteren Tab Spulen werden die tatsächlichen Register eingestellt. Hier ist beispielhaft das Register 86 voreingestellt. In diesem Register befindet sich der 'Total AC Output Power (Active)' der im Datenpunkt 'Apo_t1' abgelegt wird. Um diesen richtig auszulesen wird die Regel 3 angewandt, die Einheit soll 'W' sein und der Faktor ist 1. Weitere Register zähle ich später noch auf (für Einsteiger, die die Register nicht kennen, gibt es auf github https://github.com/raschy/ioBroker.deyeidc/blob/main/deyeidc.MI600.json ein Beispiel) .
Im letzten Tab Berechnen können die Werte berechnet werden, die der Wechselrichter selbst nicht liefert.
Beispielsweise ist hier ein Muster vorgegeben, welches die Modulleistung eines Inverter-MPPTs berechnet.
Hierzu wird das Produkt aus der Spannung und dem Strom berechnet, und dann im entsprechenden Datenpunkt abgelegt. (Funktioniert natürlich nur, wenn man zuvor die Daten für DV1 und DC1 abgeholt hat).
Seit Version 0.0.5 müssen die Compute-Vorgaben überarbeitet werden. Waren hier in den älteren Versionen zwei Felder für eine Multiplikation vorgesehen, müssen jetzt die beiden Werte, aus denen etwas errechnet werden soll in einem Feld stehen mit der passenden Berechnungsvorschrift. Das heißt, wenn man wie bisher die Leistung eines Moduls aus Spannung und Strom berechnen möchte, schreibt man in das Feld Value "DV1*DC1" rein. Alles andere ist unverändert. Als Feature kann man jetzt den Spannungsunterschied zwischen den zwei Modulen berechnen "DV1-DV2" (Nur für den, den es interessiert).Seit dem 25.08.2023 ist der Adapter nun in der Version 0.0.9 in das ioBroker-Repository aufgenommen worden. Anschließend wurde noch etwas bereinigt und für die Aufnahme ins stable vorbereitet. In diesem Stadium bekam ich den Hinweis, dass wohl die 32-bit-Werte falsch berechnet würden. Das hab ich dann (leider ohne viel zu prüfen) in die Version 0.0.10 übernommen. Schnell musste ich feststellen, dass alle damit berechneten 32-bit-Werte falsch waren. Also, zur 'Schadensminimierung', die aktuelle Version 0.0.11 hinterhergeschoben.
Zwischenzeitlich wurde ja auch das Relais von Deye ausgeliefert und bei einigen schon integriert. Danach gab es einige Telegramme mehr, die hier ausgetauscht wurden. Das wurde dann in den Versionen 0.0.12 bis 0.0.14 angepasst.Ab der Version 0.0.15, wurde das Rechenmodul etwas überarbeitet. Es prüft jetzt die Eingaben ab, ob der in der Berechnung verwendete Datenpunkt überhaupt existiert. Wenn nicht gibt es eine Warnung. Gelegentlich Verbindungsprobelme sollten in der jetzt aktuellen Version 0.1.0 auch gefixt sein.
Der Adapter ist jetzt in einer Phase, die gerne von Euch weiter getestet und kommentiert werden darf/soll. Auch soll es wohl möglich sein, große und Hybridwechselrichter über diesen Adapter auszulesen. Hier müssen halt nur die richtigen Register ausgewählt werden. Daher wäre es schön, wenn Rückmeldungen auch hierzu kämen.
Viel Spaß.
-
-
@humidor Das ist das Problem. Da der nur lokal ausgelesen werden kann und ich keinen habe, kann ich das weder bestätigen noch dementieren.
Ich weiß nur das @frank70 versucht, die passenden Register für einenDEYE SUN-12K-SG01LP3auszulesen. -
@rene55 sollte ich mich für diesen entscheiden, kannst du das auch bei meinem testen, kann da nur unterstützen, da ich Java nicht mächtig bin
-
@rene55
deyeidc.0
2023-04-10 09:51:06.210 error Logger number seems to be wrong [2744092xxxx] .deyeidc.0
2023-04-10 09:51:06.210 debug IP address [192.168.90.56] seems to be valid.ich habe in der main.js folgende Änderung vorgenommen:
if (this.config.logger < 2100000000) {Damit startet der Adapter und verbindet sich mit dem WR
-
@Rene55 : ich habe solarman mal angeschrieben, ob sich bzgl. des Aktualisierungsintervalls am Logger etwas einstellen lässt, damit zumindest lokal kürzere Intervalle möglich sind. Mal abwarten, was da als Antwort kommt.
