У меня датчики движения Ноолайт и самопальные выдают 1 при движении, потом ждут неск. минут и, если в период ожидания движение снова было, перезапускают внутренний таймер. Сбрасываются в 0 лишь при отсутствии нового движения во время внутреннего таймаута.
Комната видит только первую единицу от датчика и от нее считает время активности и по таймеру гасит свет даже при движении.
Поборолся так:
создал скрипт md_refresh
Код: Выделить всё
$md=$params['MD'];
//debmes('rs md_refresh '.$md);
if(gg($md.'.value')==0){
return;
}
$linked_room=gg($md.'.linkedroom');
if($linked_room){
sg($linked_room.'.SomebodyHere',1);
setTimeOut($md.'_refresh',"runScriptSafe('md_refresh',array('MD'=>'".$md."'));",60);
}
который запускается с параметром MD=сработавший датчик движения.
Скрипт будет каждую минуту передергивать свойство привязанной комнаты SomebodyHere пока этот датчик активен.
Запуск скрипта в методе ValueUpdated (запуск при изменении состояния датчика) объекта Сенсоров
Код: Выделить всё
$ot=$this->object_title;
$vl=$this->getProperty('value'); // то, что меняется у датчика при изменении состояния value/status
$linked_room=$this->getProperty('linkedRoom');
if ($this->class_title=='motion_sensors') { // мой класс датчиков движения
sg($linked_room.'.SomebodyHere',$vl);
if($vl){ //если активно
registerEvent('inhouseMovement', $details=gg($linked_room.'.title'),$expire_in=1); //это моя внутренняя заморочка где было последнее движение и когда
runScriptSafe('md_refresh',array('MD'=>$ot));
}
]}