2

对于 Node-RED 应用程序,我使用 MQTT 与设备通信。我需要使用两个“主题”吗?:

  • 设备发布信息的一个主题,供 Node-Red 应用程序订阅。
  • Node-RED 应用程序要发布的一个主题(以及要订阅的设备)。

或者,设备和 Node-RED 应用程序是否可以将不同的信息(发布和订阅)发布到同一主题?

例如:如果设备既要发布温度数据,又要订阅同一个主题以从 Bluemix 中的 Node-RED 获取信息,这会导致问题吗?我要交换两种类型的数据:

  • 该设备将发布温度。
  • Node-RED 应用程序将发布“用户请求”信息,告知设备何时报告温度。
4

1 回答 1

2

您应该使用两个不同的主题。
连接到 IoT Foundation 服务的应用程序(例如 Node-RED)向设备发布命令并订阅设备事件。

设备将订阅命令主题,应用程序 (Node-RED) 订阅事件主题。

您的设备将发布事件——例如温度。因此,设备应该以 iot-2/evt/event_id/fmt/format_string 格式将该事件发布到主题,并且您的 Node-RED 应用程序将向不同主题发布命令。

例如...您可以像这样发布温度:

iot-2/evt/temperature/fmt/json{ d: { temp: 25 } } 并将命令发布到设备,如下所示:iot-2/cmd/sendTemperature/fmt/json

设备将订阅命令主题,应用程序 (Node-RED) 订阅事件主题。具体来说,当您发布事件时,您发布到主题 iot-2/evt/event_id/fmt/format_string 并且设备通过订阅主题 iot-2/cmd/command_id/fmt/format_string 来订阅命令

请参阅 MQTT 和 IoT 的在线文档

于 2015-09-21T18:25:58.557 回答