[Modul] Philips HUE V2 (Neue Push API)

Hallihallo,
ich bin gerade auf etwas merkwürdiges gestoßen:
Zum Verändern der Einstellung „Farbe“ einer HUE Lampe enthält mein Script:
RequestAction ($farbeID, $farbeValue);
Hierbeisetze ich $farbeValue auf 0.

Daraus resultiert:

Warning: 
Warning: Division by zero in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue.v2/Light/module.php(6) : eval()'d code on line 31

Warning: Division by zero in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue.v2/Light/module.php(6) : eval()'d code on line 32

Fatal error: Uncaught TypeError: Argument 3 passed to RessourceModule::sendData() must be of the type string, bool given, called in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue.v2/Light/module.php on line 63 and defined in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue.v2/libs/ResourceModule.php:109
Stack trace:
#0 /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue.v2/Light/module.php(63): RessourceModule->sendData('77e7ea5b-83f5-4...', 'light', false)
#1 /-(3): HUELight->RequestAction('color', 0)
#2 {main}
  thrown in /var/lib/symcon/modules/.store/info.schnittcher.ips.philipshue.v2/libs/ResourceModule.php on line 109
 in /var/lib/symcon/scripts/RestoreStandard.V2.ips.php on line 20

Gleiches passiert, wenn ich in der Symcon-Konsole die Instanz einer HUE Lampe doppelklicke und dann den Farbregler auf ganz schwarz drehe oder aber den Befehl PHUE_setColor($instanceID, 0, $opt) nutze

Ich nutze die Version 1.0.1 (beta) des Philips HUE V2 Moduls.

LG
Andreas

Kannst du mal die aktuelle Beta Version testen?
Da gibt es nun die Funktion setAlert().

Aufrufen kannst du die Funktion so:

PHUE_setAlert($InstanzID);

Wie lange der Effekt aktiv ist, hängt von der Einstellugn ab, was bei der Variable „Übergang“ hinterlegt ist. Da fällt mir gerade auf, dass man die Variable umbennen sollte. :slight_smile:

An alle anderen, ihr könnt das mit dem Effekt natürlich auch mal testen und mir eine Rückmeldung geben.

Grüße,
Kai

Hi,
funktioniert auf jeden Fall schon mal…
Jetzt müsste ich nur noch die vorhandenen Einstellungen vor dem Alert sichern, dann Farbe (z.B. auf rot) stellen und nach dem Alert wieder auf die alten Einstellungen zurücksetzen…
Geht wahrscheinlich irgendwie, aber so richtig cool wäre es, wenn man beim Aufruf von setAlert eine Farbe mitgeben könnte…

Aber auf jeden Fall schon mal Danke für die grundsätzliche Funktion!

Kannst du mal schauen, ob eine Meldung im Debug ankommt, wenn der Effekt vorbei ist?

Grüße,
Kai

Was fehlt euch aktuell noch be diesem Modul?

Grüße,
Kai

Hi Kai,

ehrlich gesagt gefällt mit das mit den Variablen dahingehend nicht so, dass sie nicht den
aktuellen Status wiederspiegeln. Das ist sehr gewöhnungsbedürftig.
Was meine ich damit ? → Die Leuchte XY ist aus. Bei Helligkeit wird aber trotzdem z.B. 10% angezeigt:

Klar, das ist die Helligkeit, die die Leuchte bekommen wird, wenn sie denn eingeschaltet wird…
Ich meinte das war beim alten Modul nicht so, d.h. da spiegelten die Variablen immer den IST Zustand wieder.
Gewohnheitsthema würde ich sagen.

Weitere Feststellungen:


Ich würde behaupten, dass folgendes nicht zum Ausschalten der Leuchte führt, obwohl ich meinte das weiter oben so gelesen bzw. verstanden zu haben:
$opt1 = [‚on‘ => [‚on‘ => true], ‚dimming‘ => [‚brightness‘ => 0], ‚dynamics‘ => [‚duration‘ => $fadeout]];
PHUE_setColor($spot04, $coloreinfahrt, $opt1);

Deshalb brauche ich innerhalb von Scripts nun prinzipbedingt aber zur LeuchtenInstanz auch immer zugehörige ID der Status_Variable, wenn ich was Dimmen will die ID der Brightness und wenn ich die transition ändern möchte, diese ID…
Ich hab das dann immer so gelöst, dass ich am Anfang des Skripts mir das so „organisiert“ habe:

$spot04= 27527; // Einfahrt 1
$spot04_status= IPS_GetObjectIDByIdent(„on“,$spot04);
$spot04_bri= IPS_GetObjectIDByIdent(„brightness“,$spot04);
$spot04_fade= IPS_GetObjectIDByIdent(„transition“,$spot04);

Damit habe ich dann beim eigentlichen Script immer alle nötigen Objekte als Variable.
Funktioniert, ist aber aufwändig, wenn da mehrere Objekte im Spiel sind…


Verlässlichkeit des Status (z.B. einer Gruppe) aktuell nicht immer gegeben. D.h. steht sukzessive auf Status AUS, obwohl Leuchten bzw. die Gruppe „physisch“ tatsächlich an sind. Das sehe ich aber nur sporadisch, d.h. weiß noch nicht, wann bzw. mit was das zusammenhängt.

Grade beim Rumprobieren auch noch gesehen:

