NEWS
Lampe (z.B. Hue) über Zeitraum dimmen - Blockly
-
Hallo,
absolute Newbie-Frage, aber ich konnte mit der Suche nichts finden.
Möchte mit Blockly eine Hue nach einem Triggerereignis langsam über einen Zeitraum hochdimmen.
Kann mir mal jemad zeigen, wo mein Denkfehler liegt und mir die richtige Richtung weisen?
Hier mein Versuchsaufbau. Den Trigger habe ich mal weggelassen. Sollte doch nach anstarten des Skriptes einmal durchlaufen, oder? Tut aber nichts :evil:
Lieben Dank
Frank
-
Hallo
Nimm Baustein "steuere" nicht "aktualisieren".
Zudem startest Du 254x einen Timer von je 1 Sek.
Grüße
-
Das funktioniert so nicht aufgrund der Art wie in JavaScript timeouts ausgeführt werden. Die blockieren nicht, d.h. du hast keine Pause von 1s in jedem Schleifendurchlauf.
Du startest auf einen Schlag 254 Timeouts, die alle zum gleichen Zeitpunkt nach 1s auslösen.
Zu diesem Zeitpunkt ist die Schleife längst durchgelaufen, d.h. i = 254.
Damit setzt du nach 1s 254x die Helligkeit auf 254.
Besser:
Starte ein Interval, das alle Sekunde ausgeführt wird.
Darin prüfst du, ob die Helligkeit = 254 ist
Wenn sie das ist, stoppst du das Intervall, sonst erhöhst du die Helligkeit um 1.
So ähnlich wie hier im Sonst-Block: http://forum.iobroker.net/viewtopic.php?p=92319#p92319
-
Super! "Interval" - na klar. Manchmal sieht man den Wald vor lauter Bäumen nicht.
Das funktioniert nun:
Muss jetzt natürlich noch um die Trigger und weiteren Abbruch, wenn der Taster zum Ausschalten der Lampe betätigt wird, angereichert werden, aber das wird schon.
So kann man jetzt im Bad und im Wohnbereich morgens, wenn es noch dunkel draußen ist, ganz sanft die Beleuchtung hochfahren
Danke für die Hilfe!
-
Moin,
als Tipp für die Hue-Lampen: einfach den Datenpunkt Command benutzen. Die Bridge dimmt dann ohne weitere Mitarbeit von ioBroker alleine.
{"on":true,"sat":250,"r":254,"g":135,"b":26,"level":100,"transitiontime":18000}
Für das Dimmen ist der Wert transitiontime zuständig, in meinem Beispiel 30 Min. Die Lampe dimmt hier in einem Rotton innerhalb 30 Min auf 100%
Gruß
Matze
-
Hi,
oh ja, das ist natürlich noch viel eleganter.
Jetzt muss der Newbie allerdings noch fragen: Wie setzte ich den Datenpunkt 'Command' über Blockly?
PS: Dann kann man damit ja auch vermutlich auch von den aktuellen Farbwerten zu neuen Farbwerte in eingesteller transitiontime wechseln, oder?
Danke
Frank
-
Hier noch für Beginner wie mich die Lösung zur Frage, wie man denn den Datenpunkt 'Command' setzt:
Ganz einfach mit 'steuere' und 'Text'
-
Nachdem ich die ersten kleinen Skripttests erfolgreich gemacht habe, hab ich die hier erwähnte Variante nochmal wieder probiert.
Bei funktioniert das aber leider nicht, weder im Skript, noch wenn ich direkt im Datenpunkt .command den Eintrag vornehme. Müsste doch auch mit der einfacheren Variante so funktionieren, oder?
An der Lampe (Philips Hue White Ambiance, aktuelle Firmware) ändert sich nichts, wenn ich direkt den .level über den Datenpunkt oder Skript ändere, dimmt sie sich entsprechend.
Gibt es denn irgendwo eine Auflistung, was man über .command so mitgeben kann?
-
Bin auch grad am rumfummeln mit den Hue´s aber irgendwie schalten die sich immer auf 100% und nicht wie im Scirpt auf 10%
setState("hue.0.Hue_Bridge_1.Flur_Licht_links.command"/*Hue_Bridge_1.Flur_Licht_links.command*/, '{"level": 10, "b": 94, "g": 212, "r": 241}');
Wenn ich es so machen, dann klappt es mit den 10%
setState("hue.0.Hue_Bridge_1.Flur_Licht_links.command"/*Hue_Bridge_1.Flur_Licht_links.command*/, '{"level": 10}');
-
Das Problem ist, dass eine RGB-Farbe bereits Helligkeitsinformationen enthält. https://en.wikipedia.org/wiki/Brightness
Somit wird bei gleichzeitiger Änderung der Farbe und Level vermutlich das Level ignoriert.
-
Im Quelltext des Adapters steht so etwas wie:
if [ … wir habe level statt bri? ... ] rechne fix -> bri=level*2,54
if [ … wir haben rgb-Wert? ... ]
{
var xyb = huehelper.RgbToXYB(ls.r / 255, ls.g / 255, ls.b / 255, modelid);
ls.xy = xyb.x + ',' + xyb.y;
ls.bri = xyb.b;
[…setze Lampe auf bri und xy...]
}
Bei rgb wird die Helligkeit bri also immer mit gesetzt. Und zwar auf den jeweils höchsten in r,g oder b angegebenen Enizelbetrag. Den Level "level" oder die Helligkeit "bri" bei Angabe von r,b oder g im gleichen Command zu spezifizieren hat also keinen Sinn.
Mit {"level": 40, "xy": "0.5,0.5"} oder Angabe von ct oder sat könnte es hingegen klappen. (154 <= ct <=500)
-
Juhu es klappt, vielen Dank auch für die Erklärung Das Forum ist echt klasse hier !!!!!
-
als Tipp für die Hue-Lampen: einfach den Datenpunkt Command benutzen. Die Bridge dimmt dann ohne weitere Mitarbeit von ioBroker alleine.
{"on":true,"sat":250,"r":254,"g":135,"b":26,"level":100,"transitiontime":18000}
Für das Dimmen ist der Wert transitiontime zuständig, in meinem Beispiel 30 Min. Die Lampe dimmt hier in einem Rotton innerhalb 30 Min auf 100%
Gruß
Matze `
Wie kommt man auf solche Commands?
Kann man die irgendwo einsehen?
Und wie setze ich den o.g. command für eine Lampe die nicht RGB-fähig ist?
So z.B. ? Innerhalb von 10s auf 0 dimmen.
{"on":true,"level":0,"transitiontime":10}
Kann ich nicht gewpünschte Werte einfach weg lassen, oder müssen sie dann auf 254 stehen?
P.S. 18.000 s wären 300 min. richtig?
Oder gibt es hier noch einen Faktor?
-
Wie kommt man auf solche Commands?
Kann man die irgendwo einsehen? `
-
kann sein dass ich blind bin, aber ich hab auch hier keine tabelle oder änliches gefunden mit allen states die möglich sind. ich fand nur verschiedene beispiele.
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
Nein, nicht alles, aber man kann sich anhand der Datenpunkt des Adapters einiges zusammenreimen.
Ansonsten gehts mit Login weiter: https://www.developers.meethue.com/philips-hue-api
> The full API documentation is only available to registered users. Please login or register to view the full API documentation and become a member of our exciting hue community. It only takes a few seconds.
-
Super. Danke!
Ich habe meinen o.g. Command getestet und als Reaktion auf einen trigger an die Lampe gesendet.
Sie hat aber nicht reagiert.
Muss ich zusätzlich noch den "put" Befehl geben? Wie?
Gesendet von iPhone mit Tapatalk