2

如果我们必须使用 Watson IoT 平台提供的 auth-token 将事件发布到云并同时在设备上订阅 MQTT 消息,那么(在设备上)要遵循的方法是什么?当我们在设备已经订阅了一些主题的情况下尝试发布到一个主题时,连接就会丢失。为了同时发布和订阅,应该遵循什么正确的方法?MQTT连接的详细信息如下,

Client id- <d:orgId:deviceType:deviceId>
Username - use-token-auth
Password - <platform-generated-token>
4

1 回答 1

2

根据文档,Watson IoT Platform 中的设备可以发送事件订阅来自平台的命令。请注意,设备只能订阅命令,不能订阅事件。你能确保使用的主题是正确的吗?

活动

事件是设备将数据发布到 Watson IoT Platform(和应用程序)的机制。设备控制其消息的内容并为每个发送的事件分配一个名称。用于发布事件的以下 MQTT 主题,

iot-2/evt/event_id/fmt/format_string

在哪里

  • event_id是事件的 ID,例如状态。事件 ID 可以是任何在 MQTT 中有效的字符串。如果未使用通配符,订阅者应用程序必须在其订阅主题中使用此字符串来接收在其主题上发布的事件。
  • format_string是事件负载的格式,例如 json。格式可以是任何在 MQTT 中有效的字符串。如果未使用通配符,订阅者应用程序必须在其订阅主题中使用此字符串来接收在其主题上发布的事件。

命令

命令是应用程序与设备通信的机制。只有应用程序可以发送命令,并且命令被发送到特定的设备。设备必须确定在收到任何给定命令后要采取的行动。2 设备可以订阅以下格式的命令主题:

iot-2/cmd/command_id/fmt/format_string

在哪里

  • command_id是命令的 ID,例如 update。命令 ID 可以是任何在 MQTT 协议中有效的字符串。如果不使用通配符,设备必须在其订阅主题中使用此字符串来接收在其主题上发布的命令。
  • format_string是命令载荷的格式,例如 json。格式可以是任何在 MQTT 协议中有效的字符串。如果不使用通配符,设备必须在其订阅主题中使用此字符串来接收在其主题上发布的命令。

有关设备与 Watson IoT Platform 的连接的更多信息,请参阅文档的这一部分。

我们编写了分步指南,展示如何使用 Watson 的 Java 客户端库将设备连接到 Watson IoT Platform、发布事件、从应用程序订阅命令、订阅应用程序中的事件、从应用程序发布命令到设备IoT 平台,可在此处获得 - IBM Watson IoT Platform 的 Java 客户端库

此外,您还可以找到多种语言的示例。有关可用库和示例的列表,请参阅此文档

于 2016-09-01T02:05:07.427 回答