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

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

Модератор: immortal

Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

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

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

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

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
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

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

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

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

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

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

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

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

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

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
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

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

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

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

Сообщение tarasfrompir » Чт май 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'))
За это сообщение автора tarasfrompir поблагодарил:
Maxim_161 (Вт авг 10, 2021 11:59 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Ответить