NEWS
Problem mit Szene und HUE command
-
Hallo,
ich möchte gerne eine Szene definieren, in der ein HUE-Licht langsam über etwa 5 Minuten von Helligkeit 0 auf 254 hochdimmt und
spätestens nach einer gewissen Zeit dann auch von selbst wieder ausgeht.
Ersteres scheint soweit auch zu funktionieren mit dem Eintrag bei command:
{"on":true,"hue": 19674, "bri": 254, "bri_inc": 1, "transitiontime": 1800}
Die Szene bleibt dann aber nach dem ersten Aufruf immer true, auch wenn ich zusätzlich als ersten Befehl noch bri = 0 und on = false einbaue
(auch versucht mit Verzögerungen von 100ms)
Aus VIS lässt sich dann die Szene nicht mehr setzen, also nicht ein- und ausschalten.
-
Ich bin mir nicht sicher wie du das mit "bri = 0 und on = false" meinst, aber bri=0 macht automatisch on=false und umgekehrt. Ob die gesamte Szene als true bzw. false ausgewertet wird hängt davon ab, ob die States den zu setzenden Wert angekommen haben. Wenn du also beim Ausschalten also cmd nicht änderst wird die Szene auf true bleiben, da cmd die ganze Zeit den eingestellten Wert hat.
Das bri_inc ist hier nicht nötig, das hat eine andere Funktion als du vielleicht denkst.
Nach einigem ausprobieren ist mir klar geworden, dass nur die Befehle ohne Verzögerung genutzt werden um den Status der Szene auf true oder false auszuwerten, dann kannst du natürlich einfach eine Szene machen mit:
Setze Werte bei False:1 1\. Befehl: hue.0.bridge.lampe.cmd: setze bei true: {"on":true,"hue": 19674, "bri": 254, "transitiontime": 1800} setze bei false: {"on":false} 2\. Befehl: hue.0.bridge.lampe.cmd mit Verzögerung (z. B. 5000): setze bei true: {"on":false} setze bei false: {"on":false}
Also einfach zwei mal cmd in die Szene, einmal den Wert setzen und nach 5000ms wieder cmd "{"on":false}", da im ersten cmd bei set on false auch "{"on":false}" drin ist, wird dann die Szene zu false auswertet. Schaltest du die Szene manuell aus wird direkt "{"on":false}" gesetzt, funktioniert also auch. Insgesamt könnte die Bedienung intuitiver sein, allerdings ist es gar nicht so einfach ein Intuitives Bediensystem zu finden, dazu aber mehr im Entwicklungsforum.
-
OK, vielen Dank für diese Hilfe, das scheint auch zu funktionieren, solange ich über Biobroker bediene.
Wenn ich aber manuell hue, bri, sat usw. verändere, dann bleibt die Szene true, da "xxx.command" natürlich nicht upgedated wird.
(die Szene bekommt nicht mit, wenn sich einzelne Werte verändern)
Ich versuche es gerade über eine Variable und Skript.
-
Du könntest in der Szene noch einen Trigger für ausschalten einstellen der ausgelöst wird wenn .bri = 0, dann sollte die Szene im Falle dass sie noch an ist aber bri = 0 automatisch ausgehen, also cmd = {"on":false} setzen.
-
Auch gut! Aber wenn ich nur die Farbe umschalte, dann passt es wieder nicht.
Ich verwende jetzt folgendes Skript:
createState("Wecklicht", false, true); on({id: "Wecklicht", change:"gt"}, function (obj) { var anw = getState('javascript.0.Anwesenheit').val; if (and === true) { // nur bei Anwesenheit setState("hue.0.Philips_hue.LED_Schlafzimmer.bri", 0); setTimeout(function () {log("Wecken an"); }, 10); setState("hue.0.Philips_hue.LED_Schlafzimmer.command", '{"on":true, "hue": 19674,"sat": 254, "bri": 254, "transitiontime": 80}'); } else { setState("javascript.0.Wecklicht", false); } }); on({id: "Wecklicht", change:"lt"}, function (obj) { log("Wecken aus"); if ('scene.0.szene_HUE_SZ_aus' === true) { // nur, wenn nicht andere Szene aktiv setState("hue.0.Philips_hue.LED_Schlafzimmer.bri", 0); setState("hue.0.Philips_hue.LED_Schlafzimmer.on", false); setState("hue.0.Philips_hue.LED_Schlafzimmer.command",'{}'); } }); on({id: "hue.0.Philips_hue.LED_Schlafzimmer.bri", oldVal:254, val:0}, function (obj) { setState("javascript.0.Wecklicht", false); }); on({id: "hue.0.Philips_hue.LED_Schlafzimmer.hue", oldVal:19674, change:"ne"}, function (obj) { setState("javascript.0.Wecklicht", false); });
und eine Szene, die die hue, bri und sat enthält und true wird, sobald die Endwerte aus dem Skript erreicht sind.
Bei false setze ich bri auf 0
Dazu habe ich de Szene einen "Cron für False" verpasst: */45 * * * *
sodass sie spätestens nach 45 Min wieder ausgeht
-
Die Frage ist auch immer Wann eine Szene noch true und wann wieder False sein soll, das ist ja nicht so eindeutig. Ich habe z. B. eine Szene Fernsehen, dort wird die Steckdose des Fernseher eingeschaltet und verschiedene Beleuchtungen an oder aus. Beim beenden der Szene wird die Steckdose ausgeschaltet. Nun will ich natürlich NICHT dass die Steckdose ausgeht sobald ich etwas an der Beleuchtung ändere, also genau andersherum als bei dir. Da sieht man, dass der Szene Adapter leider noch nicht so flexibel ist wie er sein müsste, aber da kommt sicher noch einiges.
-
In meinem Fall wäre das einfachste, wenn ich die Transitiontime einzeln setzten könnte, so quasi als einmalige(?) Starteinstellung für den nächst kommenden Einschaltbefehl (danach dann wieder zurück gesetzt, automatisch oder manuell)
Die Szene würde nach Abschluss der Transition dann true und wenn ich danach wieder einen Wert ändere, dann wieder false
Eben so, wie ich es gerade benötige.
Wobei, wenn ich weiter darüber nachdenke, steht der Befehl ja in der Szene, dürfte dann auch nicht automatisch zurückgesetzt werden, sonst würde die Szene ja schon wieder false. Geht also nur manuell danach.
Man bräuchte also Parameter in der Szene, die nicht in die Bewertung eben dieser mit eingehen, sonst würde das Ergebnis auf einmal von der Transitiontime abhängen . . .
Es wird kompliziert . . .