[Модуль] MQTT (mqtt)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Предложения по доработке модуля MQTT

Сообщение Gelezako » Сб май 27, 2017 3:44 pm

dioxin писал(а):Ну так я же давал решение.
Просто в методе который вызывается при обновлении данных дополнительно вставить проверку последнего обновления данных с датчика и дополнительно вызывать этот метод раз в пару минут.
Поняли суть?
Ну или ковырять модуль mqtt. Там нужно найти фунцию отправки данных в базу и сделать дополнительный вывод в объект UPDATED.
метод не вызовется, потому что данные перестанут приходить, понимаете? ))
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

Re: Предложения по доработке модуля MQTT

Сообщение dioxin » Сб май 27, 2017 3:55 pm

Вот нашел в /modules/mqtt.class.php

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

  $rec['VALUE']=$value.'';
  $rec['UPDATED']=date('Y-m-d H:i:s');
  SQLUpdate('mqtt', $rec); 
Тут и надо шаманить.
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

Re: Предложения по доработке модуля MQTT

Сообщение dioxin » Сб май 27, 2017 3:56 pm

Gelezako писал(а):
dioxin писал(а):Ну так я же давал решение.
Просто в методе который вызывается при обновлении данных дополнительно вставить проверку последнего обновления данных с датчика и дополнительно вызывать этот метод раз в пару минут.
Поняли суть?
Ну или ковырять модуль mqtt. Там нужно найти фунцию отправки данных в базу и сделать дополнительный вывод в объект UPDATED.
метод не вызовется, потому что данные перестанут приходить, понимаете? ))
Да я же говорю, дополнительно принудительно вызывать его раз в пару минут, понимаете?
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

Re: Предложения по доработке модуля MQTT

Сообщение dioxin » Сб май 27, 2017 4:07 pm

Разъясняю.
Делаем метод который запускается при обновлении(приходе) данных как я описывал выше. В методе записываем время получения данных в свойство, например *.last_update_mqtt
Делаем сценарий который будет сравнивать свойство *.last_update_mqtt с текущим временем и если оно сильно отличается(например на 3 минуты) значит новые данные не приходили в течении 3х минут. Запускам этот сценарий раз в пару* минут,ну или с каким интервалом у вас приходят данные с mqtt+1 минута.

* периодичность запуска сценария подберете сами

И еще.. Используйте модуль cron для временных задач.
За это сообщение автора dioxin поблагодарил:
Gelezako (Сб май 27, 2017 4:24 pm)
Рейтинг: 1.16%
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Предложения по доработке модуля MQTT

Сообщение Gelezako » Сб май 27, 2017 4:23 pm

dioxin писал(а):Разъясняю.
Делаем метод который запускается при обновлении(приходе) данных как я описывал выше. В методе записываем время получения данных в свойство, например *.last_update_mqtt
Делаем сценарий который будет сравнивать свойство *.last_update_mqtt с текущим временем и если оно сильно отличается(например на 3 минуты) значит новые данные не приходили в течении 3х минут. Запускам этот сценарий раз в пару* минут,ну или с каким интервалом у вас приходят данные с mqtt+1 минута.

* периодичность запуска сценария подберете сами
ага, теперь понял, признаю, я тупил жестоко :)
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Предложения по доработке модуля MQTT

Сообщение directman66 » Пн июн 05, 2017 2:31 pm

вдруг стал падать цикл mqtt плагина

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

16:25:34 0.07786200 Error registered (type: cycle_stop): ./scripts/cycle_mqtt.php
16:25:34 0.07755000 AUTO-RECOVERY: ./scripts/cycle_mqtt.php
16:25:33 0.01863300 Closing thread: exec php -q ./scripts/cycle_mqtt.php --params "a:0:{}">>/var/www/debmes/log_2017-06-05-cycle_mqtt.php.txt
ничего особо не менял. По какой причине может такое быть?

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

Re: Предложения по доработке модуля MQTT

Сообщение directman66 » Чт июн 08, 2017 6:50 am

Нашел причину падения циклов mqtt. Допустим один из топиков связан с объектом, у которого при изменении свойств могут производиться разные действия (создание других объектов, изменение их свойств и т.д.). Дак вот если у последнего связанного объекта вызывается метод OnChange, в котором прописан вызов сценария или метода следующего объекта (допустим callMethod('Motion04.motionDetected'); или Runscript('dfdf' ) с тем же кодом) происходит падение цикла mqtt. Если убрать последнюю связку и прописать код метода или сценария в методе Onchange второго в цепочке объекта, падения прекращаются. Т.е. делаю вывод о том, что цикл падает при вызове метода или сценария. Если этот метод или сценарий вызвать отдельно, то он выполняется без каких-либо ошибок.
За это сообщение автора directman66 поблагодарил:
dioxin (Чт июн 08, 2017 7:29 am)
Рейтинг: 1.16%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Предложения по доработке модуля MQTT

Сообщение sergejey » Чт июн 08, 2017 11:15 am

Пометил себе в копилку ошибок.
За это сообщение автора sergejey поблагодарил:
directman66 (Чт июн 08, 2017 12:45 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Предложения по доработке модуля MQTT

Сообщение Gelezako » Сб июн 24, 2017 1:04 pm

Подскажите как програмно на пхп рестартонуть брокер? У меня после длительного использования или переподключения новых или старых девайсов перестаёт принимать\слать данные. Лечится рестартом. Хочу сделать авторестартер брокера если данные перестали приходить какое-то время.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

Re: Предложения по доработке модуля MQTT

Сообщение dioxin » Сб июн 24, 2017 1:49 pm

Попробуй вот так:

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

$ch = curl_init('http://ip_server/panel/xray.html?view_mode=services&service=cycle_mqtt&cmd=restart');
curl_exec($ch);
curl_close($ch);
Или через shell_exec.
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Ответить