Modules/devices/Rooms onActivity php: различия между версиями

Материал из MajorDoMo инфо
(Заготовка)
 
(+ файл 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));
}