NEWS
[gelöst]Steuerung Hue mit Blockly
-
Hallo zusammen,
ich bin recht neu im Thema iOBroker, habe mich das letzte halbe Jahr aber schon gut in das Thema Visualisierung ein kleinere Scripts eingearbeitet.
Bislang konnte ich noch jedes Problem per Suche im Internet finden, aber jetzt hänge ich an einem Problem, bei dem ich euch um Hilfe bitten möchte.
Bestimmt ist es nur eine Kleinigkeit (so hoffe ich zumindest), aber meine ganzen Versuche klappten bislang nicht.
Aufgabenstellung :
Ich habe hinter meinem TV-Rack mehrere Hue-Lampen, die per Szenen-Adapter gesteuert werden, funktioniert einwandfrei.
Jetzt möchte ich aber verschiedene "Meldungen" beispielsweise mit Aufleuchten von Rot darstellen.
Dazu habe ich mir für Variablen für die RGB-Werte sowie die Helligkeit erzeugt.
Beim Triggern werden die aktuellen Werte gespeichert, dann auf Rot geschaltet.
Nach einer bestimmten Zeit soll die Urspungs-Einstellung wieder eingespielt werden.
Ich möchte keinesfalls nur stur auf die alte Szene schalten, denn es könnte ja sein,
dass die Lampen aus sind, dann sollen sie nach der "Rot-Meldung" auch wieder ausgeschaltet werden.
Dass beim Triggern die Werte gespeichert werden funktioniert verlässlich, genauso wie das Umschalten auf Rot.
Mein Problem liegt beim Rückspielen der Ursprungswerte, hier kommen Farben raus,
alter Schwede, wenn ich einen Zufallsgenerator programmieren wollte, wäre ich auf dem richtigen Weg…
Kurz gesagt, das Rückspielen funktioniert nicht...
Hier mal mein Blockly-Script :
~~![](</s><URL url=)http://www.hanke-online.de/iobroker/1.jpg" />
Und hier mal als Script :
~~![](</s><URL url=)http://www.hanke-online.de/iobroker/2.jpg" />
Hat jemand einen Tip für mich, wie ich den letzten Programm-Block verändern muss, so dass die gespeicherten Werte korrekt zu Hue gespielt werden ?
Vielen Dank schon mal im voraus,
viele Grüße,
Stefan.~~~~
-
@Stefan Hanke:Hat jemand einen Tip für mich, wie ich den letzten Programm-Block verändern muss, so dass die gespeicherten Werte korrekt zu Hue gespielt werden ? `
HalloSoweit sieht alles gut aus.
Von welchem Typ sind Deine Datenpunkte "TV-Schrank LED…."?
Setze die mal auf Typ "Zahl" oder wandel die Werte vor der Übergabe in den Typ "Zahl".
Grüße
-
…schon mal Danke für Deinen Tip !
Habe die Variablen nochmals überprüft, sind alle vom Typ Zahl,
trotzdem habe ich den Konvertierungsblock noch davor gepackt - man weiß ja nie...
~~![](</s><URL url=)http://www.hanke-online.de/iobroker/3.jpg" />
Hilft aber leider auch nichts, die Farbe und die Helligkeit werden noch immer falsch zurückgestellt - und immer andere…
Noch ne Idee ?~~
-
Habe leider kein HUE und kann nichts testen.
Vielleicht kommen die Befehle zu schnell.
Nach 10 Sek. kommen die ja alle "gleichzeitig".
Mach doch mal 10, 11,12,13 Sek.
Grüße
-
…das konnte ich mir zwar kaum vorstellen, dass das das Problem ist, denn den Wechsel "in einem Rutsch" nach Rot kann die Bridge auch problemlos verarbeiten.
Ich bin aber froh für jeden Tip, habe es gerade eben auch so gestaffelt versucht - klappt leider auch nicht, sieht aber noch lustiger aus, wenn sich die einzelnen Werte falsch ändern...
:lol: :lol: :lol:
Aber trotzdem vielen Dank, vielleicht liest das hier ja jemand, der Hue einsetzt...
Viele Grüße,
Stefan
-
Mal ein anderer Ansatz, ist deine Objekt-ID genauso wie der Name im Blockly, also mit Leerzeichen? Nicht das von daher irgendwelche Störungen kommen!?
Enrico
Edit: Man wieder nicht richtig gelesen im Eingangspost! :? Du hast ja auch das Javascript mit rangehangen, da sieht man ja, wie es aussieht, alles schön ordentlich!
-
Versuche mal den "colormode" und ggf. auch "ct" ebenfalls in eine variable zu parken und dann wieder mit zurückzugeben
Gesendet von iPad mit Tapatalk
-
Moin Heiko,
danke für den Tip, habe ich natürlich gleich umgesetzt - hat aber leider auch nichts gebracht…
Der CT-Wert zeigt ja nur die Farbtemperatur, wenn man sich im kalt-warm-Weiß-Bereich befindet,
der colormode zeigt eben mit "xy" an, dass man sich im Farbbereich, mit "ct" im kalt-warm-Weiß-Bereich befindet.
Da ich aber von Farbe zu Farbe wechsle, ändern sich die Werte hier nicht.
Dennoch Danke für Deine Hilfe, werde weiter probieren müssen...
Viele Grüße,
Stefan
-
@Stefan Hanke:Der CT-Wert zeigt ja nur die Farbtemperatur, wenn man sich im kalt-warm-Weiß-Bereich befindet,
der colormode zeigt eben mit "xy" an, dass man sich im Farbbereich, mit "ct" im kalt-warm-Weiß-Bereich befindet.
Da ich aber von Farbe zu Farbe wechsle, ändern sich die Werte hier nicht. ` ja, beim CT Wert war ich auch eher unsicher, jedoch habe ich einen Fall bei dem aus irgend einem Grund der colormode von xy auf hs wechselt und ich ruhe habe seitdem ich das explizit mitgebe.
schade, dass dies nicht bei dir den Unterschied ausmacht …
[EDIT]
und wenn Du den (auch noch) "xy-Wert" in einer Variable parkst und dann wieder mitgibst?
Falls das ebenfalls nicht funktioniert:
vlt kommst Du zum erwarteten Ergebnis wenn Du anstelle RGB und colormode "xy" auf colormode"hs" und Mitgabe des "hue" Wertes umstellst?
1. colormode auf "hs" unstellen
2. "hue" Wert in Variable übernehmen
… damit sollten dann aber auch alle Möglichkeiten durch sein 8-)
-
Moinsens,
dein Blockly mal etwas anders:
- bei dem "schaltet auf Rot"
die ersten 3 "steuere"-Anweisungen durch "aktualisiere"-Anweisungen ersetzen.
Das sorgt dann dafür, daß nur einmal ein Befehl an die Hue-Bridge gesendet wird
und zwar im "steuere"-Befehle für level.
2.) Bei dem "schaltet auf alte Einstellung" einen Timeout einbauen mit einem Delay von 10 Sekunden.
Darunter dann die Anweisungen ohne Verzögerung.
Dabei die ersten 3 wieder auf "aktualisiere" setzen, statt "steuere".
Somit wird dann auf die alten Einstellungen gesetzt, wenn "Philips_hue.Vitrine.level" gesteuert wird (also wie bei 1.).
3.) Bei dem Falls-Block kannst du "ist anerkannt" auf "true" angeben, da die HM-Fernbedienungen immer true
senden, wenn sie gedrückt werden. Ist aber eigentlich nur Kosmetik am Skript.
Dein Problem mit den Zufallsfarben kann durch die asynchrone Abarbeitung der States kommen,
da "Wert von Objekt-Id R,B oder G" im letzten Segment schon bei Start des Skript ausgelesen wird
und dann evtl. schon alter oder neuer Wert drin steht; je nachdem wie schnell die "setState"-Kommandos abgearbeitet wurden
Daher der Einbau des Timeout, da dann erst nach 10 Sekunden die "alten" Werte gelesen werden
und entsprechend zurückgesetzt werden kann.
Zum Testen, ob das so funktioniert das alte Skript kopieren und dann das neue testen,
wobei das alte dann erstmal gestoppt wird.
Wenn das auch nicht funktioniert, dann versuche "hue", "sat" und "ct" als Werte zu speichern,
und diese bei Setzen auf "alte Einstellungen" wieder zu verwenden.
-
- bei dem "schaltet auf Rot"
die ersten 3 "steuere"-Anweisungen durch "aktualisiere"-Anweisungen ersetzen.
Das sorgt dann dafür, daß nur einmal ein Befehl an die Hue-Bridge gesendet wird
und zwar im "steuere"-Befehle für level. ` Interessanter Ansatz, ich bin auf das Ergebnis gespannt.
Ich hatte mir als Faustformel mal abgespeichert, dass "aktualisiere" für Variablen genutzt wird und "steuere" für Datenpunkte
-
- bei dem "schaltet auf Rot"
die ersten 3 "steuere"-Anweisungen durch "aktualisiere"-Anweisungen ersetzen.
Das sorgt dann dafür, daß nur einmal ein Befehl an die Hue-Bridge gesendet wird
und zwar im "steuere"-Befehle für level. `
"Aktualisiere" ändert nur die Datenpunkte in ioBroker und sendet KEINE Daten zum Aktor.Mit "aktualisiere" kann man keine Aktoren schalten.
Grüße
-
Dachte auch ich wäre schlau .. funktioniert aber nur auf den ersten Blick …
Daher das mit dem "auf aktualisieren" setzen vergessen; wie rantanplan sagt.
Hätte gedacht, daß er beim Setzen des "level" dann auch die aktuellen Werte
mit schickt, tut er aber nicht. Also blöde Idee.
Das mit dem Timeout einbauen, bleibt aber bestehen:
Eine ganz andere Idee wäre noch ein "Command" zu schicken, dann hätte man nur einen Aufruf,
der R,G,B und LEVEL auf einmal schaltet.
Wie das aber in Blockly gemacht wird, kann ich nicht sagen.
Aufruf in Javascript wäre dann:
setState('hue.0.Philips-Hue.Vitrine.command', '{"level":100,"r":255,"g":0,"b":0}');
-
Männers, ihr seid spitze !!!
Ich wollte die Tips, die ihr mir freundlicherweise gegeben habt, nach und nach testen, doch gleich die erste Änderung wars :
~~![](</s><URL url=)http://www.hanke-online.de/iobroker/4.jpg" />
Ich habe das jetzt eben mal mit ca. 20 verschiedenen "Startfarben" versucht, ging jedesmal wie gewünscht nach Rot auf "Start" zurück.
Tatsächlich nur eine Kleinigkeit, aber mit großer Auswirkung.
Ich werde das jetzt dann noch von meinem Testaufbau auf die richtigen Lampen umschreiben,
dann sollte das Script schon in Kürze einsatzbereit sein.
<size size="150">Vielen herzlichen Dank an alle meine Helfer !</size>
Viele Grüße,
Stefan~~
-
coool .. da habe ich auch wieder etwas dazu gelernt 8-)
-
Ich muss mal was zu dem Blockly Code fragen. Im Command an den Hie Adapter steht transitiontime 4
Was ist das genau? 4 Sekunden sind es nicht aber auch keine Milisekunden?
-
@Flexer
transitiontime benutzt Du um das Licht langsam hoch/runter zu dimmen
Die Angabesollte Sekunden seinist ein Multiplikator von 100ms.
Transitiontime = 4 = 400ms -
@BBTown Ah super dank dir! Jetzt hab och es verstanden. Irgendwie hatte das nicht gepasst.
Noch eine Frage. Was sagt level aus?
-
@Flexer "level" ist analog zu "bri" die Helligkeit
level steuer im Bereich 0 - 100
bri hhingegen im Bereich 0-254 -
Hallo an die Hue Experten,
Ich habe mir die Commandozeile nochmal angeschaut. Ich verstehe es immer noch nicht.
Kann mir einer vielleicht wort für wort von dem kommando erklären?
Das fängt mit on: true an.
Habe versucht eine lampe mit level 0 auszuschalten. Klappt nicht.
Wenn ich r g b jeweil auf 0 setze wird erst alles lila und geht dann aus.
Würde gerne licht auch langsam ausschalten mit transitiontime
Viele Grüsse