Philips HUE Modul

Das wäre der Hammer!!
Mit Szenen erstellen und Gruppen tu ich mir noch schwer. Außerdem verliert man bei 14 Lampen so langsam den Überblick.

Hallo zusammen

Erstmal besten dank für das Modul funktionierte bis heute top. Leider kann ich jetzt meine HUE’s nicht mehr schalten. Die Lampen haben nur noch den Status „Die Lampe ist nicht mehr verfügbar“ siehe Bild. Kann mir da jemand weiterhelfen? Habe die Lampen auch schon entfernt und neu gelesen, aber nichts geht mehr.:confused:

Hue1.PNG

Ist die HUE Bridge denn mit IP-Symcon verbunden oder steht da auch ein rotes Ausrufezeichen? Wenn ja dann mach mal die HUE Bridge stromlos und lass diese neu starten und schaue dann mal ob die Verbindung zu IP-Symcon dann wieder steht.

Da scheint alles in ordnung…

Hue3.PNG

Ich kann die Lampen auch neu löschen und neu einlesen, nur funktioniert es denoch nicht :frowning:

Hallo zusammen,

ich würde gerne meine Hue Lampen nach einer bestimmten Zeit ausgehen lassen.

Mit Homematic Aktoren ist das über ONTIME möglich

Beispiel:
HM_WriteValueFloat($ID_InfrarotHeizung, „ON_TIME“, 120*60);
HM_WriteValueBoolean($ID_InfrarotHeizung, „STATE“, true);

Gibt es auch eine Möglichkeit dies bei den Hue Lampen zu machen?

LG Michi

Natürlich das die grundlegende Funktion eines Timers in IP-Symcon welches Gerät Du da genau schaltest ist egal das ist ja der Vorteil von IP-Symcon
Wie kann ich ein Gerät einschalten und nach X Sekunden wieder ausschalten

Danke für den Link, da habe ich wieder komplizierter gedacht als nötig. Ich habe ewig beim Hue Modul herum gesucht. Bin nicht darauf gekommen, dass ich eine IPS Funktion benutzen könnte. :wink:

Nur mal eine prinzipielle Frage. Hatte auch schon überlegt bei langen Tastendruck zu dimmen, allerdings haben bei mir die Variablen PRESS-LONG und PRESS_LONG_RELEASE den gleichen Zeitstempel und werden erst gesetzt nachdem der Taster losgelassen wurde. Wie hast Du das gelöst das Du da da wirklich das Zeitintervall erfasst und nicht nur den Zeitpunkt wann der Taster losgelassen wurde?

Ja ich habe hier schon etwas angefangen, aber richtig weit bin ich noch nicht.

Soll ich Dir irgendwas zuschicken oder willst Du das selber reinbasteln?

Hallo,

ich würde gerne doch nochmal anfragen ob es nicht doch möglich wäre den Dimmschalter mit aufzunehmen. Ich bin ja gerade von FHEM gewechselt, wo der Schalter einzubinden war. Ich gebe zu, als Dauer Alltagslösung sind die Schalter für andere nicht Hue Geräte zu schalten ungeeignet. Ich hatte mir jedoch um einen zusätzlichen Schalter zu sparen eine spezielle Funktion auf die Austaste gelegt um mein Homematic Actor des Deckenlichtes mit auszuschalten. (bei langem Tastendruck) An der Stelle wurde dies selten benutzt und es hat auch ca 10s gedauert bis das Licht aus ging, jedoch war das völlig ausreichend.
Insofern wäre die Einbindung der Schalter schon hilfreich.

Gruss

Pentti

Hallo zusammen

habe das Problem mit den nicht erreichbaren Lampe gefunden. Die Bridge sitzt bei mir im 19" Rack, am Wochenende habe ich da mal ein wenig aufgeräumt und alle Geräte neu platziert! Die Bridge hatte auch ein neues plätzchen bekommen -> Fehler! Die Bridge aus dem 19"Rack rausgenommen und siehe da, alles top. Komisch nur das ich die Lampen mit der HUE App normal schalten konnte :confused:.

Frau glücklich ich glücklich :slight_smile:

Gruess aus der Schweiz

sicher das du nicht vielleicht netzwerkprobleme wie package loss hattest oder so? oder falsches ip subnetting oder so…

Na ja da ist ja schon mal drüber diskutiert worden das es wahrscheinlich wenig sinnvoll ist die HUE Bridge sekündlich mit einem Request zuzuballern und das es dann vielleicht auch zu Fehlfunktionen kommen könnte. Aber wenn Du das unbedingt brauchst bzw ausprobieren willst kannst Du dazu einfach ein Skript nehmen das muss ja nicht unbedingt gleich ins Modul eingebaut werden. Einfach ein Kategorie anlegen unter der die Schalter angelegt werden sollen und dann folgendes Skript sekündlich ausführen.


