Modul 31_Twinkly.pm - Control Twinkly Lights

Begonnen von t1me2die, 21 November 2022, 13:21:41

Vorheriges Thema - Nächstes Thema

peterk_de

So, ich konnte nun mit dem Modul auch erfolgreich 2 gruppierte Twinklys steuern! Das lief nicht direkt, was aber nicht am Modul liegt, sondern an den Twinklys selbst. So hab ich es hinbekommen:

- In der App vor dem Gruppieren die Twinklys auf die aktuelle Firmware bringen (in meinem Fall 2x Modell TWS400SPP auf FW 2.8.15). Achtung, die App hat mich nicht gewarnt, dass eine der Ketten eine ältere Firmware hatte. Manuell checken!

- Dann gruppieren. Ich habe den "Join-Mode" gewählt (schlägt die App auch per default vor). Die anderen Modi hab ich nicht getestet, werden aber sicher genauso klappen.

- Dann EINE von den verknüpften Ketten in FHEM anlegen. Die IP kann man praktischerweise direkt in der App nachlesen. Das Problem: Es muss die richtige Kette sein. Die Settings bekommt das Modul zwar offenbar von jeder der verknüpften Ketten korrekt gelesen, aber per FHEM steuern kann man sie nur, wenn man "die richtige" erwischt. Welche Kette das ist - gute Frage, es ist in der App nirgends gekennzeichnet! Ich habs durchprobiert - bei mir war es die ältere, also die, die ich zuerst mit der App gekoppelt hatte.

Und dann läuft das wie am Schnürchen, inkl. Wechsel der Effekte.

Ich habe momentan nur noch ein anderes Problem - mindestens eine Kette von mir schaltet sich nach ein paar Stunden von allein immer mit dem ersten hochgeladenen Movie an, obwohl beim ausschalten ein anderer gewählt war. Am FHEM-Modul hier kanns nicht liegen, das hab ich zum Test deaktiviert. Timer hab ich auch keine in der App aktiviert. Ich vermute es liegt an der Kette selbst. Wer hier also sachdienliche Hinweise hat, gern posten :-)


Und @Borkk: Hast du mal in der App geschaut, ob du die Firmware upgraden kannst? Ist tief in den Settings versteckt und kommt nicht automatisch hoch. Dann könnte es evtl. klappen mit dem Modul!
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

t1me2die

Zitat von: Borkk am 05 Dezember 2022, 18:44:30
Hallo Zusammen,

Super das es nun ein Modul gibt. Bei mir klappt es leider nicht so reibungslos. Sobald das Modul zum ersten mal auf die Kette zugreift startet FHEM neu.

/entry.sh: line 621: kill: (9298) - No such process
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Resource not found.") at ./FHEM/31_Twinkly.pm line 778.
Abrupt daemon termination, starting 10s countdown .../entry.sh: line 625: kill: (9298) - No such process
10/entry.sh: line 625: kill: (9298) - No such process
9/entry.sh: line 625: kill: (9298) - No such process
8/entry.sh: line 625: kill: (9298) - No such process
7/entry.sh: line 625: kill: (9298) - No such process
6/entry.sh: line 625: kill: (9298) - No such process
5/entry.sh: line 625: kill: (9298) - No such process
4/entry.sh: line 625: kill: (9298) - No such process
3/entry.sh: line 625: kill: (9298) - No such process
2/entry.sh: line 625: kill: (9298) - No such process
1/entry.sh: line 625: kill: (9298) - No such process
/entry.sh: line 632: kill: (9298) - No such process
0
Automatic restart ...


Es könnte an 2 Dingen liegen:
1.) Ich nutze FHEM im DOCKER Container, (u.U. fehlen Pakete)
2.) Ich habe noch eine (zu) alte Twinkly Wall (gibts leider nicht mehr) (Modell TI200SEUP07, FW 2.3.5)

Mit dem HTTPMOD Workarround konnte ich jedoch die Kette steuern.

Er fliegt beim "decode_json" auf die Schnauze.
Könnte es sein, dass du das JSON Package nicht installiert hast?

Ich bin der Meinung mit
cpan JSON
sollte es installierbar sein.

Gruß

t1me2die

