Страница 7 из 11
Re: Простые устройства / Simple Devices описание методов
Добавлено: Вт май 22, 2018 3:54 pm
directman66
Покажу наглядно как это выглядит
- Безымянный2.png (30.57 КБ) 4753 просмотра
В скобочках время, через которое система переключится в режим никого нет дома (если не будет продлевания). Очень удобная доработка для отладки и на будущее.
Re: Простые устройства / Simple Devices описание методов
Добавлено: Вт май 22, 2018 4:41 pm
directman66
Немного доработал сценарий для переключения режимов через телеграм
Команды (Режимы):
Код: Выделить всё
$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.
Re: Простые устройства / Simple Devices описание методов
Добавлено: Вс май 27, 2018 3:20 pm
directman66
Исправил ошибку в кээлбэке предыдущего сообщения, кто копировал код, обновите.
Re: Простые устройства / Simple Devices описание методов
Добавлено: Пн май 28, 2018 7:49 am
directman66
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
Re: Простые устройства / Simple Devices описание методов
Добавлено: Пн май 28, 2018 8:14 am
Logrus
Можно про это более подробно расписать? Может есть смысл попросить Сергея добавить режим все спят штатно?
а оно, имхо, и заточено на три состояния, в базовой поставке на сцене кнопка режима по ним и меняется
мне сейчас некогда, еще не копал и не садил, лето началось
в коннекте все обновлено и есть (только файлы ПУ еще правленые, с оригинальными они не по делу и часто лезет куда не надо)
п.с. ранее более простой вариант расписывал
https://connect.smartliving.ru/profile/1646/blog64.html
если расписывать то что сейчас раза в три больше выйдет (хотя оно и более "экономно" работает)
п.п.с. и там есть куда еще идти, избавиться от модуля пинг и т.д.
Если Сергея заинтересуешь и это надо, я могу ему бд полностью скинуть (там просто личное есть, пароли, явки, чистить нужно)
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср июн 06, 2018 3:18 pm
olegvolk75
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} */
и все
Не помогает:
Кнопка/индикатор на сцене работает правильно, а вот в меню всегда "кто-то есть. Активность"
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср июн 06, 2018 3:53 pm
Logrus
а что тут решать, если при изменении режима не отрабатывает, посмотри у меня в режиме и моде ченджед метод, последние три строчки решат )))
п.с. про это даже в старом варианте расписано
п.п.с. и еще раз, код в ПУ влияющий на режим никогонетдома ущербен (особенно всем по умолчанию, принудительно) и даже вредит.
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср июн 06, 2018 4:28 pm
olegvolk75
Logrus писал(а): ↑Ср июн 06, 2018 3:53 pm
а что тут решать, если при изменении режима не отрабатывает, посмотри у меня в режиме и моде ченджед метод, последние три строчки решат )))
п.с. про это даже в старом варианте расписано
п.п.с. и еще раз, код в ПУ влияющий на режим никогонетдома ущербен (особенно всем по умолчанию, принудительно) и даже вредит.
Блин, и ведь уже читал про этоб но что-то в голове до конца не срослось
.
Заработало, спасибо!
Эх, вот если б ещё вот это побороть:
Не подскажешь, как? На форуме уже видел решение, но не могу что-то теперь найти.
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср июн 06, 2018 5:05 pm
Logrus
а точнее с этим что не так, у себя только на дд (или на опенклосе, забыл уже (они не беспокоят) и не дома сейчас) и оставил таймеры с отсчетом.
viewtopic.php?f=7&t=3574&start=590#p73731
п.с. на форуме в пост только один скрин прикрепляется, бага
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср июн 06, 2018 6:34 pm
olegvolk75
Время последнего зарегистрированного движения сбрасывается каждую минуту. Т. е. если движение было час назад, здесь покажет максимум минуту назад.
Отправлено с моего Redmi 3S через Tapatalk