Philips HUE Modul

Sind nur alles Methoden des Moduls bis auf das Auslesen der Farbe. Wenn man das öfter benutzt könnte man eventuell noch ein paar Standard Methoden im Modul ergänzen, dann muss man ja nicht jede Methode einzeln aufrufen. Gib mal Rückmeldung ob das geht in habe nämlich gerade keine Hue Lampe hier zum testen, das kann ich erst wenn ich wieder zu Hause bin.

Also im Prinzip funktioniert es erstmal so wie es soll. Manchmal wird aber nicht die richtige Farbe zurückgestellt, da bin ich noch auf der Suche, evtl weil das eine Gruppe ist? (ich spreche nicht die Gruppe an, sondern nur eine Lampe, Gruppe ansteuern geht nicht mit dem Script, richtig?)
Werde noch ein bisschen testen . Zumindest wird ausgeschaltet wenn die Lampe aus war und bleibt an wenn die Lampe an war und zwischendrin rotes Blinken (hab ich angepasst) , sehr schön.

Gesendet von meinem SM-G935F mit Tapatalk

Die Befehle lesen so wie sie da stehen nur eine einzelne Lampe aus und setzen diese. Wenn man das mit einer ganzen Gruppe machen will müsste man das anpassen, wobei ich mir da selber nicht sicher bin was da der geeignete Weg ist. Das müsste man wohl per Hand machen. Problem ist ja, dass in einer Szene ja jede Lampe der Gruppe eine andere Farbe haben kann.
Daher müsste man also erst mal schauen welche Lampen Mitglied der Gruppe sind, die Werte einzeln auslesen und dann auch einzeln wieder zurücksetzten. Wenn Du da aber noch ein passenden Ansatz bzw. Fehler findest gib Bescheid.

Ich fade meine Lampen immer mit solchen Scripten:

<?
//includiert die Hue Lampen
include '14149 /*[Bornkamp 4\Scripte + Tools\# Includes\HUE Lampen]*/.ips.php';

$hid = $Huerray[$Miffy];
$trans = 1200;

include '27356 /*[Bornkamp 4\Scripte + Tools\Beleuchtung\HUE\Lampen\Scripte\Transition - Aufblenden 100%]*/.ips.php';
 
?>

das include:

<?

 HUE_Request($HueBridge,"/lights/".$hid."/state" , array('on' => true,'hue' => 9102,'sat' => 0, 'bri' => 254,  'transitiontime' => $trans ));

?>

Nun habe ich eine Stehlampe mit drei Glühbirnen und möchte diese als Gruppe ansprechen.
Ich habe gedacht /lights/ in /groups/ zu ändern und die Gruppen ID zu übergeben würde genügen,
tut es aber leider nicht.
Hat jemand eine Idee, wie ich die Gruppe ansprechen kann?

Danke,
lördy

Dafür gibt es die Methode


HUEGroup_SetValues($groupId, $list);

Wenn Du das dennoch über HUE_Request lösen willst das ist der path
/groups/<id>/action

ich muss gestehen, ich bin an diesem Befehl immer am $list gescheitert. :confused:

Das hier:

/groups/<id>/action

funktioniert aber bestens, Danke!!

lördy

$list ist ein Array Du übergibst ja auch ein Array.

Wie in der Doku zu lesen


// Anpassung mehrere Lampenparameter
// array('KEY1' => 'VALUE1', 'KEY2' => 'VALUE2'...)
//
// Mögliche Keys:
// STATE -> true oder false für an/aus
// COLOR_TEMPERATURE -> Farbtemperatur (153 bis 500)
// SATURATION -> Sättigung (0 bis 255)
// BRIGHTNESS -> Helligkeit in (0 bis 255)
// COLOR -> Farbe als integer
// ALERT -> Wird durchgereicht
// EFFECT -> Wird durchgereicht
// TRANSITIONTIME -> Wird durchgereicht

Ansonsten müsste die Doku mal so angepasst werden das es für jeden verständlich ist falls es da Probleme gibt.

ich verzweifel langsam…

ich möchte ganz „normal“ meine HUE Lampen ansteuern und ein Licht erzeugen, welche sich vorher von den Lampen auslese.

Ein Beispiel. Das ist die Rückmeldung aus dem API Debugger:


"state": {
				"on": true,
				"bri": 114,
				"hue": 13524,
				"sat": 200,
				"effect": "none",
				"xy": [
					0.5157,
					0.4195
				],
				"ct": 443,
				"alert": "none",
				"colormode": "xy",
				"reachable": true
			},
			"swupdate": {
				"state": "noupdates",
				"lastinstall": null
			},
			"type": "Extended color light",
			"name": "Essbereich Mitte",
			"modelid": "LCT001",
			"manufacturername": "Philips",