#17
Zitat von: peterk_de am 05 Dezember 2022, 19:48:54
...
Ich habe momentan nur noch ein anderes Problem - mindestens eine Kette von mir schaltet sich nach ein paar Stunden von allein immer mit dem ersten hochgeladenen Movie an, obwohl beim ausschalten ein anderer gewählt war. Am FHEM-Modul hier kanns nicht liegen, das hab ich zum Test deaktiviert. Timer hab ich auch keine in der App aktiviert. Ich vermute es liegt an der Kette selbst. Wer hier also sachdienliche Hinweise hat, gern posten :-)
...

Moin, ich hoffe mal, dass das Modul nicht automatisch deine Kette nach ein paar Stunden anschaltet, denn dies sollte nicht passieren.
Magst du mal bitte prüfen, ob in dem Reading "movie", auch dein tatsächlich zuletzt verwendetes Movie steht?
Was steht zum Zeitpunkt des anschaltens im Reading "mode"?
Außerdem sollte dieses Movie natürlich auch in deiner Movie-Liste stehen.

Wenn ich es nun richtig überflogen habe (nicht getestet), dann sollte bei einem:
set <name> on
lediglich der Mode auf "movie" switchen, sodass die Kette an geht, ohne ein explizites Movie.

Wenn du jedoch im ausgeschalteten Zustand ein:
set <name> movie <moviename>
ausführst, so wird automatisch die Kette auf den Mode "movie" geswitcht und zusätzlich dazu wird das angegebene Movie gesetzt (vorausgesetzt, es ist in der Movie-Liste vorhanden!).
Über die API habe ich nicht die Möglichkeit ein einfaches "on" zu senden, weswegen zum einschalten in den Mode "movie" switche, wodurch die Kette automatisch angeht.

Gruß

peterk_de

t1me2die, ich glaube mittlerweile ausschließen zu können, dass es an deinem Modul liegt. Denn es tritt nur an einer von nunmehr 3 in FHEM angebundenen Ketten auf. Die Ketten sind alle die gleichen. Sie ist aber die einzige, die draußen hängt - ich vermute, die hat irgendeinen Wackler und resettet sich nach ein paar Stunden..

Das von dir beschriebene Verhalten mit den Movies kann ich so 1:1 reproduzieren und ist vollkommen OK :-)

Aktuell nutze ich dein Modul erstmal, um die Außenkette bei detektierten Niederschlag / Schnee  automatisch auf eine Schneefall-Animation zu stellen. Schon extrem cool. Und der Baum wird diesjahr die verschiedenen Hue-Beleuchtungszenen im Wohnzimmer farblich passend  mitmachen. 😎
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

t1me2die

Super, dass freut mich.
Ich muss demnächst mal die v0.1.6 einchecken, habe etwas refactoring vorgenommen im Bezug auf die getMovies Routine.
Ich denke in ca. 1-2Tagen sollte im Git + Forum die neue Version vorhanden sein.

Gruß

Borkk

Zitat von: t1me2die am 06 Dezember 2022, 09:57:07
Er fliegt beim "decode_json" auf die Schnauze.
Könnte es sein, dass du das JSON Package nicht installiert hast?

Ich bin der Meinung mit
cpan JSON
sollte es installierbar sein.

Gruß

Da ich eine ganze Reihe anderer Module verwende, die JSON nutzen (u.a. HUE) glaube ich das nicht. Zudem sind eigentlich alle gängigen Pakete im FHEM Docker Image enthalten. Aber ich probiere es mal...
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

t1me2die

Zitat von: Borkk am 10 Dezember 2022, 11:08:21
Da ich eine ganze Reihe anderer Module verwende, die JSON nutzen (u.a. HUE) glaube ich das nicht. Zudem sind eigentlich alle gängigen Pakete im FHEM Docker Image enthalten. Aber ich probiere es mal...

Da könntest du dann wohl Recht haben.
Über welches Gerät sprechen wir bei Dir?
Welche Firmware Version ist installiert?
Welchen Stick hast du? Version 1 oder Version 2?
Das Gerät ist auch im selben Netzwerk wie dein FHEM?
Berechtigungen, von dem Modul hast du im Verzeichnis geprüft?
Lad Dir mal die neuste Version herunter, mache ein "reload 31_Twinkly", binde das Gerät anschließend wie gewohnt mit Define <name> Twinkly IP-Adresse ein.
Poste hier dann mal bitte die Fehlermeldung, falls FHEM sich wieder verabschiedet.
Falls es wieder die Zeile beim decode_json sein sollte, können wir die Testweise bei Dir einmal ausbauen / aus kommentieren um zu schauen, ob das Modul sonst was macht.

