Node-RED:Рецепты/Как подписаться на топик: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
{{Node-RED/Панель перехода}}
{{Node-RED/Панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}
{{Черновик}}


=Как подписаться на топик<ref>[https://cookbook.nodered.org/mqtt/subscribe-to-topic cookbook.nodered.org - Subscribe to a topic]</ref>=
=Как подписаться на топик<ref>[https://cookbook.nodered.org/mqtt/subscribe-to-topic cookbook.nodered.org - Subscribe to a topic]</ref>=
Строка 20: Строка 17:
[[File:nodered_recipe_subscribe-to-topic.png|center]]
[[File:nodered_recipe_subscribe-to-topic.png|center]]


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
[{"id":"8024cb4.98c5238","type":"mqtt in","z":"eda2a949.74ea98","name":"","topic":"sensors/#","qos":"2","broker":"61de5090.0f5d9","x":240,"y":180,"wires":[["15d727dd.33e808"]]},{"id":"15d727dd.33e808","type":"debug","z":"eda2a949.74ea98","name":"","active":true,"console":"false","complete":"false","x":390,"y":180,"wires":[]},{"id":"61de5090.0f5d9","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]
[{"id":"8024cb4.98c5238","type":"mqtt in","z":"eda2a949.74ea98","name":"","topic":"sensors/#","qos":"2","broker":"61de5090.0f5d9","x":240,"y":180,"wires":[["15d727dd.33e808"]]},{"id":"15d727dd.33e808","type":"debug","z":"eda2a949.74ea98","name":"","active":true,"console":"false","complete":"false","x":390,"y":180,"wires":[]},{"id":"61de5090.0f5d9","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]
</syntaxhighlight>
</syntaxhighlight>

Текущая версия от 18:25, 14 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Как подписаться на топик[1]

Проблема

Вам нужно подписаться на сообщения, публикуемые в некий MQTT-топик.

Решение

Воспользуйтесь нодой «MQTT input», чтобы подписаться на топик и получать сообщения, публикуемые в него.

Пример

[{"id":"8024cb4.98c5238","type":"mqtt in","z":"eda2a949.74ea98","name":"","topic":"sensors/#","qos":"2","broker":"61de5090.0f5d9","x":240,"y":180,"wires":[["15d727dd.33e808"]]},{"id":"15d727dd.33e808","type":"debug","z":"eda2a949.74ea98","name":"","active":true,"console":"false","complete":"false","x":390,"y":180,"wires":[]},{"id":"61de5090.0f5d9","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

Разбор

Фильтр для поиска нужных топиков в настройках ноды «MQTT input» нельзя задать динамически, поэтому его нужно будет «захардкодить». Впрочем, эту проблему можно обойти.

Во-первых, можно задать название топика в переменной окружения вроде «$(MY_TOPIC)». Запустившись, среда выполнения Node-RED вставит значение этой переменной окружения в свойство «Topic» ноды. Соответственно, это позволяет поменять топик, но также требует перезапуска Node-RED для считывания нужного значения из переменной окружения.

Во-вторых, можно воспользоваться wildcard-символами «+» и «#». Первый позволяет найти топики одного уровня иерархии, а второй – всю под-иерархию топиков. Это позволяет получать сообщения от нескольких топиков при помощи всего одной ноды. Топик должен быть указан в свойстве «msg.topic» присылаемого сообщения.

См.также

Внешние ссылки