NEWS
[gelöst] Zigbee Ikea Styrbar Problem
-
Systemdata Bitte Ausfüllen Hardwaresystem: NUC / VM Arbeitsspeicher: 4,5 GB Festplattenart: SSD Betriebssystem: Ubuntu Node-Version: 12.22.8 Nodejs-Version: 12.22.8 NPM-Version: 6.14.15 Installationsart: Manuell Image genutzt: Nein Ort/Name der Imagedatei: Hallo zusammen, ich habe heute zwei Ikea Styrbar Ferbedienungen angelernt und wollte jetzt die Tasten belegen.
On (Druck in der Mitte) soll die Steckdose vom TV umschalten (funktioniert), die Tasten für Brightness sollen die Deckenlampe umschalten.
Leider gibt es Probleme bei den Brightness- und Richtungstasen.
Zigbee Objekte
Blockly Skript:
Error Log
Hat das Anlernen nicht korrekt funktioniert ?
Kennt jemand das Problem und hat eine Lösung?
-
@kuddel Löst das SKirpt denn aus?
ich würde mal im admin auf die Objekte des Schalters gehen (dein 1. Screenshot) und dann mal auf pfeil rechts/links bei der Fernbedienung drücken. Ändert sich dann der Boolean Wert von brightness_move_down bzw up?Wenn ja, dann stimmt was nicht mit der Anweisung LS_SW_Deckenlampe.STATE
-
@amg_666 weder bei Brightness_up noch Brightness_down tut sich was.
-
Kurzes Update:
Die beiden Buttons "brightness_move_down" und "brightness_move_up" reagieren nur auf Longpress.
Man muss sie also gedrückt halten.
-
@kuddel Das mit Brightness funktioniert anders.
Up und Down sind nur kurz (solange gedrückt) "true". Danach toggeln die sofort auf false und "Brighness Stop" geht kurz auf "true". Somit bekommt man gut hell-dunkel bzw laut-leise hin.
Du musst in deinem Script einfach auf die Änderung nach true triggern. So habe ich es umgesetzt: -
@holgerwolf das die Statusämderung nur kurz zu sehen ist, weiß ich.
Leider tut sich bei kurzem Tastendruck gar nichts. Der Status wird nicht geändert.
Nur bei langem Tastendruck
-
@kuddel Schau mal in On und Off:
zigbee.0.xxxxx.off bzw zigbee.0.xxxx.on
Die sind für den kurzen Druck zuständig:
-
@holgerwolf ja die Tasten funktionieren auch wie gewünscht (siehe erster Post)
-
@kuddel So stehts in der Anleitung:
Da gibts keine Mitte. Nur kurz oben und kurz unten für aus und ein.
-
@holgerwolf oh okay. Dann muss ich nochmal genauer testen.
Bei der Vorgänger Version gab es Mitte noch
-
@holgerwolf vielen Dank für das Teilen deines Steuerungsskripts.
Ich habe das bei mir etwas anders gelöst und frage mich, ob ich was übersehen habe, bzw. warum deins so viel komplizierter ist.
Warum benutzt dieses "größer als" im Trigger, und fängst es danach wieder per "falls" ab?
Warum die zusätzliche Verzögerung beim Setzen?
Wie hast Du die Pfeil-Tasten angebunden?Hier mal meins, was bisher auch einwandfrei funktioniert:
-
@holgerwolf nachdem bei mir die zyklischen Ausführungen ein paar mal nicht angehalten haben (vermutlich ging das "stop" im zigbee netz unter) habe ich das zusätzlich innerhalb der Ausführung auch nochmal auf "Anhalten" geprüft:
-
@chris299 Ich würde Dir empfehlen die Konstruktion aus Timeout und alle 500 ms hoch / runter dimmen durch ein Konstrukt nach dem folgenden Muster zu ersetzen. (Muster im Pseudocode, da ich keinen Zugang zu meinem ioBroker habe)
Probier es mal aus - es ist viel eleganter:
- Trigger auf den Styrbar Datenpunkt up, grösser als vorher.
- Darin: Setze Datenpunkt "brightness_move" to 25
- Trigger auf den Styrbar Datenpunkt down, grösser als vorher.
- Darin: Setze Datenpunkt "brightness_move" to -25
- Trigger auf den Styrbar Datenpunkt brightness_stop, grösser als vorher.
- Darin: Setze Datenpunkt "brightness_move" to 0
Das gleiche geht für die Farbtemperatur mit dem Datenpunkt "colortemp_move".
ggf. musst du die Lampe in die Ausschlussliste aufnehmen um den Datenpunkt zu bekommen falls Du diesen noch nicht hast.
A.
-
@asgothian danke für den Tipp. Aber warum "grösser als vorher" und nicht "wahr" ?
-
@chris299 Du willst ja nur beim Wechsel von False auf True triggern. Prüfung auf True würde dann ja immer ziehen.
-
@holgerwolf evtl. habe ich dann das Konzept der Trigger noch nicht verstanden. Bisher dachte ich, dass Trigger sowieso nur bei Änderungen des Objekts ausgelöst werden. (die verfügbaren Optionen scheinen das zu untermauern)
Aber wenn ich Euch richtig verstehe, dann wird auch bei einer "Änderung" von "wahr" auf "wahr" ausgelöst, richtig?
wenn ja, was genau verursacht denn "Änderungen" von "wahr" auf "wahr"? der Wechsel von unbestätigt auf bestätigt?Bisher hatte ich nicht den Eindruck, dass mein Skript zu oft auslöst...
-
@chris299 sagte in [gelöst] Zigbee Ikea Styrbar Problem:
@holgerwolf evtl. habe ich dann das Konzept der Trigger noch nicht verstanden. Bisher dachte ich, dass Trigger sowieso nur bei Änderungen des Objekts ausgelöst werden. (die verfügbaren Optionen scheinen das zu untermauern)
Nein. Die Trigger werden aktiv wenn das Objekt 'beschrieben' wird - das kann eine Änderung oder eine Aktualisierung mit dem gleichen Wert sein.
Um die verschiedenen Optionen abzufangen gibt es die Einstellungen 'ist wahr', 'ist falsch' und so weiter.
Der Punkt 'auslösung durch hat mit dem "acknowledge" status zu tun. Um den zu erklären muss ich ausholen:Wenn der ioBroker Hardware steuern will macht es sinn wenn die Software erkennt welche Änderungen von Werten eines Datenpunktes als "Aufforderung zum Schalten" interpretiert werden - im Gegensatz zu den Meldungen das ein Gerät seinen Status geändert hat. Dazu gibt es das "Acknowledge".
Steuerbefehle werden immer ohne Acknowledge (also als unbestätigte Änderung) gesetzt. In Blockly gibt es dazu beim SetState die Auswahl "steuere" (ohne acknowledge als unbestätigte Änderung) und "aktualisiere" (mit acknowledge, als bestätigte Änderung). Wenn der Adapter die information bekommen hat das der Steuerbefehl ausgeführt wurde aktualisiert dieser überlicherweise den Datenpunkt (mit acknowledge).im Admin 5 wird dieses farblich dargestellt. Wertänderungen ohne acknowledge werden in rot dargestellt, Wertänderungen mit acknowledge in grün.
Aber wenn ich Euch richtig verstehe, dann wird auch bei einer "Änderung" von "wahr" auf "wahr" ausgelöst, richtig?
wenn ja, was genau verursacht denn "Änderungen" von "wahr" auf "wahr"? der Wechsel von unbestätigt auf bestätigt?Bisher hatte ich nicht den Eindruck, dass mein Skript zu oft auslöst...
Fun fact: Bei JS (und vielen anderen Programmiersprachen) gilt:
true
>false
.Damit löst ein Trigger auf "ist grösser als" nur aus wenn sich der Wert von
false
auftrue
ändert.Ein Trigger auf "true" wird immer dann aktiv wenn der Datenpunkt mit dem Wert
true
beschrieben wird (also bei Änderung UND Aktualisierung)A.