Philips HUE Modul

Nabend,
Die Idee hatte ich auch. Hat aber zur folge das wenn der Bewegungsmelder im Betriebt ist, der Timer nicht verlängert wird, sondern das Licht aus geht und nach 5 Sek erst wieder für weitere 2 Min an.

Hi!

Ich arbeite bei sowas immer mit „Sperren“.
Wird z.B. eine Lampe manuell eingeschaltet, dann wird eine Sperr-Variable auf TRUE gesetzt. Kommt dann die „Automatik“ vom Bewegungsmelder, dann passiert nichts und das Licht bleibt an.
Schaltet man das Licht dann manuell wieder aus oder zu einer vordefinierten Zeit oder was auch immer, wird die Sperr-Variable wieder auf FALSE gesetzt. Kommt dann wieder eine Aktion vom Bewegungsmelder und die Variable ist FALSE, dann greift die „Bewegungsmelder-Automatik“.

Das kann man auf Licht, Rollos, Heizung, … anwenden :slight_smile:

Viele Grüße,
Chris

Und wie ermittelst Du, ob Manuell geschaltet wurde?

Loerdy

Ganz einfach - wenn ein Taster (IPS-Event) oder WebFront/App (IPS-Sender) ausgelöst hat, dann war es manuell.

Natürlich muss dazu alle „Logik“ über IPS laufen. Schaltet man z.B. mit einem Taster direkt eine Lampe (bei HomeMatic z.B. über eine direkte Verknüpfung in der CCU), dann hat man natürlich Pech >> AUßER die Bewegungsmelder-Automatik läuft über IPS, weil dann kann man alles andere als „manuell“ ansehen und nur die Automatik der Bewegungsmelder halt als „nicht manuell“.

Grüße,
Chris

Moin zusammen,

kurze Frage … ich finde es einfach nicht mehr.
Ich war der Meinung das ich meine Lampen früher langsam ein und langsam wieder ausschalten konnte (faden).
Geht das noch … und wenn ja wie :0D

VG

Andreas

Ich betreibe das Faden so:

$lightId = 10258 ; // Objekt ID der Hue Lampe
$list = array („BRIGHTNESS“ => 0, „TRANSITIONTIME“ => 40); // Transtionstime given as a multiple of 100ms
HUE_SetValues($lightId, $list);

Bei Brightness = 0 geht sie aus, ansonsten bei >0 in Richtung an :wink:

LG Tom

Klasse … danke dir … werde ich nachher gleich mal testen. Ich hoffe die Osrams machen das auch mit :0D

Guter Ansatz, danke dafür. Bei mir ist halt die Frau das Problem. Sie schaltet die Lampen/Szenen per Homekit auf dem iPhone und das wäre die Manuelle Steuerung. Die müsste ich irgendwie abgreifen :confused:

Das Problem was ich momentan habe: Wenn ich ein Skript mit einer Abfrage schreibe, ob die Lampen vorher an sind -> Var: False. (Keine Szene auf dem iPhone aktiviert)
Und das BewegungsmelderFlurlicht Skript nur schalten soll wenn Aus ist.
Wird das Skript nicht erneut ausgeführt und der Timer wird nicht verlängert. Steht man also im Flur geht das Licht kurz aus, und nach ein paar Sekunden wieder an. Gibt es einen Trick hierfür oder habe ich einen Denkfehler?

@Juljo: Dann hast du irgendwo im Script einen Fehler - oder prüfst nicht, durch wen oder was das Script aufgerufen wurde ($_IPS[„SENDER“]) und behandelst das nicht unterschiedlich.

Grobe Beschreibung:
>> Var1 = Status vom Licht im Flur
>> Var2 = Merker-Variable für das Script
>> Var3 = Bewegungsmelder

