Статус системы "Кто-то есть" как настроить.

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

VladPTZ
Сообщения: 395
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 95 раз
Поблагодарили: 57 раз

Re: Статус системы "Кто-то есть" как настроить.

Сообщение VladPTZ » Ср июл 25, 2018 12:18 pm

Я по большей части свою логику и использую, но датчики движения это тот случай когда решил попробовать имеющийся функционал, но попал на обратную сторону готового функционала не понятно как работает и как настроить под свои задачи. Почему этот тайаут просто не вывели в настройку через свойство.
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Статус системы "Кто-то есть" как настроить.

Сообщение tarasfrompir » Ср июл 25, 2018 2:12 pm

Ну так исправь метод - Rooms_updateActivityStatus.php
на вот так -

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

<?php

if (defined('DISABLE_SIMPLE_DEVICES') && DISABLE_SIMPLE_DEVICES==1) return;

$rooms = getObjectsByClass("Rooms");
$total = count($rooms);
for ($i = 0; $i < $total; $i++) {
    $rooms[$i]['room'] = getGlobal($rooms[$i]['TITLE'] . '.Title');
    if (!$rooms[$i]['room']) {
        $rooms[$i]['room'] = $rooms[$i]['TITLE'];
    }
    $rooms[$i]['active'] = getGlobal($rooms[$i]['TITLE'] . '.SomebodyHere');
    $rooms[$i]['time'] = getGlobal($rooms[$i]['TITLE'] . '.LatestActivity');
    if (!$rooms[$i]['time']) {
        $rooms[$i]['time'] = 0;
    }
    $rooms[$i]['diff'] = time() - $rooms[$i]['time'];
}

if (!function_exists('cmpRoomsActivity')) {
    function cmpRoomsActivity($a, $b)
    {
        if ($a['diff'] == $b['diff']) {
            return 0;
        }
        return ($a['diff'] < $b['diff']) ? -1 : 1;
    }
}
usort($rooms, "cmpRoomsActivity");

$res_rooms = array();
    for ($i = 0; $i < $total; $i++) {
        if ($rooms[$i]['active']) {
            $res_rooms[] = $rooms[$i]['room'];
			$countactiverooms = $countactiverooms+1;
        }
    }


if (!$countactiverooms) {
	//поскольку нету активности в доме то включает режим економии а также получает статус никого нет дома
	callMethodSafe('NobodyHomeMode.activate');
	callMethodSafe('EconomMode.activate');
    $somebodyHomeText = LANG_DEVICES_ROOMS_NOBODYHOME." ".LANG_DEVICES_ROOMS_ACTIVITY." " . date('H:i', $rooms[0]['time']) . " (" . $rooms[0]['room'] . ")";
} else {
    $somebodyHomeText = LANG_DEVICES_ROOMS_SOMEBODYHOME." ". LANG_DEVICES_ROOMS_ACTIVITY . " " . implode(", ", $res_rooms);
}

echo $somebodyHomeText;

setGlobal('somebodyHomeText', $somebodyHomeText);
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Статус системы "Кто-то есть" как настроить.

Сообщение nightwind » Чт июл 26, 2018 10:20 am

VladPTZ писал(а):
Ср июл 25, 2018 12:18 pm
Я по большей части свою логику и использую, но датчики движения это тот случай когда решил попробовать имеющийся функционал, но попал на обратную сторону готового функционала не понятно как работает и как настроить под свои задачи. Почему этот тайаут просто не вывели в настройку через свойство.
вывод в настройку через свойство - оверхед на постоянное обращение к базе. а настраивать ты его будешь 1-2 раза. Я наоборот поубирал из свойств всякие константы и понаписывал их через define
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Статус системы "Кто-то есть" как настроить.

Сообщение nightwind » Чт июл 26, 2018 10:21 am

tarasfrompir1 писал(а):
Ср июл 25, 2018 2:12 pm
Ну так исправь метод - Rooms_updateActivityStatus.php
на вот так - ...
и после обновления останешься с тыквой)
лучше перенести этот код в метод, и отказаться от включения файлов
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Статус системы "Кто-то есть" как настроить.

Сообщение tarasfrompir » Чт июл 26, 2018 10:23 am

я сделал себе форк - внес свои изменения и обновялюсь по мере надобности
И тогда

Нам не страшен серый волк .... :lol:

ПС
Я никого не склоняю - ни к чему просто факт... :oops:
Спасибо нам ПОМОЖЕТ..!
sigment
Сообщения: 138
Зарегистрирован: Вт ноя 14, 2017 6:39 pm
Откуда: Москва
Благодарил (а): 44 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Статус системы "Кто-то есть" как настроить.

Сообщение sigment » Ср дек 12, 2018 11:42 am

Сделал фоновые подсветки, при активации Sunset все включилось, а в 23:13 почему-то включился Эко, хотя движения в комнатах были.
Единственное упоминание времени которое я нашел это 23:30 в onNewMinute. Если честно, я очень поверхностно понимаю, что тут прописано...

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

if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
 callMethod('EconomMode.activate');
Подскажите, как сделать, чтоб Экорежим активировался/деактивировался правильно?
Включал в ручную Ни кого нет дома, при движении NobodyHomeMode деактивируется. Но эко остаётся активным.
Raspberry Pi3, Xiaomi, BroadLink, ESP8266
sigment
Сообщения: 138
Зарегистрирован: Вт ноя 14, 2017 6:39 pm
Откуда: Москва
Благодарил (а): 44 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Статус системы "Кто-то есть" как настроить.

Сообщение sigment » Чт дек 13, 2018 12:17 am

Что-то вообще ни чего не понимаю, Eco mode как включился вчера так и не выключается, но по закату подсветка все-равно включилась.
Raspberry Pi3, Xiaomi, BroadLink, ESP8266
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Статус системы "Кто-то есть" как настроить.

Сообщение Logrus » Чт дек 13, 2018 12:37 am

уже не помню точно, но у меня примерно так:
энерджитариф ночной и дневной (там еще выходные, ага не виноват)
никого нет, кто то есть, все спят
эконом включается когда дневной и галкой выбора учитывать нет присутствие, то когда никого нет
т.е. днем и никого, днем если не учитывать, на основании этого можно уже для устройств несколько вариантов реализовывать
а вообще будет так как надо и это напишешь, в образах все режимы имитация пример
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Статус системы "Кто-то есть" как настроить.

Сообщение xor » Чт дек 13, 2018 1:01 am

sigment писал(а):
Ср дек 12, 2018 11:42 am
...

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

if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
 callMethod('EconomMode.activate');
...
Тут написано, что если в 23:30 экорежим неактивен и при этом НикогоДома, то вкл. экорежим. Если минутой позже в доме будет движ и НикогоДома сбросится в 0, на экорежим эта строка никак не повлияет. Она срабатывает только один раз в сутки, в полдвенадцатого ночи.
Да, интересно время выбрано.

И ещё топик называется Статус системы "Кто-то есть" как настроить., а вы сюда со своим экономрежимом
djeremy
Сообщения: 23
Зарегистрирован: Пн дек 03, 2018 6:18 pm
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Статус системы "Кто-то есть" как настроить.

Сообщение djeremy » Пт янв 04, 2019 4:58 pm

Подскажите что надо сделать что бы при обновлениях мой код не затирался? добавил код что бы писалось время вот так
Кто-то есть..
Кухня 18:54, Спальня 18:53, Зал 18:52 очеь удобно и сразу понятно где и когда произошло движение. но блин каждый раз затирается этот файл, выставить на него рид онли но это не правильно.
Ответить