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
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
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
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
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
Sieht doch gar nicht so schlecht aus Und du hast es versucht - das ist das wichtigste
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
<?
$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 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
Viele Grüße,
Chris
Was die ganzen System Befehle machen, da steige ich noch nicht ganz so hinter aber es wird!
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.
<?
$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
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
Das ist ein guter Vorschlag! Danke
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 oder besser gesagt wie löse ich es
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 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:
Hier die Fehlermeldungen:
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