首页 > 解决方案 > 使用 MQTT 响应创建单个 Json 对象

问题描述

我有一个 python 代码将 2 个值发送到同一个通道。“传感器/X”和“传感器/Y”,我想将它们合并成一个 Json 对象 {X:传感器/X 的值,Y:传感器/Y 的值}。

我已经完成了这个节点:

[{"id":"6497f22a.847fd4","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"7843571.5b8c028","type":"debug","z":"6497f22a.847fd4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":650,"y":600,"wires":[]},{"id":"400510c2.75256","type":"json","z":"6497f22a.847fd4","name":"","property":"payload","action":"","pretty":false,"x":410,"y":600,"wires":[["7843571.5b8c028"]]},{"id":"3af33205.2fc486","type":"inject","z":"6497f22a.847fd4","name":"","topic":"","payload":"{\"topic\":\"tele/Mysonoff_TH10/SENSOR\",\"payload\":\"{\\\"Time\\\":\\\"2018-12-21T16:51:09\\\",\\\"AM2301\\\":{\\\"Temperature\\\":69.4,\\\"Humidity\\\":33.9},\\\"TempUnit\\\":\\\"F\\\"}\",\"qos\":0,\"retain\":false,\"_topic\":\"tele/Mysonoff_TH10/SENSOR\",\"_msgid\":\"dae7f7bc.36e5f8\"}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":880,"y":1360,"wires":[[]]},{"id":"fd6553d8.f5fda","type":"mqtt in","z":"6497f22a.847fd4","name":"","topic":"sensor/#","qos":"2","datatype":"auto","broker":"2ad9c0c8.618a48","x":230,"y":600,"wires":[["400510c2.75256"]]},{"id":"2ad9c0c8.618a48","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

但它不起作用..我可能确定我必须在 javacript 中编写一个函数来执行此操作,以便指定如何编写 json,但此时我有点迷失了..

谢谢

标签: mqttnode-red

解决方案


您可以在手动模式下使用连接节点来执行此操作。

如下设置加入节点:

在此处输入图像描述

加入节点将使用传入的主题作为输出对象中的键

这将产生一条带有如下负载的消息:

{
   "sensor/X": 4,
   "sensor/Y": 2
}

然后,您可以根据需要使用更改节点重命名密钥。


推荐阅读