[Modul] Philips HUE - alte Version

Hab mal noch ne Frage die zwar nicht unbedingt Modulspezifisch ist, mir aber in diesem Zusammenhang eigentlich wichtig.

Bei mir sind alle Hue Lampen ja noch über Schaltaktoren (KNX) geschaltet. Im aussgeschalteten Zustand ist die Variabel „Erreichbarkeit“ auf „nein“.
Kann man in diesem Fall die Bedienbarkeit für die anderen Variabeln wie Helligkeit, Farbe etc weg nehmen so dass diese im Webfront ausgegraut sind ? Eine Bedienung wenn die Lampe nicht erreichbar ist, macht ja keinen Sinn, oder ?++

Falls das geht, wäre ich um einen Hinweis, wie dankbar

Wozu willst du das haben?

Ich kann dir eine Variable einbauen, dann kannst du sowas selbst machen.

Grüße,
Kai

Damit man selber den Socket öffnen und schließen kann.

Gruß

Gesendet von meinem SM-G975F mit Tapatalk

Hallo Kai,
wie kann ich den eine Szene schalten über ein Homematic 6 Fach Taster mittels Skript?

Das ist das Skript das ich nutze für zwei 6 Fach Taster die gleich belegt sind:

<?php

//Wohnzimmer Decke

switch ($_IPS['EVENT']) {
    case 12898: //Taste 1 SHORT (Schalter 1 Links)
    case 39102: //Taste 1 SHORT (Schalter 2 Rechts)
        //Wohnzimmer Decke An/Aus in Kaltweiß und 20%
        if (GetValueBoolean(14854) == false) { //Status Variable der Gruppe Wohnzimmer Decke
            RequestAction('32666', 50); //Variable Helligkeit Wohnzimmer Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('43383', 153); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        } else {
            RequestAction('14854', false); //Status Variable der Gruppe Wohnzimmer Decke
        }
        break;

    case 43648: //Taste 1 LONG (Schalter 1 Links)
    case 56018: //Taste 1 LONG (Schalter 2 Rechts)
        //Wohnzimmer Decke in Warmweiß und 20%
            RequestAction('32666', 50); //Variable Helligkeit Wohnzimmer Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('43383', 350); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;

    case 12880: //Taste 3 SHORT (Schalter 1 Links)
    case 47526: //Taste 3 SHORT (Schalter 2 Rechts)	
        //Wohnzimmer Decke in Kaltweiß und 50%
            RequestAction('32666', 127); //Variable Helligkeit Wohnzimmer Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('43383', 153); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;

    case 38144: //Taste 3 LONG (Schalter 1 Links)
    case 52919: //Taste 3 LONG (Schalter 2 Rechts)	
        //Wohnzimmer Decke in Warmweiß und 50%
            RequestAction('32666', 127); //Variable Helligkeit Wohnzimmer Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('43383', 350); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;

    case 37589: //Taste 5 SHORT (Schalter 1 Links)
    case 34415: //Taste 5 SHORT (Schalter 2 Rechts)	
        //Wohnzimmer Decke in Kaltweiß und 100%
            RequestAction('32666', 254); //Variable Helligkeit Wohnzimmer Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('43383', 153); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;

    case 35914: //Taste 5 LONG (Schalter 1 Links)
    case 48698: //Taste 5 LONG (Schalter 2 Rechts)	
        //Wohnzimmer Decke in Warmweiß und 100%
            RequestAction('32666', 254); //Variable Helligkeit Wohnzimmer Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('43383', 350); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;



//Flur Decke            

    case 26996: //Taste 2 SHORT (Schalter 1 Links)
	case 28916: //Taste 2 SHORT (Schalter 2 Rechts)
        //Flur Decke An/Aus in Kaltweiß und 20%
        if (GetValueBoolean(18296) == false) { //Status Variable der Gruppe Wohnzimmer Decke
            RequestAction('49783', 15); //Variable Helligkeit Flur Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('22949', 153); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        } else {
            RequestAction('18296', false);
            RequestAction('33687', false);  //Zurücksetzen der Szenevariablen
        }
        break;

    case 52597: //Taste 2 LONG (Schalter 1 Links)
    case 48993: //Taste 2 LONG (Schalter 2 Rechts)	
        //Flur Decke in Warmweiß und 20%
            RequestAction('49783', 15); //Variable Helligkeit Flur Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('22949', 500); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;

    case 39006: //Taste 4 SHORT (Schalter 1 Links)
    case 22116: //Taste 4 SHORT (Schalter 2 Rechts)	
        //Flur Decke in Kaltweiß und 100%
            RequestAction('49783', 254); //Variable Helligkeit Flur Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('22949', 153); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;

    case 48498: //Taste 4 LONG (Schalter 1 Links)
    case 29034: //Taste 4 LONG (Schalter 2 Rechts)	
        //Flur Decke in Warmweiß und 100%
            RequestAction('49783', 254); //Variable Helligkeit Flur Decke (Helligkeit Wert 0-254) (Prozentzahl x 2,54)
            RequestAction('22949', 350); //Variable Farb Temperatur KaltWeiß (Temperatur Wert 153-500 Mired) (Kaltweiß bis Warmweiß)
        break;

    case 34882: //Taste 6 SHORT (Schalter 1 Links)
    case 48864: //Taste 6 SHORT (Schalter 2 Rechts)	
        //Flur Szene „Nacht“ an
        $HueIP      = IPS_GetProperty(42581, "Host");
        $HueUserKey = IPS_GetProperty(42581, "User");
        $client     = curl_init();
        curl_setopt($client, CURLOPT_URL, "http://" . $HueIP . ":80/api/" . $HueUserKey . "/groups/0/action");
        curl_setopt($client, CURLOPT_USERAGENT, "SymconHUE");
        curl_setopt($client, CURLOPT_POSTFIELDS, json_encode(['scene' => 'yC7B00P1vGJu1Wj']));
		curl_setopt($client, CURLOPT_CUSTOMREQUEST, 'PUT');
        curl_exec($client);
        curl_close($client);

        RequestAction('33687', true);  //Setzen der Szenevariablen
        break;

    case 77777: //Taste 6 LONG
        break;

    default:
        trigger_error('Unerwartetes Event: ' . $_IPS['EVENT']);
}                    

