MQTT 操作-动态主题
动态设置 MQTT 发布消息主题
问题背景
动态设置 MQTT 发布消息主题
解决方案
在将消息发送到 写入 MQTT 节点之前,设置主题消息属性。
示例

示例JSON
[{"id":"73abc692.bb3838","type":"mqtt out","z":"09f64d8a7f751be5","name":"sensors/kitchen/temperature","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"407a01e4.6b637","x":580,"y":520,"wires":[]},{"id":"ef5a01ee.a940d","type":"inject","z":"09f64d8a7f751be5","name":"kitchen temperature","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"sensors/kitchen/temperature","payload":"22","payloadType":"num","x":290,"y":520,"wires":[["73abc692.bb3838"]]},{"id":"0b9f49e5eb7f5b61","type":"mqtt in","z":"09f64d8a7f751be5","name":"订阅 MQTT","topic":"sensors/kitchen/temperature","qos":"2","datatype":"auto-detect","broker":"407a01e4.6b637","nl":false,"rap":true,"rh":0,"inputs":0,"x":250,"y":620,"wires":[["fd4ccdf355033005"]]},{"id":"fd4ccdf355033005","type":"debug","z":"09f64d8a7f751be5","logName":"日志输出","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","logLevel":"info","dataType":"field","format":"handlebars","syntax":"mustache","template":"输出日志: payload 值为 {{payload}}","output":"str","x":590,"y":620,"wires":[]},{"id":"407a01e4.6b637","type":"mqtt-broker","name":"数字工厂","broker":"172.16.0.3","port":"1883","clientid":"ocs_controller_sensors_example","autoConnect":true,"usetls":false,"protocolVersion":"5","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]
运行结果
在这个例子中,注入 节点设置了 msg.topic,但并不总是需要使用 注入 节点来执行此操作。通常在业务中,可以根据接口请求携带的参数或者是预设一组发布主题,根据具体的业务条件使用 函数 节点或者 调整消息属性 等节点来动态设置

提示
确保 写入 MQTT 配置对话框中的主题字段留空以使用主题消息属性。
