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 · 37 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...

@Troubadix
Copy link

Ich hab kurzzeitig eine zweite OpenDTU an den gleichen WR gehängt - das soll man ja nicht machen, aber da kein anderer WR zum Test vorhanden war hab ich es halt doch gemacht - und das hat dann prompt den Frequenzwechsel getriggert.
Das hab ich dann noch ein paar Mal gemacht, nach wenigen Minuten immer der Frequenzwechsel.
Dann die zweite DTU ausgemacht und nun seit gut 2 Wochen kein Frequenzwechsel mehr.

Seriennummer | 1164a0092a30
Bootloader-Version | 0.1.1
Firmware-Version | 1.0.27
Firmware-Erstellungsdatum | 2023-06-05 10:24:00
Hardware-Teilenummer | 270680326
Hardware-Version | 01.10

@khschmidt
Copy link
Author

Ich logge seit einer Woche die Konsole mit. Am Morgen beim Start des Wechselrichters sieht das so aus:
6:55:27 Wechselrichter gestartet (aus Wechselrichterlog)
7:12:00 Sunrise
7:12:49 DTU beginnt mit Request SystemConfigPara auf 865MHz (wie konfiguriert)
erfolglos, da der WR wahrscheinlich auf einer anderen Frequenz empfangsbereit ist
30 mal resend, dann 5 mal ChannelChangeComand auf 868MHz der DTU erfolglos.
7:13:04 WR antwortet auf 865MHz und Verbindung bleibt dann den ganzen Tag stabil.
Ich nehme an, dass der Wechselrichter von sich aus solange durch das Frequenzband steppt, bis er erstmals erfolgreich eine Nachricht von der DTU empfängt. Auf dieser Frequenz bleibt er dann solange er erfolgreich Kontakt mit der DTU hält. Tritt eine längere Unterbrechung auf, beginnt er wieder das Frequenzband durchzusteppen. Warum er manchmal die zuvor verwendete Frequenz nicht mehr anwählt, ist bislang noch unklar. Bei mir läuft die Kommunikation allerdings seit Wochen stabil ohne Unterbrechungen.

@SG-fabian
Copy link

Ich habe einen HMS-1600-4T und die Verbindung bricht aktuell jeden Tag gegen 11 Uhr ab. Am späten Nachmittag habe ich dann plötzlich wieder eine Verbindung. Interessanterweise ist es jeden Tag das selbe Spiel, nur sehr selten kommt zwischendrin mal kurz eine neue Verbindung zustande.

@kopierschnitte
Copy link

Vielleicht hat es doch etwas mit dem Funk an sich zu tun? Seitdem ich bei mir die Sendeleistung deutlich reduziert habe ist völlig Ruhe. Seit Wochen.
Ebenfalls 1600-4T

@stefan123t
Copy link

Hier die ChannelChangeCommands der Original Hoymiles DTU Pro S als Referenz:
#2137 (comment)

@khschmidt
Copy link
Author

Heute ist es endlich nach mehr als 3 Wochen wieder passiert, der Inverter HMS1600-4T hat sich um 6:38:50 online gemeldet und ist um 6:57:15 offline gegangen, weil er die Frequenz gewechselt hat. Ich bekomme von meinem Script eine Meldung aufs Handy geschickt, wenn der Inverter online oder offline geht. Da heute Feiertag ist, bin ich etwas später aufgestanden und habe erst um etwa 7:50 Uhr die offline Meldung am Handy gesehen. Danach bin ich zum PC gegangen und habe die openDTU-Seite aufgerufen, der Inverter war tatsächlich offline, die Anzeige auf der DTU dunkel. Dann habe ich manuell die Frequenz des CMT2300A von 865,0 auf 865,25MHz gestellt. Sofort ist die DTU online gewesen und die Anzeige auf der DTU hat wieder die aktuellen Daten angezeigt.

Folgendes ist im Logfile der Konsole zu finden:
vor dem (ungewolltem) Frequenzwechsel des Inverters sieht man nur einige "Request retransmit", für mich kein wirklicher Grund, die Frequenz zu wechseln; siehe File FrequenzwechselInverter.txt

