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'' находится (уже переведено) в состоянии логической единицы ("включено").


== Принцип работы системы сообщений == <!--T:7-->
== Принцип работы системы сообщений ==
Система сообщений MQTT построена по следующему принципу:
*есть иерархическая система "топиков" (как на обычных форумах в интернете)
*в эти топики клиенты (в случае Wiren Board это драйверы устройств и веб-интерфейс) могут писать сообщения и читать оттуда
*чтобы следить за изменениями нужного топика (например, температуры на датчике), клиент может на него "подписаться" - тогда он получит все сообщения в данном топике.
=== Пример сообщения ===


<!--T:8-->
Вот пример сообщения от драйвера температурного датчика 1-Wire из примера выше:
MQTT построена по следующему принципу: есть иерархическая система "топиков" (прямо как на обычных форумах), куда клиенты могут писать сообщения, и откуда могут читать. Чтобы было удобно следить за изменениями нужного топика (например, температуры), на него можно "подписаться".
 
=== Пример сообщения === <!--T:9-->
 
<!--T:10-->
Вот пример сообщения от драйвера датчика 1-Wire (драйвер регулярно опрашивает датчик и отправляет в виде сообщений значения с него):
<pre>
<pre>
/devices/wb-w1/controls/28-000004a7d3f9 24.687000
/devices/wb-w1/controls/28-0115a48fcfff 23.25
</pre>
</pre>
Часть до пробела - название топика, после - само сообщение.
Часть до пробела - название топика, после - само сообщение.
Здесь:
Название топика состоит из вложенных друг в друга "подтопиков":
* ''/devices'' - коренной топик для всех "устройств" - как встроенных модулей Wiren Board (реле, АЦП, ...), так и подключённых внешних,
* ''/devices'' - коренной топик для всех "устройств" - как встроенных функций Wiren Board (цифровые, АЦП, ...), так и подключённых внешних (например, модулей реле)
* ''/wb-w1'' - подтопик, который наполняется драйвером 1-Wire,
* ''/wb-w1'' - подтопик, который наполняется драйвером 1-Wire
* ''/controls'' - подтопик, который есть у всех устройств - именно в него записываются все их параметры, которые меняются ("включено-выключено", значение датчика, ...),
* ''/controls'' - подтопик, который есть у всех устройств - именно в него записываются все их параметры, которые меняются ("включено-выключено", значение датчика, ...)
* ''/28-000004a7d3f9'' - непосредственно сам "контрол" - топик, куда записывается значение с датчика. Его название совпадает с адресом 1-Wire датчика (аппаратно закладывается в каждый датчик на заводе),
* ''/28-0115a48fcfff'' - непосредственно сам "канал" ("контрол)" - топик, куда записывается значение с датчика. Его название совпадает с адресом 1-Wire датчика на шине.
* ''24.687000'' - значение температуры. Это и есть содержание сообщения, отправленного драйвером 1-Wire в топик.
Содержание сообщения:
 
* ''23.25'' - значение температуры


=== Пример подписки === <!--T:11-->
=== Пример подписки === <!--T:11-->