[Modul] Philips HUE - alte Version

Hallo,

bekomme plötzlich den Fehler, ohne das ich am System irgendwas geändert habe. Kennt das jemand? Habe die Beta drauf 2.3. Ein Wechsel auf Symcon 6 habe ich gerade ausgeführt, Fehler bleibt aber weiterhin.

PS: Nun gehts wieder nach Neustart, eigentartig.

br />
<b>Fatal error</b>:  Uncaught Exception: s property must be between 0 and 254, but is: 255 in /var/lib/symcon/modules/SymconHUE/libs/HUEMisc.php:59
Stack trace:
#0 /var/lib/symcon/modules/SymconHUE/libs/HUEMisc.php(15): HUEMisc::HSV2RGB(65535, 255, 194)
#1 /var/lib/symcon/modules/SymconHUE/libs/HUEDevice.php(251): HUEMisc::HSV2HEX(65535, 255, 194)
#2 /var/lib/symcon/scripts/__generated.inc.php(3311): HUEDevice-&gt;ApplyData(Array)
#3 /var/lib/symcon/modules/SymconHUE/HUEBridge/module.php(278): HUE_ApplyData(34210, Object(stdClass))
#4 /var/lib/symcon/scripts/__generated.inc.php(3891): HUEBridge-&gt;SyncStates()
#5 /-(3): HUE_SyncStates(25972)
#6 {main}
  thrown in <b>/var/lib/symcon/modules/SymconHUE/libs/HUEMisc.php</b> on line <b>59</b><br />

Hallo @KaiS, ich habe Schwierigkeiten in Verbindung mit Alexa. Alexa schreibt die Farbtemperatur durch einen Sprachbefehl nicht in Mired sondern Kelvin. Dadurch lassen sich die Lampen nicht sauber ansteuern. Ich habe ein Experiment gemacht und die für Temperatur in Kelvin eine neue Variable angelegt, die die Werte übersetzt. Wenn ich diese Variable im Alexa Modul konfigurieren, dann klappt es perfekt.

Das Aktionsskript:

$value = $_IPS['VALUE'];
if ($value > 6535) $value = 6535;
if ($value < 2000) $value = 2000;
$target = IPS_GetObjectIDByIdent("HUE_ColorTemperature", IPS_GetParent($_IPS['VARIABLE']));
SetValue($_IPS['VARIABLE'], $value);
(int) $mired = 1000000/$value;
RequestAction($target, $mired);

Das Ereignis passt den Wert bei externer Änderung wieder an, die Aktion ist nur eine Zeile Code:

SetValue($_IPS['TARGET'], 1000000/$_IPS['VALUE']);

Wie wäre es wenn du auch eine solche auf Kelvin basierte Variable einführst, die immer automatisch synchron ist?

Um die Steuerung per Alexa perfekt zu bekommen fehlt dann nur noch die „richtige“ Farbansteuerung, die mit HEX auf Grund der sich verändernden Helligkeit nicht schön ist, aber das wurde ja schon diskutiert. Vielleicht lohnt es sich, diese Themen bei einem „Rewrite“ auf die neue Push-API anzugehen?

Liebe Grüße
Golo

Das kann ich leider nicht testen.

@Dr.Niels du hast doch relativ viel Philips, oder? Kannst du das evtl. mal testen?

Grüße,
Kai

Du nutzt nicht das Modul von mir, sondern das von @traxanos.

Grüße,
Kai

Das mit den Farben kann ich zur Zeit leider nicht ändern.
Aber deine Funktion könnte man einführen.
Wobei du auch wie du es jetzt tust, einfach eine Hilfsvariable bauen kannst, das ist ja gerade das schöne an IP-Symcon, du kannst dir eigentlich alles so bauen, wie du es gerne hättest. :slight_smile:

Ich schaue mal, ob ich es ins Modul mit aufnehme, evtl. so, dass man es ein- und ausschalten kann.

Grüße,
Kai

