@jayr Hallo,
Habe letzte Woche auch daran gesessen und ein Script geschrieben womit ich mit Hue Bewegungsmeldern meine Leuchten steuere. Hintergrund warum ich das über ioBroker mache war, das die Funktion „disturb not my scene“ oder andere apps nicht genau hin hauen wenn man zb noch ein Taster mit eingebaut hat. Vielleicht hilft dir das weiter. Bei mir soll der BWM nur schalten, wenn vorher die hue Gruppe auch aus war oder wenn der BWM vorher schon ausgelöst hat, so das man nicht bei laufender Bewegung plötzlich im Dunkeln steht. Und dann natürlich nur bei bestimmter Dunkelheit und bestimmte Zeiten und auch nur dann wenn ein evtl vorhanden Schalter auf false steht.
/**
* *KUECHE BWM*
* Wenn der BWM ab Dämmerung reagiert dann Licht in der Küche an
* und nach 90 sek. wieder ausschalten, wenn keine Bewegung mehr.
*/
let motionSensorID = '0_userdata.0.Datenpunkte.Hue.Sensoren.BWM.Kueche_BWM'; //Bewegungsmelder
let ambientSensorID = 'hue.0.Hue_ambient_light_sensor_1.lightlevel'; //Lichtsensor vom BWM
let sceneDay = 'hue.0.Küche.scene_normal'; //Hue Szene für Tag
let sceneNight = 'hue.0.Küche.scene_normal_gedimmt'; //Hue Szene für Nacht
let lightgroup = 'hue.0.Küche.on'; //Lichtgruppe
let switchKitchen = 'hm-rpc.0.00085BE98EF8A1.4.STATE'; // Lichtschalter Küche
var timeoutday = 300000; //Timeout Tag Default 300000 = 5 minutes
var timeoutnight = 60000; //Timeout Nacht Default 60000 = 1 minute
var lightlevel = 10000; //Default 8200 Lichtlevel wann der BWM auslösen soll
var starttimeday = '07:00'; //Wann der Tag beginnt
var endtimeday = '23:00'; //Wann der Tag endet
var timeout_deactivate_light = null; //setzt Timeout auf null
var bwmState = false; //BWM var damit der nur reagiert wenn Hue Gruppe aus war
on({id: motionSensorID}, function (obj) {
{if ((!getState(switchKitchen).val) && (bwmState === true) || (!getState(lightgroup).val))
if ((obj.state.val) && (getState(ambientSensorID).val < lightlevel)
&& (compareTime(starttimeday, endtimeday, "between")) ) { //Wenn am Tag Bewegung erkannt und Helligkeit unter dem Wert lightlevel liegt
clearTimeout(timeout_deactivate_light); timeout_deactivate_light = null; //setze Timeout zurück
setState(sceneDay, true); //Schalte Licht ein
bwmState = true; //Setze BWM var auf wahr
}
else if ((obj.state.val) && (getState(ambientSensorID).val < lightlevel)) { //Wenn in der Nacht Bewegung erkannt und Helligkeit unter dem Wert lightlevel liegt
clearTimeout(timeout_deactivate_light); timeout_deactivate_light = null; //setze Timeout zurück
setState(sceneNight, true); //Schalte Licht ein
bwmState = true; //setze BWM var auf wahr
}
else if ((!obj.state.val) && (compareTime(starttimeday, endtimeday, "between"))) { //Wenn keine Bewegung mehr erkannt wird am Tag
timeout_deactivate_light = setTimeout(function () { //Setze Timeout ein nach vorher eingebener Zeit
setState(lightgroup, false); //Schaltet Beleuchtung aus
bwmState = false; //setze BWM var auf falsch
timeout_deactivate_light = null;}, timeoutday);
}
else { //Wenn keine Bewegung mehr erkannt wird in der Nacht
timeout_deactivate_light = setTimeout(function () { //Setze Timeout ein nach vorher eingebener Zeit
setState(lightgroup, false); //Schaltet Beleuchtung aus
bwmState = false; //setze BWM var auf falsch
timeout_deactivate_light = null;}, timeoutnight);
}
}});