<?
  // Config
 	$catid = 51075 /*[Geräte\Lampen\HUE Schalter]*/;
  	$HUEBridgeID =  44625 /*[Philips Hue Bridge]*/;
  // Config END

 $data = null;
 $path = "/sensors";
 $switches = HUE_Request($HUEBridgeID, $path, $data);
 //var_dump($switches);
 foreach ($switches as $key => $switch)
 {
   $name = $switch->name;
   
   if (isset($switch->state->buttonevent))
    {
		$type =  $switch->type;
		$event = $switch->state->buttonevent;
		$lastupdated = $switch->state->lastupdated;
		$lasttimestamp = strtotime($lastupdated);
		$eventname = $name." Event";
		$lastupdatedname = $name." Lastupdated";
		$eventident = generateIdent("Event_".$key."_".$name."_".$type);
		$dummyident = generateIdent("Switch_".$key."_".$name."_".$type);
	   $lastupdatedident = generateIdent("Lastupdated_".$key."_".$name."_".$type);
	   $dummyid = CreateInstanceByIdent($catid, $dummyident, $name, $moduleid = "{485D0419-BE97-4548-AA9C-C083EB82E61E}");
	   $zllswitchass =  Array(
				Array(1000, "On pressed",  "Light", -1),
				Array(1001, "On hold",  "Light", -1),
				Array(1002, "On short released",  "Light", -1),
				Array(1003, "On long released",  "Light", -1),
				Array(2000, "Dimmer Up pressed",  "Light", -1),
				Array(2001, "Dimmer Up hold",  "Light", -1),
				Array(2002, "Dimmer Up short released",  "Light", -1),
				Array(2003, "Dimmer Up long released",  "Light", -1),
				Array(3000, "Dimmer Down pressed",  "Light", -1),
				Array(3001, "Dimmer Down hold",  "Light", -1),
				Array(3002, "Dimmer Down short released",  "Light", -1),
				Array(3003, "Dimmer Down long released",  "Light", -1),
				Array(4000, "Off pressed",  "Light", -1),
				Array(4001, "Off hold",  "Light", -1),
				Array(4002, "Off short released",  "Light", -1),
				Array(4003, "Off long released",  "Light", -1),
				);
		$zgpswitchass =  Array(
				Array(0, "Unkown",  "Light", -1)
				);							
	   RegisterProfileIntegerAss("Hue.ZLLSwitch.Event", "Light", "", "", 1000, 4003, 0, 0, $zllswitchass);
	   RegisterProfileIntegerAss("Hue.ZGPSwitch.Event", "Light", "", "", 10, 100, 0, 0, $zgpswitchass);
	   if($type == "ZLLSwitch")
	   {
	   		$eventid = CreateVariableByIdent($dummyid, $eventident, $eventname, 1, $profile = "Hue.ZLLSwitch.Event");
	   }
	   elseif ($type == "ZGPSwitch")
	   {
	   		$eventid = CreateVariableByIdent($dummyid, $eventident, $eventname, 1, $profile = "Hue.ZGPSwitch.Event");
	   }
	   
	   IPS_SetName($eventid, $eventname);
	   SetValue($eventid, $event);
	   $lastupdatedid = CreateVariableByIdent($dummyid, $lastupdatedident, $lastupdatedname, 1, $profile = "~UnixTimestamp");
	   IPS_SetName($lastupdatedid, $lastupdatedname);
	   SetValue($lastupdatedid, $lasttimestamp);
	}
	
	
   
 }  


