График срабатывания входа.

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

График срабатывания входа.

Сообщение cd1room » 24 окт 2018, 14:10

Как вывести график срабатывания входов в CMS? Как сделать чтобы велся журнал срабатывания входов? И как вы вести эти выходы в таблице?

Andrey_B
Администратор
Сообщения: 3806
Зарегистрирован: 18 мар 2011, 12:06

Re: График срабатывания входа.

Сообщение Andrey_B » 24 окт 2018, 14:12

Неплохо было бы уточнить, о какой CMS идет речь. О той, что идет с "Демо-интерфейсом"?

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 24 окт 2018, 15:23

Именно о ней. Именно о демо интерфейсе. Но подойдет и любое другое решение. Смысл такой надо выводить график срабатывания онлайн.

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 24 окт 2018, 15:56

В смысле удаленно просмотреть и вести учет срабатываний.

Andrey_B
Администратор
Сообщения: 3806
Зарегистрирован: 18 мар 2011, 12:06

Re: График срабатывания входа.

Сообщение Andrey_B » 24 окт 2018, 17:33

"Демо-интерфейс" не является готовым коробочным продуктом и предоставляется "как есть", скажем так, для подготовленных пользователей. Никаких конструкторов и визардов. Саппорт ограниченный.

Что касается записи журнала срабатываний.
1. Завести "Модуль" с нужной структурой данных: Настройки -> Модули: создать модуль, завести поля, активировать модуль
2. Добавить в общую структуру документ (объект) и выбрать в закладке "Свойства" созданный модуль.
3. В скрипте, который обрабатывает сообщения сервера, добавить запись данных с помощью метода mod_write(). Документация по методам класса cms в файле cms_doc.txt в корне архива.
В принципе в CMS уже есть модуль журнала "Ключи-журнал", а в скрипте mod_megad.php ведется запись в этот журнал. Как это реализовано, можно посмотреть там.
Что касается вывода графиков, то можно использовать любую библиотеку. В "демо-интерфейсе" есть пример graph.php, работающий с библиотекой jpgraph для вывода данных из модуля "Устройства". Можно, используя код graph.php, сделать что-то свое. В самой CMS также применяется библиотека highcharts. Можно использовать ее.

Если вы ничего из этого не поняли, то лучше все же обратиться к какому-то более user friedly софту: Majordomo, OpenHAB, Intrahouse, ioBroker, где не требуется знания в области программирования. Для настройки "Демо-интерфейса" требуются.

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 24 окт 2018, 18:07

Почему же не понял, понял. Нужен был пинок в правильном направлении. Будем пробовать. Спасибо.

Ruslan
Сообщения: 360
Зарегистрирован: 06 янв 2014, 20:44

Re: График срабатывания входа.

Сообщение Ruslan » 24 окт 2018, 18:51

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

