NEWS
Драйвер Mqtt + Arduino
-
Что то я не могу понять логику работы этого MQTT…
Я правильно понимаю, что сервер iobroker у нас как брокер, ардуина - клиент.
Ардуина создает топик (в iobroker появляется переменная) и передает (публикует) в него через конкретный интервал времени значение.
Т.е. инициатива на обновление значения переменной исходит от Ардуины.
ioBroker может проявить инициативу и запросить у ардуины значение? Получается что нет))
Блин, документации на русском еще фиг найдешь... `
Да помоему не очень протокол, получается адресации нет. драйвер шлет в сеть мусор, ардуниы его принимают, парсят и если что то прилетело определенной ардуине она обрабатывает распарсеный пакет.Я и говорю что это телеметрия, для датчиков да пойдет, датчик с переодичностью шлет в сеть свои данные и все.
Плюс если устройств куча, каждый клиент шлет свои данные, в сети появляется много мусора. Представь что постоянно что то летит по протоколу и ардуина его парсит, она только и будет все время обрабатывать пакеты прилетающие а на другие операции процессорного времени не найдется
-
Да. Спасибо. Я уже нашел…
Можешь попробовать:
cd /opt/iobroker npm install https://github.com/ioBroker/ioBroker.mqtt/tarball/master ```` `Обновил, изменений н езаметил. в брокере меняю переменную через vis в протокол ничего не шлется. Шлется только при перезапуске драйвера и при коннекте к клиенту
-
Появилась куча непонятных переменных
266_21323213123123213.png -
Да помоему не очень протокол, получается `
Да не. нормальный протокол, все больше мне начинает нравится, надо просто разобраться…
@instalator:адресации нет. драйвер шлет в сеть мусор, ардуниы его принимают, парсят и если что то прилетело определенной ардуине она обрабатывает распарсеный пакет. `
Скетч ардуины выложите пожалуйста… Ато не понятно кто кому как что шлет))
@instalator:Я и говорю что это телеметрия, для датчиков да пойдет, датчик с переодичностью шлет в сеть свои данные и все. `
Не, для управления тоже можно, примеров http://bogdanioanliviu.no-ip.org/part1-arduino-mqtt-web-socket-home-automation/, надо просто разобраться что куда.
@instalator:Плюс если устройств куча, каждый клиент шлет свои данные, в сети появляется много мусора. Представь что постоянно что то летит по протоколу и ардуина его парсит, она только и будет все время обрабатывать пакеты прилетающие а на другие операции процессорного времени не найдется `
Так вроде если клиент-ардуина подписана на топик - ей изменение параметра прилетит, если нет - то она ничего не получит…
Немного отсебятинки - последняя строка настройки адаптера не переведа - на английском.
-
Так вроде если клиент-ардуина подписана на топик - ей изменение параметра прилетит, если нет - то она ничего не получит…
. `
А как ардуина узнает что это именно ей прилетело? ей придется парсить весь мусор в протоколеКод переделывал отсюда http://habrahabr.ru/post/250833/
Хотя ты прав, если только этому ip шлется. Видимо драйвер просто не шлет изменение статуса.
-
А как ардуина узнает что это именно ей прилетело? ей придется парсить весь мусор в протоколе `
Есть такая настройка, clientID называется (ну или как назовешь сам), в этом https://github.com/knolleary/pubsubclient/blob/master/PubSubClient/examples/mqtt_auth/mqtt_auth.ino значение "arduinoClient" у нее.–----
Вот тут клиент айди, и аутентификация
client.connect("clientID", "mqtt_username", "mqtt_password");В примере с хабра - айди = "myhome-kitchen", аутентификации нет, может поэтому трабл?
В настройках MQTT-адаптера указывал логин/пароль?
client.connect("myhome-kitchen") -
Полностью поддерживаю electric69, что это очень простой и перспективный протокол.
> А как ардуина узнает что это именно ей прилетело? ей придется парсить весь мусор в протоколе
Ардуина должна подписатся на сообщения. Например subscribe("myhome/in/#"). Ты подписался?Советую в начале топика не писать "/", а сразу начинать с "myhome/…"
Есть обновление. Сильно переработанное. Там есть новая настройка : Send commands (not ack) too
Это если ты хочешь слать к ардуине статус... Хотя не понятно зачем. ;)
> Немного отсебятинки - последняя строка настройки адаптера не переведа - на английском.
Да забыл..Есть помощь по драйверу. Правда на аглицком. https://github.com/ioBroker/ioBroker.mqtt#configuration
-
Есть помощь по драйверу. Правда на аглицком. https://github.com/ioBroker/ioBroker.mqtt#configuration `
Спасибо! Это я уже читал, и еще все статьи в инете что есть на русском, пока полной картины в голове нет.Оф. англ. документанция… какая то размазанная чтоли - есть интересные моменты, но их собираю по крупицам.
Вот бы пару скетчей чтобы разобраться кого с кем публиковать/подписываться)))
Bluefox, в немецкой ветке форума нет примеров?
-
Есть обновление. Сильно переработанное. Там есть новая настройка : Send commands (not ack) too
Это если ты хочешь слать к ардуине статус… Хотя не понятно зачем. ;) `
Чото у меня даже что работало - перестало))https://github.com/knolleary/pubsubclient/blob/master/PubSubClient/examples/mqtt_auth/mqtt_auth.ino из библиотеки отлично создавал объект и переменную.
Теперь не создает, в логе тишина, просто старт и все…
-
Есть обновление. Сильно переработанное. Там есть новая настройка : Send commands (not ack) too
Это если ты хочешь слать к ардуине статус… Хотя не понятно зачем. ;) `
Чото у меня даже что работало - перестало))https://github.com/knolleary/pubsubclient/blob/master/PubSubClient/examples/mqtt_auth/mqtt_auth.ino из библиотеки отлично создавал объект и переменную.
Теперь не создает, в логе тишина, просто старт и все… `
Переключи на debug и обнови драйвер до 0.2.0 -
Переключи на debug `
Переключил, тишина, перезагружал ардуину - она в этом примере публикует только при старте - тишина…В логе одни inMem'мы...
UPD: О_о, версия 0.2.0 уже есть, блин, пока писал сообщение видимо))
50_pic_112.jpg -
Переключи на debug и обнови драйвер до 0.2.0 `
Обновился, объекты не создает, адаптер вылетает с ошибкой…Два раза пробовал (видно по логу)...
50_pic_113.jpg
50_pic_114.jpg -
Попробуй ещё раз обновится `
Что то появилось, спасибо!Буду мучить дальше…
50_pic_115.jpg
50_pic_116.jpg -
https://github.com/knolleary/pubsubclient/blob/master/PubSubClient/examples/mqtt_publish_in_callback/mqtt_publish_in_callback.ino из библиотеки тоже заработал (после обновления до 0.2.2)…
Однако, при рестарте ардуины возникает ошибочка - что она обозначает?
50_pic_118.jpg -
Как раз то, что ардуина перестартовала. Наверно надо сделать warn. `
Спасибо.–-------
Блин, ввязался я в этот MQTT))
Есть одна проблема, точнее костыль, точнее просто мысль...
1. Сервер с ioBroker выступает в качестве MQTT-брокера, вроде все понятно, хорошо.
Есть ардуина, к которой подключено 3 темп. датчика и по одному - влажности, давления, освещения. Ардуина получается MQTT-клиент.
Надо передавать эти параметры на сервер, к примеру, раз в минуту, ОК - пишем для ардуины скетч, который публикует раз в минуту данные в ioBroker.
Но, инициатива передачи данных исходит от ардуины, а в адаптере для CCU.IO инициатива была от сервера и период соответственно настраивался на сервере.
Если в описанной модели передачи захочется поменять период передачи - переписывай код ардуины (можно конечно сделать костыль - типа передавать интервал клиенту - подписать ардуину на этот параметр).
Если ардуина зависнет - данных нет, надо придумывать какой то таймер...
2. Еще один нюанс.
Предположим, ардуина управляет двумя лампочками, но работает тоже как MQTT-клиент.
Для нормального управления (обр. связь чтобы была), надо делать две переменные - in и out (по примеру http://contactless.ru/wiki/index.php/MQTT в контроллере WirenBoard)
Ардуина в out публикует состояние лампочки, а на переменную in подписывается. Как только in меняется - брокер извещает об изменении ардуину и та принимает решение - включать, отключать, ничего не делать.
Но есть косяк (хотя может так задумано), подписываясь на переменную in, ардуина не создает её в ioBroker.
Адаптер MQTT в ioBroker не умеет, я так понял, публиковать переменные…
Поэтому при старте/рестрате контроллер должен сначала опубликовать и in и out, потом работать в обычном режиме...
Такие мысли, вот...
P.S. Блин, засада, не могу нормально установить альтернативный MQTT-брокет на Windows-машину, у кого-ниб получилось заставить работать http://mosquitto.org/ из-под винды?
-
Вроде зашевелилось.
Светодиодом из vis управляет нормально, только вот если светодиод включить с ардуины брокер не реагирует хотя публикуется для него переменная.
-
Пока что как то так
266_mqtt.rar
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden