ESP RGBWW Wifi Led Controller - Firmware vbs

Begonnen von vbs, 18 April 2017, 09:26:13

Vorheriges Thema - Nächstes Thema

vbs

ACHTUNG:
Name und Update-URL für das FHEM-Modul hat sich geändert. Bitte folgende URL benutzen:
update add https://raw.githubusercontent.com/verybadsoldier/esp_rgbww_fhemmodule/master/controls_espledcontroller.txt

Name ist nun "EspLedController". Devices in FHEM müssen entsprechend umgestellt werden.


Es handelt sich hier um einen Fork von Patrick's (mrpj) Firmware für die Selbstbau-ESP-RGBWW-Controller von hier:
https://forum.fhem.de/index.php?topic=48918.0

Da ich die Firmware jetzt einige Wochen auf mehreren Controller bei mir betrieben habe und auch keine weiteren Problem aufgetaucht sind, würde ich die Firmware jetzt aus dem Status "experimentell" entlassen, da ich sie jetzt für ausreichend stabil halte.

Die Änderungen bzw. neuen Features an Firmware bzw. FHEM Modul sind hier zu finden:
https://github.com/verybadsoldier/esp_rgbww_firmware/wiki#modifications
https://github.com/verybadsoldier/esp_rgbww_fhemmodule/wiki#modifcations

Firmware
Ich hab hier mal versucht, die Firmware zu beschreiben:
https://github.com/verybadsoldier/esp_rgbww_firmware/wiki

Die URL zum Installieren der Firmware (über Webinterface) ist diese:
https://rgbww.dronezone.de/release/version.json

Es gibt auch eine "Testing"-Variante mit evtl. noch nicht so gut erprobten Features (Tester willkommen!):
https://rgbww.dronezone.de/testing/version.json


Nach der Erstinstallation kann die Firmware später in FHEM mit dem Befehl "fw_update" aktualisiert werden:
https://github.com/verybadsoldier/esp_rgbww_fhemmodule/wiki#controller-firmware-updates

FHEM Modul

Ich hab auch das FHEM-Modul angepasst, so dass die Features (alle?) auch direkt aus FHEM heraus verwendet werden können. Auch dazu hier ein bisschen Dokumentation:
https://github.com/verybadsoldier/esp_rgbww_fhemmodule/wiki

Um diese Version des Moduls von der Original-Version "32_LedController" unterscheiden zu können und damit beide Version auf einem System parallel betrieben werden können, heißt diese Version hier "32_EspLedController".

Das Modul kann als FHEM-Repository eingebunden und upgedatet werden:
update add https://raw.githubusercontent.com/verybadsoldier/esp_rgbww_fhemmodule/master/controls_espledcontroller.txt

Wer möchte, kann auch den develop-Kanal nutzen (neuer, aber weniger getestet):
update add https://raw.githubusercontent.com/verybadsoldier/esp_rgbww_fhemmodule/develop/controls_espledcontroller.txt


Achtung:
Bis Dez. 2017 hieß das Modul ebenfalls "32_LedController" und wurde nachträglich in "32_EspLedController" umbenannt. Der alte existiert im Git momentan noch, wird jedoch nicht mehr gepflegt. Also bitte auf den neuen Namen umstellen.

Hinweise
Die Firmware und das FHEM-Modul sind als Einheit gedacht. Also es wird nicht bzw. schlecht funktionieren, die neue Firmware mit dem alten FHEM-Modul oder umgekehrt zu benutzen.

Wenn etwas nicht klappt, bitte Bescheid geben. Bitte dazu sagen, was genau gemacht wurde, was das erwartete Ergebnis war und Logausgaben posten.



Updates
https://github.com/verybadsoldier/esp_rgbww_firmware/wiki#overview-of-modifications


Mit diesem Befehl können alle Controller upgedatet werden:
set TYPE=EspLedController fw_update

Nach einem Upgrade von der Original-FW wird noch die alte Update-URL im Controller hinterlegt sein. Mit diesem Befehl lassen sich einmalig alle Controller auf die neue Update-URL setzen:
set TYPE=EspLedController config config-ota-url http://rgbww.dronezone.de/release/version.json


Flashen
Seriell flashe ich mit folgendem Befehl:
esptool.py -p /dev/ttyUSB0 -b 115200 write_flash -ff 40m -fm qio -fs 32m 0x00000 out/firmware/rboot.bin 0x01000 /home/vbs/Projects/esp-open-sdk/sdk/bin/blank.bin 0x02000 out/firmware/rom0.bin 0x100000 out/firmware/spiff_rom.bin

Die Dateien (bis auf blank.bin) liegen auf der (fast) gleichen URL wie die version.json. Einfach den Dateinamen austauschen. Die blank.bin kann weg gelassen werden wenn nicht verfügbar.


Supportanfragen
Bei Supportanfragen bitte den Fehler bzw. die Umgebung ein bisschen beschreiben. Ich weiß, das macht etwas Arbeit, aber erleichtert die Analyse unheimlich. Hat es früher schonmal funktioniert? Seit wann tritt es auf? Was wurde am System geändert? Tritt es bei anderen Controllern evtl. nicht auf?

Bitte mindestens Folgendes angeben:

  • Firmwareversion und Modulversion (bitte mit der neuesten Version gegenprüfen)
  • list des Devices in FHEM
  • verbose5-Log aus FHEM (hinreichend lang, bitte mehr als nur ein paar Sekunden)
  • Beschreibung wie man das Problem reproduzieren kann

vbs

#1
Man kann jetzt auch Firmware-Updates direkt aus FHEM heraus anstoßen.

Mafi

Ich habe jetzt mal das geänderte FHEM Modul runtergeladen und das vorhandene mit dem neuen überschrieben. Nach einem Reload des Moduls konnte ich dann erfolgreich die Firmware des RGBWW Controllers auf die Entwicklerversion updaten. Prima!
Nach einem Neustart von FHEM, weil die ON/OFF Funktion via Lampensymbol in der FHEM Oberfläche nicht mehr ging (schaltete immer nur ein, aber nie aus und zeigte auch immer eine ausgeschaltete Birne) war dann allerdings mein LEDController Device ganz weg und ich bekam nur mehrere Fehlermeldungen beim Start, dass ich das Gerät doch bitte erst definieren soll. Das kam wohl von diversen NOTIFYs, die sich auf den jetzt verschwundenen Controller bezogen.
Es stellte sich nach Sichtung des Quelltextes heraus, dass das Moodul jetzt eine andere Definition des Devices verlangt. Entgegen der Fehlermeldung, die ich zunächst beim Versuch das Device wieder anzulegen erhielt, lautet die Syntax nicht "<name> LedController <type> <IP>" sondern es muss "<name> LedController <IP> <port>" sein und es müssen auch alle Parameter angegebn werden.
Damit konnte ich das Device dann wieder anlegen. Jetzt gibt es allerdings die vorher vorhandene ON/OFF Funktion via Glühbirnensymbol gar nicht mehr. Ist das so gewollt? Ich habe jetzt einfach eine Schaltfläche mit der Farbe Schwarz zum Abschalten hinzugefügt.
Mehr habe ich jetzt noch nicht ausprobiert, Farbe direkt setzen und einige Fades haben aber schon funktioniert.

Fernziel für mich ist es, den Controller für mein Aquarium einzusetzen. Dazu muss ich aber RGB und zwei Weißkanäle getrennt bedienen können, weshalb diese Firmware für mich interessant ist. Wie mir scheint, könnte ich das damit wohl umsetzen. Sonnenaufgang mit den RGB LEDs, dann langsam die beiden Weißkanäle aufdimmen und abends umgekehrt. Oder so ähnlich. Idealerweise kann ich den gesamten Tagesablauf einmal morgens auf dem Controller starten und muss danach nicht mehr eingreifen bis spät abends das Licht wieder aus ist.
Die Aquarienleuchte einfach als normale RGBWWCW Leuchte zu definieren geht nicht, weil ich für volle Helligkeit im Becken alle Kanäle gleichzeitig auf voller Leistung benötige, die normale Vorgehensweise die Helligkeit über alle Farben und Farbtemperaturen konstant zu lassen ist da nicht brauchbar. Für Wohnraumbeleuchtung ist das natürlich das richtige Verhalten, da erwartet man, dass die Helligkeit nicht von der Farbtemperatur abhängt.

Grüße
Markus

vbs

#3
Zitat von: Mafi am 19 April 2017, 22:27:02
Es stellte sich nach Sichtung des Quelltextes heraus, dass das Moodul jetzt eine andere Definition des Devices verlangt. Entgegen der Fehlermeldung, die ich zunächst beim Versuch das Device wieder anzulegen erhielt, lautet die Syntax nicht "<name> LedController <type> <IP>" sondern es muss "<name> LedController <IP> <port>" sein und es müssen auch alle Parameter angegebn werden.
Danke für den Hinweise! Ich hab die Hilfe korrigiert und werde das auch im Wiki erwähnen.
EDIT:
War im Prinzip ein Bug... der Port war optional gedacht und sollte dann auf 9090 "defaulten"... also eigentlich keine Änderungen an der Defintion notwendig
/EDIT

