Hue Lampen blinken lassen - alter Lampenstatus

Hallo zusammen,
ich benötige ein Script, wodurch einzelne Hue Lampen blinken und anschließend zu ihrem alten Zustand (Status an/aus, Farbe, Helligkeit) zurückkehren.
@KaiS hatte den Vorschlag gemacht, bevor der Befehl für den Effekt abgeschickt wird, ein GetValue auf die Variablen Farbe, Helligkeit und Status zu machen und diese Werte dann in Variablen im Script zwischenzuspeichern und diese Variablen dann wieder zu benutzen, um die Werte zu setzen.

Der Blinkbefehl lautet:

$opt =['alert' => 'lselect'];
PHUE_ColorSetOpt(56168, $color, $opt);

In der iConnectHue App lässt sich das Blinken in zwei Varianten darstellen (kurz/lang).
bei kurz: 1x blinken
bei lang: 15x blinken

Vielleicht lässt sich diese Unterscheidung auch im Script vornehmen.
Die Idee von Kai habe ich verstanden, scheitere jedoch kläglich in der Umsetzung. Ich würde mich über Hilfe/Lösungen freuen, da ich leider keine Kenntnisse in dem Bereich habe.

Viele Grüße
marvus

$status = GetValue('ID der Variable Status');
$helligkeit = GetValue('ID der Variable Helligkeit');
$farbe = GetValue('ID der Variable farbe');

$opt =['bri' => $helligkeit, 'on' => $status];
PHUE_ColorSetOpt('InstanzID', $farbe , $opt);

Schau mal ob das so funktioniert, ich habe das gerade einfach nur aus dem Kopf geschrieben, ohne es zu testen.

Grüße,
Kai

Hallo Kai,
danke für dein Script. Ich bekomme es nicht zum Laufen. Ich weiß auch nicht, ob meine Variablenzuodnung stimmt. Wie werden denn die aktuellen Daten in die neuen Variablen geschrieben? Das ist mir aus deinem Script noch nicht klar. Ich habe verschiedene Varianten probiert, aber die Werte werden nicht in meine neuen Variablen „Farbe zwischenspeichern“ etc. übernommen. Line 8 wirft einen Fehler aus.
Anbei ein paar Screenshots:

Die Funktion ist für das Setzen der Farbe gewesen, nicht für die Farbtemperatur.

Versuch es mal so:

$status = GetValue(54909);
$helligkeit = GetValue(50975);
$farbtemperatur = GetValue(33754);
$array =['bri' => $helligkeit, 'on' => $status, 'ct' => $farbtemperatur];
PHUE_Request(56168,$array);

Grüße,
Kai

Es ändert sich leider nichts. Das einzige was passiert ist, dass sich bei Ausführung des Scripts die Hue Leuchte ausschaltet. Dies war auch schon beim vorherigen Script von dir so. Hm :thinking:

Was steht in der Variable $status und $helligkeit drin?

Grüße,
Kai

Hier noch einmal die Übersicht. Rechts sieht man, dass nach Ausführung des Skriptes die Werte nicht übernommen werden. Ich habe jetzt auch den Grund, wieso die Lampe nach Ausführung des Skriptes ausgehen. In den „Zwischenspeicher-Variablen“ sind keine Werte bzw. der Wert „0“. Somit nehmen die HUE Lampen diese Werte an. Bei 0 gehen sie natürlich aus.
In den „Zwischenspeicher-Variablen“ habe ich die Profile ausgewählt, die auch die original Variablen in der Instanz haben.

Ich denke das Hauptproblem ist die fehlende Übertragung in die Zwischenwerte.

Viele Grüße :slight_smile:

Du hast das was falsch verstanden.
Die Variablen (33754,50975,5409) kannst du löschen.

//alte Werte merken
$status = GetValue(48195);
$helligkeit = GetValue(40386);
$farbtemperatur = GetValue(55713);

//Blinken lassen
$opt =['alert' => 'lselect'];
PHUE_ColorSetOpt(56168, $color, $opt);

//Zwei Sekunden warten
IPS_Sleep(2) 

//Alten Stand wiederherstellen
$array =['bri' => $helligkeit, 'on' => $status, 'ct' => $farbtemperatur];
PHUE_Request(56168,$array);

Versuch es mal bitte so.

Grüße,
Kai

1 „Gefällt mir“

Guten Morgen,
da habe ich aber wirklich daneben gelegen :smiley:

Nach Scriptausführung blinkt die Lampe nicht und es kommt der Fehler:
P.S. 50280 ist die ID der Skriptvariable

Es fehlt das Semikolon nach :
IPS_Sleep(2);

Und der Wert ist in Milisekunden. Wenn es 2 Sekunden sein sollen dann:
IPS_Sleep(2000);

1 „Gefällt mir“

Stimmt, mein Fehler.

Grüße,
Kai

Daaaaaanke. Das funktioniert jetzt schon einmal :slight_smile:
Er spuckt jetzt noch den Fehler aus :
„Notice: Undefined variable: color in /var/lib/symcon/scripts/58239.ips.php on line 10“

Gut, ich habe auch oben in den Variablen keine Color angegeben. Das lässt sich aber noch einbauen, analog zu den Variablen oben, oder? Derzeit nutze ich am Schreibtisch nur eine White Ambiance. Für spätere Projekte jedoch sicherlich hilfreich.

Auch noch eine interessante Beobachtung ist, dass wenn die HUE Leuchte an ist, sie 15x blinkt. Wenn sie aus ist, blinkt sie nur entsprechend dem IPS_Sleep Wert. Ist eine Anpassung auch bei der bereits leuchtenden Lampe möglich?

