Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Request]Button zum Auslösen eines Durchsteppens der Frequenz des CMT2300A wenn keine Verbindung zum Wechselrichter zB HMS 1600-4T #2278

Open
khschmidt opened this issue Sep 14, 2024 · 25 comments
Labels
enhancement New feature or request

Comments

@khschmidt
Copy link

Is your feature request related to a problem? Please describe.

Mehrfach wird im Forum über Verbindungsabbrüche beim HMS 1600-4T berichtet. In einem Beitrag wird erwähnt, dass der Wechselrichter offensichtlich den Frequenzkanal wechselt und nach dem Ändern der Frequenz des CMT2300A die Kommunikation wieder funktioniert.

Describe the solution you'd like

Da nicht jeder über einen Spectrumanalyser verfügt, wäre folgende Funktion hilfreich: Ausgelöst durch einen Klick auf einen Button mit der niedrigsten erlaubten Frequenz eine Anfrage an den Inverter senden, die Antwort oder das Timeout abwarten. Bei Timeout auf den nächsthöheren Frequenzkanal schalten und so weiter. Wenn die Kommunikation erfolgreich ist, Frequenz anzeigen um sie zu speichern. Ist der Scan nicht erfolgreich, Fehlermeldung ausgeben

Describe alternatives you've considered

No response

Additional context

No response

@khschmidt khschmidt added the enhancement New feature or request label Sep 14, 2024
@khschmidt
Copy link
Author

Frequenzwechsel von HMS 1600-4T bestätigt:
Heute um 9:30 Uhr ging die openDTU wieder offline, nachdem sie seit Sonnenaufgang online auf 865MHz war. Zufällig sah ich gerade auf das Display als dies passierte. Ich wechselte dann die Frequenz auf 865,25MHZ und innerhalb weniger Sekunden war die Verbindung wieder hergestellt. Die Scanfunktion für den CMT2300A wäre für diesen Fall sehr hilfreich

@Troubadix
Copy link

Hier das gleiche Problem mit HMS-1600-4T.
Nachdem die DTU seit gestern abend endlich mit CMT-Funkmodul läuft, war heute Vormittag auf einmal der WR nicht erreichbar.
Dank diesem Beitrag die Frequenz auf 865,25 geändert und schon ist die Verbindung wieder da.

Fragen dazu:
Was triggert die Änderung der Frequenz am WR?
Kann man diese Frequenzänderung irgendwie verhindern?
Wie kann man die aktuell genutzte Frequenz ausfindig machen, ohne alle möglichen Kombinationen durchzutesten?

Danke.

@stefan123t
Copy link

@khschmidt @Troubadix einen extra GPIO für einen Frequenzwechsel zu belegen ist mE nicht zielführend.
Auch ein Button in OpenDTU GUI um manuell einen Frequenzsweep von der Base Frequenz 865MHz in 0,25MHz Schritten aufwärts durchzuführen wäre nicht wirklich eine Lösung.
Es gibt ja einen definierten Frequenzbereich je nach Land/Region den die OpenDTU und WR verwenden dürfen. Auch den Verbindungsverlust stellt die DTU selbst fest. Evtl haben neuere WR eine andere Firmware Version die das bisherige feste Channel Setting von der DTU nicht mehr hinnehmen?

Könntet ihr die ersten sieben Stellen Eurer Seriennummer und die Seite mit der Firmware/Hardware Version aus OpenDTU hier dokumentieren?

@khschmidt
Copy link
Author

khschmidt commented Sep 20, 2024

Seriennummer: 1164A006Bxxx
Firmware: v24.4.24

@khschmidt
Copy link
Author

khschmidt commented Sep 22, 2024

habe gestern mein python script der Nulleinspeisung erweitert.
Es wird über die web-api livedata/status/reachable ausgewertet und in eine Logdatei geschrieben.
Heute morgen etwa um 7.00 war die DTU auf 865,25MHz noch verbunden, etwa um 7:30 war das Display der DTU dunkel.
Auswertung meiner Logdatei:
6:14:52 Wechselricher erstmals erreichbar
6:15:08 Wechselricher nicht erreichbar
6:16:54 Wechselricher erreichbar
das wiederholt sich bis 6:24:51 in Summe 9 mal (ist noch sehr dunkel)
Sonnenaufgang war heute um 6:45
im Wechselrichterlog: 6:24:45 Wechselrichter gestartet
bis 7:21:00 erneut Wechselrichter nicht erreichbar
um 7:50 habe ich die Frequenz auf 865,00 geändert, etwa 30 Sekunden später war die DTU wieder verbunden.
Zunächst habe ich mich gewundert, warum die DTU bereits um 6:14:52 den Wechselrichter kontaktiert, da ich unter den Einstellungen des Wechselrichters, das Senden von Befehlen Nachts abgeschaltet habe. Dann habe bei Info/NTP gesehen, dass dies mit der Morgendämmerungszeit übereinstimmt. Bei der Konfiguration NTP war die nautische Dämmerung eingestellt. Diese habe ich nun auf Standarddämmerung umgestellt, ab morgen sollten die ersten Anfragen später erfolgen.
Status nach 3 Tagen:
Der WR ist von sunrise bis sunset ohne Unterbrechung erreichbar, die Umstellung auf Standarddämmerung vermeidet die Kommunikationsabbrüche wegen zu geringer Helligkeit, zB.: Daten von heute:
6:40:24 Wechselrichter gestartet
6:49:00 Sunrise (Kommunikationsaufnahme der DTU)
6:49:12 Wechselrichter mit DTU verbunden