Danke @KaiS, das würde helfen. Ich habe knapp 100 Hue Leuchtmittel und würde nur ungerne überall manuell eine solche Variable inkl. Script und Event hinzufügen. Okay, manuell ist dann auch Quatsch, ich würde es Scripten. Meinst du du hast Lust es kurzfristig rein zu nehmen oder lohnt es sich für mich, per Script den Workaround auszurollen? In die Alexa Konfig muss ich dann wohl doch noch manuell rein.

CU
Golo

PS: Ich habe grade gesehen - du bist Detmolder (zumindest fast) :star_struck: Ich lebe zwar in Hannover, komme aber immer wieder gerne zu Besuch und erinnere mich sehr gut an die ersten 20 Jahre meines Daseins an den schönen Blick aus meinem Fenster auf den Hermann . Heimat. Grabbe :mortar_board:. Lustig.

Ich wollte auch mal meine Lampen ein bisschen dynamischer leuchten lassen. Ich hatte versucht sie blinken zu lassen. Das hat allerdings nicht wirklich funktioniert. Ich glaube, die können nur eine gewisse Dichte von Befehlen ab… Ich habe das damals mit dem Traxanos-Modul probiert, noch nicht mit dem von @KaiS , ich vermute aber das Ergebnis wird gleich bleiben.

Gibt es in der API vielleicht Möglichkeiten da irgendwelche Schaltung mit Dimmzeit oder anderen Effekten einzugeben? Hue hat ja auch diverse Funktionen um passend zur Musik, zum Spiel oder dergleichen mit dabei zu sein…

Ich werde versuchen es diese Woche noch einzubauen.
Ja, ich wohne in dem schönsten Kreis. :smiley:

Grüße,
Kai

Der Hinweis ist interessant, ich glaube man könnte sich sowas scripten.
Ich glaube man kann in einem Befehle mehrere Lampen schalten, diese müsste man dann mit über Extended Funktion anbieten.

Ich schaue bei Gelegenheit mal nach, ob die API sowas kann.

Grüße,
Kai

Das wären extrem coole Aktionen für dein Modul :wink:

Hmm. Es gibt ja die „Hue Labs“ und ich habe eine andere App („iConnectHue“ auf iPhone) die sogar „lebendige“ Szenen in Gruppen schicken kann, sowas wie Kaminfeuerflackern oder Party-Stroboskop oder langsame wie Sonnenaufgang über 20 Minuten. Das klingt aber insgesamt nicht nach einer Kleinigkeit.

Sehr cool, dann bin ich gespannt :slight_smile: Habe grade eh noch viel Arbeit vor mir: Komplett neue, modernere Visu mit IPSView - das dauert.

CU
Golo

Ich habe gerade mal in der Doku geschaut, leider geht das anscheinend doch nicht.
Es gibt nur folgendes:

/api/<username>/lights/<id>/state

Somit gibst du bei jedem HTTP Request die ID der Lampe mit an. :frowning:
Über Gruppen kann man das auch nicht lösen, da sonst alle Lampen gleichzeitig eingeschaltet werden. Fällt der sonst noch etwas ein @Dr.Niels?

Es gibt aber Effekte, Alerts, oder Transitiontime, damit könnte man dann einzelne Lampen oder Gruppen dazu bringen zu blinken, oder langsam einzuschalten, aber leider nicht einzelne Lampen schnell nacheinander.

Kann man sich in der HUE App Szenen bauen, die das können? Dann könnte man so eine Szene evtl. über die Apps erstellen und über die API aufrufen.

Grüße,
Kai

Vielleicht noch etwas warten?
Signify verteilt gerade neue Firmwares, damit werden dann dynamische Szenen direkt unterstützt, ohne Umweg über HueLabs.

Loerdy

1 „Gefällt mir“

Ich warte sowieso auf die neue API, ich habe dazu noch nichts offizielles in der Doku gefunden.

Grüße,
Kai

Meine Hoffnung wäre halt, dass die Effekte das schnelle Senden von Befehlen unnötig machen. Wenn ich beispielsweise einer Lampe sage, dass sie über 2 Sekunden aufdimmen soll, dann der nächsten Lampe 100 ms später ebenfalls ein Aufdimmen über 2 Sekunden befehle, etc., dann könnte man den von @youngster gewünschten Effekt erreichen ohne einzelnen Lampen mehrere Befehle in kurzer Zeit zu schicken.

