Начало было банальным
Если от датчика приходит инвертированно, то по ссылке выше, далее есть под Сяоми (аналогично ! поменять и тут)
$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);
}
Нижний Тагил, Россия
На форуме: Logrus