@kopierschnitte
Copy link

Muss mich hier mal dranhängen. Als Frischling der heute seinen allerersten HMS-1800-4T (FW 1.0.27) mit einem OpenDTU Fusion v3 (generic_esp32s3_usb 24.9.27) in Betrieb genommen hat war ich na klar sofort in Panik als keine Daten mehr vom WR kamen.

Zum Glück hab ich dieses Issue gefunden bevor ich den WR herausgerissen habe ;-)

Müsste der HMS nicht einen Frequenzwechsel irgendwie vorher ankündigen? Ich meine, der Hoymiles-Stick muss das doch auch irgendwie mitbekommen.

@ms49434
Copy link

ms49434 commented Sep 29, 2024

Rein von der Logik macht es meines Erachtens keinen Sinn, wenn irgendein Wechselrichter der DTU sagt, auf welcher Frequenz sie zu kommunizieren hat. Eine DTU kann ja mehr als einen Wechselrichter verwalten und wird nicht jeden Wechselrichter auf dessen eigener Frequenz anfunken.

@kopierschnitte
Copy link

kopierschnitte commented Sep 29, 2024

Guter Punkt. Oder lässt das Funkmodul vielleicht ein größeres Empfangsspektrum zu?

Vom Signalduino-Projekt (FHEM) kenne ich das. Dort werden im 433MHz-Band ja auch diverse Geräte mit leicht unterschiedlichen Frequenzen empfangen. Ist aber ein anderer Chip.

Wohlgemerkt hat der HMS durchaus noch Befehle empfangen. Ich konnte ihn z.B. problemlos an- und ausschalten. Nur kam halt nichts mehr zurück.

@stefan123t
Copy link

@khschmidt & @kopierschnitte könnt ihr von Eurem Problem ein Serial Log erstellen, dann weiß man vielleicht eher wann und wo genau das Problem auftritt. Das bei @kopierschnitte klingt seltsam, da er angeblich noch Kommandos schicken kann?

https://www.opendtu.solar/firmware/howto/serial_console/

@kopierschnitte
Copy link

Seriallog dauert bei mir leider, da ich den ESP recht tief vergraben habe.

Aber die Sache mit den Kommandos ist definitiv so. Habe ja direkt vor'm WR gekniet und gesehen, wie er direkt von grün zu rot (und wieder zurück) wechselte.

OpenDTU hat natürlich mangels ACK einen Fehler angezeigt.

@khschmidt
Copy link
Author

Serial Log ist bei mir auch aufwendig. Kann man die virtuelle Konsole in eine Datei umleiten, oder gibt es eine Debugschnittstelle über Telnet?

@khschmidt
Copy link
Author

Der Fall den Kopierschnitte beschreibt wäre auch so erklärbar: Wenn er sehr nahe am Wechselrichter mit seiner DTU war, dann ist die Empfangsfeldstärke sehr hoch. Wenn die Kanaltrennung des Chips im Wechselrichter nicht allzu hoch ist, dann kann das auch ein Kanalübersprechen sein, da bei mir der Wechselrichter von 865,00MHz auf den Nachbarkanal 865,25MHz gewechselt hat. Die Antwort vom Wechselrichter wird von der DTU nicht gesehen, wenn die Kanaltrennung des CMT2300 höher ist.

@kopierschnitte
Copy link

In der Tat sind es bei mir max. 2m Entfernung. Könnte also sein!

@stefan123t
Copy link

@khschmidt es gab erst kürzlich einen PR für die Umleitung auf einen Remote Syslog Server #2292 .

Ich habe leider die Vermutung dass Hoymiles seit ca. Ende 2023/Anfang 2024 das Verhalten / Verfahren der HMS/HMT Baureihe mit einem Update der WR Firmware geändert hat. Früher hatte das Change Channel Command von der DTU ausgereicht.

Vielleicht kann auch ein Nutzer (@nivadis ?) mit einer Hoymiles DTU-S Pro/Lite das aktuelle Verhalten nochmal mitschneiden ?

@khschmidt
Copy link
Author