Das ist der Block aus dem obigen Skript der für den Szenen Taster zuständig war bei dem Modul von Traxanos:

    case 34882: //Taste 6 SHORT (Schalter 1 Links)
    case 48864: //Taste 6 SHORT (Schalter 2 Rechts)	
        //Flur Szene „Nacht“ an
        $HueIP      = IPS_GetProperty(42581, "Host");
        $HueUserKey = IPS_GetProperty(42581, "User");
        $client     = curl_init();
        curl_setopt($client, CURLOPT_URL, "http://" . $HueIP . ":80/api/" . $HueUserKey . "/groups/0/action");
        curl_setopt($client, CURLOPT_USERAGENT, "SymconHUE");
        curl_setopt($client, CURLOPT_POSTFIELDS, json_encode(['scene' => 'yC7B00P1vGJu1Wj']));
		curl_setopt($client, CURLOPT_CUSTOMREQUEST, 'PUT');
        curl_exec($client);
        curl_close($client);

        RequestAction('33687', true);  //Setzen der Szenevariablen
        break;

Du kannst eine Szene wie folgt aktivieren:

PHUE_SceneSet(13215, 'TV3');

In dem Beispiel ist 13215 die ID der Gruppe und TV3 der Name der gewünschten Szene.

Du kannst die Szene so aufrufen:

PHUE_SceneSet(25537, 'Name der Szene');

25537 ist die InstanzID.
Du kannst den richtigen Namen der Szene nutzen.

Grüße,
Kai

Also wäre das in meinem Skript wie folgt?

    case 34882: //Taste 6 SHORT (Schalter 1 Links)
    case 48864: //Taste 6 SHORT (Schalter 2 Rechts)    
        //Flur Szene „Nacht“ an
       PHUE_SceneSet(25537, 'Nacht'); 

        RequestAction('33687', true);  //Setzen der Szenevariablen
        break;

RequestAction brauchst du nicht.
Nur die Funktion ausführen.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

OK, danke.
Muss ich dann in dem langen Skript bei „Flur Decke“ im ersten Schaltvorgang das RequestAction(‚33687‘, false) //Zurücksetzen der Szenenvariable auch weg lassen?

Kann man auch die Szenen auswählen die HUE schon mitbringt? Habe es jetzt versucht als Beispiel mit „Frühlingsblüten“, aber irgendwo habe ich einen Fehler. Die Szene wird nicht ausgelöst wenn ich den Taster drücke. Die ID 14690 ist die Szenenvariable.

    case 34882: //Taste 6 SHORT (Schalter 1 Links)
    case 48864: //Taste 6 SHORT (Schalter 2 Rechts)	
        //Wohnzimmer Decken Szene „Frühlingsblüten“ an
        PHUE_SceneSet(14690, 'Frühlingsblüten');
        
        break;