Ich bekomme diese Farbe aber nicht in IPS hin:


 HUE_SetState(28145 /*[Komponenten\Licht Komponenten\Essbereich Mitte]*/, true);
  HUE_SetValue(28145 /*[Komponenten\Licht Komponenten\Essbereich Mitte]*/, 'BRIGHTNESS', 114); 
  HUE_SetValue(28145 /*[Komponenten\Licht Komponenten\Essbereich Mitte]*/, 'SATURATION', 200);
  HUE_SetValue(28145 /*[Komponenten\Licht Komponenten\Essbereich Mitte]*/, 'COLOR', 13524);

das ist nuu eine Variante, die ich ausprobiert habe… weiß jemand, wie ich die oben abgegriffene Farbe hin bekomme?

Danke…
Alex

Du hast das ein Missverständnis.

hue != color

Die Bridge liefert 3 Werte getrennt

Farbcode (HUE)
Helligkeit (BRIGHTNESS )
Sättigung (SATURATION)

Der COLOR Wert ist eine Kombination aus allen 3 Werte als Hexwert.
Mit jedem Abgleich des Lampenstatus wird der COLOR Wert aus den aktuell Werten errechnet und kann dann von dir für z.B. eine Szene gespeichert werden / verwendet werden.

Noch ein Hinweis, der Colormode „colormode“: „xy“ wird von meinem Plugin nicht unterstützt, da man für jede Lampe dann eine Colorcorrection benötigt und die Umrechnung nicht Rundungsfehlerfrei ist. Das ist aber für die Oberfläche wichtig. Daher arbeite ich nur mit den zwei Modis für für die HUE-Farbe und die CT-Temperatur

Hallo,

ich nutze seit diesem Wochenende auch die Kerzen (E14) von HUE https://www.philips.de/a-w/about/news/archive/standard/news/unternehmen/20170317-hue-e14-kerzenlampen.html. Nur bekomme ich hier eine Fehlermeldung wenn ich die Helligkeit als „BRIGHTNESS“ übergebe:

HUE_Bridge | stdClass Object
(
    [type] => 7
    [address] => /lights/5/state/bri
    [description] => invalid value,  12 }, for parameter, bri
)

Folgendes übergebe ich in dem Script:


$brightness='12';
HUE_SetValue($id03 , 'BRIGHTNESS', $brightness); 
HUE_SetValue($id03, 'COLOR', $color);
HUE_SetValue($id03, 'STATE', $state_on);

Verhalten sich diese HUE Lampen anders und kann man hier keine Helligkeit mitgeben? Ohne die Helligkeit wird der Befehl ohne Probleme ausgeführt.

So wird eine der drei Lampen aus der Bridge ausgelesen:


[5] => stdClass Object
        (
            [state] => stdClass Object
                (
                    [on] => 
                    [bri] => 222
                    [hue] => 35498
                    [sat] => 221
                    [effect] => none
                    [xy] => Array
                        (
                            [0] => 0.1906
                            [1] => 0.3967
                        )

                    [ct] => 153
                    [alert] => none
                    [colormode] => hs
                    [reachable] => 1
                )

            [swupdate] => stdClass Object
                (
                    [state] => noupdates
                    [lastinstall] => 
                )

            [type] => Extended color light
            [name] => Esszimmer I
            [modelid] => LCT012
            [manufacturername] => Philips
            [uniqueid] => 00:17:88:01:02:85:89:be-0b
            [swversion] => 1.15.2_r19181
            [swconfigid] => 79A02AB9
            [productid] => Philips-LCT012-1-E14ECLv1
        )

