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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модераторы: Bagir, Ivan, Vit, immortal, PAV

tarasfrompir1
Сообщения: 1095
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 65 раз
Поблагодарили: 143 раза

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

Сообщение tarasfrompir1 » Чт май 17, 2018 10:03 am

Установи это свойство Toilet.IdleDelay 30
и это Toilet.SomebodyHere 0

и запусти метод в своей же комнате - updateActivityStatus
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 1668
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 249 раз
Поблагодарили: 291 раз

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

Сообщение directman66 » Чт май 17, 2018 10:12 am

если размер переменной имадж больше 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 )
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 1668
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 249 раз
Поблагодарили: 291 раз

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

Сообщение directman66 » Чт май 17, 2018 11:16 am

Сейчас пишет

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

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

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

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

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

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

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
/* end injection of {SDevices} */
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 1668
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 249 раз
Поблагодарили: 291 раз

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

Сообщение directman66 » Чт май 17, 2018 11:41 am

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

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


наблюдаем дальше
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
tarasfrompir1
Сообщения: 1095
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 65 раз
Поблагодарили: 143 раза

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

Сообщение tarasfrompir1 » Чт май 17, 2018 3:12 pm

Измени еще вот это - ThisComputer.somebodyHome на 0
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 1668
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 249 раз
Поблагодарили: 291 раз

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

Сообщение directman66 » Чт май 17, 2018 3:15 pm

tarasfrompir1 писал(а):
Чт май 17, 2018 3:12 pm
Измени еще вот это - ThisComputer.somebodyHome на 0
А это что вообще откуда?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
tarasfrompir1
Сообщения: 1095
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 65 раз
Поблагодарили: 143 раза

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

Сообщение tarasfrompir1 » Чт май 17, 2018 3:23 pm

Ну читай там же понятно написано
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 1668
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 249 раз
Поблагодарили: 291 раз

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

Сообщение 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);
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
tarasfrompir1
Сообщения: 1095
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 65 раз
Поблагодарили: 143 раза

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

Сообщение tarasfrompir1 » Чт май 17, 2018 3:33 pm

Нашел!!!
в обьектах найди - OperationalModes
там внутри него NobodyHomeMode
а уж у него есть такое свойство NobodyHomeMode.active (H) установи 1 и заработает
Спасибо нам ПОМОЖЕТ..!
tarasfrompir1
Сообщения: 1095
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 65 раз
Поблагодарили: 143 раза

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

Сообщение tarasfrompir1 » Чт май 17, 2018 3:33 pm

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'))
Спасибо нам ПОМОЖЕТ..!
Ответить