2485
правок
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 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> | |||
- веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное состояние в "контрол". | |||
== Отображение устройств в системе сообщений == | == Отображение устройств в системе сообщений == |