Logrus

<<< Back

Класс SOpenClose метод logicAction (по-русски "Входная дверь")

Начало было банальным
Если от датчика приходит инвертированно, то по ссылке выше, далее есть под Сяоми (аналогично ! поменять и тут)

$ot = $this->object_title;
$status = $this->getProperty('status');
$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;

if (!$status)
{
 say('Входная дверь закрыта', 2);
 //сбросить таймер
 ClearTimeOut($ot . '_passed');
 //в режим
 setTimeOut($ot . '_presence', "cm('Rooms.Check');", 600);
 //проверяем когда в последний раз срабатывало событие "Входная дверь"
 $last_register = registeredEventTime('entranceClosed');
 //регистрируем событие "Входная дверь"
 registerEvent('entranceClosed', $this->description, 7);
 if (!$last_register || (time() - $last_register) > 7200)
 {
  if (round(getHistoryValue('NobodyHomeMode.active', time() - 600, true)) == 1)
  {
   runScriptSafe('Greeting');
  }
 }
}
elseif ($passed < 60 && $status)
{
 $newTimeout = 60;
 say('Входная дверь открыта', 2);
 //добавить камеру
} 
elseif ($passed < 90 && $status)
{
 $newTimeout = 120;
 say('Входная дверь открыта одну минуту', 2);
}
elseif ($passed < 240 && $status)
{
 $newTimeout = 120;
 say('Входная дверь открыта три минуты', 2);
}
elseif ($passed < 1800 && $status)
{
 $newTimeout = 300;
 say('Входная дверь открыта ' . round($passed/60) . ' минут', 2);
}
else
{
 //если больше аларм (ну смс, астериск отправить)
 say('Аларм!', 2);
}

if ($newTimeout > 0)
{
 setTimeOut($ot . '_passed', 'cm("' . $ot . '.logicAction");', $newTimeout);
}

Discuss (0) (4)

Нижний Тагил, Россия

На форуме: Logrus