Ich habe gerade gesehen, dass ich bei meiner anderen Leuchte (http://www2.meethue.com/de-de/p/hue-iris-tischleuchte/7199960PH ) die gleiche Fehlermeldung erhalte.

Scheinbar habe ich wohl entweder einen Denkfehler oder ich habe einen Fehler im Skript.

Hallo Vita,

die Lösung von Dir hört sich sehr interessant an und ich würde diese auch gerne mal testen.

Der Codesnipsel an sich funktioniert aber nicht, oder? Mir ist nämlich (noch) nicht klar wo dieses Script genau abgelegt werden muss, da du ja auf eine höhere Ebene verweist.

$variablenID = @IPS_GetVariableIDByName($variablenName, $_IPS['SELF']);

Kannst du mir dies bitte erklären?

Du willst Szenen schalten?

Einfach eine Kategorie anlegen darunter ein Skript anlegen, dort den Inhalt von hier reinkopieren und die ObjektID der HUE Bridge anpassen, dann auf Ausführen klicken. Dann hast Du unterhalb dieser Kategorie alle Szenen zum Schalten zur Verfügung.

Hallo Fonzo,

das habe ich Dank Deines tollen Scriptes auch geschafft.

Ich würde gerne auch mit einen Homematic Schalter eine Lampe durch die verschiedenen Szenen schalten, so wie Viata das beschrieben hat.

Leider bekomme ich sein Script nicht dazu, dass es läuft.

Also so was das man zwischen lang und kurzem Tastendruck unterscheidet bzw. das bei jedem Tastendruck nach oben jeweils eine neue Szene aufgerufen wird aus einer Reihe von vorgegebenen Szenen?

Ja genau, das mit einem Tastendruck die nächste Szene ausgewählt wird und falls man das erste mal auf den Taster drückt eine Standardszene ausgewählt wird.

Ich habe das Modul etwas erweitert[1] … für meinen Bedarf funktioniert das ziemlich gut aber es gibt sicher noch Möglichkeiten das Ganze zu verbessern.

Beim Geräteabgleich liest das Modul die verfügbaren Szenen aus der Bridge und hinterlegt diese mit Name und Szenen-ID in den Einstellungen der Gruppen:

Innerhalb der Testumgebung lässt sich manuell eine Szene aktivieren. Leider muss man hier den Namen der Szene eintippen - anders habe ich das nicht hinbekommen :confused:

Für die Abfrage aller Szenen per Skript gibt es nun den neuen Befehl HUEGroup_GetScenes($groupId). Dieser liefert ein Array mit Szenenname und -ID.

Um eine bestimmte Szene aktivieren zu können, nutzt man den bisherigen Befehl HUEGroup_SetValue oder HUEGroup_Setvalues. Hierfür gibt es nun den Key „SCENE“.

Beispiele:

Abfrage der Szenen:

print_r(HUEGroup_GetScenes(23480 /*[Lab\HUEScenes\Gruppen\Wohnzimmer]*/));

liefert:

Array
(
    [0] => Array
        (
            [SceneID] => 6B0mniKdmTddGLk
            [SceneName] => Abendlicht
        )

    [1] => Array
        (
            [SceneID] => gPLpouEjcwbdXW5
            [SceneName] => Entspannen
        )

    [2] => Array
        (
            [SceneID] => 6V4L0faiyJou0s8
            [SceneName] => Lesen
        )
...

Szene aktivieren:

HUEGroup_SetValue(23480 /*[Lab\HUEScenes\Gruppen\Wohnzimmer]*/, "SCENE", "Entspannen");

Das war nur ein grober Auszug aus meinem Script. Hier fehlt tatsächlich eine Zeile, richtig ist:

$variablenName = "Szene";
$variablenID = @IPS_GetVariableIDByName($variablenName, $_IPS['SELF']);
$var = CreateVariableByName($_IPS['SELF'], "$variablenName", 3, "", "");

Der Teil erzeugt eine Variable unterhalb des auszuführenden Scripts. Darin wird der Name der aktuell eingestellten Szene gespeichert :slight_smile:

[1] GitHub - vita2/SymconHUE at feature/scenes

Leider bekomme ich eine Fehlermeldung nach Einbindung des Modules:
19.11.2017 17:58:40 | ScriptEngine | Ergebnis für Ereignis 47762
<br />
<b>Notice</b>: Undefined property: stdClass::$uniqueid in <b>/var/lib/symcon/modules/SymconHUE/HUEBridge/module.php</b> on line <b>323</b><br />
<br />
<b>Notice</b>: Undefined index: name in <b>/var/lib/symcon/modules/SymconHUE/HUEDevice.php</b> on line <b>65</b><br />
<br />
<b>Notice</b>: Undefined index: on in <b>/var/lib/symcon/modules/SymconHUE/HUEDevice.php</b> on line <b>245</b><br />
<br />
<b>Notice</b>: Undefined property: stdClass::$type in <b>/var/lib/symcon/modules/SymconHUE/HUEBridge/module.php</b> on line <b>340</b><br />
<br />
<b>Notice</b>: Undefined property: stdClass::$type in <b>/var/lib/symcon/modules/SymconHUE/HUEBridge/module.php</b> on line <b>340</b><br />
<br />
<b>Notice</b>: Undefined property: stdClass::$type in <b>/var/lib/symcon/modules/SymconHUE/HUEBridge/module.php</b> on line <b>340</b><br />

Was mache ich falsch?

Hat sich erledigt. War nicht gescheit registriert.

Als Hinweis:

ich habe an der Hue einige Geräte der IKEA Serie.
Die normalen Lampen scheinen ohne Probleme zu funktionieren.
Des weiteren hängt aber auch ein Panel dran.
Dieses Panel funktioniert per Hue APP einwandfrei. Auch die Steurern per diesem Modul geht.
Allerdings kommt beim Aufrufen der SyncStates immer eine Fehlermeldung:

22-11-_2017_17-14-31.jpg