Страница 5 из 11

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 10:03 am
tarasfrompir
Установи это свойство Toilet.IdleDelay 30
и это Toilet.SomebodyHere 0

и запусти метод в своей же комнате - updateActivityStatus

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 10:12 am
directman66
если размер переменной имадж больше 100 то сохраняй.. иначе нет
и после этого - if (file_exists($path)) {cm('Motion05.motionDetected');}
удаляй сам файл -
А как проверить размер переменной=классу?

Удалять не вариант, я его потом на сцене показываю.

Вроде вот так корректно работает

Код: Выделить всё

//удаляем файле, есои его длинна=0
if(file_exists($path)) {
 $size=filesize($path);
 echo $path.':'.$size.'<br>';
if (filesize($path)<10) unlink($path) ;
    }
Причем в сценарии еще учитывается, что телик может быть подключен по wifi или по ETH )

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 11:16 am
directman66
Сейчас пишет

Код: Выделить всё

 Кто-то есть. Активность:
таймер продлился

И такое ощущение, что настройка Изменение означает активность в помещении игнорируется при обработке режима nobodyhome, так как я сценарием дергал аналогичный датчик движения простых устройств.

Точно, сейчас провел эксперимент - полное игнорирование настроек *.ignoreNobodysHome

метод motionDetected на месте

Код: Выделить всё

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
/* end injection of {SDevices} */

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 11:41 am
directman66

Код: Выделить всё

echo "=1";
print_r( getObjectsByProperty('ignoreNobodysHome','=','1'));
echo "<br>";
echo "=0";
print_r( getObjectsByProperty('ignoreNobodysHome','=','0'));

Код: Выделить всё

=1Array ( [0] => Motion01 [1] => Motion09 [2] => Motion06 [3] => Motion04 [4] => Motion07 [5] => Motion05 [6] => Motion03 [7] => Motion02 [8] => Motion08 ) 
=0Array ( ) 
тогда вообще не понимаю причину игнорирования флага

Нашел, что некоторые устройства Relay не имеют свойства isActivity вообще (т.е. оно наследованное из класса есть, но значение не присвоено), соответсвественно не находятся при поиске

Код: Выделить всё

if ($linked_room && $this->getProperty('isActivity')) {
    if (getGlobal('NobodyHomeMode.active')) {
        callMethodSafe('NobodyHomeMode.deactivate');
    }

Еще накопал отсутсвие галочки "вызыывать родительский метод" у метода NobodyHomeMode.(de)activate


наблюдаем дальше

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 3:12 pm
tarasfrompir
Измени еще вот это - ThisComputer.somebodyHome на 0

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 3:15 pm
directman66
tarasfrompir1 писал(а):
Чт май 17, 2018 3:12 pm
Измени еще вот это - ThisComputer.somebodyHome на 0
А это что вообще откуда?

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 3:23 pm
tarasfrompir
Ну читай там же понятно написано

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 3:27 pm
directman66
Логика заработала (пока кроме самого автоматического включения), но ThisComputer.somebodyHomeText содержит Кто-то есть. Активность:

Кто его вообще заполняет?

Rooms_updateActivityStatus.php

Похоже это к OperateMode вообще никакого отношения не имеет.
СпойлерПоказать

Код: Выделить всё

if (getGlobal('NobodyHomeMode.active')) {
    $somebodyHomeText = LANG_DEVICES_ROOMS_NOBODYHOME." ".LANG_DEVICES_ROOMS_ACTIVITY." " . date('H:i', $rooms[0]['time']) . " (" . $rooms[0]['room'] . ")";
} else {
    $res_rooms = array();
    for ($i = 0; $i < $total; $i++) {
        if ($rooms[$i]['active']) {
            $res_rooms[] = $rooms[$i]['room'];
        }
    }
    $somebodyHomeText = LANG_DEVICES_ROOMS_SOMEBODYHOME." ". LANG_DEVICES_ROOMS_ACTIVITY . " " . implode(", ", $res_rooms);
}

echo $somebodyHomeText;

setGlobal('somebodyHomeText', $somebodyHomeText);

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 3:33 pm
tarasfrompir
Нашел!!!
в обьектах найди - OperationalModes
там внутри него NobodyHomeMode
а уж у него есть такое свойство NobodyHomeMode.active (H) установи 1 и заработает

Re: Простые устройства / Simple Devices описание методов

Добавлено: Чт май 17, 2018 3:33 pm
tarasfrompir
directman66 писал(а):
Чт май 17, 2018 3:27 pm
Логика заработала (пока кроме самого автоматического включения), но ThisComputer.somebodyHomeText содержит Кто-то есть. Активность:

Кто его вообще заполняет?

Rooms_updateActivityStatus.php

Похоже это к OperateMode вообще никакого отношения не имеет.
СпойлерПоказать

Код: Выделить всё

if (getGlobal('NobodyHomeMode.active')) {
    $somebodyHomeText = LANG_DEVICES_ROOMS_NOBODYHOME." ".LANG_DEVICES_ROOMS_ACTIVITY." " . date('H:i', $rooms[0]['time']) . " (" . $rooms[0]['room'] . ")";
} else {
    $res_rooms = array();
    for ($i = 0; $i < $total; $i++) {
        if ($rooms[$i]['active']) {
            $res_rooms[] = $rooms[$i]['room'];
        }
    }
    $somebodyHomeText = LANG_DEVICES_ROOMS_SOMEBODYHOME." ". LANG_DEVICES_ROOMS_ACTIVITY . " " . implode(", ", $res_rooms);
}

echo $somebodyHomeText;

setGlobal('somebodyHomeText', $somebodyHomeText);
ну как же а вот это - if (getGlobal('NobodyHomeMode.active'))