Beim von mir herbeigeführten Frequenzwechsel sieht man folgendes (File: ManuellerFrequenzwechsel):
In Zeile 1 sieht man den gespeicherten Frequenzwechsel: CMT TX power set to 0 dBm
in Zeile 5 sendet die DTU erstmals auf 865,25MHz: TX SystemConfigPara 865.25 MHz
in Zeile 7 antwortet der Inverter erfolgreich, die Verbindung ist erfolgreich.
Trotzdem sendet die DTU völlig unverständlich darauf 5 mal das TX ChannelChangeCommand 868.00 MHz, warum???
Glücklicherweise versteht der Inverter dieses Kommando nicht und bleibt unbeeindruckt auf 865,25MHz.
Danach sendet die DTU endlich das TX RealTimeRunData 865.25 MHz und bekommt sofort die angeforderte Antwort vom Inverter. Daraufhin bleibt die Verbindung bestehen.
Mein Vorschlag für eine Softwareänderung:
Das ChannelChangeCommand sollte in der Wechselrichterkonfiguration per Hacken abschaltbar sein, zusätzlich könnte mein eine Option Frequenzwechsel der DTU per Haken aktivierbar machen, dass bei mehrfachem nicht antworten des Inverters die DTU auf die nächsthöhere Frequenz wechselt.
FrequenzwechselInverter.txt
ManuellerFrequenzwechselDTU.txt

@stefan123t
Copy link

@khschmidt danke für die Logfiles in dem einen sendet die DTU einfach auf 865,00 MHz

Bei dem zweiten Logfile wird auch tatsächlich das ChannelChangeCommand 0x56 fünf mal gesendet und danach klappt die Kommunikation offenbar auch wieder. Zumindest habe ich ein 0x15 DevInfo Request RealTimeRunData_Debug 0x0b mit der entsprechenden 0x95 DevInfo Response Antwort gesehen.

@tbnobody wir sollten eigentlich den Inverter wieder ansprechen können wenn wir ihm das ChannelChangeCommand 0x56 auf allen Kanälen mal zukommen lassen und dann immer auf dem Zielkanal auf die Antwort warten. Wie ist das denn aktuell bei den CMT2300A Modellen programmiert. Ich habe selber kein HMS/HMT deshalb kann ich es nur anhand der Logfiles nachvollziehen.

Details

2024-11-01T07:53:02.570032+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] CMT TX power set to 0 dBm
2024-11-01T07:53:02.769983+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:02.769983+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] All missing
2024-11-01T07:53:02.802748+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Nothing received, resend whole request
2024-11-01T07:53:02.802748+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX SystemConfigPara 865.25 MHz --> 15 A0 06 B5 53 80 17 26 36 80 05 00 67 24 7A CA 00 00 00 00 00 00 00 00 11 69 DC 
2024-11-01T07:53:02.861422+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:02.861422+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 81 00 01 01 F4 00 00 03 E8 00 00 00 00 00 00 6B 6A CD | -54 dBm
2024-11-01T07:53:03.179192+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:03.179192+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Success
2024-11-01T07:53:03.867128+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Fetch inverter: 1164A006B553
2024-11-01T07:53:03.867128+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX ChannelChangeCommand 868.00 MHz --> 56 A0 06 B5 53 80 17 26 36 02 15 21 15 14 A6 
2024-11-01T07:53:03.867128+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:03.867128+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] All missing
2024-11-01T07:53:03.867128+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Nothing received, resend whole request
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX ChannelChangeCommand 868.00 MHz --> 56 A0 06 B5 53 80 17 26 36 02 15 21 15 14 A6 
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] All missing
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Nothing received, resend whole request
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX ChannelChangeCommand 868.00 MHz --> 56 A0 06 B5 53 80 17 26 36 02 15 21 15 14 A6 
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] All missing
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Nothing received, resend whole request
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX ChannelChangeCommand 868.00 MHz --> 56 A0 06 B5 53 80 17 26 36 02 15 21 15 14 A6 
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] All missing
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Nothing received, resend whole request
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX ChannelChangeCommand 868.00 MHz --> 56 A0 06 B5 53 80 17 26 36 02 15 21 15 14 A6 
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] All missing
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Nothing received, resend count exeeded
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX RealTimeRunData 865.25 MHz --> 15 A0 06 B5 53 80 17 26 36 80 0B 00 67 24 7A CF 00 00 00 00 00 00 00 00 8F 59 79 
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 01 00 01 01 6B 01 73 00 A0 00 AF 02 48 02 8C 00 02 83 | -55 dBm
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:04.213871+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 02 53 01 00 02 1C C9 00 1B 00 1E 01 68 01 6A 00 8A 58 | -55 dBm
2024-11-01T07:53:04.304541+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:04.304541+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 03 00 9B 01 F4 02 35 00 02 32 3B 00 02 3A 18 00 15 36 | -55 dBm
2024-11-01T07:53:04.304541+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:04.304541+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 04 00 18 09 4B 13 89 08 8B 00 00 00 5B 03 E8 00 7D D8 | -55 dBm
2024-11-01T07:53:04.304541+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:04.304541+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 85 00 15 62 83 23 | -55 dBm
2024-11-01T07:53:05.156598+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:05.156598+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Success
2024-11-01T07:53:08.686588+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Fetch inverter: 1164A006B553
2024-11-01T07:53:08.701374+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] TX RealTimeRunData 865.25 MHz --> 15 A0 06 B5 53 80 17 26 36 80 0B 00 67 24 7A D4 00 00 00 00 00 00 00 00 7F E7 2C 
2024-11-01T07:53:08.842407+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:08.907236+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 01 00 01 01 6B 01 73 00 A1 00 B1 02 4C 02 92 00 02 86 | -54 dBm
2024-11-01T07:53:08.907236+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:09.067181+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 02 53 01 00 02 1C C9 00 1B 00 1E 01 69 01 6A 00 8B 58 | -54 dBm
2024-11-01T07:53:09.067181+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:09.067181+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 03 00 9C 01 F7 02 38 00 02 32 3B 00 02 3A 18 00 15 3F | -54 dBm
2024-11-01T07:53:09.067181+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:09.067181+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 04 00 18 09 4B 13 89 08 9C 00 00 00 5C 03 E7 00 7D C7 | -54 dBm
2024-11-01T07:53:09.094741+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Interrupt received
2024-11-01T07:53:09.117496+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX 865.25 MHz --> 95 A0 06 B5 53 80 17 26 36 85 00 15 94 C5 93 | -54 dBm
2024-11-01T07:53:09.272703+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] RX Period End
2024-11-01T07:53:09.272703+01:00 OpenDTU-75C360 OpenDTU[a864ee4d] Success