@stefan123t danke für den Hinweis, dann werde ich meine Zweit-DTU mal auf die aktuelle Firmware updaten damit ich remote syslog einrichten kann, sende ich dann auf meinen raspi3

@stefan123t
Copy link

@khschmidt den PR musst Du selber bauen, der ist m.W. noch nicht im aktuellen Trunk / Master enthalten.

@khschmidt
Copy link
Author

khschmidt commented Oct 2, 2024

Hab den PR syslog in die aktuelle Version eingebaut, compiliert und geflasht. Leider taucht auf der Konfigurationsseite/Netzwerk der Syslogéintrag nicht auf. Irgendetwas habe ich wohl noch übersehen. Ja richtig, ich musste erst die webapp compilieren, jetzt ist der syslog-Eintrag vorhanden

@khschmidt
Copy link
Author

Heute ist wieder mal im Wechselrichterlog der folgende Eintrag:
12:06:22 Zeitabgleich
12:06:37 Zeitabgleich
im syslog-File finden sich in diesem Zeitfenster folgende Einträge:
mehrfach TX Powercontrol innerhalb weniger Sekunden
neu 1.txt

@stefan123t
Copy link

Seltsam finde ich dass das Active Power Limit mE sehr niedrig ist 1W/1%, obwohl der WR ca. 20-30W mindestens braucht um zu Laufen. Man darf ihn nicht unter die Einschaltschwelle runterregeln, weil er sonst nicht mehr selber aufwacht oder antworten kann.

Hier ein altes Beispiel aus #35

22:28:13.969 > TX 51 [72 61 55 82 78 56 34](tel:72 61 55 82 78 56 34) 12 81 0B 00 01 2C 01 00 C5 C0 3E

Hier aus Deinem Log

2024-10-03T12:06:32.503315+02:00 OpenDTU-75C360 OpenDTU[95e5087d] TX ActivePowerControl 865.00 MHz --> 51 A0 06 B5 53 80 17 26 36 81 0B 00 00 B4 00 01 86 80 AF 

Und hier im 1:1 Vergleich nochmal:

22:28:13.969 > TX 51 -72 61 55 82- -78 56 34 12- 81 -0B 00- 01 2C 01 00 C5 C0 3E
12:06:32.503 > TX 51 -A0 06 B5 53- -80 17 26 36- 81 -0B 00- 00 B4 00 01 86 80 AF 

@tbnobody sollen wir das untere Limit beschränken und stattdessen einen Fehler zurück liefern. Laut den bisherigen Erfahrungsberichten soll man den WR dann lieber mit Power Off bzw. on Aus- bzw. Einschalten, wenn man den Strom nicht nutzen möchte, zB OpenDTU-OnBattery.

@khschmidt
Copy link
Author

khschmidt commented Oct 3, 2024

@stefan123t das ist sehr eigenartig, mein pythonscript hat als unteres limit 15% relativ, also 240W, es wird auch nie weniger in der dtu angezeigt und das script läuft mit 5s Raster und in diesem Zeitfenster ist dieses Kommando mehrfach innerhalb weniger Sekunden, danach ist das Logfile wieder komplett unauffällig. Ich habe noch ein Stück danach rauskopiert
neu2danach.txt

ich benutze zur Übertragung im python script die web-api mit http-get und http-post; kann es dabei zu einem Übertragungsfehler kommen?

@stefan123t
Copy link

stefan123t commented Oct 3, 2024

Ich glaube ich habe das Kommando nicht richtig interpetiert. Das 0x01 2C = 300 bzw das 0x00 B4 = 180 ist der Wert.

Danach folgt die Art, wie das Limit gesetzt wird. Persistent/Temporär bzw Absolut in W / Relativ %. Das ist einmal 0x01 00 bzw. 0x00 01. Ich kann mich nicht mehr erinnern was davon was bedeutet / setzt.

Aber die Frage ist warum setzt Du das Limit alle fünf Sekunden ? Prüfst Du auch, ob das Limit gezogen hat, dh ob der WR das Limit angenommen hat ?

Die Hoymiles WR reagieren sehr pikiert wenn man das Limit zu schnell anpasst, bevor sie es richtig gesetzt haben.
Und wenn man ihnen zweimal das selbe Limit setzt dann sind sie richtig beleidigt und reden eine ganze Weile lang nicht mehr mit einem / einer DTU.

Die anderen beiden Limits sind 0x00 C8 = 200 und dann 0x00 BE = 190.

Vielleicht ist das bei Dir auch schon zu kleinteilig geregelt ?

Hoymiles verwendet mW Stufen von 30W bzw 1-2% rauf/runter. Vielleicht machen die WR - zumal die kleinen Modelle - auch Schritte von 20W mit aber 10W klingt mir persönlich nach ein wenig zu engmaschig.

