[Модуль] MQTT (mqtt)
Модератор: immortal
Re: [Модуль] MQTT (mqtt)
Подскажите, пожалуйста, не могу найти как настроить в МДМ работу с двумя MQTT серверами ?
Например, один у меня стоит локально дома и работает со всеми девайсами в локальной сети.
А второй в CloudMQTT работает с девайсами в другом удаленном помещении.
И МДМ надо забирать данные с обоих MQTT серверов.
Например, один у меня стоит локально дома и работает со всеми девайсами в локальной сети.
А второй в CloudMQTT работает с девайсами в другом удаленном помещении.
И МДМ надо забирать данные с обоих MQTT серверов.
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: [Модуль] MQTT (mqtt)
Модуль работает только с одним брокером.
Делай бридж между двумя твоими брокерами.
Делай бридж между двумя твоими брокерами.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
Re: [Модуль] MQTT (mqtt)
День добрый!
Почему-то в MQTT из ESP8266 перестало приходить значение "0" (видимо NULL, т.е. отсутствует вообще что либо) , вот "1", "2" приходит, а "0", нет!
кусок кода такой:
char *stateChar = "2";
...
if (!digitalRead(_pin)) {state=0; stateChar = "0";}
else {state=1; stateChar = "1";}
...
client.publish(path2"/state", stateChar, true);
///////////
вариант dtostrf((state), 1, 0, stateChar); работает, но ранее в этом устройстве и в других аналогичных устройствах работало по первому варианту. Опасаюсь глюков с другими устройствами и на будущее...
Что не так?
Почему-то в MQTT из ESP8266 перестало приходить значение "0" (видимо NULL, т.е. отсутствует вообще что либо) , вот "1", "2" приходит, а "0", нет!
кусок кода такой:
char *stateChar = "2";
...
if (!digitalRead(_pin)) {state=0; stateChar = "0";}
else {state=1; stateChar = "1";}
...
client.publish(path2"/state", stateChar, true);
///////////
вариант dtostrf((state), 1, 0, stateChar); работает, но ранее в этом устройстве и в других аналогичных устройствах работало по первому варианту. Опасаюсь глюков с другими устройствами и на будущее...
Что не так?
Re: [Модуль] MQTT (mqtt)
Подтверждаю. Хочу запускать скрипт при получении нового значения. Метод не выполняется. Наверное, баг в модуле.Ander писал(а): Вт янв 22, 2019 5:44 pm в модуле MQTT есть Связанный объект, его свойство и метод. Свойство содержит данные MQTT, тут все без проблем, а метод как запускается, когда приходят данные? У меня не работает!
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
Re: [Модуль] MQTT (mqtt)
Чтобы запускался метод при изменении свойства - надо его в классе связать с этим свойством.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Re: [Модуль] MQTT (mqtt)
Ты говоришь о функционале самого мажордомо. А мы говорим о вызове метода из модуля mqTT при обновлении свойства.nick7zmail писал(а): Чт фев 14, 2019 7:32 am Чтобы запускался метод при изменении свойства - надо его в классе связать с этим свойством.
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
Re: [Модуль] MQTT (mqtt)
На самом деле мало модулей, которые вызывают выбранный метод самостоятельно))) По этому в моих модулях этого поля даже нет. Зачем, если можно связать метод со свойством...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Re: [Модуль] MQTT (mqtt)
вызов метода (при приходе сообщения) в этом модуле будет полезен, если данные приходят часто, и при этом не хочется каждый раз писать их в свойство (повышенная нагрузка на систему + износ флеша) - метод прочтет значение свойства и будет сравнивать с пришедшим значением, и только если оно изменилось запишет измененное свойство....nick7zmail писал(а): Чт фев 14, 2019 8:05 am На самом деле мало модулей, которые вызывают выбранный метод самостоятельно))) По этому в моих модулях этого поля даже нет. Зачем, если можно связать метод со свойством...
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
Re: [Модуль] MQTT (mqtt)
Ну, на счет повышенной нагрузки - хз... Считать старое, записать в переенную новое, сравнить. Или просто записать в свойство. По моему во втором случае нагрузки меньше. Да и вообще сам MQTT подразумевает асинхронность прихода сообщений. Клиент сам не должен отправлять сообщение если оно такое как и старое.
Именно по этому я и перешел на MQTT с modbus. В модбасе сделал опрос 50 переменных раз в секунду - мажородомо просто захлебнулся в 100% загрузки intel atom E3825 1.33 Ghz и все. А вот MQTT за счет исключения отправки повторных сообщений, уменьшил нагрузку до 20%. Сейчас обновляю 5-6 штук в секунду.
Износ флеша тоже мимо, ведь БД хранится в оперативке и пишется раз в 15 минут...
Тут было бы актуальнее выполнить код при приходе сообщения. Уменьшит трудозатраты ИМХО.
Именно по этому я и перешел на MQTT с modbus. В модбасе сделал опрос 50 переменных раз в секунду - мажородомо просто захлебнулся в 100% загрузки intel atom E3825 1.33 Ghz и все. А вот MQTT за счет исключения отправки повторных сообщений, уменьшил нагрузку до 20%. Сейчас обновляю 5-6 штук в секунду.
Износ флеша тоже мимо, ведь БД хранится в оперативке и пишется раз в 15 минут...
Тут было бы актуальнее выполнить код при приходе сообщения. Уменьшит трудозатраты ИМХО.
Последний раз редактировалось FredP Чт фев 14, 2019 10:54 am, всего редактировалось 2 раза.