ESP RGBWW Controller - Firmware v5

Begonnen von pjakobs, 01 Januar 2025, 21:14:31

Vorheriges Thema - Nächstes Thema

pjakobs

So, ich habe das Logging ein bisschen ausgebaut.
Zum einen liefern die regelmäßigen Updates die ip Adresse mit (@weini - ja, in Deinem Fall kann man schnell nach der ID schauen, aber ich hab hier 11 Controller, da müsste ich mir eine Tabelle machen. IP Adresse hat den Vorteil, dass ich schnell sehen kann, welche Controller im gleichen Umfeld sind.

Außerdem habe ich die Möglichkeit eingebaut, Text-Logs über MQTT zu versenden, das ist noch nicht 100% perfekt, aber immerhin bekomme ich ein paar neuralgische Punkte mit. Ich werde sicher ein paar weitere Versionen pushen um zu sehen, was da passiert.

Du darfst diesen Dateianhang nicht ansehen.

Jetzt gibt's erstmal eine neue Version (480) und wir schauen wieder ne Weile.

weini

Ok, bin auf der 480.

Das hat jetzt vermutlich nichts mit dem aktuellen Fehler zu tun, aber 2 Dinge sind mir noch aufgefallen:
1) Unter "Network Init" gebe ich einen Hostname an. Der wird dann auch verwendet. Allerdings wird unter "System Settings/Hostname and Icons" bei mir immer localhost angezeigt.
2) Du hattest ja die beiben "spezial" Favorits für On & Off hinzugefügt. Off funktioniert bei mir, On aber nicht.


Übrigens: Nochmal ein dickes Danke für die Zeit, du du hier inviestierst!

pjakobs

Zitat von: weini am 29 Oktober 2025, 21:49:27Ok, bin auf der 480.
hab ich schon gesehen, aber es gibt schon eine weitere ;-)

Zitat von: weini am 29 Oktober 2025, 21:49:27Das hat jetzt vermutlich nichts mit dem aktuellen Fehler zu tun, aber 2 Dinge sind mir noch aufgefallen:
1) Unter "Network Init" gebe ich einen Hostname an. Der wird dann auch verwendet. Allerdings wird unter "System Settings/Hostname and Icons" bei mir immer localhost angezeigt.
Hab ich auch gesehen, muss ich mir genauer ansehen. Das ist ein Bug.

Zitat von: weini am 29 Oktober 2025, 21:49:272) Du hattest ja die beiben "spezial" Favorits für On & Off hinzugefügt. Off funktioniert bei mir, On aber nicht.
Ja, damit bin ich noch nicht fertig ;-)

Zitat von: weini am 29 Oktober 2025, 21:49:27Übrigens: Nochmal ein dickes Danke für die Zeit, du du hier inviestierst!
Ich find, das macht gerade Spaß, hat was detektivisches. Und mal so alle Tools rauszuziehen ist doch ne coole Sache :-)

pjakobs

Gerade sind vier Controller im Netz 192.168.178 neu gestartet - und alle sind scheinbar neu gestartet worden, weil die Konfiguration sich geändert hat.
10982642, 192.168.178.66, onConfig geting new settings
10981722, 192.168.178.84, onConfig geting new settings
7918712,  192.168.178.35, onConfig geting new settings
10981648, 192.168.178.211,onConfig geting new settings
(der Tippfehler ist im Code :D)
das wäre eine Erklärung, warum die Controller mit restart_reason 4 neu starten: wenn sich spezifische Config Settings geändert haben, wird der Controller neu gestartet, um die neuen Einstellungen zu übernehmen. Ich frage mich jetzt zwei Dinge:
a) was wird da geändert? (ich pack gleich mal noch ein paar debug messages in eine neue Version um das zu checken)
b) wer ändert da was? onConfig ist der http handler für ein http://<ip>/config POST

pjakobs

ich hab einen Verdacht: vielleicht hängt das Problem doch mit dem "verschwindenden" Hostname zusammen: @vbs - das fhem modul schreibt den fhem Namen in den Hostname, oder? Wenn der sich vom bestehenden Hostname unterscheidet, wird der Controller neu gestartet. Das sollte aber *eigentlich* nur einmal passieren, weil danach der Hostname ja gesetzt ist. hmm...

rippi46

Hallo,

die 211 hatte ich neu gestartet, weil sie nicht mehr erreichbar war um dann die neue Firmware zu flashen.