Das dürfte ja schon mit Transitiontime gehen.

Grüße,
Kai

Bezugnehmend auf mein Thema mit dem Temperaturen in Kelvin: Ich habe eben als Workaround mal ein Script dazu geschrieben, welches bei jeder HUE Light oder Group die dazugehörigen Variablen erstellt. Falls es jemanden interessiert, hier das Ergebnis:

  1. Profil angelegt mit dem Namen „HUE.ColorTemperatureK“:

  2. Script an beliebiger Stelle abgelegt, das Aktionsskript muss dabei unterhalb des Hauptskripts liegen.
    Bildschirmfoto 2021-08-26 um 16.07.47

  3. Code des Haupstskripts:

<?php
$GUID_HueDevice = "{83354C26-2732-427C-A781-B3F5CDF758B1}";
$allHUEInstanceIDs = IPS_GetInstanceListByModuleID($GUID_HueDevice);
foreach ($allHUEInstanceIDs as $HUEInstanceID) {
    $deviceType = json_decode(IPS_GetConfiguration($HUEInstanceID), true)["DeviceType"];
    if ($deviceType == "lights" || $deviceType == "groups") {
        if (!@IPS_GetVariableIDByName("Color Temperature Kelvin", $HUEInstanceID)) {
            $variableKelvinID = IPS_CreateVariable(1);
            IPS_SetParent($variableKelvinID, $HUEInstanceID);
            IPS_SetName($variableKelvinID, "Color Temperature Kelvin");
            IPS_SetVariableCustomProfile($variableKelvinID, "HUE.ColorTemperatureK");
            IPS_SetVariableCustomAction($variableKelvinID, IPS_GetScriptIDByName("Aktionsscript", $_IPS['SELF']));
            $eventKelvinID = IPS_CreateEvent(0);
            IPS_SetParent($eventKelvinID, $variableKelvinID);
            IPS_SetEventTrigger($eventKelvinID, 1, IPS_GetObjectIDByIdent("HUE_ColorTemperature", $HUEInstanceID));
            $eventScript = "<?php SetValue(\$_IPS['TARGET'], 1000000/\$_IPS['VALUE']);";
            IPS_SetEventScript($eventKelvinID, $eventScript);
            IPS_SetEventActive($eventKelvinID, true);
        }
    }
}
  1. Code des Aktionsskripts:
<?php
$value = $_IPS['VALUE'];
if ($value > 6535) $value = 6535;
if ($value < 2000) $value = 2000;
$target = IPS_GetObjectIDByIdent("HUE_ColorTemperature", IPS_GetParent($_IPS['VARIABLE']));
SetValue($_IPS['VARIABLE'], $value);
(int) $mired = 1000000/$value;
RequestAction($target, $mired);

Nun kann ich im Alexa Modul wunderbar die Kelvin Variablen angeben und die Sprachsteuerung funktioniert besser.

CU
Golo

Hallo @KaiS ich bekomme leider immer wieder die Fehler

30.08.2021, 13:26:56 | HUEBridge            | Philips HUE sendRequest Error - Curl Error:Connection timed out after 5001 millisecondsHTTP Code: 0

Die Bridge sollte erreichbar sein … auf jeden Fall habe ich sonst keine Fehler.

Es handelt sich um die Aktuelle Hue Version aus dem Module Store auf Symcon 6. Allerdings habe ich noch keine Lampen angerichtet, da ich auch noch das „alte Modul - also nicht das von dir am laufen habe“ (ich wollte sichergehen das es geht - kann es sein das sich die 2 Module nicht mögen)?

Das kann ich dir nicht beantworten.
Aber es sieht so aus, als wäre da ein Verbindungsproblem.
Wie häufig tritt der Fehler auf?

Grüße,
Kai

Alle paar Stunden … dann aber in der tat häufiger.

Geht der Fehler in die Richtung … Netzwerk? Dann suche ich mal da.