Gruß
Mathze

t1me2die

Zur Info für alle, die mehrere Geräte in der Twinkly App gruppieren:

ZitatFalls ihr eine Gruppierung von mehreren Geräten in der Twinkly App vorgenommen habt, so müsst ihr das Main-Steuerungsgerät herausfinden.
In meinem Fall habe ich zwei AWW (400 und 250er Strings) via Join verbunden. In meinem Fall war es das erste Gerät in der Gruppierungsliste (dies war auch das Gerät, welches ich zuerst ausgewählt hatte!).
Das zweite Gerät kann man zwar einzeln auch steuern, jedoch kommt die Gruppierung dann ein wenig durcheinander, weswegen ich vorschlagen würde, dass ihr nur das Main-Gerät definiert. Die Funktionen sind hier identisch wie bei einem einzelnen Gerät.

Gruß

Borkk

#23
Ich versuche mal alle Fragen zu beantworten, danke das du dich für das Modul engagierst :-)

Über welches Gerät sprechen wir bei Dir? -> Twinkly Wall (TI200SEUP07)
Welche Firmware Version ist installiert?  -> 2.3.5
Welchen Stick hast du? Version 1 oder Version 2? Was für einen Stick meinst du
Das Gerät ist auch im selben Netzwerk wie dein FHEM? ja, klar. Musste extra meinen Wlan Schlüssel kürzen, weil Twinkly mit meinem langen Schlüssel nicht klar kam
Berechtigungen, von dem Modul hast du im Verzeichnis geprüft? -> ja, setzt Docker immer automatisch beim Start des Containers
Lad Dir mal die neuste Version herunter, mache ein "reload 31_Twinkly", binde das Gerät anschließend wie gewohnt mit Define <name> Twinkly IP-Adresse ein.
Poste hier dann mal bitte die Fehlermeldung, falls FHEM sich wieder verabschiedet. siehe unten
Falls es wieder die Zeile beim decode_json sein sollte, können wir die Testweise bei Dir einmal ausbauen / aus kommentieren um zu schauen, ob das Modul sonst was macht.

Das Modul startet und erkannt auch auch mein Twinkly, dann hat es aber FHEM um. 

2022.12.12 00:18:24 1: PERL WARNING: Use of uninitialized value $movies in string ne at ./FHEM/31_Twinkly.pm line 353.
2022.12.12 00:18:24 1: PERL WARNING: Use of uninitialized value $movies in string eq at ./FHEM/31_Twinkly.pm line 481.
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Resource not found.") at ./FHEM/31_Twinkly.pm line 794.

Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

t1me2die

Zitat von: Borkk am 12 Dezember 2022, 00:15:47
Ich versuche mal alle Fragen zu beantworten, danke das du dich für das Modul engagierst :-)

Über welches Gerät sprechen wir bei Dir? -> Twinkly Wall (TI200SEUP07)
Welche Firmware Version ist installiert?  -> 2.3.5
Welchen Stick hast du? Version 1 oder Version 2? Was für einen Stick meinst du
Das Gerät ist auch im selben Netzwerk wie dein FHEM? ja, klar. Musste extra meinen Wlan Schlüssel kürzen, weil Twinkly mit meinem langen Schlüssel nicht klar kam
Berechtigungen, von dem Modul hast du im Verzeichnis geprüft? -> ja, setzt Docker immer automatisch beim Start des Containers
Lad Dir mal die neuste Version herunter, mache ein "reload 31_Twinkly", binde das Gerät anschließend wie gewohnt mit Define <name> Twinkly IP-Adresse ein.
Poste hier dann mal bitte die Fehlermeldung, falls FHEM sich wieder verabschiedet. siehe unten
Falls es wieder die Zeile beim decode_json sein sollte, können wir die Testweise bei Dir einmal ausbauen / aus kommentieren um zu schauen, ob das Modul sonst was macht.