@tbnobody
Copy link
Owner

tbnobody commented Nov 2, 2024

wir sollten eigentlich den Inverter wieder ansprechen können wenn wir ihm das ChannelChangeCommand 0x56 auf allen Kanälen mal zukommen lassen und dann immer auf dem Zielkanal auf die Antwort warten.

Definiere "Alle Kanäle"? Es sind keine Kanäle definiert. Es gibt alle möglichen Frequenzen in 0,25mhz Schritten von 860,25 - 923,50. Was also ~250 mögliche Frequenzen sind. Ich sehe es gerade nicht ein hier das ganze 868MHz Band zuzumüllen. Das kann so nicht die Lösung sein.

@khschmidt
Copy link
Author

khschmidt commented Nov 2, 2024

@stefan123t Beide Dateien kommen aus einem Tageslogfile. die beiden beiden Files habe ich aus diesem Logfile ausgeschnitten, da ich nur die relevanten Teile zeigen wollte. Das zweite File habe ich ausgeschnitten ab dem Umschaltbefehl von 865,0 auf 865,25 MHz. davor sind nur die Versuche den Inverter auf 865MHz zu erreichen und die jeweils 5 Versuche des ChannelChanceCommands.

Bitte nicht missinterpretieren: Im File ManuellerFrequenzwechsel sieht man, dass die ChannelChangeCommands hier nichts bewirken, die Kommunikation auf 865,25 MHz ist bereits ab Zeile 7 vom Inverter bestätigt, die ChannelChangeCommands sind hier nicht hilfreich, da die Kommunikation zu diesem Zeitpunkt schon wieder funktioniert.

@tbnobody Mit alle Kanäle meine ich, dass man 2 einstellbare Grenzen (zB.: von: 865,0 MHz bis: 868 MHz). Aktuell wird bei Verbindungsunterbrechung laufend RealTimeRunData gesendet (ich meine so 30 mal) und dann jeweils 5 mal das ChannelChangeCommand.
Die neue Funktion würde ausgehend von der aktuell eingestellten Frequenz zB. 10 mal das RealTimeRunData senden und bei nicht erfolgreicher Verbindung den CMT um 0,25MHz hochschalten, dann wieder 10 mal RealTimeRunCommand usw. bis zur oberen Grenze, dann mit der unteren Grenze fortsetzen, bis die Verbindung erfolgreich bestätigt wird.

@stefan123t
Copy link