>> Wenn Bewegung erkannt (Var3 meldet per IPS-Event ein TRUE), dann schaue ob das Licht (Var1) FALSE ist und der Merker (Var2) FALSE ist. Wenn ja, Licht einschalten und Timer vom Script auf z.B. 60 Sekunden und Merker auf TRUE setzen.
Bei erneuter Bewegung (Script-Aufruf durch das Bewegungsmelder-Event im IPS durch Var3) ist der Merker (Var2) schon auf TRUE, deshalb wird nur der Timer verlängert.
Wird das Script nach 60 Sekunden durch den Timer aufgerufen wird geprüft, ob noch Bewegung beim Bewegungsmelder (Var3) ist, wenn ja - Timer verlängern, wenn nein - Licht aus und Merker (Var2) auf FALSE setzen.

Joa…so die Richtung könnte man das bauen :slight_smile:

Viele Grüße,
Chris

Ich glaube jetzt habe ich es… Ich werde mal weiter basteln. Vielen Dank schon mal für dein Mühe!

<?
$Uhrzeit = date("H:i:s");  // Stunde:Minute:Sekunde
$Hue_AN = GetValue(57837);
$Hue_Merker = GetValue(44065);
$Helligkeit = GetValue(36766);


if($_IPS['SENDER'] != "TimerEvent"){
		if($Helligkeit <= 34){
         //Ausführen nur wenn Helligkeit unter Schwellwert 34
                  if (date("H") >= 6) AND (date("H") < 24){
                    //Tagsüber -> Licht Warmweiß
                    if($Hue_AN == false && $Hue_Merker == false){
                        HUE_SetValue(38727, 'COLOR', 13303662);								 
    					SetValueBoolean(44065, true);
                        }
                        elseif($Hue_AN == true && $Hue_Merker == true) {             		
                        // Timer mit 120 Sekunden aktivieren
                        IPS_SetScriptTimer($_IPS['SELF'], 120);
								}
                        } 
					else{
                        //Abends von 00:00-06:00 -> Licht Blau
                        if($Hue_AN == false && $Hue_Merker == false){
						HUE_SetValue(38727, 'COLOR', 5308927);
    					SetValueBoolean(44065, true);
                        }
    					elseif($Hue_AN == true && $Hue_Merker == true){
                        // Timer mit 30 Sekunden aktivieren
                        IPS_SetScriptTimer($_IPS['SELF'], 30);
    					}
                        }
    					}
		elseif($Hue_Merker == true){
          // Timer deaktivieren
			 IPS_SetScriptTimer($_IPS['SELF'], 0);
			 HUE_SetValue(38727, 'STATE', false);
    		 IPS_Sleep(100);
			 HUE_SetValue(38727, 'STATE', false);
    		 SetValueBoolean(44065, false);
	}		 
?>

Und bitte nicht über den Code lachen, ich habe das Programmieren nie gelernt :frowning:

Sieht doch gar nicht so schlecht aus :slight_smile: Und du hast es versucht - das ist das wichtigste :slight_smile:

Ich habe bei mir in den Bewegungsmelder eingestellt, dass eine Bewegung die Variable vom Bewegungsmelder für 60 Sekunden auf TRUE lässt und habe dann einen Timer-Intervall in der Bewegungsmelder-Automatik auf 75 Sekunden. Gibt aber verschiedene Ansätze, dies nur zur Info nebenbei.

Hier mal eine Überarbeitung deines Script. Ungetestet - sollte aber funktionieren :slight_smile:

<? 

$Hue_Instanz = 38727;
$Hue_Licht = 57837; 
$Hue_Merker = 44065; 
$Helligkeit = 36766;
$Bewegungsmelder_Status_Variable = 12345;  // HIER NOCH DIE VARIABLE VOM BEWEGUNGSMELDER-STATUS EINTRAGEN!!!



if ($_IPS['SENDER'] === "Variable") {
	// Nur wenn Helligkeit kleiner als 35
	if ($Helligkeit < 35) {
		// Nur wenn Licht AUS - oder wenn Licht AN und Merker TRUE
		if ((GetValue($Hue_Licht) === false) || ((GetValue($Hue_Licht) === true) && (GetValue($Hue_Merker) === true))) {
			// Merker setzen, damit wir wissen, dass das Licht vom Bewegungsmelder eingeschaltet wurde
			SetValueBoolean($Hue_Merker, true);
			  
			if ((date("H") >= 6) && (date("H") <= 23)) {
				//Tagsüber -> Licht Warmweiß
				HUE_SetValue($Hue_Instanz, 'COLOR', 13303662);                                  
	
				// Timer mit 120 Sekunden aktivieren
				IPS_SetScriptTimer($_IPS["SELF"], 120);
			} else {
				//Abends von 00:00-06:00 -> Licht Blau 
				HUE_SetValue($Hue_Instanz, 'COLOR', 5308927);
	
				// Timer mit 30 Sekunden aktivieren
				IPS_SetScriptTimer($_IPS["SELF"], 30);
			}
		}
	}
} elseif ($_IPS['SENDER'] === "TimerEvent") {
	if (GetValue($Bewegungsmelder_Status_Variable) === true) {
		// Bewegung noch vorhanden, Timer verlängern  (hier kannst du je nach Beweungsmelder einstellen, wie lange eine Bewegungserkennung angezeigt wird)
		if ((date("H") >= 6) && (date("H") <= 23)) {
			IPS_SetScriptTimer($_IPS["SELF"], 120);
		} else {
			IPS_SetScriptTimer($_IPS["SELF"], 30);
		}
	} else {
		// Timer deaktivieren 
		IPS_SetScriptTimer($_IPS["SELF"], 0);
		
		// Licht ausschalten, wenn durch Automatik eingeschaltet wurde
		if (GetValue($Hue_Merker) === true) {
			HUE_SetValue($Hue_Instanz, 'STATE', false); 
			SetValueBoolean($Hue_Merker, false);
		}
	}
}

?>

EDIT: Dein Edit hab ich nicht mehr mitbekommen. Naja, vlt. kannst du mit dem Script hier trotzdem was anfangen :slight_smile: Viele Wege führen nach Rom. So ein Script kann man auf X verschiedene Arten schreiben - am Ende ist nur wichtig, dass es funktioniert und man halbwegs versteht, was man da gemacht hat :wink:

Viele Grüße,
Chris

Was die ganzen System Befehle machen, da steige ich noch nicht ganz so hinter aber es wird! :smiley:

Vielen Dank das du extra noch mal ein Skript geschrieben hast! Doch irgendwo ist noch der Wurm. Bei meinem Skript gehen die Lampen nicht mehr aus. Dein Skript war bei mir voller Fehler und zwar immer dann, wenn wie Oben Zitiert Initialisiert wurde. Dann kamen Fehlermeldungen das die Objekte nicht vorhanden wären. Ich habe es jetzt soweit umgeschrieben das es funktioniert. Doch nun gehen die Lampen nicht mehr nach der Definierten Zeit aus. Obwohl die Var des Bewegungsmelders false ist. Ich sehe das das Skript nach „120Sek“ aufgerufen wird, aber der Ausschalt Befehl kommt nicht sowie der Marker wird nicht auf False gesetzt. Ich habe das Gefühl er springt nicht in die „elseif“ Bedingung beim Automatischen Wiederaufrufen.
Doch jetzt das verrückte: Führe ich das Skript in dann in diesem Fall Manuel aus (Marker True, Bewegung False), gehen die Lampen aus. :confused::confused::confused::confused:

<?
$Uhrzeit = date("H:i:s");  // Stunde:Minute:Sekunde
$Hue_Licht = GetValue(57837 /*[Licht\Hue Gruppen\Flur\Zustand]*/); 
$Hue_Merker = GetValue(44065 /*[Räume\Flur\Hue\Hue.Merker]*/); 
$Helligkeit = GetValue(36766 /*[Räume\Flur\Bewegungsmelder\Helligkeit]*/);
$Bewegungsmelder_Status_Variable = GetValue(17647 /*[Räume\Flur\Bewegungsmelder\Bewegung]*/);



if ($_IPS['SENDER'] === "Variable"){
    // Nur wenn Helligkeit kleiner als 35
    if ($Helligkeit < 35) {
        // Nur wenn Licht AUS - oder wenn Licht AN und Merker TRUE
        if (($Hue_Licht === false) || (($Hue_Licht === true) && ($Hue_Merker === true))) {
            // Merker setzen, damit wir wissen, dass das Licht vom Bewegungsmelder eingeschaltet wurde
            SetValueBoolean(44065 /*[Räume\Flur\Hue\Hue.Merker]*/, true);
              
            if ((date("H") >= 6) && (date("H") <= 23)) {
                //Tagsüber -> Licht Warmweiß
                HUE_SetValue(38727 /*[Licht\Hue Gruppen\Flur]*/, 'COLOR', 13303662);
            
                // Timer mit 120 Sekunden aktivieren
                IPS_SetScriptTimer($_IPS["SELF"], 120);
            } else {
                //Abends von 00:00-06:00 -> Licht Blau 
                HUE_SetValue(38727 /*[Licht\Hue Gruppen\Flur]*/, 'COLOR', 5308927);
    
                // Timer mit 30 Sekunden aktivieren
                IPS_SetScriptTimer($_IPS["SELF"], 30);
            }
        }
    }
} elseif ($_IPS['SENDER'] != "TimerEvent"){
    if ($Bewegungsmelder_Status_Variable === true) {
        // Bewegung noch vorhanden, Timer verlängern  (hier kannst du je nach Beweungsmelder einstellen, wie lange eine Bewegungserkennung angezeigt wird)
        if ((date("H") >= 6) && (date("H") <= 23)) {
            IPS_SetScriptTimer($_IPS["SELF"], 120);
        } else {
            IPS_SetScriptTimer($_IPS["SELF"], 30);
        }
    } else {
        // Timer deaktivieren 
        IPS_SetScriptTimer($_IPS["SELF"], 0);
        
        // Licht ausschalten, wenn durch Automatik eingeschaltet wurde
        if ($Hue_Merker === true) {
			HUE_SetValue(38727 /*[Licht\Hue Gruppen\Flur]*/, 'STATE', false); 
            SetValueBoolean(44065 /*[Räume\Flur\Hue\Hue.Merker]*/, false);
        }
    }
}

?>

Hi!

Ich habe keine Ahnung was du da anstellst :wink: :smiley:
Du solltest dich mal mit IPS_LogMessage befassen - damit kannst du Ausgaben von Werten usw. ins Meldungen-Fenster/Log schreiben und so an jeder Stelle sehen was das Script sieht und damit auch erkennen wo was schief läuft.

Viele Grüße,
Chris

PS: Wenn du nur schreibst „voller Fehler“, aber keine einzige Fehlermeldung erwähnst, dann kann dir niemand weiterhelfen… Nur so als Tipp am Rande :wink:

Das ist ein guter Vorschlag! Danke :slight_smile:

Ich habe noch eine Frage zu den Lichtszenen, ich würde diese sehr gerne nutzen weil ich damit über die App einfach Anpassungen machen kann und die Ansteuerung immer gleich bleiben kann.
In der App habe ich schon in diversen Räumen Szenen erstellt, sogar eine fürs Homekit.
Ich nutze die aktuelle HUE IOS APP und IP Symcon 4.4 , Modul ist Aktuell

Ich habe deshalb schon vom der alten zur neuen Bridge gewechselt aber ich erhalte keine Einträge für Szenen im IP Symcon.

Was ist mein Problem :confused: oder besser gesagt wie löse ich es :slight_smile:

Gruß Daniel

Hallo zusammen

einige hier haben erfolgreich 2 Bridges an IPS angemeldet. Ich habe den gesamten Thread gelesen und denke ich habe es korrekt gemacht, trotzdem erhalte ich einige Fehlermeldungen. Habe die Bridge schon mehrmals gelöscht und neu hinzugefügt, IPS neu gestartet aber alles ohne Erfolg.
System W10, IPS5 und alle Updates, HUE Modul aktuelles von Github

Hat jemand mit 2 Bridges ein ähnliches Problem oder ist das Problem anderweitig zu suchen?

Hier meine Config:

Bridge EG - alles OK
bridge EG.png

Bridge OG - die mit dem Problem. Habe die registriert, mit dem Druck auf den Knopf die Bridge verbunden aber der User wird nicht eingetragen. Trotzdem wird die Config als Aktiv und gut angezeigt:
bridge OG.png

Hier die Fehlermeldungen:
error1.png

config1.png

Hi,

So zur allgemeinen Info.

Hatte Probleme mit der Reichweite wollte das mit der 2. Bridge lösen.

Mit der 2.Bridgehatte ich auch Probleme., hat aber irgendwann gefunkt, weis aber nicht mehr warum.

Inzischen habe ich die komplett wierder raus genommen da es eine einfach Lösung gibt um die Reichweite zu erhöhen.

Mann installiert irgend eine Lampe oder Osram Plug an eine entfernte Stelle die noch erreicht ist.
Da Zigbee wie ein Meshnetz funktioniert wirkt jedes Gerät wie ein Gatway und die Reichweite vergrößert sich.

Dazu kommt, dass die Steuerung z.B. auf iPad schlecht zu realisiern ist da man jedesmal die Bridge umschalten muss.

Danke. Mir geht es nicht um die Reichweite sondern um die Anzahl der Leuchtmittel welche eine Bridge unterstützt. Laut Philipps sind es 50, im HUE Forum sprechen User von 55-65 max aber ich habe fast 70 Stück und wäre deshalb weiter über dem theoretischen max von Philips

Jedoch habe ich in der Zwischenzeit nochmals beide Bridges von IPS gelöscht und wieder hinzugefügt und es sieht nun besser aus. Keine Fehlermeldung mehr. Heute Abend werde ich einige Tests fahren

Ich schalte mit Homematic eine Aussenleuchte ein und dann:

ips_sleep(5000);

// Hue - Birne auf Blau einstellen
$lightId = 10110 /*[PhilipsHUE\Lampen\Hue color lamp 4]*/;
$key= "COLOR";
$value = 3604990;
HUE_SetValue($lightId, $key, $value);

warte ich etwas und schalte auf „blau“. Das klappt bei manuellem Start des Scripts und die Lampe bleibt blau.
Ereignisgesteuert schaltet Homematic ebenfalls ein und die Lampe wird blau, aber mit dem 15 sec Abgleich der Bridge wird automatisch auf weiß verändert.

Da das mein erstes HUE Script ist, vermute ich den Fehler bei mir - fehlt noch was bei meinem 4-Zeiler?

Moin,
das kenne ich auch …
Mit einem „externen“ Schaltkommando ‚STATE‘ (aus der Hue-App oder was auch immer) wird der in der Bridge (siehe die Hue-App) gespeicherte Zustand für BRIGHTNESS und COLOR aufgerufen. Wenn da also ein Bewegungsmelder weiß schaltet (oder geschaltet hat oder sein Zustand aktualisiert wird) dann schaltet die Bridge auf weiß.
Ganz „lustig“ wird das dann wenn man auch noch eine Szene einer Gruppe aufruft, die bei mehreren Leuchten durchaus unterschiedliche Werte und Farben bei einzelnen Leuchten haben kann. Die Gruppe speichert da den zuletzt über die Gruppe aufgerufenen (gemeinsamen) Wert. Ein Kommando „ein“ an die Gruppe verwirft die individuelle Szene wieder.

Du musst also in irgendeiner Weise das Kommando für weiß unterdrücken (wenn du weißt wo es herkommt).

Grüße, Uwe