Но в целом в Мажордомо задачу решить несложно.
1. Устанавливаем Мажордомо (https://majordomo.smartliving.ru/skachat-majordomo/).
2. В Панели управления ("в админке") в ОБЪЕКТах добавляем новый КЛАСС. Назовем его, к примеру, "MegaD".
Добавляем в созданном классе новое СВОЙСТВО. Пускай оно будет называться "Status". В это свойство будут записываться нужные нам значения при срабатывании входа (это свойство будет индивидуальным для каждого объекта внутри класса). Можно сразу включить у свойства историю (для этого нужно указать в поле "Хранить историю дней" значение больше "0").
Добавим еще одно свойство с названием "Port". Здесь мы в последствии для каждого объекта укажем номер порта, с которым он соотносится. Это нужно чтобы использовать единый "классовый" метод для всех объектов класса (для упрощения и сокращения объема кода).

Добавляем в созданном классе новый МЕТОД. Назовем его, скажем, "WriteProperty". Запишем для метода PHP-код. В простейшем случае можно написать, например, так:

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

$state = file_get_contents("http://192.168.0.14/sec/?pt=".$this->getProperty('Port')."&cmd=get");
$state = substr($state,0,3);
if ($state == "OFF") {
$this->setProperty('Status',"OFF");
}else{
$this->setProperty('Status',"ON");
}
В результате выполнения метода в свойство соответствующего объекта будет записываться состояние сработавшего входа ("ON" или "OFF"). Вместо "ON" и "OFF" можно использовать "1" и "0", что для графиков будет уместнее.

Добавим в класс "MegaD" новые ОБЪЕКТы (наши входы Меги). Назовем их, допустим, "P00", "P01", "P02" и т.д. У каждого объекта вручную заполним свойство "Port" и укажем номер порта Меги, с которым он связан (0, 1, 2 и т.д.). Правда, если у вас будет много Мег, то в названии лучше это учесть (например, "М14_P00", "М14_P01", "М14_P02" и т.д.). При этом, конечно, код метода надо будет тоже модифицировать по аналогии с портом, вписав IP-адреса и пароли в переменные.

3. Установим в Мажордомо модуль «MegaD devices». С его помощью при срабатывании входов Меги Мажордомо будет запускать наши методы. Вот тут в перовом посте расписано подробнее, как установить модуль «MegaD devices» (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328). Если Мега добавилась в модуль успешно, на вкладке «Advenced» "прочитается" текущая конфигурация Меги, а при срабатывании входов на вкладке "Данные" после обновления страницы (F5) будут увеличиваться счетчики количества срабатываний.

На вкладке «Данные» у каждого входа в поле «Связанный объект» выставляем соответствующий объект (т.е. "М14_P00", "М14_P01", "М14_P02" и т.д.). В поле «Метод» выставляем «WriteProperty».
Проставим галку в поле «Skip default action». Теперь при срабатывании входов в свойство "Status" каждого объекта будет писаться ON/OFF, 1/0 или что-то еще, что мы захотим.
Табличку со временем срабатывания можно посмотреть, открыв историю свойства соответствующего объекта.

4. Графики я учился строить по этому обучающему видео (https://www.youtube.com/watch?v=Tz9-tu9 ... e=youtu.be).

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 24 окт 2018, 21:55

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

Ruslan
Сообщения: 360
Зарегистрирован: 06 янв 2014, 20:44

Re: График срабатывания входа.

Сообщение Ruslan » 24 окт 2018, 22:31

Ну графики в пределах одной Меги чисто для визуальной идентификации работы устройств можно получить, чуть изменив код метода (чтобы графики разных портов не накладывались друг на друга).

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

$state = file_get_contents("http://192.168.0.14/sec/?pt=".$this->getProperty('Port')."&cmd=get");
$state = substr($state,0,3);
if ($state == "OFF") {
$this->setProperty('Status',0);
}else{
$On = $this->getProperty('Port') + 1;
$this->setProperty('Status',$On);
}
Тут мы к номеру порта прибавляем единицу, таким образом графики от разных портов во включенном состоянии не пересекаются (в пределах одной Меги).

Но если нам нужна статистика за период, то задача сложнее. Тут вычислять надо. Можно работать стандартными "пользовательскими" объектами, можно (кто умеет) делать прямые запросы к базе данных. Ну вот, например:
https://majordomo.smartliving.ru/forum/ ... 329#p82329
http://majordomo.smartliving.ru/forum/v ... =24&t=5739

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 24 окт 2018, 22:46

Но если нам нужна статистика за период, то задача сложнее. Тут вычислять надо. Можно работать стандартными "пользовательскими" объектами, можно (кто умеет) делать прямые запросы к базе данных. Ну вот, например:
как раз и надо за период времени. Причем надо возможность выбора периода за определенные даты.

Ruslan
Сообщения: 360
Зарегистрирован: 06 янв 2014, 20:44

Re: График срабатывания входа.

Сообщение Ruslan » 24 окт 2018, 23:04

Я вообще-то не программист. Попробуйте почитать вот эту ветку с этого места
https://majordomo.smartliving.ru/forum/ ... 7&start=16

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 25 окт 2018, 18:04

В общем попробовал на Мажордомо построить графики. Получается какая-то каша. Вход включен на графике включается проходит секунда выключается проходит еще пару секунд включается. Почему в истории много раз OFF если все это время вход включён.
Вложения
Снимок экрана (34).png
Снимок экрана (34).png (171.1 КБ) 434 просмотра
Снимок экрана (33).png
Снимок экрана (33).png (138.61 КБ) 434 просмотра

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 25 окт 2018, 18:07

Ладно графики. Как хотя бы историю включений выключений вести в какой-ни будь журнал.

Ruslan
Сообщения: 360
Зарегистрирован: 06 янв 2014, 20:44

Re: График срабатывания входа.

Сообщение Ruslan » 25 окт 2018, 21:23

Не совсем ясно, зачем в одно и тоже свойство чуть ли не одновременно писать и числовое (1/0) и текстовое (ON/OFF) значение?
История в базе хранится в таблице "phistory". Но чтобы ее оттуда вытащить, надо уметь пользоваться phpmyadmin. Я, честно говоря, не умею. Чтобы туда попасть (в phpmyadmin) на системе под Windows, надо в адресной строке браузера набрать
http://127.0.0.1/phpmyadmin4/
Логин: root
Пароль пустой (т.е. по умолчанию отсутствует).
Под Линуксом, параметры входа, вроде бы другие.

Еще историю можно вытащить так (https://majordomo.smartliving.ru/forum/ ... f=4&t=2333).

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 25 окт 2018, 22:19

Не совсем ясно, зачем в одно и тоже свойство чуть ли не одновременно писать и числовое (1/0) и текстовое (ON/OFF) значение?
Вот думаю почему именно так происходит? Сделал по инструкции изложенной выше. График по видео.

Ruslan
Сообщения: 360
Зарегистрирован: 06 янв 2014, 20:44

Re: График срабатывания входа.

Сообщение Ruslan » 25 окт 2018, 22:28

Покажите код метода, с помощью которого происходит запись значения в свойство.
Может у вас там одновременно содержатся команды по записи и числового и текстового значения. Что-то типа

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

$this->setProperty('Status',0);
$this->setProperty('Status',OFF);

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 25 окт 2018, 22:55

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

$state = file_get_contents("http://192.168.0.14/sec/?pt=".$this->getProperty('Port')."&cmd=get");
$state = substr($state,0,3);
if ($state == "OFF") {
$this->setProperty('Status',"OFF");
}else{
$this->setProperty('Status',"ON");
} 
как-то так

Ruslan
Сообщения: 360
Зарегистрирован: 06 янв 2014, 20:44

Re: График срабатывания входа.

Сообщение Ruslan » 25 окт 2018, 23:01

Странно. Почему тогда в свойство пишется 1 и 0? Если в коде только текстовые значения.
Попробуйте ON и OFF заменить на 1 и 0. Надо посмотреть, что поменяется. Т.е. фрагмент кода будет выглядеть так:

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

$this->setProperty('Status',0);
}else{
$this->setProperty('Status',1);
Могу только предположить, что система сама добавляет доп.данные чтобы иметь "вторую точку" для построения графиков.

cd1room
Сообщения: 40
Зарегистрирован: 21 авг 2014, 23:51

Re: График срабатывания входа.

Сообщение cd1room » 25 окт 2018, 23:07

:?
Вложения
Снимок экрана (35).png
Снимок экрана (35).png (168.32 КБ) 387 просмотров

Ruslan
Сообщения: 360
Зарегистрирован: 06 янв 2014, 20:44

Re: График срабатывания входа.

Сообщение Ruslan » 25 окт 2018, 23:12

Наверное, мое предположение (насчет "второй точки") правильное. Но для чистоты эксперимента можно попробовать закомментировать код, пишущий значения в свойство. Интересно, будет ли что-то туда при этом писаться...

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

//$this->setProperty('Status',0);
}else{
//$this->setProperty('Status',1);
Только вы текстом напишите, к чему привел эксперимент, т.е. будет писаться в свойство в таком варианте или нет. Просто по картинке понять этот будет невозможно.

Ответить