die 35,66 und 84 sind Controller der neuesten Generation, hängen aber alle an einem Netzteil (dürfte aber kein Problem sein).

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

pjakobs

@rippi46 Dein .35 ist um 9:34:20 nochmal neu gestartet, wieder nach einem POST auf onConfig, wenn Du kannst, mach doch nochmal ein Update auf die 484, die gibt mir mehr info, aber ich glaube, mein Verdacht bestätigt sich.

weini

Mir ist aufgefallen, dass mein Controller nach einem Reboot manchmal von FHEM nicht mehr erkannt wird. Im FHEM steht dann der "state" auf "disconnected". Über einen "modify" lässt sich das einfach gerade ziehen, aber das könnte evlt. auch mit dem Hostname zusammenhängen.

pjakobs

danke @rippi45 :-)
@weini, ich glaube, das hängt damit zusammen, dass nach dem Neustart erstmal keine Socket Verbindung zum fhem Modul besteht (Nachrichten vom Controller zu fhem laufen über einen tcp Socket) und das Modul den nicht sofort neu aufbaut.

vbs

Zitat von: pjakobs am 30 Oktober 2025, 09:28:48ich hab einen Verdacht: vielleicht hängt das Problem doch mit dem "verschwindenden" Hostname zusammen: @vbs - das fhem modul schreibt den fhem Namen in den Hostname, oder? Wenn der sich vom bestehenden Hostname unterscheidet, wird der Controller neu gestartet. Das sollte aber *eigentlich* nur einmal passieren, weil danach der Hostname ja gesetzt ist. hmm...
Ja, also wenn sich FHEM verbunden hat, wird der FHEM-Gerätename in General->DeviceName im Controller geschrieben.

pjakobs

Zitat von: vbs am 30 Oktober 2025, 11:36:15Ja, also wenn sich FHEM verbunden hat, wird der FHEM-Gerätename in General->DeviceName im Controller geschrieben.
genau, und damit der Name dann überall gesetzt wird, wird der Controller neu gestartet.
Das sollte aber eigentlich genau ein mal passieren.
wird der DeviceName immer gesetzt? also auch, wenn er im Controller schon korrekt ist?

pjakobs

das ist dann die Stelle, an der der Controller neu gestartet wird:
if(oldDeviceName!=newDeviceName){
  String msg = F("new Device Name, ")+newDeviceName;
  AppConfig::Network::OuterUpdater network(*app.cfg);
  network.mdns.setName(app.sanitizeName(newDeviceName));
  app.wsBroadcast(F("notification"), msg);
  debugmqttclient.log(msg);
  app.delayedCMD(F("restart"),1000);
}
Hintergrund: ich leite den mDNS Namen vom Gerätenamen ab, und starte dann neu, weil das einfacher ist, als nur den mDNS Responder neu zu konfigurieren (das schau ich mir aber nochmal an, das sollte möglich sein).

Ich hab mit Mike, dem ConfigDB Entwickler, schonmal über Change Trigger gesprochen, also Funktionen, die automatisch aufgerufen werden, wenn ein bestimmtes json Objekt geändert wurde - das ist aber noch nicht implementiert. (das ganze JSON Handling passiert ja dank ConfigDB im Hintergrund und die App muss sich damit nicht mehr beschäftigen). Deshalb speichere ich die alten und neuen Werte kurzfristig in Variablen und vergleiche sie.

Was ich noch nicht verstehe ist: warum sollte fhem den DeviceName mehr als einmal *ändern*? Also - es müsste ja tatsächlich ein anderer Name als der in ConfigDB geschrieben werden.

vbs

Zitat von: pjakobs am 30 Oktober 2025, 11:41:03genau, und damit der Name dann überall gesetzt wird, wird der Controller neu gestartet.
Das sollte aber eigentlich genau ein mal passieren.
wird der DeviceName immer gesetzt? also auch, wenn er im Controller schon korrekt ist?
Ja, der wird immer gesetzt auch wenn er schon so war.

pjakobs

hmm... ich könnte den mdnsHandler zurücksetzen, aber das ist relativ aufwendig.
Ich muss mal nachdenken, eigentlich muss ich für einen neuen Hostname nicht rebooten.

vbs

Will man überhaupt "ungefragt" rebooten, wenn bestimmte Config-Werte geändert werden? Ich find sowas überraschend, weil man im Vorfeld ja nicht weiß, welche Config-Parameter implizit so einen Reboot auslösen.