NEWS
Nanoleaf Light Panels (Aurora) Adapter
-
@sirlance sagte in Nanoleaf Light Panels (Aurora) Adapter:
Sonst müsste ich ja n! Szenen anlegen und dann per iobroker noch auswählen was jetzt als kombination als szene gewählt werden soll.
Du kannst eine Szene nicht nur auf bestimmten Panels abspielen. Bei einer Szene (sei es eine einfarbige, Farb- oder dynamische Szene) sind immer alle Panels beteiligt.
Was du da machen willst, ginge auf sehr komplizierten Wege.
Grundsätzlich ginge das mit einer dynamischen Szene. Dort kannst du eine Hintergrund-Animation oder Rhythm auswählen und dann einzelne Panels mit solid Colors einfärben.
Das ist dann aber auch eine Szene, die man dann startet und auf alle Panels anzeigt.
Wenn da jetzt einzelne verschiedene Panels leuchten sollen, um einen Status anzuzeigen, müsste man diese dynamische Szene quasi dynamisch ändern, da die eingefärbten Panels ja sonst fest.
Das ginge aber nur in der App. Mit dem ioBroker-Adapter kann man keine Szenen erstellen oder ändern. Das ist derzeit nicht implementiert. Und ich müsste da schauen, ob die API das so überhaupt bietet.
Alternative wäre tatsächlich für alle möglichen Kombinationen n Szenen anzulegen. -
Hallo @daniel_2k
Wäre es vllt. möglich ein Objekt hinzuzufügen, in das man einfach einen beliebigen API-Call (Json) einfügt, welcher dann an die Panels geschickt wird?
Hintergrund: Ich würde gerne eigene Animationen erstellen. Wie das JSON aussehen muss habe ich schon rausgefunden. Hier ein Beispiel (etwas umformatiert und mit Notizen in Klammern):
{ "write":{ "animName":"test", "loop":true, "animType":"custom", "animData":" 12 (Anzahl aller Panels) 1 3 (vermutlich Panel 1, Frames 3) 101 103 104 0 25 (Panel 1, Frame 1, [R, G, B, ?, Pause in ms]) 101 103 104 0 30 (Panel 1, Frame 2, [R, G, B, ?, Pause in ms]) 101 103 104 0 30 (Panel 1, Frame 3, [R, G, B, ?, Pause in ms]) 2 3 (Frame 2 von 3) 61 61 61 0 25 (Panel 2, Frame 1, [R, G, B, ?, Pause in ms]) 61 61 61 0 30 (Panel 2, Frame 2, [R, G, B, ?, Pause in ms]) 61 61 61 0 30 (Panel 2, Frame 3, [R, G, B, ?, Pause in ms]) 3 3 61 61 61 0 25 101 103 104 0 30 101 103 104 0 30 4 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 5 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 6 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 7 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 8 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 9 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 10 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 11 3 61 61 61 0 25 61 61 61 0 30 61 61 61 0 30 12 3 61 61 61 0 25 61 61 61 0 30 101 103 104 0 30 ", "command":"add", "colorType":"HSB", "pluginUuid":"", "palette":[ { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 }, { "brightness":90, "hue":110, "saturation":80 } ], "version":"2.0" } }
So ein JSON müsste ich einfach an die Panels "senden" können.
vg
Jens
-
@nevermind
Ich habe Version 1.3.0 auf Github bereitgestellt.
Unter anderem habe ich da einen neuen State "effectWrite" hinzugefügt.
Auf dem kannst du einen JSON-String schreiben. Der wird dann an den Effect-Endpoint mit PUT als Wert von "write" geschickt.
Hinweis: die write-Eigenschaft brauchst du nicht mitsenden. Das macht der State automatisch. Also nur das was im Write enthalten ist musst du als JSON-String schreiben.
Du kannst auf auch mit command: request Effekte lesen. Die Antworten von effectWrite sind im State effectWriteResponse zu finden.
Habs mal bei mir getestet. Funktioniert eigentlich ganz gut.
Die Reponse wird auch als JSON-String geschrieben. Das könnte ich auch noch direkt als Object schreiben. Dann is es aber im Objekt-Explorer nicht lesbar und nur in Skripten zu verarbeiten. -
Wow, echt super!! Werde ich morgen gleich mal testen
-
Funktioniert bisher. Danke!
2021-11-29 09:05:34.400 - [32minfo[39m: nanoleaf-lightpanels.1 (3320) starting. Version 1.3.0 in /opt/iobroker/node_modules/iobroker.nanoleaf-lightpanels, node: v14.18.1, js-controller: 3.3.19 2021-11-29 09:05:34.431 - [32minfo[39m: nanoleaf-lightpanels.1 (3320) Nanoleaf adapter 'nanoleaf-lightpanels.1' started. 2021-11-29 09:05:34.437 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) SSDP 'DeviceFound' event initialized! 2021-11-29 09:05:34.439 - [32minfo[39m: nanoleaf-lightpanels.1 (3320) Connecting to '192.168.0.128:16021'... 2021-11-29 09:05:34.488 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) Connect timer stopped! 2021-11-29 09:05:34.489 - [32minfo[39m: nanoleaf-lightpanels.1 (3320) Connected to '192.168.0.128:16021' 2021-11-29 09:05:34.491 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) nanoleaf Device 'Canvas' (NL29) detected! 2021-11-29 09:05:34.605 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) SSDP notify events initialized! 2021-11-29 09:05:34.629 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) SSE subscription started, listening... 2021-11-29 09:05:48.291 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) ssdp:alive NOTIFY received: {"host":"239.255.255.250:1900","nt":"nanoleaf:nl29","nts":"ssdp:alive","usn":"uuid:****","location":"http://:16021","cache-control":"max-age = 60","nl-deviceid":"14:****","nl-devicename":"Canvas ***1","address":"192.168.0.127"} 2021-11-29 09:05:48.293 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) Location string 'http://:16021' seems to be missing or invalid, use address '192.168.0.127' from packet header instead! 2021-11-29 09:06:07.825 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) ssdp:alive NOTIFY received: {"host":"239.255.255.250:1900","nt":"nanoleaf:nl29","nts":"ssdp:alive","usn":"uuid:****","location":"http://:16021","cache-control":"max-age = 60","nl-deviceid":"3A:****","nl-devicename":"Canvas ***2","address":"192.168.0.128"} 2021-11-29 09:06:07.828 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) Location string 'http://:16021' seems to be missing or invalid, use address '192.168.0.128' from packet header instead! 2021-11-29 09:06:07.829 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) nanoleaf uuid:**** from device '192.168.0.128' set! 2021-11-29 09:06:48.691 - [34mdebug[39m: nanoleaf-lightpanels.1 (3320) ssdp:alive NOTIFY received: {"host":"239.255.255.250:1900","nt":"nanoleaf:nl29","nts":"ssdp:alive","usn":"uuid:****","location":"http://:16021","cache-control":"max-age = 60","nl-deviceid":"14:****","nl-devicename":"Canvas ***1","address":"192.168.0.127"}
-
Eben getestet. Funzt! Vielen Dank
-
@ofbeqnpolkkl6mby5e13
Ja, also dass du mehrere Notify-Meldungen siehst ist korrekt. Die SSDP-Notify-Broadcasts gehen an alle nanoleaf-Adapter-Instanzen und werden ausgewertet.
Natürlich wird nur der Broadcast ausgewertet, der zum eingestellten Host passt, der andere schlicht ignoriert, was jetzt im Debug-Log so nicht steht. Ja, so sicher etwas verwirrend. Aber ja auch nur im Debug zu sehen, falls was nicht funktioniert man sehen kann, was der Adapter überhaupt registriert.
Aber das wird ja eh nur ein mal gemacht. Der Match aller weiteren Pakete wird ja dann über die UUID gemacht. -
@daniel_2k
Okay. Ich hatte zuerst das "set!" im Log übersehen. Danach hatte ich meinen Beitrag editiert. Ich sehe ein, dass das reicht. -
@daniel_2k: Toller Adapter. Danke!
Eine kleine Frage hätte ich: Sollte der Adapter nicht auch Effekte kennen(lernen), die man in der App angelegt hat?
Bei mir tut's das nämlich nicht -
@oxident
Ja, macht er auch. Im state "effect" ist der aktuell bzw. der zuletzt eingestellte Effekt.
Der Datenpunkt wird beim Start des Adapters bzw. während er läuft bei Änderungen automatisch mit allen verfügbaren Effekten aktualisiert.
Im Objektexplorer kannst du in den Wert reinklicken und hast dann eine Klappliste mit allen Effekten.
Ansonsten im state effectList, sollten die auch als Liste sichtbar sein. -
Hallo!
Der Adapter verliert ständig die Verbindung, weiß jemand woran es liegen kann?
nanoleaf-lightpanels.0 2024-08-13 10:19:06.642 warn Connection to '192.168.1.98:16021' lost, Error: No ssdp:alive detected. Try to reconnect... nanoleaf-lightpanels.0 2024-08-13 10:17:51.550 info Reconnected to '192.168.1.98:16021' nanoleaf-lightpanels.0 2024-08-13 10:16:51.544 warn Connection to '192.168.1.98:16021' lost, Error: No ssdp:alive detected. Try to reconnect... nanoleaf-lightpanels.0 2024-08-13 10:15:36.461 info Reconnected to '192.168.1.98:16021' nanoleaf-lightpanels.0 2024-08-13 10:14:36.453 warn Connection to '192.168.1.98:16021' lost, Error: No ssdp:alive detected. Try to reconnect...
Danke Euch!
-
Hallo @uli977,
das kann verschiedene Ursachen haben.
Das Problem ist hier, dass die SSDP Keep Alive Pakete, die die Geräte jede Minute senden, nicht im Adapter ankommen und er deswegen denkt, die Verbindung ist weg.
Bei älteren Light Panels- und Canvas-Geräten, gab es mal einen Firmware-Bug, der ist aber lange behoben, aber wenn dein Gerät eines der beiden ist, prüfe bitte, ob die Firmware aktuell ist.
Ansonsten sind das Netzwerk-Themen.
Damit die Pakete empfangen werden können, muss die Firewall auf dem Host eingehend Multicast UDP-Pakete auf Port 1900 zulassen.
Manchmal hilft es auch den Adapter auf eine konkrete Schnittstelle zu binden. In den Adapter-Einstellungen wähle da mal statt 0.0.0.0 dein IPv4-Interface aus, welches mit dem Netzwerk verbunden ist, wo auch das nanoleaf-Gerät erreichbar ist.Grüße
Daniel -
@uli977 Ich hatte heute auch (seit langem) dieses Problem. Das Panel war auch über die App nicht mehr erreichbar, jedoch noch im WLAN angemeldet.
Ein simples neuverbinden oder stromlos machen hat direkt geholfen.
-
Hi Kollegen
ich habe seit ein paar Wochen das Problem mit meinen Canvas das der Adapter im Restart Loop ist. Meine Shapes funktionieren. Die Nanoleaf Komponenten sind mit neuestem Firmware Update. Ich weiß hier nicht mehr weiter. evtl. hatte hier einer das Problem schon??
2024-10-03 10:01:34.467 - info: nanoleaf-lightpanels.2 (1885449) starting. Version 1.5.0 in /opt/iobroker/node_modules/iobroker.nanoleaf-lightpanels, node: v18.20.3, js-controller: 6.0.11 2024-10-03 10:01:34.484 - info: nanoleaf-lightpanels.2 (1885449) Nanoleaf adapter 'nanoleaf-lightpanels.2' started. 2024-10-03 10:01:34.489 - info: nanoleaf-lightpanels.2 (1885449) Connecting to '192.168.10.120:16021'... 2024-10-03 10:01:34.527 - info: nanoleaf-lightpanels.2 (1885449) Connected to '192.168.10.120:16021' 2024-10-03 10:01:34.655 - error: nanoleaf-lightpanels.2 (1885449) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2024-10-03 10:01:34.656 - error: nanoleaf-lightpanels.2 (1885449) unhandled promise rejection: undefined is not a valid state value 2024-10-03 10:01:34.658 - error: nanoleaf-lightpanels.2 (1885449) Error: undefined is not a valid state value at Object.maybeCallbackWithError (/opt/iobroker/node_modules/@iobroker/js-controller-common-db/build/cjs/lib/common/maybeCallback.js:36:13) at AdapterClass._setState (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:3851:48) at AdapterClass.setState (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:3820:17) at setChangedState (/opt/iobroker/node_modules/iobroker.nanoleaf-lightpanels/main.js:676:12) at Immediate. (/opt/iobroker/node_modules/iobroker.nanoleaf-lightpanels/main.js:702:4) at process.processImmediate (node:internal/timers:478:21) 2024-10-03 10:01:34.659 - error: nanoleaf-lightpanels.2 (1885449) undefined is not a valid state value 2024-10-03 10:01:34.670 - info: nanoleaf-lightpanels.2 (1885449) Shutting down Nanoleaf adapter 'nanoleaf-lightpanels.2'... 2024-10-03 10:01:34.672 - info: nanoleaf-lightpanels.2 (1885449) terminating 2024-10-03 10:01:34.673 - warn: nanoleaf-lightpanels.2 (1885449) Terminated (UNCAUGHT_EXCEPTION): Without reason 2024-10-03 10:01:35.175 - info: nanoleaf-lightpanels.2 (1885449) terminating 2024-10-03 10:01:35.257 - error: host.iobroker instance system.adapter.nanoleaf-lightpanels.2 terminated with code 6 (UNCAUGHT_EXCEPTION) 2024-10-03 10:01:35.257 - info: host.iobroker Restart adapter system.adapter.nanoleaf-lightpanels.2 because enabled 2024-10-03 10:01:39.562 - info: host.iobroker "system.adapter.nanoleaf-lightpanels.2" disabled 2024-10-03 10:02:07.339 - error: nanoleaf-lightpanels.2 (1885479) adapter disabled 2024-10-03 10:02:07.401 - warn: nanoleaf-lightpanels.2 (1885479) Terminated (NO_ADAPTER_CONFIG_FOUND): Without reason 2024-10-03 10:02:08.014 - error: host.iobroker instance system.adapter.nanoleaf-lightpanels.2 terminated with code 3 (NO_ADAPTER_CONFIG_FOUND) 2024-10-03 10:02:08.015 - info: host.iobroker Do not restart adapter system.adapter.nanoleaf-lightpanels.2 because disabled or deleted
-
Hallo @rogni,
das Problem hatte ich bisher noch nie gesehen. Da gibt's ein Fehler beim Setzen eines States, der undefiniert ist. Interessant.
Passiert das immer gleich nach dem der Adapter connected? Oder nur manchmal?
Stelle mal bitte den Adapter auf auf Debug und poste das Debug Log hier, da kann ich mehr sehen, was für ein State genau das ist.
Hast du die Canvas auch mal vom Netz genommen und 1 min. gewartet und wieder drangesteckt? Ab und zu verhaken sich die nanoleaf-Geräte und senden z.B. keine Alive-Pakete mehr.Grüße
Daniel