+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11
  1. #1
    Registriert seit
    Aug 2010
    Beiträge
    75

    Standard Funktionstüchtiges Philips HUE Modul für Szenen aus HUE Lab

    Ich habe das Symcon HUE Modul von traxanos und vita2 ausprobiert. Vita2 gibt nur Fehlermeldungen, traxanos kann zwar schalten, aber die Befehle für Szenen gehen wohl nicht mehr.

    Die beiden obigen Module wurden seit mehr als 1 Jahr nicht mehr aktualisiert. Ich vermute, dass diese wg. der Umstellung auf PHP7 nicht mehr voll funktionstüchtig sind.

    Gibt es denn ein einfaches Modul, welche die vorhandenen Szenen auslesen und ausführen kann? Herzlichen Dank!

  2. #2
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    7,519

    Zitat Zitat von cornel Beitrag anzeigen
    traxanos kann zwar schalten, aber die Befehle für Szenen gehen wohl nicht mehr.
    Szenen kannst Du im Modul einfach per Skript ergänzen
    Philips HUE Modul - Seite 49
    Ansonsten müsstet Du näher beschreiben was nicht geht bzw. ob eine Fehlermeldung vorliegt.

  3. #3
    Registriert seit
    Aug 2010
    Beiträge
    75

    Dankeschön für dein bisher sehr hilfreiches Feedback. Ich habe mit dem Codeschnipsel die Szenen auslesen können. Was mir jedoch nicht gelingt, ist das Ausführen der Szene.

    Folge Ausgabe erhalte ich z.B. für die Szene "Entspannen":

    "JFFVUu4zHJHV3u6XXXXX"
    "name":"Entspannen"
    "type":"GroupScene"
    "group":"1"
    "lights":["1","2","3","4"]
    "owner":"364bdniqsrw75ttrwb47rnsaiowriutwxxxxx "
    "recycle":false,
    "locked":false,
    "appdata":{"version":1,"data":"aG40i_r01_d01"} ,
    "picture":"",
    "lastupdated":"2018-12-09T18:57:38",
    "version":2}

    Die Szene rufe ich folgendermaßen auf:

    $nextScene = "Entspannen";
    HUEGroup_SetValue(12345 /*[Lab\HUEScenes\Gruppen\Wohnzimmer]*/, "SCENE", "$nextScene");

    (12345 ist die ID der Bridge in den I/O Instanzen)

    Beim Ausführen erhalte ich:

    Fatal error: Uncaught Error: Call to undefined function HUEGroup_SetValue() in /var/lib/symcon/scripts/55129.ips.php:136 Stack trace: #0 {main} thrown in /var/lib/symcon/scripts/55129.ips.php on line 136

    Was mache ich hier falsch?

    Dankeschön schonmal vorab für Deine Unterstützung.

  4. #4
    Registriert seit
    Oct 2014
    Beiträge
    794

    Bin jetzt gerade nicht vor dem Rechner, meine mich aber zu erinnern, das die Group Funktionen jetzt mit unter dem Prefix HUE zusammengelegt wurden. Hatte das auch mal kommentiert, finde es aber nicht. Wenn du in der Console HUE_ angibst, schau mal welche Funktionen zur Verfügung stehen.

    Uli


    Gesendet von iPhone mit Tapatalk

  5. #5
    Registriert seit
    Aug 2010
    Beiträge
    75

    Es gibt dort verschiedene Dinge, u.a. HUE_SetSvalue bzw. HUE_SetValues

    Das gibt aber noch folgende Fehlermeldung:

    Fatal error: Uncaught Exception: Instance does not implement this function in /var/lib/symcon/scripts/__generated.inc.php:30 Stack trace: #0 /var/lib/symcon/scripts/55129.ips.php(136): HUE_SetValue(12345, 'SCENE', 'Entspannen') #1 {main} thrown in /var/lib/symcon/scripts/__generated.inc.php on line 30

    (12345 ist die ID der Bridge)

  6. #6
    Registriert seit
    Oct 2014
    Beiträge
    794

    Zitat Zitat von cornel Beitrag anzeigen
    Es gibt dort verschiedene Dinge, u.a. HUE_SetSvalue bzw. HUE_SetValues

    Das gibt aber noch folgende Fehlermeldung:

    Fatal error: Uncaught Exception: Instance does not implement this function in /var/lib/symcon/scripts/__generated.inc.php:30 Stack trace: #0 /var/lib/symcon/scripts/55129.ips.php(136): HUE_SetValue(12345, 'SCENE', 'Entspannen') #1 {main} thrown in /var/lib/symcon/scripts/__generated.inc.php on line 30

    (12345 ist die ID der Bridge)
    Hast du das Script mal ausprobiert, war ja der Hinweis von Fonzo auf Seite 49, so wie ich das auf die schnelle sehe ist die Szenenfunktion nicht Bestandteil des Moduls.... ich selber nutze das im Moment nicht. Hier nochmal das Skript:

    Code:
    <? 
        // Config 
        $HueBridgeID = 44625 /*[Philips Hue Bridge]*/; // ObjektId der HueBridge 
         // Config End 
    
        $json_result = GetScences($HueBridgeID); 
        SetupScences($json_result, $HueBridgeID); 
    
    
    function GetScences($HueBridgeID) 
    { 
        $HueIP = IPS_GetProperty($HueBridgeID, "Host"); 
        $HueUserKey = IPS_GetProperty($HueBridgeID, "User"); 
        //Szenen von Hue Auslesen 
        $url = 'http://'.$HueIP.'/api/'.$HueUserKey.'/scenes'; 
        $ch = curl_init( $url ); 
        $options = array( 
                       CURLOPT_RETURNTRANSFER => true, 
                       CURLOPT_CUSTOMREQUEST => 'GET', // -X 
                       CURLOPT_HTTPHEADER => array('Content-type: application/json') , 
                       ); 
        curl_setopt_array( $ch, $options ); 
         
        // Getting results 
        $json_result =  curl_exec($ch); 
        return $json_result; 
    } 
    
    function SetupScences($json_result, $HueBridgeID) 
    { 
        $result = json_decode($json_result, true); 
        $num = count(json_decode($json_result, true)); // als array 
        $idCatScenes = CreateCategory("HUE_Scenes_Category", "Szenen",IPS_GetParent($_IPS['SELF']),0); 
        echo "Es wurden ".$num." Szenen gefunden \n"; 
    
        $id = 0; 
        foreach ($result as $key => $scene) 
         { 
        $id=$id+1; 
         
        $scene_description = json_encode(array ($key => $scene)); 
        $id = $key; // The id of the scene being modified or created. 
        $ident = GetIdent($id); 
        $name = $scene["name"]; // Human readable name of the scene. Is set to <id> if omitted on creation. 
             
            $myScene = @IPS_GetObjectIDByIdent($id, $idCatScenes); 
            if (!$myScene) //Neu anlegen 
                { 
                    //echo $id."\n"; 
                    $myScene = CreateScene($ident, $name, $id, $idCatScenes, $scene_description, $HueBridgeID);  
                } 
        } 
    } 
    
    function CreateScene($ident, $name, $id, $parentID, $scene_description, $HueBridgeID) 
    { 
        $instanceid = @CreateInstance($ident, $name, $parentID, "{485D0419-BE97-4548-AA9C-C083EB82E61E}", $Position=0);  
        IPS_SetIdent ($instanceid, $ident); 
        IPS_SetInfo($instanceid, $scene_description); 
        CreateScript ($ident."_actionscript", $name, $id, $instanceid, $Position=0, $HueBridgeID); 
        return $instanceid; 
    } 
    
    function CreateCategory ($Ident, $Name, $ParentId, $Position, $Icon=null) 
     { 
            $CategoryId = @IPS_GetObjectIDByIdent($Ident, $ParentId); 
            if ($CategoryId === false) 
             { 
                $CategoryId = IPS_CreateCategory(); 
                IPS_SetName($CategoryId, $Name); 
                IPS_SetIdent($CategoryId, $Ident); 
                IPS_SetParent($CategoryId, $ParentId); 
                if ($Position!==false) { 
                    IPS_SetPosition($CategoryId, $Position); 
                } 
                if ($Icon!==false) { 
                    IPS_SetIcon($CategoryId, $Icon); 
                } 
                echo 'Created Category '.$Name.'='.$CategoryId."\n"; 
            } 
            return $CategoryId; 
        } 
         
    function CreateInstance ($Ident, $Name, $ParentId, $ModulId, $Position=0) 
     { 
            $InstanceId = @IPS_GetObjectIDByIdent($Ident, $ParentId); 
            if ($InstanceId === false) { 
                $InstanceId    = IPS_CreateInstance($ModulId); 
                IPS_SetName($InstanceId, $Name); 
                IPS_SetIdent($InstanceId, $Ident); 
                IPS_SetParent($InstanceId, $ParentId); 
                IPS_SetPosition($InstanceId, $Position); 
                echo "Created Instance ".$Name."=".$InstanceId."\n"; 
            } 
            return $InstanceId; 
        } 
         
    
    function GetIdent($id) 
    { 
        $search = "-"; 
        $replace = "_"; 
        $ident = str_replace($search, $replace, $id); 
        return $ident; 
    } 
    
    function CreateScript ($Ident, $Name, $id, $ParentId, $Position=0, $HueBridgeID) 
     { 
        //$json_url = 'http://'.$HueIP.'/api/'.$HueUserKey.'/scenes'; 
            $ScriptId = @IPS_GetObjectIDByIdent($Ident, $ParentId); 
            if ($ScriptId === false) { 
                $ScriptId = IPS_CreateScript(0); 
                IPS_SetName($ScriptId, $Name); 
                IPS_SetIdent($ScriptId, $Ident); 
                $content = '<? 
    $HueIP = IPS_GetProperty('.$HueBridgeID.', "Host"); 
    $HueUserKey = IPS_GetProperty('.$HueBridgeID.', "User"); 
    $data = array ("scene" => "'.$id.'"); 
    $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_CONNECTTIMEOUT, 5); 
    curl_setopt($client, CURLOPT_TIMEOUT, 5); 
    curl_setopt($client, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($client, CURLOPT_CUSTOMREQUEST, \'PUT\'); 
    curl_setopt($client, CURLOPT_POSTFIELDS, json_encode($data)); 
    $result = curl_exec($client); 
    $status = curl_getinfo($client, CURLINFO_HTTP_CODE); 
    curl_close($client);           
    ?>'; 
                 IPS_SetScriptContent($ScriptId, $content); 
                IPS_SetParent($ScriptId, $ParentId); 
                IPS_SetPosition($ScriptId, $Position); 
                echo 'Created Script '.$Name.'='.$ScriptId."\n"; 
            } 
            return $ScriptId; 
        }     
             
    ?>

  7. #7
    Registriert seit
    Aug 2010
    Beiträge
    75

    Ja genau, exakt dieses Skript putze ich. Damit konnte ich auch die sehnen auslesen. Das Script hat auch zahlreiche Funktionen, jedoch sehe ich keine zum Abspielen einer Szene.

  8. #8
    Registriert seit
    Oct 2014
    Beiträge
    794

    Zitat Zitat von cornel Beitrag anzeigen
    Ja genau, exakt dieses Skript putze ich. Damit konnte ich auch die sehnen auslesen. Das Script hat auch zahlreiche Funktionen, jedoch sehe ich keine zum Abspielen einer Szene.
    Über die Funktion
    Code:
    function CreateScript ($Ident, $Name, $id, $ParentId, $Position=0, $HueBridgeID)
    wird ja ein neues Skript erstellt, was du dann ausführen kannst, um die Szene zu schalten.

    Das hat dann nix mehr direkt mit dem Hue Modul zu tun, ergo kommst du mit HUE_**** nicht weiter.

    Du musst das Script ausführen, bzw. in deine Variable oder sonstiges einbinden... hast du das Skript gefunden, welches angelegt wurde? Führe das doch mal aus....

    Uli

  9. #9
    Registriert seit
    Aug 2010
    Beiträge
    75

    Also jetzt hat alles geklappt. Es wurden 147 Szenen importiert, dabei habe ich nur eine Hand voll. Aber irgendwas stimmt da nicht. Diese Szenen scheinen nur feste Lampen-Presets zu sein. Meine eigenen Szenen sind jedoch dynamisch und wechseln stets die Farbe. Es sind alle Farben star und es passiert nix. Wie kann ich diese Szene, z.b. aus dem Hue Lab mit Kerzenflackern, ausführen?

  10. #10
    Registriert seit
    Jul 2010
    Ort
    Schwerin
    Beiträge
    525

    Die HUE-Labs Mimik erstellt für jede Lampe in einer Gruppe mehrere Szenen als Zustand und fackelt diese dann randomisiert in einer Schleife ab. Daher hast Du soviele Scripte. Jedes Script ist damit ein Zustand aus der gesamten Szene. Du müsstest dann einen Weg finden diese nacheinander auszuführen. Ich habs dann bei mir verworfen. Das ganze verbrät außerdem unwahrscheinlich viele Ressourcen auf der HUE Basis. Kann man zB mit dem HUE Inspektor ermitteln.

    Loerdy

Ähnliche Themen

  1. Philips HUE Modul
    Von traxanos im Forum PHP-Module
    Antworten: 881
    Letzter Beitrag: 13.12.20, 09:37
  2. Externe PHP-Skripte für Philips Hue
    Von bertel2013 im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 23.12.17, 21:05
  3. Farben einstellen mit dem Philips Hue Modul
    Von BennyS im Forum PHP-Module
    Antworten: 4
    Letzter Beitrag: 24.11.17, 16:55
  4. Philips Hue Modul
    Von docrossi im Forum SymBox / SymOS
    Antworten: 11
    Letzter Beitrag: 18.10.15, 12:38
  5. Schalter ersetzen für Philips Hue Lampen
    Von axelp im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 22
    Letzter Beitrag: 28.01.15, 14:07

Stichworte