Mega 2561 и MQTT
Mega 2561 и MQTT
Здравствуйте! Хотел бы спросить о настройках работы с MQTT. Я ввел в конфигурацию Меги настройки MQTT сервера (пишет, что соединился), на сервер установлен брокер mosquitto. В настоящий момент подключен только датчик DHT22 к порту 7. Но топика с показанием датчика я не наблюдаю.
IP Megad - 192.168.0.14, сервер mqtt на адресе 192.168.0.100. Я так понимаю, что Мега должна создать топик megad/14 в котором будут состояния портов
Или работа mqtt невозможна без php скрипта (судя по описанию)?
IP Megad - 192.168.0.14, сервер mqtt на адресе 192.168.0.100. Я так понимаю, что Мега должна создать топик megad/14 в котором будут состояния портов
Или работа mqtt невозможна без php скрипта (судя по описанию)?
Re: Mega 2561 и MQTT
В настоящий момент контроллер публикует сообщения только по событию. Например, когда срабатывает вход.
Порт, настроенный для работы с DHT22 не генерирует события. Через HTTP значение датчика можно получить с помощью "cmd=get". А вот в существующей реализации MQTT механизм запроса текущего значения порта пока не сделан.
Порт, настроенный для работы с DHT22 не генерирует события. Через HTTP значение датчика можно получить с помощью "cmd=get". А вот в существующей реализации MQTT механизм запроса текущего значения порта пока не сделан.
Re: Mega 2561 и MQTT
Понятно. Подскажите, а полноценную работу с MQTT вы планируете сделать? Эта информация влияет на выбор системы управления умным домом.
Если да, то приблизительно какой срок? Я понимаю как программист, что срок какой либо фичи это понятие относительное, но все же
Если да, то приблизительно какой срок? Я понимаю как программист, что срок какой либо фичи это понятие относительное, но все же
Re: Mega 2561 и MQTT
А что вы понимаете под полноценной работой с MQTT? Чего не хватает в первую очередь? Выдачи информации о состоянии порта в ответ на запрос?
Re: Mega 2561 и MQTT
Думаю, что под полноценной реализацией я бы имел ввиду публикацию в топиках MQTT самим контроллером с каким то задаваемым в параметрах интервалом.
То есть контроллер сам создал топик например megad/14/07 (14 номер IP или ID контроллера, 07 номер порта) и через интервал времени задаваемый в настройках обновлял бы информацию. Идеально бы интервал обновления задавать для каждого порта отдельно (для каждого типа датчика все таки свои особенности).
Ну и при срабатывании тоже обновлять информацию только для сработавшего порта.
То есть контроллер сам создал топик например megad/14/07 (14 номер IP или ID контроллера, 07 номер порта) и через интервал времени задаваемый в настройках обновлял бы информацию. Идеально бы интервал обновления задавать для каждого порта отдельно (для каждого типа датчика все таки свои особенности).
Ну и при срабатывании тоже обновлять информацию только для сработавшего порта.
Re: Mega 2561 и MQTT
Andrey_B, подниму тему, так как меня, как и многих, интересует возможность "полноценной работы MQTT": в данном вопросе ориентируюсь на MQTT реализацию для Sonoff-устройств - Sonoff-Tasmota. Конечно, от Меги не требуется поддержка настройки всех параметров через MQTT (что было бы оптимально), но можно ли хотя бы реализовать отдельные топики на каждый порт (in и out)? Это гораздо удобнее, прописать в OH2 одной строкой поддержку выключателя. Напр., для Sonoff сейчас у меня выглядит так:
Код: Выделить всё
Switch sw21_1 "Toilet lamp [MAP(ru.map):%s]" <light> (grToilet, grLight) {mqtt="
<[mosquitto:sonoff/sw2/stat/POWER1:state:default], <[mosquitto:sonoff/sw2/tele/STATE:state:JSONPATH($.POWER1)],
>[mosquitto:sonoff/sw2/cmnd/POWER1:command:ON:1], >[mosquitto:sonoff/sw2/cmnd/POWER1:command:OFF:0]"
J3-SmartHome: MegaD + TinkerBoard + Home Assistant
Re: Mega 2561 и MQTT
Отдельные топики на каждый IN реализовать можно. Не знаю, какие традиции приняты в мире MQTT на этот счет, и какой подход к формированию топиков считать более оптимальным. Нужно, чтобы кто-то еще отписался по этому поводу.J0K3R писал(а):но можно ли хотя бы реализовать отдельные топики на каждый порт (in и out)?
Отдельные топики на каждый OUT? Сейчас, чтобы включить несколько портов, нужно отправить в топик "cmd" данные вида "7:1;8:1;9:1". Вы предлагаете отправлять данные отдельными пакетами? Цитата: "MQTT отличается высокой эффективностью связи даже в сетях с низкой пропускной способностью." Зная, как все это устроено изнутри, не разделяю всеобщей истерии по поводу MQTT в IoT. Простота интеграции - вопрос дискуссионный. Более высокая эффективность по сравнению с HTTP? Нет. Более высокая скорость обработки данных по сравнению с HTTP? Нет. Зато достаточно грохнуться брокеру, чтобы все пропало.
Re: Mega 2561 и MQTT
Мне очень нравится как распределены метрики тут - https://wifi-iot.com/p/wiki/23/ru/
Уж очень привык... каждый порт - свой топик.
А вот с MQTT JSON - https://wifi-iot.com/p/wiki/87/ru/ даже и не разбирался...
Уж очень привык... каждый порт - свой топик.
А вот с MQTT JSON - https://wifi-iot.com/p/wiki/87/ru/ даже и не разбирался...
Последний раз редактировалось MSapogov 19 ноя 2017, 15:59, всего редактировалось 1 раз.
Re: Mega 2561 и MQTT
Вот этот момент как раз и не удобен. Для чего поддержка групп на Меге? Считаю это как раз и работа сервера (напр., в OpenHab2 это легко реализуется назначением группы для элемента, как то всем лампам, и пр.). Единственно необходимым групповым управлением на Меге считаю вкл/выкл всех портов (по all команде).Andrey_B писал(а):Сейчас, чтобы включить несколько портов, нужно отправить в топик "cmd" данные вида "7:1;8:1;9:1".
Что касается падения брокера - так сие "беда" любого централизованного управления в УД (что на OpenHab, на MajorDomo и любом сервере). В продакшене в ИТ для этого строят redudancy инфраструктуру, в Меге для этого есть поле Act.
Насчет стабильности MQTT говорить не готов (это больше вопрос практики), как и об эффективности - все же Мега сугубо удел гиков и продвинутых, и для "нас" эффективности HTTP, как и MQTT вполне достаточно (ИМХО).
На текущий момент опробовал binding для OH2 от Petros, но, к сожалению, там проблема с входящими сообщениями (Мега -> OH2-binding). Далее пробовал прикрутить классический HTTP-binding, но в банальном сценарии с выключателем натолкнулся на невозможность передать двоеточие (":") в URL - OH2 таким образом (с помощью ":") разделяет поля (и не предлагает никакие варианты экранирования спец.символов). В итоге для себя вижу оставшееся решение по синхронизации "Мега <-> УД на OH2", поддерживаемое обеими сторонами, - протокол MQTT. Т.е. пока даже речи не идет об эффективности, добиться бы хотя бы стабильности...
J3-SmartHome: MegaD + TinkerBoard + Home Assistant
Re: Mega 2561 и MQTT
Это не группа в понимании контроллера. Это просто серия команд. И это довольно полезная особенность, которая оптимизирует работу самого узкого места с точки зрения всего процесса взаимодействия устройства с сервером - сетевой обмен информацией. Гораздо оптимальнее отправить все нужные команды одним пакетом, а не разбивать это на несколько отдельных сессий.J0K3R писал(а):Вот этот момент как раз и не удобен. Для чего поддержка групп на Меге? Считаю это как раз и работа сервера (напр., в OpenHab2 это легко реализуется назначением группы для элемента, как то всем лампам, и пр.). Единственно необходимым групповым управлением на Меге считаю вкл/выкл всех портов (по all команде).Andrey_B писал(а):Сейчас, чтобы включить несколько портов, нужно отправить в топик "cmd" данные вида "7:1;8:1;9:1".
Что касается входов.
В данный момент устройство публикует информацию в топике типа "megad/14", где "14" - последний байт IP-адреса.
Если публиковать информацию в топике "megad/14/0", где "0" - номер порта, это решит вашу проблему? Кто-то еще реально использует MQTT с MegaD-2561?
Что касается выходов.
Сейчас устройство подписывается на топик "megad/14/cmd"
Не вижу достаточно оснований подписываться на количество топиков, равное количеству выходов.
Если по каким-то причинам ПО на сервере не умеет или не хочет собирать команды в одну, оно может публиковать команды в топик "megad/14/cmd" по одной. Так в OH2 будет работать?
Re: Mega 2561 и MQTT
Можно подписаться на megad/14/out/+Andrey_B писал(а): Не вижу достаточно оснований подписываться на количество топиков, равное количеству выходов.
Wildcards: '+' single level, '#' multi level
Re: Mega 2561 и MQTT
OH2 будет работать и при текущей реализации MQTT со стороны Меги, но если как-то удастся решить проблему двоеточия: и в HTTP binding и в MQTT OpenHab2 использует ":" в собственных целях как разделители. Поэтому двоеточие в URL (или MQTT команде) всегда трактуется неверно. Есть ли возможность заменить двоеточие как разделитель между портом и командой на стороне Меги другим спец.символом либо дополнить какой-нибудь альтернативой?
J3-SmartHome: MegaD + TinkerBoard + Home Assistant
Re: Mega 2561 и MQTT
Я могу добавить обработку символа "=". По смыслу подходит. Например: 7=1;8=0
Re: Mega 2561 и MQTT
Это было бы великолепно - OH2 HTTP Binding заработал бы должным образом.
J3-SmartHome: MegaD + TinkerBoard + Home Assistant
Re: Mega 2561 и MQTT
Добавил в 4.19b8
Re: Mega 2561 и MQTT
Респект. Наконец, удалось интегрировать Мегу в OH2 нативными средствами (HTTP и MQTT binding). Большое спасибо!
J3-SmartHome: MegaD + TinkerBoard + Home Assistant
Re: Mega 2561 и MQTT
То есть получается в OH2 функционал как у биндинга https://github.com/Pshatsillo/openhab2M ... g/releases ?J0K3R писал(а):Респект. Наконец, удалось интегрировать Мегу в OH2 нативными средствами (HTTP и MQTT binding). Большое спасибо!
Re: Mega 2561 и MQTT
Да. К сожалению, биндинг мне настроить не удалось - наблюдалась нестабильная связь в направлении Mega -> OH2:MegadBinding. У меня логика управления светом смещена в сторону OH2, т.е. такая схема:empenoso писал(а):То есть получается в OH2 функционал как у биндинга https://github.com/Pshatsillo/openhab2M ... g/releases ?
Код: Выделить всё
возвратный_выключатель -> Mega:IN -(http)-> OH2 -(http)-> Mega:OUT -> лампочка
Код: Выделить всё
возвратный_выключатель -> Mega:IN -(mqtt)-> OH2 -(http)-> Mega:OUT -> лампочка
J3-SmartHome: MegaD + TinkerBoard + Home Assistant
Re: Mega 2561 и MQTT
Простота интеграции это ведь плюс, поддержка mqtt есть у многих проектов, потому и девайсы с его поддержкой сейчас актуальныAndrey_B писал(а):J0K3R писал(а):Простота интеграции - вопрос дискуссионный. Более высокая эффективность по сравнению с HTTP? Нет. Более высокая скорость обработки данных по сравнению с HTTP? Нет.
Re: Mega 2561 и MQTT
можно не убирать общий топик cmd, а в настройках каналов указать как взаимодействовать с этим топиком, галочки "подписаться", "публиковать", и отдельно настройка стороннего топикаОтдельные топики на каждый OUT? Сейчас, чтобы включить несколько портов, нужно отправить в топик "cmd" данные вида "7:1;8:1;9:1". Вы предлагаете отправлять данные отдельными пакетами?