@tbnobody ich will nicht das ganze Frequenzband zu spammen sondern würde mich auf die üblichen Frequenzen / Kanäle beschränken, ich muss nochmal nachlesen; es gab in der DTU Pro S FDI Anmeldung oder anderswo eine Liste der wirklich genutzten Frequenzen / Kanäle.

Hier nochmal Deine Doku aus dem OpenDTU Code:

Command structure:
* ID: fixed identifier and everytime 0x56
* CH: Channel to which the inverter will be switched to
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
-----------------------------------------------------------------------------------------------------------------
56 71 60 35 46 80 12 23 04 02 15 21 00 14 00 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- (860 MHz band)
56 71 60 35 46 80 12 23 04 03 17 3c 00 14 00 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- (900 MHz band)
^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^
ID Target Addr Source Addr ? ? ? CH ? CRC8

Das ChannelChangeCommand nimmt mW nur einen Kanal und sieht keine Frequenz für die Kommunikation vor.

56 <A0 06 B5 53> <80 17 26 36> 02 [15 21] [>15< 14] A6

Die Requests werden mit 01 und 02 als Paketcounter von der DTU an den WR geschickt.

56 80164633 80164633 01 [1521] [>21<14] 56
56 81313070 81313070 02 [1521] [>18<14] 6c

Davon ist das zweite [>15< 14] mW und auch nach Deiner Doku der Kanal, in den Logfiles von Bernhard steht an dieser Stelle >18< 14, >21< 14, >15< 14 also verwendet die DTU Pro nur jeden dritten Kanal.

Schau Dir dazu doch bitte mal die Logfiles von Bernhard an, die ich hier in Auszügen angehängt habe: #2137 (comment)

Die Antwort kommt nach der Trainingsphase wie üblich mit 0x80 Komplement also 0x56 | 0x80 = 0xd6 vom WR.

zB:
d6 80164633 80164633 01 00 1521 e3

@khschmidt
Copy link
Author

Noch eine Ergänzung zu meinen Beobachtungen:
Wenn der HMS-1600-4T aus welchem Grund auch immer meint, den Kanal ändern zu müssen, dann sperrt er offensichtlich diesen Kanal eventuell bis zum nächsten Reset. Bei mir ist das bisher 4 oder 5 mal passiert, beim ersten mal dachte ich, dass der Inverter defekt ist, ich habe dann aber den Inverter vom Netz getrennt und die Panele abgesteckt, damit der Inverter sicher resetiert, danach hat alles wie davor auf der zuvor verwendeten Frequenz von 865,0 MHz tagelang funktioniert. Danach habe ich nach einem Hinweis aus dem Forum nach dem Verbindungsverlust die Frequenz geändert auf 865,25 MHz. Wenige Sekunden später war die Verbindung dann wieder da. Ich habe die Frequenz dann auf 865,25 MHz belassen bis zum nächsten Verbindungsabbruch einige Tage später. Ich habe dann die Frequenz wieder auf 865 MHz zurückgestellt und die Verbindung war kurz darauf wieder hergestellt. Seit kurzem logge ich die Systemkonsole mit und da sieht man bei dem geloggten Daten, dass der Inverter offensichtlich am Nachbarkanal wartet (vielleicht ein Zufall), da die Verbindung nach dem Umschalten auf 865,25 MHz sofort bestätigt wird.
Ich würde daher bei meiner DTU als untere Grenze 865,0 MHz und als obere Grenze 866,0 MHz einstellen, bis jetzt hätte das immer zu einer Verbindungswiederaufnahme geführt. Ich logge aber weiter, vielleicht kann ich ja noch einen Fall aufzeichnen

@stefan123t
Copy link

@khschmidt ich denke es ist auch wichtig die Zeit zwischen Verbindungsabbruch und dem von Dir initiierten erneuten Aufbau (mit ChannelChangeCmmand) zu berücksichtigen. Der Inverter sperrt sich bei verschiedenen Fehlern ca 10-15 Minuten lang gegen Verbindungen, erst danach reagiert er wieder auf das ChannelChangeCommand und kommuniziert dann auf dem im CCC vorgegebenen Kanal bzw dessen zugehöriger Frequenz.
In dem Logfile von Bernhard aus der Original DTU Pro S sieht man dass die DTU es fast zehn Minuten lang mit dem ChannelChangeCommand an alle drei Inverter versucht und erst dann (wieder?) eine Verbindung aufgebaut werden kann.

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

7 participants