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

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

Модератор: immortal

Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Пт окт 26, 2018 6:34 am

Да вроде не было такого. По крайней мере раньше. У меня вот по mqtt показания с датчиков приходят. Дак отлично этот алгоритм работает. Если устройство сдохло - сперва время, потом дата. Цикл брокера и сам брокер при этом продолжают работать.
За это сообщение автора nick7zmail поблагодарил:
hc2hunter (Пт окт 26, 2018 8:46 am)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Сб окт 27, 2018 9:34 am

Еще вопрос...
Через какое время модуль MQTT перестает пытаться соединиться с брокером в случае потери связи с ним?
Поясню.
В настоящий момент у меня построена система так, что брокер Mosquitto стоит на роутере на удаленном объекте (даче). Там же находятся и управляемые устройства, которые по mqtt отдают данные на брокер. А вот сама платформа MjDM находится на удаленном сервере и общается с брокером по интернет-каналу (4G).
Вчера канал лопнул (деньги кончились на симке), и MjDM разумеется перестал получать данные с брокера. Связи не было 8 часов. Деньги положил, канал восстановился, все отлично. Но... смотрю, а модуль MQTT нифига свежие данные от брокера не получает. Подумал, может он после какого-то числа попыток откладывает это на время? Подождал. Потом еще подождал... и еще подождал часок. Ничего. Все данные старые.
Тупо перезапустил MjDM - все взлетело, подписка возобновилась.

Баг или фича :?: :?: :?:
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Сб окт 27, 2018 12:26 pm

hc2hunter писал(а):
Сб окт 27, 2018 9:34 am
Тупо перезапустил MjDM - все взлетело, подписка возобновилась.
По существу вопроса не подскажу, но ребутать весь МДМ это уже перебор. )) Можно было просто рестартануть цикл мктт. Причем это можно из своего кода, например, по событию "Подключение к интернет восстановлено".
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Сб окт 27, 2018 2:19 pm

а не подскажете где этот цикл искать? и как правильно его дернуть?
кстати, предыдущий мой вопрос видимо тоже с этим тесно связан. обратил внимание, если в системе создавать свои setTimeOutы с длительность до 4 секунд, то mqtt как раз начинает беситься и "плодить" холостые данные, из-за чего беспрерывно срабатывают таймеры опроса устройств ИМЯ_updateTime
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Сб окт 27, 2018 2:54 pm

Управление всеми циклами доступно через XRay на вкладке Services.

Если из своего кода, то
setGlobal('cycle_mqttControl', 'restart');
http://majordomo.smartliving.ru/forum/v ... 78&p=71002
За это сообщение автора skysilver поблагодарил:
hc2hunter (Сб окт 27, 2018 3:11 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Пн окт 29, 2018 10:41 am

М-де... все-таки MQTT кривой в majordomo начиная с х.з. какой версии...
Поставил на свежей операционке последнюю версию 1.20 с нуля, обновился до актуальной.
Настроил в ней MQTT, прицепил девайс hunter\Basic\#.
Девайс поработал примерно с часик, шля данные на брокер каждые 4 минуты. Все ок, данные обновлялись, время отклика устройства обновлялось.
Потом я тупо выдернул его из сети. Девайс физически умер. На брокере, разумеется, никаких данных свежих нет. Какого же было мое удивление, когда в панели MQTT я увидел через 15 минут свежие данные от мертвого девайса. "Бинго!"
Приложил картинку - видно, как часть данных "освежились" сами собой в 10:32, в то время как с 10:15 девайс был выключен. Если бы он был включен - он бы прислал полный набор данных.
mqtt.png
mqtt.png (75.5 КБ) 3522 просмотра
И что делать с такой здоровской работой модуля ума не приложу... :shock:
eeak1
Сообщения: 51
Зарегистрирован: Чт май 12, 2016 9:13 am
Благодарил (а): 22 раза
Поблагодарили: 11 раз
Контактная информация:

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

Сообщение eeak1 » Пн окт 29, 2018 10:51 am

hc2hunter писал(а):
Пн окт 29, 2018 10:41 am
Поставил на свежей операционке последнюю версию 1.20 с нуля
Так это древняя версия, ровесник динозавров. Сейчас актуально 1.5.3
hc2hunter писал(а):
Пн окт 29, 2018 10:41 am
Какого же было мое удивление, когда в панели MQTT я увидел через 15 минут свежие данные от мертвого девайса. "Бинго!"
Может дело в "Retain" ?
hc2hunter писал(а):
Пн окт 29, 2018 10:41 am
М-де... все-таки MQTT кривой в majordomo начиная с х.з. какой версии...
Ну не знаю, я давным-давно все перевел на MQTT, единственная проблема - редкие подвисания цикла. Лечится проверкой в onNewMinute и чисткой с рестартом.
Алиса живёт на нубуке с закрытой крышкой в Docker контейнере, соседствует с контейнерами nextcloud, plex, mosquitto, и т.д.
ранее в Docker контейнере на Raspberry Pi 4
ранее натив на Raspberry Pi 3
https://www.eeak.biz
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Пн окт 29, 2018 10:57 am

Тоже думал про Retain, но по умолчанию в модуле он выключен, и я его специально не включал.
Или он неявно где-то прописан еще...?

А почему 1.2 древняя? Это единственный установщик, который предлагается на https://majordomo.smartliving.ru/skachat-majordomo/
Дальше я уже обновлял его до актуальной из самой панели управления. Сейчас пишет "Вы используете последнюю версию!" (Master)
eeak1
Сообщения: 51
Зарегистрирован: Чт май 12, 2016 9:13 am
Благодарил (а): 22 раза
Поблагодарили: 11 раз
Контактная информация:

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

Сообщение eeak1 » Пн окт 29, 2018 11:12 am

hc2hunter писал(а):
Пн окт 29, 2018 10:57 am
Тоже думал про Retain, но по умолчанию в модуле он выключен, и я его специально не включал.
Удали топик который сам обновляется и посмотри, появится он сам через время или нет. Если появится - значит Retain.
Ты мог его включить 1 раз, дальше он в таком статусе будет пока вручную в БД не сбросишь.
hc2hunter писал(а):
Пн окт 29, 2018 10:57 am
А почему 1.2 древняя?
Я думал ты про версию москиты. А если не про нее, тады я не в курсе что за 1.2
За это сообщение автора eeak1 поблагодарил:
hc2hunter (Пн окт 29, 2018 11:21 am)
Рейтинг: 1.16%
Алиса живёт на нубуке с закрытой крышкой в Docker контейнере, соседствует с контейнерами nextcloud, plex, mosquitto, и т.д.
ранее в Docker контейнере на Raspberry Pi 4
ранее натив на Raspberry Pi 3
https://www.eeak.biz
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

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

Сообщение hc2hunter » Пн окт 29, 2018 11:21 am

eeak1 писал(а):
Пн окт 29, 2018 11:12 am
Удали топик который сам обновляется и посмотри, появится он сам через время или нет. Если появится - значит Retain.
Ты мог его включить 1 раз, дальше он в таком статусе будет пока вручную в БД не сбросишь.
Спасибо за совет, попробую.

Москита у меня стоит на OpenWRT, на роутере. Судя по информации, она там версии 1.5.3-3
В конфиге самой москиты про retain ничего специально не прописано. По-дефолту. Там это, кажется, persistence называется.
И опять же, данные всплывают только в модуле MjDM, сама москита при этом молчит.
Ответить