Das Modul startet und erkannt auch auch mein Twinkly, dann hat es aber FHEM um. 

2022.12.12 00:18:24 1: PERL WARNING: Use of uninitialized value $movies in string ne at ./FHEM/31_Twinkly.pm line 353.
2022.12.12 00:18:24 1: PERL WARNING: Use of uninitialized value $movies in string eq at ./FHEM/31_Twinkly.pm line 481.
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Resource not found.") at ./FHEM/31_Twinkly.pm line 794.


Moin, magst du mal bitte in der Twinkly App prüfen, ob du ein Firmware Update für deine Kette bekommst?
Aktuelle Firmware sollte 2.8.15 sein.
Beim Stick spreche ich von dem Twinkly Controller, dieser schwarze Stick, der zwischen Netzteil und LED's ist. Welchen hast du?
Die ersten beiden Warnings sind okay, wenn du keine Movies hochgeladen hast, dass geht glaub ich erst mit einer aktuellen Firmware.

Die Meldung bzw. "malformed JSON String..." deutet ziemlich klar auf ein invaliden JSON String hin.
Ich habe mal eine Prüfung auf den JSON String eingebaut, probiere es mal bitte mit der Version im Anhang.
Setze das Twinkly Device bitte auf
attr <name> verbose 2

Er sollte bei einem fehlerhaften JSON String nun eine Logmeldung schreiben, bitte poste diese mal.
Hast du Ahnung von Postman?

Gruß

Borkk

#25
Zitat von: t1me2die am 12 Dezember 2022, 09:34:21
Moin, magst du mal bitte in der Twinkly App prüfen, ob du ein Firmware Update für deine Kette bekommst?
Aktuelle Firmware sollte 2.8.15 sein.
Beim Stick spreche ich von dem Twinkly Controller, dieser schwarze Stick, der zwischen Netzteil und LED's ist. Welchen hast du?
Die ersten beiden Warnings sind okay, wenn du keine Movies hochgeladen hast, dass geht glaub ich erst mit einer aktuellen Firmware.

Die Meldung bzw. "malformed JSON String..." deutet ziemlich klar auf ein invaliden JSON String hin.
Ich habe mal eine Prüfung auf den JSON String eingebaut, probiere es mal bitte mit der Version im Anhang.
Setze das Twinkly Device bitte auf
attr <name> verbose 2

Er sollte bei einem fehlerhaften JSON String nun eine Logmeldung schreiben, bitte poste diese mal.
Hast du Ahnung von Postman?

Gruß

Postman sagt mir leider nichts. Aber mit dem Modul aus deinem letzten Post stürzt mein FHEM nicht mehr ab. Vermutlich gab es aber tatsächlich ein Problem mit der JSON Version des Docker Image, gestern Nacht hat nämlich mein Watchtower ein neues FHEM Image gemeldet. Das habe ich heute eingespielt.

Also Status ist jetzt, das das Modul nicht mehr abstürzt aber es funktioniert auch nicht wirklich. Ich habe mal auf die schnelle einen Screenshot der Reading angehängt. Danach sieht es eigentlich so aus, also würde das Modul mit Twinkly sprechen. In der APP kann ich leider weder ein movie anlegen noch wird mir ein Update angeboten. Zwischen Netzteil und LEDs ist ein schwarzes Kästchen mit einer Taste. Als Stick würde ich das nicht bezeichnen. Wie ich schon ganz am Anfang geschrieben habe, ist Twinkly Wall schon recht alt, gibt es auch leider nicht mehr.


Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

t1me2die

#26
Puh, womit fange ich an.
Ich glaube, dass du die Twinkly Gen. 1 Version hast (siehe Bilder im Anhang).
Ich habe leider keine Gen. 1 Version am Start um zu prüfen, was für Infos über die API gehen.

Anhand deines "product_code" (TI200SEUP07) dürfte auch keine automatische Modelzuordnung stattgefunden haben, richtig?
Bitte einmal ein "list <name>" hier posten!

Auch die Möglichkeiten "SET" oder "GET" Befehle abzusetzen dürften nicht angezeigt werden, richtig?

