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>