Zitat von: Mafi am 19 April 2017, 22:27:02
Damit konnte ich das Device dann wieder anlegen. Jetzt gibt es allerdings die vorher vorhandene ON/OFF Funktion via Glühbirnensymbol gar nicht mehr. Ist das so gewollt? Ich habe jetzt einfach eine Schaltfläche mit der Farbe Schwarz zum Abschalten hinzugefügt.
Also die Befehle on/off sind vorhanden und sollten hoffentlich weiter funktionieren. Ich kann nicht genau sagen, was bei deinem Glühbirnensymbol passiert. Kannst du auf Befehle bezogen sagen, was nicht funktioniert bzw. das einmal mit Befehlen nachvollziehen? Ich vermute, dass ein Kommando "toggle" benötigt wird (oder eine andere Definition von webCmd). Werde ich mal hinzufügen bei Gelegenheit.

Zitat von: Mafi am 19 April 2017, 22:27:02
Fernziel für mich ist es, den Controller für mein Aquarium einzusetzen. Dazu muss ich aber RGB und zwei Weißkanäle getrennt bedienen können, weshalb diese Firmware für mich interessant ist. Wie mir scheint, könnte ich das damit wohl umsetzen. Sonnenaufgang mit den RGB LEDs, dann langsam die beiden Weißkanäle aufdimmen und abends umgekehrt.
Ich fürchte, da muss ich die enttäuschen: die hardwareseitigen Ausgänge sind genau so verknüpft wie mit der original Firmware. Also du kannst leider nicht die CW/WW-Kanäle getrennt von RGB steuern.
Was jetzt möglich ist, ist zB den Hue-Kanal zu kommandieren während zB der Helligkeitskanal einen Fade ausführt. Aber ich fürchte, dass dich das nicht wirklich weiter bringen wird.

ComputerZOO

Moin,
werden diese Fehlermeldungen in dem (neuen) Modul nun abgefangen?
Use of uninitialized value $a in pattern match (m//) at ./FHEM/32_LedController.pm line 958.
Use of uninitialized value $a in pattern match (m//) at ./FHEM/32_LedController.pm line 959.

vbs

Vielleicht :) Ist wirklich einiges umgebaut und mir ist bisher nix aufgefallen. Wenns auftritt wirds gefixt ;)

funclass

Hey vbs,

da du derzeit viel Zeit mit der Firmware verbringst möchte ich hier die (vielleicht penetrante) Frage nach nem einfachen "stopp-Kommando" nochmal stellen.
Ich würde es wirklich schick finden, wenn ich eine laufende Animation einfach via stopp anhalten könnte.

Kannst du den Aufwand hierfür grob einschätzen? Hab mir die Firmware noch nicht so detailliert angesehen, außer damals zum Erstellen der Modul-Doku.

Gruß funclass

vbs

#7
Jau, stop ist drin. Gibt auch pause, continue etc.:
https://github.com/verybadsoldier/esp_rgbww_firmware/wiki#channel-animation-control

Die Befehle können auch auf einzelne Kanäle beschränkt werden. Also du kannst zB auch nur den Fade des Hue-Kanals stoppen und den Helligkeitsfade weiterlaufen lassen.

Mafi

Zitat von: vbs am 19 April 2017, 22:59:01
Danke für den Hinweise! Ich hab die Hilfe korrigiert und werde das auch im Wiki erwähnen.
EDIT:
War im Prinzip ein Bug... der Port war optional gedacht und sollte dann auf 9090 "defaulten"... also eigentlich keine Änderungen an der Defintion notwendig
/EDIT
Super!

Zitat von: vbs am 19 April 2017, 22:59:01
Also die Befehle on/off sind vorhanden und sollten hoffentlich weiter funktionieren. Ich kann nicht genau sagen, was bei deinem Glühbirnensymbol passiert. Kannst du auf Befehle bezogen sagen, was nicht funktioniert bzw. das einmal mit Befehlen nachvollziehen? Ich vermute, dass ein Kommando "toggle" benötigt wird (oder eine andere Definition von webCmd). Werde ich mal hinzufügen bei Gelegenheit.

