Перейти к содержанию

Навигация

MQTT: различия между версиями

Нет описания правки
Строка 23: Строка 23:
#Драйвер wb-mqtt-serial получает это уведомление по RS-485 и публикует в очереди сообщение:<pre>/devices/wb-mrm2_130/controls/Relay 1 1</pre>Оно значит, что первое реле на устройстве WB-MRM2 с адресом ''130'' находится (уже переведено) в состоянии логической единицы ("включено").
#Драйвер wb-mqtt-serial получает это уведомление по RS-485 и публикует в очереди сообщение:<pre>/devices/wb-mrm2_130/controls/Relay 1 1</pre>Оно значит, что первое реле на устройстве WB-MRM2 с адресом ''130'' находится (уже переведено) в состоянии логической единицы ("включено").


== Принцип работы системы сообщений ==
== Принцип работы очереди сообщений ==
Система сообщений MQTT построена по следующему принципу:
Система сообщений MQTT построена по следующему принципу:
*есть иерархическая система "топиков" (как на обычных форумах в интернете)
*есть иерархическая система "топиков" (как на обычных форумах в интернете)
Строка 98: Строка 98:
- веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное состояние в "контрол".
- веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное состояние в "контрол".


 
==Работа с очередью сообщений==
Программа (демон), отвечающая за рассылку сообщений от одних клиентов другим, называется брокером сообщений. В Wiren Board используется брокер сообщений [http://mosquitto.org/ Mosquitto]. Фактически, все драйверы и веб-интерфейс передают свои сообщения именно демону-брокеру Mosquitto.
=== Управление устройствами из командной строки === <!--T:20-->
=== Управление устройствами из командной строки === <!--T:20-->


Строка 113: Строка 114:
команда включает реле 1 (канал "Relay_1" устройства "wb-gpio").
команда включает реле 1 (канал "Relay_1" устройства "wb-gpio").


 
==== Очистка очереди сообщений ==== <!--T:26-->
 
 
 
 
=== Отображение устройств в системе сообщений === <!--T:24-->
 
<!--T:25-->
Логика топиков, соответствующих разным устройствам и их параметрам, основывается на так называемых Conventions. Список актуальных типов здесь: [https://github.com/contactless/homeui/blob/contactless/conventions.md]
 
 
 
Wiren Board использует набор соглашений по работе с MQTT. Эти соглашения описаны ниже. Полное каноническое описание соглашений Wiren Board смотрите в документе [https://github.com/contactless/homeui/blob/contactless/conventions.md Wiren Board MQTT Conventions].
 
<!--T:4-->
Архитектура ПО Wiren Board:
 
<!--T:5-->
[[File:MQTT.png | thumb | 600px]]
 
<!--T:6-->
Специальные "драйверы" (отдельный для каждой функции контроллера и внешнего устройства) транслируют данные с устройства в очередь в виде сообщений специального формата. Сообщения из этой очереди получает веб-интерфейс и движок правил. Они же могут добавлять туда новые сообщения - например, "включить реле" после получения нажатия в интерфейсе или выполнения нужных условий в каком-нибудь правиле.
 
 
 
Программа (демон), отвечающая за рассылку сообщений от одних клиентов другим, называется брокером сообщений. В Wiren Board используется брокер сообщений [http://mosquitto.org/ Mosquitto].
 
[[Веб-интерфейс Wiren Board| Веб-интерфейс]] работает также через систему сообщений MQTT - нажатие кнопки в интерфейсе вызывает отправку сообщения в очередь (а именно брокеру сообщений); изменение показания датчика, поступившее в систему сообщений, тут же вызывает изменения транслируется в веб-интерфейс.
 
'''Пример:''' если на цифровой вход Wiren Board подан сигнал, драйвер ''wb-homa-gpio'' создаёт сообщение вида .......... - "на входе ... появился сигнал". Веб-интерфейс, который тоже подключён к системе сообщений, получает это сообщение и "зажигает" индикатор в веб-интерфейсе.
 
== Очистка сообщений MQTT == <!--T:26-->


<!--T:27-->
<!--T:27-->
Строка 151: Строка 121:


<!--T:28-->
<!--T:28-->
Для удаления топиков можно воспользоваться командой mqtt-delete-retained.
Для удаления топиков можно воспользоваться командой ''mqtt-delete-retained''.


<!--T:29-->
<!--T:29-->
Строка 171: Строка 141:
<!--T:33-->
<!--T:33-->
- удалит все топики, начинающиеся на '/devices/noolite_tx_1234/'
- удалит все топики, начинающиеся на '/devices/noolite_tx_1234/'
=== Работа с очередью из внешних программ === <!--T:34-->
<!--T:35-->
Если вы разрабатываете собственное ПО для Wiren Board, взаимодействовать с его аппаратными ресурсами лучше всего через очередь сообщений - ваша программа передаёт сообщение в очередь, драйвер управляет устройством, и вашей программе не нужно напрямую взаимодействовать с устройством на низком уровне.
Для того, чтобы отправлять сообщения MQTT, для многих языков программирования есть библиотеки. Примеры:
* Python - [https://github.com/contactless/mqtt-tools]
* C - [http://mosquitto.org/man/libmosquitto-3.html]
=== Отображение устройств в системе сообщений === <!--T:24-->
<!--T:25-->
Логика топиков, соответствующих разным устройствам и их параметрам, основывается на так называемых Conventions. Список актуальных типов здесь: [https://github.com/contactless/homeui/blob/contactless/conventions.md]






Wiren Board использует набор соглашений по работе с MQTT. Эти соглашения описаны ниже. Полное каноническое описание соглашений Wiren Board смотрите в документе [https://github.com/contactless/homeui/blob/contactless/conventions.md Wiren Board MQTT Conventions].


== Использование данных внешними программами == <!--T:34-->
<!--T:4-->
Архитектура ПО Wiren Board:


<!--T:35-->
<!--T:5-->
Для многих языков программирования есть библиотеки MQTT. Примеры программ:
[[File:MQTT.png | thumb | 600px]]
* Python - [https://github.com/contactless/mqtt-tools]
 
* C - [http://mosquitto.org/man/libmosquitto-3.html]
<!--T:6-->
Специальные "драйверы" (отдельный для каждой функции контроллера и внешнего устройства) транслируют данные с устройства в очередь в виде сообщений специального формата. Сообщения из этой очереди получает веб-интерфейс и движок правил. Они же могут добавлять туда новые сообщения - например, "включить реле" после получения нажатия в интерфейсе или выполнения нужных условий в каком-нибудь правиле.
 
 
 
 
 
[[Веб-интерфейс Wiren Board| Веб-интерфейс]] работает также через систему сообщений MQTT - нажатие кнопки в интерфейсе вызывает отправку сообщения в очередь (а именно брокеру сообщений); изменение показания датчика, поступившее в систему сообщений, тут же вызывает изменения транслируется в веб-интерфейс.
 
'''Пример:''' если на цифровой вход Wiren Board подан сигнал, драйвер ''wb-homa-gpio'' создаёт сообщение вида .......... - "на входе ... появился сигнал". Веб-интерфейс, который тоже подключён к системе сообщений, получает это сообщение и "зажигает" индикатор в веб-интерфейсе.