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

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

Модератор: immortal

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

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

Сообщение ZhenyaRUS39 » Пн апр 24, 2017 10:13 pm

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

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

Сообщение olehs » Вт апр 25, 2017 12:08 am

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

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

Сообщение ZhenyaRUS39 » Вт апр 25, 2017 8:08 am

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

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

Сообщение Cracken090 » Вт апр 25, 2017 1:17 pm

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

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

Сообщение ZhenyaRUS39 » Вт апр 25, 2017 9:59 pm

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

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

Сообщение olehs » Вт апр 25, 2017 10:25 pm

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

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

Сообщение xneo » Ср апр 26, 2017 8:11 am

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

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

Сообщение ZhenyaRUS39 » Ср апр 26, 2017 11:53 am

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

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

Сообщение olehs » Ср апр 26, 2017 11:57 am

Все верно. Это я неправильно выразился. Ищите в настройках топика.
Безымянный.jpg
Безымянный.jpg (107.51 КБ) 5742 просмотра
За это сообщение автора olehs поблагодарил:
ZhenyaRUS39 (Ср апр 26, 2017 12:35 pm)
Рейтинг: 1.16%
xneo
Сообщения: 21
Зарегистрирован: Пн апр 24, 2017 4:35 am
Благодарил (а): 4 раза
Поблагодарили: 1 раз

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

Сообщение xneo » Ср апр 26, 2017 12:12 pm

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