Взаимодействие с Mqtt

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
ZhenyaRUS39
Сообщения: 46
Зарегистрирован: Ср ноя 16, 2016 12:41 pm

Взаимодействие с Mqtt

Сообщение ZhenyaRUS39 »

Добрый день. Делаю проект в котором куча датчиков esp8266 шлют по mqtt свои состояния и данные раз в 10 минут на сервер MD с mosquitto и потом засыпают, но должны уметь и принимать данные с сервера.
Проблема в том, что если данные на сервере публикуются в те моменты, пока датчики офлайн, то датчики эти данные не получат (получают только те, что онлайн в момент публикации на сервере). Как можно решить эту проблему? Может кто знает готовые варианты? Вариант городить сложную систему публикация/ответ(подтверждение приёма), как-то неправильно, да и на каждый датчик городить придётся.
Или проще всё на post и html переделать?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am

Re: Взаимодействие с Mqtt

Сообщение olehs »

Retain включили для этих датчиков в настройках MQTT в MD?
Аватара пользователя
ZhenyaRUS39
Сообщения: 46
Зарегистрирован: Ср ноя 16, 2016 12:41 pm

Re: Взаимодействие с Mqtt

Сообщение ZhenyaRUS39 »

Дпде и не знал про такую функцию, вечером попробую, спасибо.
Аватара пользователя
Cracken090
Сообщения: 23
Зарегистрирован: Ср апр 19, 2017 11:19 am

Re: Взаимодействие с Mqtt

Сообщение Cracken090 »

Доброго времени суток! Настраиваю MQTT, но столкнулся с проблемой
Суть проблемы: с mqtt-spy отправляю данные. Данные приходят в majordomo, но ответа (эхо) нет.
Подскажите пожалуйста в чем может быть проблема?
Аватара пользователя
ZhenyaRUS39
Сообщения: 46
Зарегистрирован: Ср ноя 16, 2016 12:41 pm

Re: Взаимодействие с Mqtt

Сообщение ZhenyaRUS39 »

Не нашёл Retain в mqtt, где её искать?
Вложения
Снимок.JPG
Снимок.JPG (32.97 КБ) 6967 просмотров
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am

Re: Взаимодействие с Mqtt

Сообщение olehs »

ZhenyaRUS39 писал(а):Не нашёл Retain в mqtt, где её искать?
В настройках каждого конкретного датчика
xneo
Сообщения: 21
Зарегистрирован: Пн апр 24, 2017 4:35 am

Re: Взаимодействие с Mqtt

Сообщение xneo »

Как назначить выполнение методов объекта (привязанного к топику) при изменении статуса после получения нового значения?
Подробнее:
Имеется Relay1 у которого есть свойство status которое обновляется при обновлении топика Devices/Relay1. Так же у него есть методы turnOn и turnOff в которых выполняются команды.
При нажатии на объект на сцене или при переключении через меню всё корректно отрабатывает. Но вот при смене статуса (после получения новых данных из топика Devices/Relay1) - на сцене визуализация выполняется (меняется на вкл или выкл в зависимости от статуса), а методы не отрабатывают.
Где можно найти назначение статуса объекту при получении нового сообщения в топике? Я бы туда прикрутил бы refresh (в родительском классе описан этот метод и он выполняет другие в зависимости от статуса).
Ну или может быть есть какой то другой вариант взаимодействия?
Аватара пользователя
ZhenyaRUS39
Сообщения: 46
Зарегистрирован: Ср ноя 16, 2016 12:41 pm

Re: Взаимодействие с Mqtt

Сообщение ZhenyaRUS39 »

olehs писал(а):
ZhenyaRUS39 писал(а):Не нашёл Retain в mqtt, где её искать?
В настройках каждого конкретного датчика
Можете подробнее рассказать.
В топиках только такие настройки.
Сами датчики на esp, и понять не могу где включается retain.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am

Re: Взаимодействие с Mqtt

Сообщение olehs »

Все верно. Это я неправильно выразился. Ищите в настройках топика.
Безымянный.jpg
Безымянный.jpg (107.51 КБ) 6914 просмотров
xneo
Сообщения: 21
Зарегистрирован: Пн апр 24, 2017 4:35 am

Re: Взаимодействие с Mqtt

Сообщение xneo »

xneo писал(а):Как назначить выполнение методов объекта (привязанного к топику) при изменении статуса после получения нового значения?
Подробнее:
Имеется Relay1 у которого есть свойство status которое обновляется при обновлении топика Devices/Relay1. Так же у него есть методы turnOn и turnOff в которых выполняются команды.
При нажатии на объект на сцене или при переключении через меню всё корректно отрабатывает. Но вот при смене статуса (после получения новых данных из топика Devices/Relay1) - на сцене визуализация выполняется (меняется на вкл или выкл в зависимости от статуса), а методы не отрабатывают.
Где можно найти назначение статуса объекту при получении нового сообщения в топике? Я бы туда прикрутил бы refresh (в родительском классе описан этот метод и он выполняет другие в зависимости от статуса).
Ну или может быть есть какой то другой вариант взаимодействия?
Временно сделал не самый лучший костыль - добавил в onNewMinute проверку вызов метода refresh у всех объектов класса реле. Но во первых это большая задержка, а я точно знаю что есть обработчик который реагирует на получение сообщений мгновенно. И во вторых это неправильно на мой взгляд и загромождает код.
Ответить