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

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

Модератор: immortal

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

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

Сообщение directman66 » Вт май 22, 2018 3:54 pm

Покажу наглядно как это выглядит
Безымянный2.png
Безымянный2.png (30.57 КБ) 4623 просмотра
В скобочках время, через которое система переключится в режим никого нет дома (если не будет продлевания). Очень удобная доработка для отладки и на будущее.
За это сообщение автора directman66 поблагодарили (всего 3):
TrDA (Чт май 24, 2018 4:03 pm) • gvasiliy (Вс май 27, 2018 8:32 pm) • olegvolk75 (Пт июн 15, 2018 10:20 am)
Рейтинг: 3.49%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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

Сообщение directman66 » Вт май 22, 2018 4:41 pm

Немного доработал сценарий для переключения режимов через телеграм
Команды (Режимы):
СпойлерПоказать

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

$this->sendAction($chat_id);

$off = hex2bin('F09F8C91');
$on  = hex2bin('F09F8C95');

$objects=getObjectsByClass("OperationalModes");
//print_r($objects);
foreach($objects as $obj) {
 if (gg($obj['TITLE'].".hide")!=1)
 {
    $state = $off;
    if (gg($obj['TITLE'].".active") == 1)
        $state = $on;
    $option[] = $this->buildInlineKeyboardButton($text=$state.gg($obj['TITLE'].".title"),"","CallbackMode_rejim_".$obj['TITLE'],"");
 }
}

$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);

$content = array('chat_id' => $chat_id, 'text' => "Режимы:", 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$res = $this->sendContent($content);

callback
СпойлерПоказать

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


$off = hex2bin('F09F8C91');
$on  = hex2bin('F09F8C95');
include_once(DIR_MODULES . 'telegram/telegram.class.php');
//$telegram_module->sendMessageToAll(substr($callback,9,6));
//$telegram_module->sendMessageToAll(substr($callback,19));




if (substr($callback,1,19)== 'CallbackMode_rejim_') 
{
    $skip = true;
    $obj = substr($callback, 19);
 
    $text = gg($obj.".title");
    cm($obj.".Change");
    if (gg($obj.".active") == 1)
        $text .= " включен ". $on;
    else
        $text .= " выключен ". $off;
    $this->sendAnswerCallbackQuery($callback_id,$text, false);

$objects=getObjectsByClass("OperationalModes");
//print_r($objects);
foreach($objects as $obj) {
 if (gg($obj['TITLE'].".hide")!=1)
 {
    $state = $off;
    if (gg($obj['TITLE'].".active") == 1)
        $state = $on;
    $option[] = $this->buildInlineKeyboardButton($text=$state.gg($obj['TITLE'].".title"),"","CallbackMode_rejim_".$obj['TITLE'],"");
 }
}
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);
$this->editMessage($chat_id,$message_id,"Режимы:",$keyb);
}
ну и естественно нужно по всему классу расставить где нужно свойство hide.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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

Сообщение directman66 » Вс май 27, 2018 3:20 pm

Исправил ошибку в кээлбэке предыдущего сообщения, кто копировал код, обновите.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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

Сообщение directman66 » Пн май 28, 2018 7:49 am

Logrus писал(а):
Чт май 17, 2018 10:04 pm

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

if ($night == 1 && $security == 0)
{
 $this->setProperty('active', 2);
 sg('minMsgLevel', 3);
}
else
{
 $this->setProperty('active', 1);
}
ссылка же в подписи
кратко: класс юзерс и румс в класс пресенсе, там по условиям с проверкой двери активате или деактивате режима, в нем по условиям дальше все разруливается, еще и на эконом влияет с другим режимом и т.д.
все по изменению свойств без опросов в таймере (через таймер минутный ночной, темное время и в часовом режим энергопотребления)
Logrus писал(а):
Пт май 18, 2018 10:59 am
нет, но расписывать не буду с телефона
switch ($status)
{
case 0: $s = 'Кто-то дома'; break;
case 1: $s = 'Никого нет дома'; break;
case 2: $s = 'Все спят'; break;
}
у нободихоме три состояния и там все режимы взаимосвязаны


Можно про это более подробно расписать? Может есть смысл попросить Сергея добавить режим все спят штатно?

вот еще тема viewtopic.php?f=4&t=2612&p=61579&hilit= ... %82#p61579
За это сообщение автора directman66 поблагодарил:
Samir77 (Ср янв 06, 2021 8:34 pm)
Рейтинг: 1.16%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Logrus
Сообщения: 2077
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 456 раз

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

Сообщение Logrus » Пн май 28, 2018 8:14 am