Da müsste ich erst einmal nachsehen. Bisher war beim Anlegen eines LEDControllers diese ON/OFF Funktion mit dem Glühlampensymbol automatisch vorhanden, ich habe da nichts angelegt. Vermutlich löst das einen Toggle Befehl aus. Im Moment habe ich anstelle der Glühbirne "opened" da stehen und witzigerweise ist das anklickbar und schaltet das Licht ein. Nur aus geht es so nicht mehr. Da muss irgendwas durcheinander in meiner Definition sein...

Zitat von: vbs am 19 April 2017, 22:59:01
Ich fürchte, da muss ich die enttäuschen: die hardwareseitigen Ausgänge sind genau so verknüpft wie mit der original Firmware. Also du kannst leider nicht die CW/WW-Kanäle getrennt von RGB steuern.
Was jetzt möglich ist, ist zB den Hue-Kanal zu kommandieren während zB der Helligkeitskanal einen Fade ausführt. Aber ich fürchte, dass dich das nicht wirklich weiter bringen wird.

:( Schade. Dann hatte ich unter "Kanal" etwas falsches verstanden, nämlich die Hardwarekanäle und nicht die HSV Werte. Aber das Auftrennen und getrennt ansteuern der Hardwarekanäle ist ja in einem anderen Thread auch schon ein Thema gewesen, deshalb gebe ich Hoffnung nicht auf, dass es das irgendwann geben wird  :)

Grüße
Markus

vbs

Zitat von: Mafi am 20 April 2017, 10:29:05
Da müsste ich erst einmal nachsehen. Bisher war beim Anlegen eines LEDControllers diese ON/OFF Funktion mit dem Glühlampensymbol automatisch vorhanden, ich habe da nichts angelegt. Vermutlich löst das einen Toggle Befehl aus. Im Moment habe ich anstelle der Glühbirne "opened" da stehen und witzigerweise ist das anklickbar und schaltet das Licht ein. Nur aus geht es so nicht mehr. Da muss irgendwas durcheinander in meiner Definition sein...
Früher hat das Reading "state" den Zustand on/off wiedergegeben. Jetzt nutzt das Modul DevIO zur Kommunikation mit dem Controller. DevIO nimmt implizit das Reading "state" in Beschlag und schreibt dort "openend" "disconnected" usw. rein. Ich vermute mal, dass das Lampensymbol "off" sendet, wenn es "on" entdeckt als state. Aber da es jetzt stattdessen "opened" entdeckt, wird es vermutlich einfach ein "toggle" schicken. Den Befehl "toggle" hab ich jetzt eingebaut, sollte dann also funktionieren.

vbs

Achso, hier ist die Modul-Dokumentation zu pause/stop/continue:
https://github.com/verybadsoldier/esp_rgbww_fhemmodule/wiki#new-commands

Ist wahrscheinlich praxisrelevanter als die Firmware-Doku.

lewej

Hi,

kann ich das fhem Modul, über das FHEM Interface mit einem update add einbinden, wenn ja könntest welchen Befehl muss man absetzen(URL ??).

Gruß und Danke
Super Job

lewej

lewej

Hi,

ich hatte das bereits in dem Thread Modul (original) gefragt, im Webinterface ist MQTT als Reiter da, jedoch kann ich diesen nicht aktivieren. Muss ich da eine andere Firmware nutzen?

Gruß
lewej

vbs

Zitat von: lewej am 20 April 2017, 19:07:56
kann ich das fhem Modul, über das FHEM Interface mit einem update add einbinden, wenn ja könntest welchen Befehl muss man absetzen(URL ??).
Sorry, gibt es leider (noch) nicht.

Zitat von: lewej am 20 April 2017, 19:11:09
ich hatte das bereits in dem Thread Modul (original) gefragt, im Webinterface ist MQTT als Reiter da, jedoch kann ich diesen nicht aktivieren. Muss ich da eine andere Firmware nutzen?
MQTT ist bisher nicht implementiert. Ich hab aber in den letzten Tagen ziemlich viel damit rumgespielt und ausprobiert. An einigen Stellen leider mit recht ernüchternden Ergebnissen. Wofür würdest du MQTT bei dem Controller nutzen wollen?

lewej

Hi,

ich muss in der Küche drei Stück verbauen, dann welche im Wohnzimmer, jetzt ist unser EG sehr offen, deshalb muss ich die Controller irgendwie synchron bekommen. Man könnte jetzt zwar mit fhem mit notifys rum spielen, aber das ist zu langsam und damit schwindet der WAF :(.

Am liebsten wäre mir auch noch eine Variante, wo die Controller sich ohne FHEM oder MQTT mit einander unterhalten könnten (Multicast).

PS. Ich habe deine Firmware drauf und werde berichten.