Ich mache ein ($licht ist ein Raum):
$opt1 = [‚on‘ => [‚on‘ => true], ‚dimming‘ => [‚brightness‘ => 100], ‚dynamics‘ => [‚duration‘ => 5000]];
PHUE_setColor($licht, $color, $opt1);

Funktioniert, aber in der Visu steht die Helligkeit auf 92%:

… ?

Vermutlich habe ich mir die Antwort oben selbst gegeben. Das wäre der Wert, den die Leuchte bei „normalem“ Einschalten bekommen würde, oder ?

Zu Punkt 1:
Da werde ich erstmal so lassen, evtl. kann man da in der Zukunft mal schauen, ob es da noch eine andere Möglichkeit gibt. Evtl. mit einem Buffer die Daten zwischenzuspeichern und 0 anzuzeigen, wenn die Lampen ausgeschaltet sind.
Evtl. kann ich das ja einstellbar machen. Aber das muss ich mir nochmal überlegen, ob ich das wirklich machen will.

Zu Punkt 2:
Was passiert, wenn du dimming einfach weglässt?
Also wenn du folgendes ausführst?

$opt1 = [‚on‘ => [‚on‘ => true], dynamics‘ => [‚duration‘ => $fadeout]];
PHUE_setColor($spot04, $coloreinfahrt, $opt1);

Zu Punkt 3:
Kannst du da mal versuchen herauszufinden, wann das passiert?

Grüße,
Kai

Kannst du davon mal ein Debug posten?

Grüße,
Kai

Hihi, jetz haben wir bischen viel auf einmal…

Debug von welchem Aufruf ?

Punkt 3 „Status unzuverlässig“: Beobachte ich, ja.

Punkt 1: Bin ich voll bei dir, ist Gewöhnungsthema. Im Prinzip sagts der Status AUS ja schon korrekt.

AUFRUF:
$opt1 = [‚on‘ => [‚on‘ => true], ‚dimming‘ => [‚brightness‘ => 100], ‚dynamics‘ => [‚duration‘ => 5000]];
PHUE_setColor($licht, $color, $opt1);

VISU:

DUMP:
dump (3).txt (3,0 KB)

→ woher weiß er da, dass ich ausschalten möchte ?

Da scheint von der bridge gar keine Antwort zu kommen.
Ich glaube der Status kommt bei Gruppen nicht zurück, den müsste ich wahrscheinlich simulieren.
Kannst du mal gucken ob in der Bridge Instanz etwas im Debug steht?

Grüße,
Kai

Wieso willst du überhaupt so ausschalten? Ich verstehe den Sinn nicht. Dann schlate doch einfach über die Variable aus?

Grüße,
Kai

AUFRUF:
$opt1 = [‚on‘ => [‚on‘ => false], ‚dimming‘ => [‚brightness‘ => 100], ‚dynamics‘ => [‚duration‘ => 8000]];
PHUE_setColor($licht, $color, $opt1);

VISU:

DEBUG:
dump (5).txt (3,0 KB)

AUFRUF:
$opt1 = [‚on‘ => [‚on‘ => false], ‚dynamics‘ => [‚duration‘ => 8000]];
PHUE_setColor($licht, $color, $opt1);

VISU:

DEBUG:
dump (6).txt (2,8 KB)

Nach obigem Aufruf (dump (6).txt) ist die Leuchte optisch quasi aus.
In der Visu steht aber noch AN.

Wenn ich nun in der VISU auf AUS klicke, bleibt das AN bestehen.

DEBUG dazu:
dump (7).txt (2,5 KB)

Nur ein klick auf AN (ohne optische Auswirkung) und dann
auf AUS bewirkt auch den Wechsel auf AUS in der Visu.

DEBUG dazu:
dump (8).txt (5,1 KB)

Ich hoffe ich kann dir mit meinen Tests weiterhelfen.
Sag einfach wenn du noch was brauchst. :wink:

Hallo Kai,

ich freue mich sehr, das diese lang vermisste Funktion nun Einzug hält :smiley:

Ich habe es getestet, und nun meine Fragen dazu:

  • der Befehl PHUE_setAlert funktioniert nur auf Lampen, aber nicht auf Gruppen bzw Zonen. Ist das Absicht oder Api bedingt?

  • es gibt wohl keine Möglichkeit, das Blinken vorzeitig zu beenden, oder?
    im alten Modul konnte ich via
    PHUE_AlertSet($Garderobe, 'lselect');
    die Meldung starten und via
    PHUE_AlertSet($Garderobe, 'none')
    wieder beenden.
    Somit hörte das Blinken auf wenn die Tür zum Carport wieder geschlossen wurde, jetzt blinkt es weiter :frowning:
    Hast Du eine Idee, wie man das lösen kann?

Gruß,
Loerdy

Das geht glaube ich, schaue ich mir nochmal an. Ich dachte das geht schon. Macht die Funktion einfach nichts?

Was hast du bei der Zeit eingestellt?
Ein einfaches „Aus“ hilft nicht?

Grüße,
Kai

Dann wäre ja die ganze Lampe aus, auch wenn diese vorher an war. ( ich hab es aber nicht getestet)
Zeit bzw. Übergang ist auf 0ms. Die Zeit weiß ich ja beim Auslösen auch nicht. Idealerweise blinkt es solange bis die Tür wieder geschlossen ist. Und wer Kinder hat weiß, das es oft nicht vorkommt :rofl: :joy:

Danke für die rasche Rückmeldung,
Loerdy