[Модуль] MQTT (mqtt)
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Предложения по доработке модуля MQTT
Да вроде не было такого. По крайней мере раньше. У меня вот по mqtt показания с датчиков приходят. Дак отлично этот алгоритм работает. Если устройство сдохло - сперва время, потом дата. Цикл брокера и сам брокер при этом продолжают работать.
- За это сообщение автора nick7zmail поблагодарил:
- hc2hunter (Пт окт 26, 2018 8:46 am)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- hc2hunter
- Сообщения: 507
- Зарегистрирован: Сб дек 02, 2017 10:45 am
- Откуда: RUS
- Благодарил (а): 228 раз
- Поблагодарили: 348 раз
Re: Предложения по доработке модуля MQTT
Еще вопрос...
Через какое время модуль MQTT перестает пытаться соединиться с брокером в случае потери связи с ним?
Поясню.
В настоящий момент у меня построена система так, что брокер Mosquitto стоит на роутере на удаленном объекте (даче). Там же находятся и управляемые устройства, которые по mqtt отдают данные на брокер. А вот сама платформа MjDM находится на удаленном сервере и общается с брокером по интернет-каналу (4G).
Вчера канал лопнул (деньги кончились на симке), и MjDM разумеется перестал получать данные с брокера. Связи не было 8 часов. Деньги положил, канал восстановился, все отлично. Но... смотрю, а модуль MQTT нифига свежие данные от брокера не получает. Подумал, может он после какого-то числа попыток откладывает это на время? Подождал. Потом еще подождал... и еще подождал часок. Ничего. Все данные старые.
Тупо перезапустил MjDM - все взлетело, подписка возобновилась.
Баг или фича
Через какое время модуль MQTT перестает пытаться соединиться с брокером в случае потери связи с ним?
Поясню.
В настоящий момент у меня построена система так, что брокер Mosquitto стоит на роутере на удаленном объекте (даче). Там же находятся и управляемые устройства, которые по mqtt отдают данные на брокер. А вот сама платформа MjDM находится на удаленном сервере и общается с брокером по интернет-каналу (4G).
Вчера канал лопнул (деньги кончились на симке), и MjDM разумеется перестал получать данные с брокера. Связи не было 8 часов. Деньги положил, канал восстановился, все отлично. Но... смотрю, а модуль MQTT нифига свежие данные от брокера не получает. Подумал, может он после какого-то числа попыток откладывает это на время? Подождал. Потом еще подождал... и еще подождал часок. Ничего. Все данные старые.
Тупо перезапустил MjDM - все взлетело, подписка возобновилась.
Баг или фича
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Предложения по доработке модуля MQTT
По существу вопроса не подскажу, но ребутать весь МДМ это уже перебор. )) Можно было просто рестартануть цикл мктт. Причем это можно из своего кода, например, по событию "Подключение к интернет восстановлено".
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- hc2hunter
- Сообщения: 507
- Зарегистрирован: Сб дек 02, 2017 10:45 am
- Откуда: RUS
- Благодарил (а): 228 раз
- Поблагодарили: 348 раз
Re: Предложения по доработке модуля MQTT
а не подскажете где этот цикл искать? и как правильно его дернуть?
кстати, предыдущий мой вопрос видимо тоже с этим тесно связан. обратил внимание, если в системе создавать свои setTimeOutы с длительность до 4 секунд, то mqtt как раз начинает беситься и "плодить" холостые данные, из-за чего беспрерывно срабатывают таймеры опроса устройств ИМЯ_updateTime
кстати, предыдущий мой вопрос видимо тоже с этим тесно связан. обратил внимание, если в системе создавать свои setTimeOutы с длительность до 4 секунд, то mqtt как раз начинает беситься и "плодить" холостые данные, из-за чего беспрерывно срабатывают таймеры опроса устройств ИМЯ_updateTime
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Предложения по доработке модуля MQTT
Управление всеми циклами доступно через XRay на вкладке Services.
Если из своего кода, то
setGlobal('cycle_mqttControl', 'restart');
http://majordomo.smartliving.ru/forum/v ... 78&p=71002
Если из своего кода, то
setGlobal('cycle_mqttControl', 'restart');
http://majordomo.smartliving.ru/forum/v ... 78&p=71002
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- hc2hunter
- Сообщения: 507
- Зарегистрирован: Сб дек 02, 2017 10:45 am
- Откуда: RUS
- Благодарил (а): 228 раз
- Поблагодарили: 348 раз
Re: Предложения по доработке модуля MQTT
М-де... все-таки MQTT кривой в majordomo начиная с х.з. какой версии...
Поставил на свежей операционке последнюю версию 1.20 с нуля, обновился до актуальной.
Настроил в ней MQTT, прицепил девайс hunter\Basic\#.
Девайс поработал примерно с часик, шля данные на брокер каждые 4 минуты. Все ок, данные обновлялись, время отклика устройства обновлялось.
Потом я тупо выдернул его из сети. Девайс физически умер. На брокере, разумеется, никаких данных свежих нет. Какого же было мое удивление, когда в панели MQTT я увидел через 15 минут свежие данные от мертвого девайса. "Бинго!"
Приложил картинку - видно, как часть данных "освежились" сами собой в 10:32, в то время как с 10:15 девайс был выключен. Если бы он был включен - он бы прислал полный набор данных. И что делать с такой здоровской работой модуля ума не приложу...
Поставил на свежей операционке последнюю версию 1.20 с нуля, обновился до актуальной.
Настроил в ней MQTT, прицепил девайс hunter\Basic\#.
Девайс поработал примерно с часик, шля данные на брокер каждые 4 минуты. Все ок, данные обновлялись, время отклика устройства обновлялось.
Потом я тупо выдернул его из сети. Девайс физически умер. На брокере, разумеется, никаких данных свежих нет. Какого же было мое удивление, когда в панели MQTT я увидел через 15 минут свежие данные от мертвого девайса. "Бинго!"
Приложил картинку - видно, как часть данных "освежились" сами собой в 10:32, в то время как с 10:15 девайс был выключен. Если бы он был включен - он бы прислал полный набор данных. И что делать с такой здоровской работой модуля ума не приложу...
-
- Сообщения: 51
- Зарегистрирован: Чт май 12, 2016 9:13 am
- Благодарил (а): 22 раза
- Поблагодарили: 11 раз
- Контактная информация:
Re: Предложения по доработке модуля MQTT
Так это древняя версия, ровесник динозавров. Сейчас актуально 1.5.3
Может дело в "Retain" ?
Ну не знаю, я давным-давно все перевел на MQTT, единственная проблема - редкие подвисания цикла. Лечится проверкой в onNewMinute и чисткой с рестартом.
Алиса живёт на нубуке с закрытой крышкой в Docker контейнере, соседствует с контейнерами nextcloud, plex, mosquitto, и т.д.
ранее в Docker контейнере на Raspberry Pi 4
ранее натив на Raspberry Pi 3
https://www.eeak.biz
ранее в Docker контейнере на Raspberry Pi 4
ранее натив на Raspberry Pi 3
https://www.eeak.biz
- hc2hunter
- Сообщения: 507
- Зарегистрирован: Сб дек 02, 2017 10:45 am
- Откуда: RUS
- Благодарил (а): 228 раз
- Поблагодарили: 348 раз
Re: Предложения по доработке модуля MQTT
Тоже думал про Retain, но по умолчанию в модуле он выключен, и я его специально не включал.
Или он неявно где-то прописан еще...?
А почему 1.2 древняя? Это единственный установщик, который предлагается на https://majordomo.smartliving.ru/skachat-majordomo/
Дальше я уже обновлял его до актуальной из самой панели управления. Сейчас пишет "Вы используете последнюю версию!" (Master)
Или он неявно где-то прописан еще...?
А почему 1.2 древняя? Это единственный установщик, который предлагается на https://majordomo.smartliving.ru/skachat-majordomo/
Дальше я уже обновлял его до актуальной из самой панели управления. Сейчас пишет "Вы используете последнюю версию!" (Master)
-
- Сообщения: 51
- Зарегистрирован: Чт май 12, 2016 9:13 am
- Благодарил (а): 22 раза
- Поблагодарили: 11 раз
- Контактная информация:
Re: Предложения по доработке модуля MQTT
Удали топик который сам обновляется и посмотри, появится он сам через время или нет. Если появится - значит Retain.
Ты мог его включить 1 раз, дальше он в таком статусе будет пока вручную в БД не сбросишь.
Я думал ты про версию москиты. А если не про нее, тады я не в курсе что за 1.2
- Рейтинг: 1.16%
Алиса живёт на нубуке с закрытой крышкой в Docker контейнере, соседствует с контейнерами nextcloud, plex, mosquitto, и т.д.
ранее в Docker контейнере на Raspberry Pi 4
ранее натив на Raspberry Pi 3
https://www.eeak.biz
ранее в Docker контейнере на Raspberry Pi 4
ранее натив на Raspberry Pi 3
https://www.eeak.biz
- hc2hunter
- Сообщения: 507
- Зарегистрирован: Сб дек 02, 2017 10:45 am
- Откуда: RUS
- Благодарил (а): 228 раз
- Поблагодарили: 348 раз
Re: Предложения по доработке модуля MQTT
Спасибо за совет, попробую.
Москита у меня стоит на OpenWRT, на роутере. Судя по информации, она там версии 1.5.3-3
В конфиге самой москиты про retain ничего специально не прописано. По-дефолту. Там это, кажется, persistence называется.
И опять же, данные всплывают только в модуле MjDM, сама москита при этом молчит.