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

2504 байта добавлено ,  9 лет назад
Строка 50: Строка 50:
Полное описание системы топиков и подписок: http://mosquitto.org/man/mqtt-7.html.
Полное описание системы топиков и подписок: http://mosquitto.org/man/mqtt-7.html.


=== Ещё один пример сообщений ===
=== Пример сообщения от веб-интерфейса ===
Подпишемся на сообщения о состоянии встроенного реле Wiren Board:
<pre>
root@wirenboard:~# mosquitto_sub -t '/devices/wb-gpio/controls/Relay_1/#' -v
/devices/wb-gpio/controls/Relay_1/meta/type switch
/devices/wb-gpio/controls/Relay_1/on 0
/devices/wb-gpio/controls/Relay_1 0
</pre>
Тут стоит отметить, что MQTT сохраняет часть сообщений (а именно с флагом retained) вечно, поэтому после подписки вы получите даже те сообщения, которые были отправлен раньше, чем вы подписались.
 
Реле управляется драйвером ''wb-gpio'' (этот драйвер также управляет транзисторными выходами и всем, что в электрическом смысле управляется GPIO). У него есть соответствующий топик-"контрол" ''Relay_1''. У него самого есть значение - ''0'' (реле выключено), и есть два подтопика. Один из них - служебный: в ''/meta/type'' записан тип "контрола". Здесь он ''switch'' - выключатель. Второй подтопик ''/on'' - интереснее: в него клиенты пишут то состояние, в которое они хотят установить реле. Заметим, что оно может не совпадать с тем состоянием, в котором реле находится, так как драйвер реле ведёт себя следующим образом: при получении сообщения в топик ''/devices/wb-gpio/controls/Relay_1/on'' он физически устанавливает его на реле, а лишь затем записывает новое значение реле в топик ''/devices/wb-gpio/controls/Relay_1''.
 
Например, если мы сейчас нажмем на реле в веб-интерфейсе (переключим его состояние), то получим новые сообщения:
<pre>
/devices/wb-gpio/controls/Relay_1/on 1
/devices/wb-gpio/controls/Relay_1/on 1
/devices/wb-gpio/controls/Relay_1 1
/devices/wb-gpio/controls/Relay_1 1
</pre>
- веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное состояние в "контрол".


== Отображение устройств в системе сообщений ==
== Отображение устройств в системе сообщений ==