Mach es so:

//alte Werte merken
$status = GetValue(48195);
$helligkeit = GetValue(40386);
$farbtemperatur = GetValue(55713);

//Blinken lassen
$array=['alert' => 'lselect'];
PHUE_Request(56168,$array);

//Zwei Sekunden warten
IPS_Sleep(2000);

//Alten Stand wiederherstellen
$array =['bri' => $helligkeit, 'on' => $status, 'ct' => $farbtemperatur];
PHUE_Request(56168,$array);

Mit der farbe kann es etwas komplizierter werden, können wir uns dann anschauen, wenn es soweit sein sollte.

Mit dem Script sollte die Lampe eig. immer nach 2 Sekunden aufhören zu blinken.

Grüße,
Kai

Hallo,
habe das auch mal getestet und kann das so bestätigen. Wenn die Leuchte an ist, blinkt sie 15x. Anfangs in Bunt und dann in weiß, halt der Anfangszustand.

Wenn die Lampe aus ist und ich das Skript ausführe blinkt sie bunt in verschiedenen Farben und die 2 Sekunden.

Bekomme auch die Meldung:
„Notice: Undefined variable: color in /var/lib/symcon/scripts/58239.ips.php on line 10“

Bitte das Script benutzen, was ich eben gepostet habe.

Grüße,
Kai

@KaiS Dein letztes Script wirft jetzt bei mir den Fehler aus:

Notice: Undefined variable: array in /var/lib/symcon/scripts/58239.ips.php on line 10

Fatal error: Uncaught TypeError: Argument 1 passed to HUEDevice::Request() must be of the type array, null given, called in /var/lib/symcon/scripts/__generated.inc.php on line 1795 and defined in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue/HUEDevice/module.php:368
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(1795): HUEDevice->Request(NULL)
#1 /var/lib/symcon/scripts/58239.ips.php(10): PHUE_Request(56168, NULL)
#2 {main}
  thrown in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue/HUEDevice/module.php on line 368

Das alte Script darüber funktionierte.

Ich habe gerade einen Workaround herausgefunden.
Wenn man die Lampe nur einmal blinken lassen möchte, muss man „l“ weglassen:

$opt =['alert' => 'select'];

Die Funktion nennt sich dann „one breathe cycle“, mit eine „l“ (keines L) nennt sie sich „breathe cycles for 15 seconds“.

Jetzt kann man beispielsweise das Skript so abändern, dass man 2x einen Breath durchläuft. So kann man dann mit den Lichtsignalen spielen und je nach Bedarf eine Information zuordnen.

//alte Werte merken
$status = GetValue(48195);
$helligkeit = GetValue(40386);
$farbtemperatur = GetValue(55713);

//Blinken lassen
$opt =['alert' => 'select'];
PHUE_ColorSetOpt(56168, $color, $opt);

//Zwei Sekunden warten
IPS_Sleep(2000); 

//Blinken lassen
$opt =['alert' => 'select'];
PHUE_ColorSetOpt(56168, $color, $opt);

//Zwei Sekunden warten
IPS_Sleep(2000); 

//Alten Stand wiederherstellen
$array =['bri' => $helligkeit, 'on' => $status, 'ct' => $farbtemperatur];
PHUE_Request(56168,$array);//Start writing your code here

Bei mir kommen dann lauter Fehler:
Notice: Undefined variable: array in /var/lib/symcon/scripts/16654.ips.php on line 27

Fatal error: Uncaught TypeError: Argument 1 passed to HUEDevice::Request() must be of the type array, null given, called in /var/lib/symcon/scripts/__generated.inc.php on line 9107 and defined in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue/HUEDevice/module.php:383
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(9107): HUEDevice->Request(NULL)
#1 /var/lib/symcon/scripts/16654.ips.php(27): PHUE_Request(31806, NULL)
#2 {main}
thrown in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue/HUEDevice/module.php on line 383
Abort Processing during Fatal-Error: Uncaught TypeError: Argument 1 passed to HUEDevice::Request() must be of the type array, null given, called in /var/lib/symcon/scripts/__generated.inc.php on line 9107 and defined in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue/HUEDevice/module.php:383
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(9107): HUEDevice->Request(NULL)
#1 /var/lib/symcon/scripts/16654.ips.php(27): PHUE_Request(31806, NULL)
#2 {main}
thrown
Error in Script /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue/HUEDevice/module.php on Line 383

Ich habe das Script gefixt.

Grüße,
Kai

Hier die Lösung für Helden mit keiner Zeile Skript:

Was wird gebraucht:
Module Store - Szenensteuerung
Ablaufplan

In der Szenensteuerung Anzahl 1 Szene einstellen und die gewünschte Hue Lampe hinzufügen.
Ablaufplan einrichten. PseudoCode mässig:

Szenensteuerung „Speichern“ abrufen // speichert den vollständigen Zustand der Hue Lampe
Hue Licht an
Warten in Sekunden/Millisekunden
Hue Licht aus
… // beliebig oft wiederholen
Szenensteuerung „Aufrufen“ abrufen // stellt Zustand der Hue Lampe wieder her

Ich weiß das ist nicht schön - aber erspart euch den gekrebse mit dem Skript.
Ihr müsst euch nicht um die Zustände der Lampe kümmern - lasst das doch Symcon machen - dafür ist es da.

Grüße
Pio

@Pio nimmt mir wieder die Freude an den Scripten!
Aber an das Modul habe ich gar nicht gedacht. :smiley:

Grüße,
Kai