Wieviel Watt hat denn Dein WR und wieviel Prozent sind das dann ?

Ach steht ja oben 15% sind 240 W also 16 W / 1% folglich sind 100% = 1600 W.

Wenn Du nur in >16 W Schritten regelst, wird es dann besser ?

Die DTU bekommt die Rückmeldung dass der WR den neuen Limit Wert angenommen hat ja auch nur in Prozent zurück.

Vermutlich speichert der WR den Wert intern auch nur in Prozent und wenn der eben schon gesetzt ist (Rundungsfehlern sei Dank) dann verweigert der WR wie oben gesagt die Teilnahme und schmollt.

Näheres könnte evtl Flole sagen der kennt die Firmware im Assembler Code.

@khschmidt
Copy link
Author

khschmidt commented Oct 4, 2024

mein Script habe ich so geschrieben, das ich das Limit immer relativ, also in % an die DTU sende, also von minimal 15 bis maximal 100. Der Wechselrichter hat 1600W (HMS1600-4T). Auch sende ich nur ein neues Limit, wenn es sich vom alten bestätigten Limit unterscheidet. Wenn das vom Wechselrichter rückgesendete Limit sich von dem von mir zuvor gesendeten Limit unterscheidet, schreibe ich das ab heute in eine Logdatei. Wenn ich hier einen Eintrag bekomme, dann erhöhe ich den minimalen limitstep auf 2%. Das Limit regle ich nur, wenn es nötig ist, heute ist es beispielsweise sehr bewölkt, das Haus verbraucht jetzt ca. 300W, produziert werden aktuell lächerliche 78W. Da erfolgt natürlich keine Limitvorgabe, die Regelschleife läuft aktuell im Raster von 5 Sekunden, die Limitvorgabe an die DTU erfolgt aber nur wenn nötig. Das Raster von 5 Sekunden habe ich nur deshalb gewählt, weil die DTU ebenfalls im 5 Sekundenraster den Wechselrichter abfragt; ist also nicht unbedingt nötig.

Heute habe ich wieder mehrere Einträge mit Zeitabgleich im Wechselrichterlog.
In meinem syslog-File finde ich in dem Zeitraum keinerlei Auffälligkeiten, auch erfolgte keinerlei Limitvorgabe, da es sehr bewölkt ist. Lediglich die folgenden Einträge finden sich zusätzlich zu den regelmäßigen Fetch Inverterdate, und zwar:
TX SystemConfigPara (wird hier die Zeit gesetzt??
Request SystemConfigPara
TX AlarmData (wird hier der Zeitabgleichfehler mitgeteilt?)
Die Kommunikation zwischen Wechselrichter und DTU läuft aber seit Tagen ohne Unterbrechung.

@stefan123t
Copy link

Hallo @khschmidt
das klingt erst mal plausibel und sinnig was die Herangehensweise angeht.
Ich denke wir müssen evtl unterscheiden:

  • Event 2: Time calibration
  • Kommunikationsprobleme mit dem WR

Das Event 2 kommt immer wieder mal vor, vermutlich wenn sich die Timestamps in den Commands von der DTU mit denen des WR beissen. Heute neu geflasht mit v24.10.02 und der WR hat sich beim Reset der OpenDTU jeweils ein paar Einträge im Eventlog gemerkt.
Beim letzten Mal habe ich gesehen dass die DTU noch keine aktuelle Zeit per NTP geholt hatte. Habe ich dann manuell veranlasst und dann auch keine weiteren Warnungen/Fehler gesehen.

Die Kommunikationsprobleme können mE von zwei prinzipiellen Ursachen kommen:

  • die DTU / der WR wechselt die Frequenz bzw den Kanal und die DTU versucht auf einem anderen Kanal die Antwort zu empfangen.
  • durch die Kanalwechsel können auch Folge-Fehler auftreten, so wird bei mir (NRF24) häufig das erste Paket verpasst und dieses erneut angefordert. Das treibt den TX Re-request Paket counter nach oben und führt zu zusätzlicher Kommunikation.

Die Radio statistics findest Du auf der Live-View Seite unten zum Aufklappen.

@khschmidt
Copy link
Author

Hallo @stefan123t, sehe ich auch so, das Thema Time calibration hat wahrscheinlich nichts mit den Kommunikationsabbrüchen/mögliche Frequenzwechsel zu tun, manchmal habe ich tagelang keine Einträge von Time calibration geshen. Ich lasse das Mitloggen der Konsole jetzt mal laufen, eventuell kommt es ja wieder zu Kommunikationsproblemen, dann sehe ich mir die Logs wieder an.

@kopierschnitte
Copy link

Kleine Anmerkung von mir: Ich nutze keine Limitierung und das Frequenzproblem tauchte dennoch auf.
Seit zwei Tagen ist jedoch Ruhe...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants