ESP RGBWW Controller - Firmware v5

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

Vorheriges Thema - Nächstes Thema

Mafi

Guten Morgen!

Tests haben ergeben, dass du richtig liegst mit deinen Vermutungen.
Beide Probleme sind auch mit der neuen Firmware vorhanden, weil der Fehler gar nicht in der Firmware liegt! Das fhem Modul ESPLedController ist fehlerhaft! Andere RGBWW Platinen zeigen nämlich mit älterer Firmware genau dasselbe Verhalten, wenn ich sie RAW ansteuere.
Das bedeutet, der Fade, den ich vermisse, kommt nicht aus dem Controller selbst, sondern wird vom fhem Modul eingefügt. Wie von dir vermutet. Ebenso wird dort das RAW Kommando falsch zusammengebaut, sodass führende leere Einträge in der Kanalliste als 0 gesetzt werden.
Ich muss mal aus meinen Backups die Vorgängerversion des Moduls rauskramen und testen. Wird ziemlich sicher dann wieder gehen.
Sorry, dass du dich jetzt umsonst auf die Suche begeben hast.

Grüße
Markus

pjakobs

Zitat von: Mafi am 23 April 2026, 10:54:27Guten Morgen!

Tests haben ergeben, dass du richtig liegst mit deinen Vermutungen.
Beide Probleme sind auch mit der neuen Firmware vorhanden, weil der Fehler gar nicht in der Firmware liegt! Das fhem Modul ESPLedController ist fehlerhaft! Andere RGBWW Platinen zeigen nämlich mit älterer Firmware genau dasselbe Verhalten, wenn ich sie RAW ansteuere.
Das bedeutet, der Fade, den ich vermisse, kommt nicht aus dem Controller selbst, sondern wird vom fhem Modul eingefügt. Wie von dir vermutet. Ebenso wird dort das RAW Kommando falsch zusammengebaut, sodass führende leere Einträge in der Kanalliste als 0 gesetzt werden.
Ich muss mal aus meinen Backups die Vorgängerversion des Moduls rauskramen und testen. Wird ziemlich sicher dann wieder gehen.
Sorry, dass du dich jetzt umsonst auf die Suche begeben hast.

Grüße
Markus


kein Ding, schön, dass Du's gefunden hast.

Aber wie gesagt: die Funktion eines "default fade" will ich auch in der Firmware einbauen, weil's einfach schöner ist.

pjakobs

Im Moment habe ich echte Probleme mit den develop und experimental Versionen, es scheint mit der Anzahl freier TCP Verbindungen zusammenzuhängen, aber genau weiß ich es nicht.
Aktuell solltet Ihr nicht auf die neuen (700er) Versionen updaten.
Ich melde mich, wenn's besser wird

pjakobs

so, ich glaube, die V5.0.0-807-develop ist wieder okay.
Du darfst diesen Dateianhang nicht ansehen.
Das Problem war scheinbar, dass ich im Controller zu aggressiv gecached habe, jetzt nutze ich cache-busting im Vue/vite build Prozess, was dafür sorgt, dass jetzt alle Objekte, die nachgeladen werden einen eindeutigen String pro Build angehängt bekommen (siehe Anhang). Die Dateien sehen dann so aus:
/assets/index-DjEmwXxm.js
/assets/index-BdtixC0s.css
und wenn es einen neuen Build gibt, dann verändert sich der String, so dass der Browser Cache automatisch ein neues Dokument zieht, aber innerhalb eines Build die Datei gecached wird.
Nebenbei ist die CI für die Firmware jetzt deutlich ausgeweitet, inclusive valgrind checks, um eventuell neue Memory Leaks zu finden.
Ich arbeite gerade daran, dass API fast komplett aus dem http server heraus zu nehmen und in eine eigene Klasse zu packen, auf die Weise ist das API dann über HTTP, MQTT und Websocket nahezu 100% deckungsgleich, das Frontend wird das nutzen, um die Kommunikation mit dem Controller über Websocket abzuwickeln. Das sollte, besoders auf dem ESP8266 dazu führen, dass es seltener zu Verbindungsabbrüchen wegen vollständig benutzter TCP Verbindungen kommen wird.

pc1246

Moin
Jetzt habe ich doch wirklich mal wieder Zeit gefunden mich diesem Thema zu widmen.
Irgendwie meinte ich ja vor einem Jahr, dass ich hier mitlesen wollte, habe ich aber nicht.
Irgendwie war ich aber auch schon ewig nicht im Forum.
Mein Problem ist jetzt, dass ich auf irgendeiner sehr alten Ursprungsversion bin, und OTA nicht updaten kann.
Firmware 4.3.1-rc1
Web Interface 0.3.3-shojo7
RGBWW Version 0.9.0
SMING Version 4.0.0
Die Variante von Rippi in https://forum.fhem.de/index.php?msg=1350784 hat auch nicht geklappt:
C:\Users\Christoph>curl -X POST http://192.168.178.243/update -H 'Content-Type: application/json' --data '{"rom": {"url": "http://lightinator.de/download/develop/V5.0-503-develop/esp8266/debug/rom0.bin"},"spiffs": {"url": "http://rgbww.dronezone.de/testing/spiff_rom.bin"}}'
{"error":"could not parse HTTP body"}curl: (6) Could not resolve host: application
curl: (3) unmatched brace in URL position 1:
{url:
 ^
Ueber fhem wollte er auch nicht, da stand er ueber eine Stunde im OTA active, bis ich ihn spannungslos gemacht habe.
Muss ich den jetzt wirklich seriell flashen?
Danke und Gruss
Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

pjakobs

Moin Christoph,

sorry, das das so lange gedauert hat, ich war unterwegs.

4.3.1-rc1 ist ja so alt nicht, ich galube, dass das OTA danach bis zur 5.0 nicht mehr angefasst wurde.

Dein json sieht okay aus,
{
  "rom": {
    "url": "http://lightinator.de/download/develop/V5.0-503-develop/esp8266/debug/rom0.bin"
  },
  "spiffs": {
    "url": "http://rgbww.dronezone.de/testing/spiff_rom.bin"
  }
}

die Fehlermeldung ist verwirrend:
{"error":"could not parse HTTP body"}
das sieht nach einer Fehlermeldung des Controllers aus - das ist ein "bad request"
curl: (6) Could not resolve host: application
curl: (3) unmatched brace in URL position 1:
{url:

die erste Fehlermeldung kommt sehr sicher hierher:

        String body = request.getBody();
        if (body == NULL) {
            sendApiCode(response, API_CODES::API_BAD_REQUEST, F("could not parse HTTP body"));
            return;
        }

das ist ein leerer Request Body

die weiteren Teile kommen von curl - ich seh's noch nicht, aber irgendwas an Deiner curl Zeile stimmt nicht, Dein Rechner  sendet eine leere Anfrage und curl versucht dann mit dem Rest der Zeile irgendwas anzufangen.


bei mir funktioniert die gleiche Zeile allerdings -

$ curl -X POST http://192.168.29.101/update -H 'Content-Type: application/json' --data '{"rom": {"url": "http://lightinator.de/download/develop/V5.0-503-develop/esp8266/debug/rom0.bin"},"spiffs": {"url": "http://rgbww.dronezone.de/testing/spiff_rom.bin"}}'
{"success":true}

Die curl fehlermeldung "could not resolve host" lässt mich vermuten, dass irgendwie das "application/json" als host portion gelesen wurde, dann das "unmachted brace position.." - irgendwas stimmt mit dem Quoting in Deiner ursprünglichen Zeile nicht. Führst Das auf einer Linux Shell aus? Die Backslashes im Prompt lassen mich Windows befürchten, und da weiß ich nicht, ob ' und " genauso interpretiert werden wie unter Linux.

Wenn Du die Möglichkeit hast, führ doch die gleiche curl Zeile mal auf Linux aus, das sollte m.E. funktionieren

Grüße

pj

vbs

Zitat von: pc1246 am 14 Mai 2026, 21:58:01Die Variante von Rippi in https://forum.fhem.de/index.php?msg=1350784 hat auch nicht geklappt:
C:\Users\Christoph>curl -X POST http://192.168.178.243/update -H 'Content-Type: application/json' --data '{"rom": {"url": "http://lightinator.de/download/develop/V5.0-503-develop/esp8266/debug/rom0.bin"},"spiffs": {"url": "http://rgbww.dronezone.de/testing/spiff_rom.bin"}}'
{"error":"could not parse HTTP body"}curl: (6) Could not resolve host: application
curl: (3) unmatched brace in URL position 1:
{url:
 ^
Das scheint ein curl-Aufruf von Linux zu sein, der unter Windows ausgeführt wird? Soweit ich weiß läuft unter Windows das Quoting anders. Also den Linux-Befehl kann man syntaktisch nicht 1:1 übernehmen. Also Single-Quotes kennt Windows-cmd erst einmal nicht. Könnte man evtl. so ersetzen:
curl -X POST http://192.168.178.243/update -H "Content-Type: application/json" --data "{\"rom\": {\"url\": \"http://lightinator.de/download/develop/V5.0-503-develop/esp8266/debug/rom0.bin\"},\"spiffs\": {\"url\": \"http://rgbww.dronezone.de/testing/spiff_rom.bin\"}}"

pc1246

@vbs
Danke, das hat in Theorie funktioniert.
Die Linux Version aus Linux heraus natuerlich auch.
Leider mag der Controller nicht updaten. Dann hole ich den mal aus der Ecke raus, wenn ich Lust habe.
Danke und Gruss
Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div