MQTT: различия между версиями
(Подготовка страницы к переводу) |
|||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
'''MQTT''' - очередь сообщений, использующаяся в Wiren Board. Большая часть встроенных функций контроллера (АЦП, реле, транзисторный выход, watchdog) и внешних совместимых устройств транслируются туда в виде сообщений и реагируют на управляющие сообщения оттуда. [[Wiren Board 4:Веб-интерфейс | Веб-интерфейс]] работает также через систему сообщений MQTT - нажатие кнопки в интерфейсе вызывает отправку сообщения сообщения в MQTT-брокер, изменение показания датчика, поступившее в систему сообщений, тут же транслируется в веб-интерфейс. | '''MQTT''' - очередь сообщений, использующаяся в Wiren Board. Большая часть встроенных функций контроллера (АЦП, реле, транзисторный выход, watchdog) и внешних совместимых устройств транслируются туда в виде сообщений и реагируют на управляющие сообщения оттуда. [[Wiren Board 4:Веб-интерфейс | Веб-интерфейс]] работает также через систему сообщений MQTT - нажатие кнопки в интерфейсе вызывает отправку сообщения сообщения в MQTT-брокер, изменение показания датчика, поступившее в систему сообщений, тут же транслируется в веб-интерфейс. | ||
Базовая информация по MQTT - [http://en.wikipedia.org/wiki/MQTT статья] на википедии. Используемый демон - брокер сообщений [http://mosquitto.org/ Mosquitto]. | Базовая информация по MQTT - [http://en.wikipedia.org/wiki/MQTT статья] на википедии. Используемый демон - брокер сообщений [http://mosquitto.org/ Mosquitto]. | ||
== Краткая схема работы == | == Краткая схема работы == | ||
Архитектура ПО Wiren Board: | Архитектура ПО Wiren Board: | ||
[[Файл:MQTT.png | thumb | 600px]] | [[Special:MyLanguage/Файл:MQTT.png | thumb | 600px]] | ||
Специальные "драйверы" (отдельный для каждой функции контроллера и внешнего устройства) транслируют данные с устройства в очередь в виде сообщений специального формата. Сообщения из этой очереди получает веб-интерфейс и движок правил. Они же могут добавлять туда новые сообщения - например, "включить реле" после получения нажатия в интерфейсе или выполнения нужных условий в каком-нибудь правиле. | Специальные "драйверы" (отдельный для каждой функции контроллера и внешнего устройства) транслируют данные с устройства в очередь в виде сообщений специального формата. Сообщения из этой очереди получает веб-интерфейс и движок правил. Они же могут добавлять туда новые сообщения - например, "включить реле" после получения нажатия в интерфейсе или выполнения нужных условий в каком-нибудь правиле. | ||
== Принцип работы системы сообщений == | == Принцип работы системы сообщений == | ||
MQTT построена по следующему принципу: есть иерархическая система "топиков" (прямо как на обычных форумах), куда клиенты могут писать сообщения, и откуда могут читать. Чтобы было удобно следить за изменениями нужного топика (например, температуры), на него можно "подписаться". | MQTT построена по следующему принципу: есть иерархическая система "топиков" (прямо как на обычных форумах), куда клиенты могут писать сообщения, и откуда могут читать. Чтобы было удобно следить за изменениями нужного топика (например, температуры), на него можно "подписаться". | ||
=== Пример сообщения === | === Пример сообщения === | ||
Вот пример сообщения от драйвера датчика 1-Wire (драйвер регулярно опрашивает датчик и отправляет в виде сообщений значения с него): | Вот пример сообщения от драйвера датчика 1-Wire (драйвер регулярно опрашивает датчик и отправляет в виде сообщений значения с него): | ||
<pre> | <pre> | ||
Строка 24: | Строка 32: | ||
* ''/28-000004a7d3f9'' - непосредственно сам "контрол" - топик, куда записывается значение с датчика. Его название совпадает с адресом 1-Wire датчика (аппаратно закладывается в каждый датчик на заводе), | * ''/28-000004a7d3f9'' - непосредственно сам "контрол" - топик, куда записывается значение с датчика. Его название совпадает с адресом 1-Wire датчика (аппаратно закладывается в каждый датчик на заводе), | ||
* ''24.687000'' - значение температуры. Это и есть содержание сообщения, отправленного драйвером 1-Wire в топик. | * ''24.687000'' - значение температуры. Это и есть содержание сообщения, отправленного драйвером 1-Wire в топик. | ||
=== Пример подписки === | === Пример подписки === | ||
Клиенты, которые хотят следить за значением температуры, "подписываются" на этот топик, и им приходят все новые сообщения - меняющиеся значения температуры. Один из таких клиентов - веб-интерфейс. | Клиенты, которые хотят следить за значением температуры, "подписываются" на этот топик, и им приходят все новые сообщения - меняющиеся значения температуры. Один из таких клиентов - веб-интерфейс. | ||
Строка 49: | Строка 59: | ||
Полное описание системы топиков и подписок: [http://mosquitto.org/man/mqtt-7.html]. | Полное описание системы топиков и подписок: [http://mosquitto.org/man/mqtt-7.html]. | ||
=== Пример сообщения от веб-интерфейса === | === Пример сообщения от веб-интерфейса === | ||
Подпишемся на сообщения о состоянии встроенного реле Wiren Board: | Подпишемся на сообщения о состоянии встроенного реле Wiren Board: | ||
<pre> | <pre> | ||
Строка 68: | Строка 80: | ||
</pre> | </pre> | ||
- веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное состояние в "контрол". | - веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное состояние в "контрол". | ||
=== Управление устройствами из командной строки === | === Управление устройствами из командной строки === | ||
Строка 79: | Строка 92: | ||
команда включает реле 1 (канал "Relay_1" устройства "wb-gpio"). | команда включает реле 1 (канал "Relay_1" устройства "wb-gpio"). | ||
Строка 85: | Строка 99: | ||
=== Отображение устройств в системе сообщений === | === Отображение устройств в системе сообщений === | ||
Логика топиков, соответствующих разным устройствам и их параметрам, основывается на так называемых Conventions. Список актуальных типов здесь: [https://github.com/contactless/homeui/blob/contactless/conventions.md] | Логика топиков, соответствующих разным устройствам и их параметрам, основывается на так называемых Conventions. Список актуальных типов здесь: [https://github.com/contactless/homeui/blob/contactless/conventions.md] | ||
== Очистка сообщений MQTT == | == Очистка сообщений MQTT == | ||
Строка 107: | Строка 123: | ||
- удалит все топики, начинающиеся на '/devices/noolite_tx_1234/' | - удалит все топики, начинающиеся на '/devices/noolite_tx_1234/' | ||
== Использование данных внешними программами == | == Использование данных внешними программами == | ||
Для многих языков программирования есть библиотеки MQTT. Примеры программ: | Для многих языков программирования есть библиотеки MQTT. Примеры программ: | ||
* Python - [https://github.com/contactless/mqtt-tools] | * Python - [https://github.com/contactless/mqtt-tools] | ||
* C - [http://mosquitto.org/man/libmosquitto-3.html] | * C - [http://mosquitto.org/man/libmosquitto-3.html] | ||
== Система правил == | == Система правил == | ||
Вы можете написать свои правила на языке Javascript. Подробнее смотрите [https://github.com/contactless/wb-rules] | Вы можете написать свои правила на языке Javascript. Подробнее смотрите [https://github.com/contactless/wb-rules] | ||
</translate> |