Du musst in der Hue App für die jeweiligen Gruppen die Szene erstellen, diese werden dann von dem Modul ausgelesen und in das Profil der Variable geschrieben. Du solltest auch bemüht sein den Szenen eindeutige Namen zu geben, ich stelle immer das Zimmerkürzel davor, um Konflikte zu vermeiden.

Loerdy

Ich glaube die habe ich aktiviert, schaue aber mal nach. Die Variable ist leer.

Wozu habe ich ja eigentlich geschrieben. Wenn kein Strom auf der Lampe ansteht weil der vorgeschaltete Aktor aus ist, macht es keinen Sinn die Hue Lampe zu bedienen. Im Gegenteil es wird eine Funktionalität vorgegaugelt (AN/Aus, Helligkeit usw die nicht der Realität entspricht, weil die Lampe ja Stromlos ist.

Die Frage ist wie kann ich mir das selbst machen ?

Ich habe noch nicht gefunden wie ich die Bedienbarkeit von Variabeln/Instanzen im Webfront variabelnabhängig an und aus schalten kann.

Oder meintest Du genau das mit der Variabel zum einbauen ? Müsste dann aber für jede Lampe bzw Gruppe einzeln sein

Szenen sind bei mir im Profil drinnen, aber geschaltet wird die Szene nicht.

Die Frage wozu, war auch an @mactoolz gerichtet.
Ich baue dir eine Variable ein um herauszufinden, ob die Lampe erreichbar ist oder nicht.
Mit einem Ereignis kannst du dann selbst auf die Variable reagieren und machen was du willst.
Zum Beispiel eine Variable unsichtbar setzen: IPS_SetHidden — IP-Symcon :: Automatisierungssoftware

Du kanns einfach den UpdateTimer auf 0 setzen, dann sollte auch nichts mehr abgefragt werden.
Einen Socket gibt es so gesehen nicht.

Kannst du mir mal ein Debug der Bridge und Gruppen Instanz schicken, wenn du versucht eine Szene auszuwählen?

Grüße,
Kai

Hallo,

es ging mir nicht um das aktualisieren der Geräte, sondern das man seinen Verbindung zum Gateway neu öffnen kann.

Aber wie meinst du das dass es keinen Socket gibt? Irgendwie musst du ja über die IP die Schnittstelle öffnen bzw. auch schließen können?

Es ist halt so das manchmal die Gateways alle irgendwann mal sich aufhängen, dann hat man nicht mehr die Möglichkeit selber
zu versuchen die Verbindung neu aufzubauen. Es ist schon ein paarmal vorgekommen das durch den Socket schließen/öffnen
die Verbindung bzw. das Ansprechen der Geräte wieder möglich war.

Zu dem gehe ich auch so vor, das ich in der Nacht alle Sockets die ich habe schließe und entsprechend auch wieder öffne.
Bis dato bin ich damit sehr gut gefahren. Auch so könnte man selber direkt über das WebFront die Schnittstelle beeinflussen
wenn der Fall eintritt das Abends keine Ansteuerung mehr funktioniert.

Es wäre schon sinnvoll das man seine Schnittstelle bzw. das Gateway öffnen und schließen kann.

Von daher überleg dir bitte ob du nicht bei Gelegenheit die Methoden für das Öffnen/Schließen der Schnittstelle bereitstellen könntest.

Gruß

Kannst du mir mal ein Debug der Bridge und Gruppen Instanz schicken, wenn du versucht eine Szene auszuwählen?

Hallo Kai,
wer lesen kann ist klar im Vorteil. Ich hatte die Variablen ID genommen anstatt die Instanz ID, ich Trottel.:banghead::banghead::banghead:

Jetzt funzt das ganze auch. Danke für deine Arbeit und Modul und Sorry, das du dich manchmal mit so trotteln wie mich rumschlagen musst. :smiley:

Wie gesagt es gibt keinen Socket.
Es wird keine Schnittstelle geöffnet, somit hast du auch nicht die Möglichkeit etwas zu schließen.
Es wird eine URL aufgerufen, mit dieser wird die Aktion in der HUE Bridge ausgeführt bzw. die Werte abgerufen.

Grüße,
Kai

Gar kein Problem, sowas passiert doch schnell. :wink:
Solltest du weitere Fragen haben, melde dich einfach.

Grüße,
Kai

Ich sehe gerade, die Variable Reachable (Erreichbar) habe ich schon mal eingebaut.
Du kannst diese Variable also für das Ereignis nutzen.

Grüße,
Kai

Mhhh … gibt es denn eine Möglichkeit irgendwie eine Rückmeldung zu bekommen das dass Gateway erreichbar ist.

Gruß

Gesendet von meinem SM-G975F mit Tapatalk