Можно про это более подробно расписать? Может есть смысл попросить Сергея добавить режим все спят штатно?
а оно, имхо, и заточено на три состояния, в базовой поставке на сцене кнопка режима по ним и меняется
мне сейчас некогда, еще не копал и не садил, лето началось
в коннекте все обновлено и есть (только файлы ПУ еще правленые, с оригинальными они не по делу и часто лезет куда не надо)

п.с. ранее более простой вариант расписывал
https://connect.smartliving.ru/profile/1646/blog64.html
если расписывать то что сейчас раза в три больше выйдет (хотя оно и более "экономно" работает)
п.п.с. и там есть куда еще идти, избавиться от модуля пинг и т.д.

Если Сергея заинтересуешь и это надо, я могу ему бд полностью скинуть (там просто личное есть, пароли, явки, чистить нужно)
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
olegvolk75
Сообщения: 141
Зарегистрирован: Сб мар 11, 2017 7:03 pm
Благодарил (а): 50 раз
Поблагодарили: 15 раз

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

Сообщение olegvolk75 » Ср июн 06, 2018 3:18 pm

directman66 писал(а):
Чт май 17, 2018 11:16 am
Сейчас пишет

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

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

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

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

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

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

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
/* end injection of {SDevices} */
Подскажите, еще не решили проблему?
Это делал:
в обьектах найди - OperationalModes
там внутри него NobodyHomeMode
а уж у него есть такое свойство NobodyHomeMode.active (H) установи 1 и заработает
Это тоже:
Оставь вот это только в первом
//echo "Updated";
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/Rooms_updateActivityStatus.php');
/* end injection of {SDevices} */
и все
Не помогает:
Изображение

Кнопка/индикатор на сцене работает правильно, а вот в меню всегда "кто-то есть. Активность"
Вложения
123.PNG
123.PNG (40.95 КБ) 4467 просмотров
Orange Pi PCPlus, Debian Stretch with Armbian Linux 4.19.62-sunxi
Logrus
Сообщения: 2077
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 456 раз

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

Сообщение Logrus » Ср июн 06, 2018 3:53 pm

а что тут решать, если при изменении режима не отрабатывает, посмотри у меня в режиме и моде ченджед метод, последние три строчки решат )))
п.с. про это даже в старом варианте расписано

п.п.с. и еще раз, код в ПУ влияющий на режим никогонетдома ущербен (особенно всем по умолчанию, принудительно) и даже вредит.
За это сообщение автора Logrus поблагодарил:
olegvolk75 (Ср июн 06, 2018 4:21 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
olegvolk75
Сообщения: 141
Зарегистрирован: Сб мар 11, 2017 7:03 pm
Благодарил (а): 50 раз
Поблагодарили: 15 раз

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

Сообщение olegvolk75 » Ср июн 06, 2018 4:28 pm

Logrus писал(а):
Ср июн 06, 2018 3:53 pm
а что тут решать, если при изменении режима не отрабатывает, посмотри у меня в режиме и моде ченджед метод, последние три строчки решат )))
п.с. про это даже в старом варианте расписано

п.п.с. и еще раз, код в ПУ влияющий на режим никогонетдома ущербен (особенно всем по умолчанию, принудительно) и даже вредит.
Блин, и ведь уже читал про этоб но что-то в голове до конца не срослось :-).
Заработало, спасибо!

Эх, вот если б ещё вот это побороть: Изображение
Не подскажешь, как? На форуме уже видел решение, но не могу что-то теперь найти.
Вложения
666.PNG
666.PNG (10.14 КБ) 4451 просмотр
Orange Pi PCPlus, Debian Stretch with Armbian Linux 4.19.62-sunxi
Logrus
Сообщения: 2077
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 456 раз

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

Сообщение Logrus » Ср июн 06, 2018 5:05 pm

а точнее с этим что не так, у себя только на дд (или на опенклосе, забыл уже (они не беспокоят) и не дома сейчас) и оставил таймеры с отсчетом.
viewtopic.php?f=7&t=3574&start=590#p73731
п.с. на форуме в пост только один скрин прикрепляется, бага
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
olegvolk75
Сообщения: 141
Зарегистрирован: Сб мар 11, 2017 7:03 pm
Благодарил (а): 50 раз
Поблагодарили: 15 раз

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

Сообщение olegvolk75 » Ср июн 06, 2018 6:34 pm

Время последнего зарегистрированного движения сбрасывается каждую минуту. Т. е. если движение было час назад, здесь покажет максимум минуту назад.

Отправлено с моего Redmi 3S через Tapatalk

Orange Pi PCPlus, Debian Stretch with Armbian Linux 4.19.62-sunxi
Ответить