Modules/devices/Rooms onActivity php: различия между версиями
Материал из MajorDoMo инфо
Elmax (обсуждение | вклад) (Заготовка) |
Elmax (обсуждение | вклад) (+ файл Rooms_onActivity.php) |
||
| Строка 3: | Строка 3: | ||
<pre> | <pre> | ||
<?php | |||
// Если отключена функциональность простых устройств тогда прекращаем выполнение. | |||
if (defined('DISABLE_SIMPLE_DEVICES') && DISABLE_SIMPLE_DEVICES==1) return; | |||
// Получаем название объекта. | |||
$ot = $this->object_title; | |||
// Устанавливаем свойство LatestActivity в текущее время. | |||
$this->setProperty('LatestActivity', time()); | |||
// Устанавливаем свойство LatestActivityTime в текущее время в формате часов и минут. | |||
$this->setProperty('LatestActivityTime', date('H:i')); | |||
// Проверяем, кто в комнате. Если никого нет, устанавливаем свойство SomebodyHere в 1 и вызываем метод updateActivityStatus. | |||
if (!$this->getProperty('SomebodyHere')) { | |||
$this->setProperty('SomebodyHere', 1); | |||
$this->callMethodSafe('updateActivityStatus'); | |||
} | |||
// Проверяем, установлено ли свойство IdleDelay. Если да, используем его значение, иначе используем значение по умолчанию 10 минут. | |||
if ($this->getProperty('IdleDelay')) { | |||
$activity_timeout = (int)$this->getProperty('IdleDelay'); | |||
} else { | |||
$activity_timeout = 10*60; | |||
} | |||
// Устанавливаем таймер на имя объекта с суффиксом _activity_timeout, который вызовет метод onIdle через установленное время. | |||
setTimeOut($ot . '_activity_timeout', "callMethod('" . $ot . ".onIdle');", $activity_timeout); | |||
// Проверяем, активен ли режим "Никого дома". Если да, деактивируем его, передавая параметры сенсора и комнаты. | |||
if (getGlobal('NobodyHomeMode.active')) { | |||
callMethod('NobodyHomeMode.deactivate', array('sensor' => $params['sensor'], 'room' => $ot)); | |||
} | |||
</pre> | </pre> | ||
Текущая версия от 11:26, 6 апреля 2024
ᐂ В корневой раздел ᐃ В директорию расположения файла
<?php
// Если отключена функциональность простых устройств тогда прекращаем выполнение.
if (defined('DISABLE_SIMPLE_DEVICES') && DISABLE_SIMPLE_DEVICES==1) return;
// Получаем название объекта.
$ot = $this->object_title;
// Устанавливаем свойство LatestActivity в текущее время.
$this->setProperty('LatestActivity', time());
// Устанавливаем свойство LatestActivityTime в текущее время в формате часов и минут.
$this->setProperty('LatestActivityTime', date('H:i'));
// Проверяем, кто в комнате. Если никого нет, устанавливаем свойство SomebodyHere в 1 и вызываем метод updateActivityStatus.
if (!$this->getProperty('SomebodyHere')) {
$this->setProperty('SomebodyHere', 1);
$this->callMethodSafe('updateActivityStatus');
}
// Проверяем, установлено ли свойство IdleDelay. Если да, используем его значение, иначе используем значение по умолчанию 10 минут.
if ($this->getProperty('IdleDelay')) {
$activity_timeout = (int)$this->getProperty('IdleDelay');
} else {
$activity_timeout = 10*60;
}
// Устанавливаем таймер на имя объекта с суффиксом _activity_timeout, который вызовет метод onIdle через установленное время.
setTimeOut($ot . '_activity_timeout', "callMethod('" . $ot . ".onIdle');", $activity_timeout);
// Проверяем, активен ли режим "Никого дома". Если да, деактивируем его, передавая параметры сенсора и комнаты.
if (getGlobal('NobodyHomeMode.active')) {
callMethod('NobodyHomeMode.deactivate', array('sensor' => $params['sensor'], 'room' => $ot));
}