NEWS
Hue-Adapter aktualisiert/ändert Wert nach Script-Schaltung
-
Hi!
Für ein Bewegungsmelder-Script möchte ich, dass ein Trigger nur dann auslöst, wenn der Level-Wert einer Hue-Lampe durch den JavaScript-Adapter geändert wurde.
Änderungen durch den Hue-Adapter (und damit auch durch die Hue-App auf dem Handy) sollen den Trigger nicht auslösen.
Eigentlich sollte das ja durch den Baustein „Ursprung“ im Trigger zu lösen sein.
Allerdings wird immer einige Sekunden nach der registrierten Änderung durch den JavaScript-Adapter immer auch eine Aktualisierung durch den Hue-Adapter registriert.Manchmal wird wieder wert sogar ungewollt geändert! Script steuert das Level auf 30, ein paar Sekunden später steuert der Hue-Adapter den Wert auf 31. Wie von Geisterhand!?
Weiß jemand Rat?
-
@andr3 Vielleicht wäre es sinnvoll das Script zu zeigen?
-
Generell ist es wohl die Aufgabe und das Recht des Adapter den Wert seiner States zu ändern. Insofern versteh ich nicht ganz, was dich daran stören könnte. Bezüglich 30/31 gehe ich mal davon aus dass deine Hardware aus welchem Grund auch immer den Wert 31 liefert. Wird denn der Wert 30 vom Adapter bestätigt (ack=true) oder erfolgt im Zuge der Bestätigung die Änderung auf 31?
Du schreibst richtig, dass die Quelle der Änderung im State zu sehen sein sollte. Du erwähnst allerdings nicht ob das nicht funktioniert oder wo da das Problem ist.
Zu deiner Anforderung an sich würde ich vorschlagen, dass das ändernde Script einfach einen User State in 0_userdata_0 beschreibt und du deinen Trigegr dort drauf setzt. Dieser State würde dann nur von deinem Script verändert und du müsstest nicht unterscheiden wer den State verändert. Zusätzlich stell ich die Frage warum dein Script nicht direkt die Aktion auslöste wenn du schon ausschließlioch auf eine Änderung vis Script reagoieren willst.
Und zuletzt kann es durchaus alternative Lösungen geben - nur dazu fehlen mal jede Information wass du eigentlich erreichen willst.
-
@andr3 sagte in Hue-Adapter aktualisiert/ändert Wert nach Script-Schaltung:
Hi!
Für ein Bewegungsmelder-Script möchte ich, dass ein Trigger nur dann auslöst, wenn der Level-Wert einer Hue-Lampe durch den JavaScript-Adapter geändert wurde.
Änderungen durch den Hue-Adapter (und damit auch durch die Hue-App auf dem Handy) sollen den Trigger nicht auslösen.
Eigentlich sollte das ja durch den Baustein „Ursprung“ im Trigger zu lösen sein.
Allerdings wird immer einige Sekunden nach der registrierten Änderung durch den JavaScript-Adapter immer auch eine Aktualisierung durch den Hue-Adapter registriert.Manchmal wird wieder wert sogar ungewollt geändert! Script steuert das Level auf 30, ein paar Sekunden später steuert der Hue-Adapter den Wert auf 31. Wie von Geisterhand!?
das ist normales verhalten.
Weiß jemand Rat?
der einfachste weg ist beim Trigger auch auf das 'acknowledge' `zu achten. Der JS Adapter setzt den Wert immer mit ack=false. wenn das beim Trigger gefordert wird wird die Bestätigung vom Hue-Adapter ignoriert.
A.
-
@asgothian said in [Hue-Adapter aktualisiert/ändert Wert nach Script-Schaltung]
der einfachste weg ist beim Trigger auch auf das 'acknowledge' `zu achten. Der JS Adapter setzt den Wert immer mit ack=false. wenn das beim Trigger gefordert wird wird die Bestätigung vom Hue-Adapter ignoriert.
Streng genommen setzt das Javascript das ACK Flag so wie es im Script angegeben ist, dass kann sowohl flalse als auch true sein. Typisch ist das false (da der Default) bzw. sollte false sein, damit ein Adapter die Änderung akzeptiert. "Immer" ist als ganz genau genommen nicht richtig.
Aber zu 99,9% ist deine Anregung sicher das effizienteste Mittel. DANKE für den Vorschlag
-
@mcm1957 sagte in Hue-Adapter aktualisiert/ändert Wert nach Script-Schaltung:
Streng genommen setzt das Javascript das ACK Flag so wie es im Script angegeben ist, dass kann sowohl flalse als auch true sein. Typisch ist das false (da der Default) bzw. sollte false sein, damit ein Adapter die Änderung akzeptiert. "Immer" ist als ganz genau genommen nicht richtig.
Korrekt.. immer ist nicht wirklich richtig - aber immer wenn via JS etwas gesteuert werden soll - wenn da ack=true, dann wird nix gesteuert