Logrus

 
<<< Назад

Класс 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 == '-1' || (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);
}

Обсуждение (0) (10)

Смотрите так же:
10.01.2021 DROP_TABLE
07.05.2020 Телеграмм. Полезное
30.06.2019 Телеграмм. Меню - управление группами ПУ
29.06.2019 Телеграмм. Меню - запуск скриптов (сценариев)
21.10.2018 Настройки громкости
07.10.2018 Примеры кода
25.09.2018 Телеграмм. pChart
05.04.2018 Шаблон отображения в классе "Users"
02.12.2018 Режим "Никого нет дома"

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

На форуме: Logrus