Ich habe dein Model mal nachgepflegt, im Anhang ist eine neue Version.
Ich hoffe, dass nun das Model korrekt dein Model ermittelt und automatisch dies setzt.
Anschließend sollten dann auch die "SET" und "GET" Befehle auftauchen (ob die Befehle dann aber funktionieren steht auf einem anderen Blatt geschrieben  ;) ).

Gruß

Borkk

Zitat von: t1me2die am 13 Dezember 2022, 09:52:01
Puh, womit fange ich an.
Ich glaube, dass du die Twinkly Gen. 1 Version hast (siehe Bilder im Anhang).
Ich habe leider keine Gen. 1 Version am Start um zu prüfen, was für Infos über die API gehen.

Anhand deines "product_code" (TI200SEUP07) dürfte auch keine automatische Modelzuordnung stattgefunden haben, richtig?
Bitte einmal ein "list <name>" hier posten!

Auch die Möglichkeiten "SET" oder "GET" Befehle abzusetzen dürften nicht angezeigt werden, richtig?

Ich habe dein Model mal nachgepflegt, im Anhang ist eine neue Version.
Ich hoffe, dass nun das Model korrekt dein Model ermittelt und automatisch dies setzt.
Anschließend sollten dann auch die "SET" und "GET" Befehle auftauchen (ob die Befehle dann aber funktionieren steht auf einem anderen Blatt geschrieben  ;) ).

Gruß

Ja, Twinkly Wall ist ein Gen.1 Produkt und ja Set und Get werden nicht angezeigt. Eben ist FHEM auch wieder gecrasht mit diesem Fehler:

Twinkly (twink) Twinkly_ParseHttpResponse - decode_json failed! Error: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Resource not found.") at ./FHEM/31_Twinkly.pm line 760.
- Data: Resource not found.


Ich probiere das Modul gleich aus. Die API scheint ja irgendwie schon zu gehen, ich Steuer mein Twinkly (an/aus) über HTTPMOD
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Das neue Modul, zeigt schon mal On/OFF einen PCT- und einen Farb-Slider an, allerdings alles ohne Funktion. Das Modul kann Twinkly scheinbar nicht erreichen (Invalid Token). Kein Netzwerkproblem, HTTPMOD erreicht aus dem gleichen Docker FHEM Container die Kette.

Im LOG:
2022.12.13 23:44:17 1: PERL WARNING: Use of uninitialized value $movies in string ne at ./FHEM/31_Twinkly.pm line 353.
2022.12.13 23:44:17 1: PERL WARNING: Use of uninitialized value $movies in string eq at ./FHEM/31_Twinkly.pm line 481.
2022.12.13 23:44:17 2: AttrTemplates: got 254 entries
2022.12.13 23:44:27 2: Twinkly (twink) Twinkly_ParseHttpResponse - decode_json failed! Error: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Invalid Token.") at ./FHEM/31_Twinkly.pm line 764.
- Data: Invalid Token.
2022.12.13 23:44:53 1: PERL WARNING: Use of uninitialized value $movies in string eq at ./FHEM/31_Twinkly.pm line 430.
2022.12.13 23:44:53 2: Twinkly (twink) Twinkly_ParseHttpResponse - decode_json failed! Error: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Invalid Token.") at ./FHEM/31_Twinkly.pm line 764.
- Data: Invalid Token.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

t1me2die

#29
Hast du die Möglichkeit ein:
get twink Token abzusetzen?
Steht in den INTERNALS ein Token drin oder ist das Feld leer?

Kann es sein, dass du das HTTPMOD für das Twinkly Device noch aktiv hast?
Falls ja, bitte unbedingt deaktivieren, in der Device Help steht auch folgendes:

If you multiple define the same device you get a problem of different tokens because every request from different sources generate a new token.

Übersetzt bedeutet das, wenn man auf ein physisches Gerät von zwei / drei Quellen zugreift (z.B. App + Twinkly Modul + HTTPMOD Modul), dann fragt jede Quelle einen neuen Token an, weil sich dieser immer wieder ändert.

Ohne Token geht natürlich erst einmal gar nichts, weil eine Authentifizierung nicht möglich ist, somit werden auch keine Befehle korrekt ausgeführt.

Gruß

PS.: Im Anhang habe ich noch einmal etwas refactoring vorgenommen, ich prüfe nun zuerst, ob der JSON String valid ist, ansonsten steigt das Modul direkt aus.