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

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

Добавлено: Вт май 22, 2018 3:54 pm
directman66
Покажу наглядно как это выглядит
Безымянный2.png
Безымянный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