function generateIdent($name)
	{
		$name = str_replace (" ", "_", $name);
		$umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
    	$replace = Array("ae","oe","ue","Ae","Oe","Ue","ss");
		$ident = preg_replace($umlaute, $replace, $name);
		return $ident;
	}
	
	function CreateInstanceByIdent($id, $ident, $name, $moduleid = "{485D0419-BE97-4548-AA9C-C083EB82E61E}") {
			 $iid = @IPS_GetObjectIDByIdent($ident, $id);
			 if($iid === false) {
				 $iid = IPS_CreateInstance($moduleid);
				 IPS_SetParent($iid, $id);
				 IPS_SetName($iid, $name);
				 IPS_SetIdent($iid, $ident);
			 }
			 return $iid;
		}
		
		function CreateVariableByIdent($id, $ident, $name, $type, $profile = "") {
			 $vid = @IPS_GetObjectIDByIdent($ident, $id);
			 if($vid === false) {
				 $vid = IPS_CreateVariable($type);
				 IPS_SetParent($vid, $id);
				 IPS_SetName($vid, $name);
				 IPS_SetIdent($vid, $ident);
				 if($profile != "")
					IPS_SetVariableCustomProfile($vid, $profile);
			 }
			 return $vid;
		}
	
	//Profile
	function RegisterProfileInteger($Name, $Icon, $Prefix, $Suffix, $MinValue, $MaxValue, $StepSize, $Digits)
	{
        
        if(!IPS_VariableProfileExists($Name)) {
            IPS_CreateVariableProfile($Name, 1);
        } else {
            $profile = IPS_GetVariableProfile($Name);
            if($profile['ProfileType'] != 1)
            throw new Exception("Variable profile type does not match for profile ".$Name);
        }
        
        IPS_SetVariableProfileIcon($Name, $Icon);
        IPS_SetVariableProfileText($Name, $Prefix, $Suffix);
		IPS_SetVariableProfileDigits($Name, $Digits); //  Nachkommastellen
        IPS_SetVariableProfileValues($Name, $MinValue, $MaxValue, $StepSize); // string $ProfilName, float $Minimalwert, float $Maximalwert, float $Schrittweite
        
    }
	
	function RegisterProfileIntegerAss($Name, $Icon, $Prefix, $Suffix, $MinValue, $MaxValue, $Stepsize, $Digits, $Associations)
	{
        if ( sizeof($Associations) === 0 ){
            $MinValue = 0;
            $MaxValue = 0;
        } 
		/*
		else {
            //undefiened offset
			$MinValue = $Associations[0][0];
            $MaxValue = $Associations[sizeof($Associations)-1][0];
        }
        */
        RegisterProfileInteger($Name, $Icon, $Prefix, $Suffix, $MinValue, $MaxValue, $Stepsize, $Digits);
        
		//boolean IPS_SetVariableProfileAssociation ( string $ProfilName, float $Wert, string $Name, string $Icon, integer $Farbe )
        foreach($Associations as $Association) {
            IPS_SetVariableProfileAssociation($Name, $Association[0], $Association[1], $Association[2], $Association[3]);
        }
        
    }
	
?>

Dann musst Du mal schauen ob sich da der Wert ändert wenn Du was schaltest wenn ja kannst Du dort dann ein Ereignis drauflegen und das ausführen was Du willst.

Hallo Zusammen im GIT Repo im Branch „groups“ gibt es eine erste Testversion meines Umbau inkl Support für Gruppen. Wer also Testen möchte kann das Repo gerne testen.

Achtung die Silders sind alle von „~Intensity.100“ auf „~Intensity.255“ geändert worden. Das betrifft auch die APIs.
Neben den HUE_SetValue und HUE_GetValue gibt es nun HUEGroup_GetValue etc.

Auf der Bridge muss auch eine Gruppenkategorie festgelegt werden.

Ich habe mal zum Testen auf Dein Modul und den neuen Branch zurückgestellt. Bei mir kommt bei Geräte abgleichen

Das Bedeutet das dein Bridge für eine Gruppe nicht alle liefert was ich erwarten würde.
Aber so wie es aussah kam das Warning nicht bei jeder Gruppe.
Kannst du mir einen Auszug besorgen von /groups damit ich das vergleichen kann.

Hallo Traxanos, wäre es möglich das Du noch in der Form von Groups und Lights zwei Haken ergänzt die bei Bedarf noch eine jeweils eine Var zum Schalten im Webfront für Alert und Transitiontime anlegen? Das würde das händische Ergänzen ersparen.

Schick ich per PM, dauert ein wenig.

Hier ein Auszug es gibt wohl Gruppen die existieren in denen aber keine Lampe ist. Diese müsten dann übersprungen werden. Kannst ja mit isset prüfen ob es was zum auslesen gibt wenn nicht wird die Gruppe in IP-Symcon gar nicht erst angelegt.


["7"]=>
  object(stdClass)#22 (6) {
    ["name"]=>
    string(6) "Garten"
    ["lights"]=>
    array(0) {
    }
    ["type"]=>
    string(4) "Room"
    ["state"]=>
    object(stdClass)#23 (2) {
      ["all_on"]=>
      bool(false)
      ["any_on"]=>
      bool(false)
    }
    ["class"]=>
    string(5) "Other"
    ["action"]=>
    object(stdClass)#24 (2) {
      ["on"]=>
      bool(false)
      ["alert"]=>
      string(4) "none"
    }
  }