使用 node-red 订阅 MQTT 在 bluemix 中不工作

Subscribe MQTT not working in bluemix using node-red

我在 MQTT 通信中遇到问题。我是 MQTT 和 IOT 的新手。我正在使用 IBM Bluemix 作为云服务。我可以在设备类型上使用 node-red MQTT 节点发布数据。但我无法订阅该设备和主题。每当我尝试订阅时,它都会断开连接。 谢谢

在这张图片中,我正在向设备发布状态事件

这张图中,我正在获取云端发布的数据

但是,如下所示,当我尝试订阅时,它断开了连接

PS: 我正在使用相同的客户端 ID。我不知道如何为相同的设备类型使用不同的客户端 ID。

发布时,您是作为设备发布并与设备客户端 ID 连接。设备无法订阅状态事件,因此您应该作为应用程序订阅。它将连接到一个 ID,例如 A:orgId:appId https://console.ng.bluemix.net/docs/services/IoT/applications/mqtt.html#mqtt

我将此信息添加为答案,因为它太长而无法作为评论。您从 Watson IOT Platform 服务仪表板生成 API 密钥。

连接应用程序时需要 3 个属性:

组织($org)

API 密钥 ($key)

API 代币 ($token)

应用程序需要 API 密钥才能连接到组织。注册 API 密钥时,将生成一个必须与该 API 密钥一起使用的令牌。

要生成您的 API 密钥和令牌,请启动您的 Watson IoT 服务仪表板。 Select 左侧栏中的“Apps”,然后是顶部菜单中的“API Keys”,然后选择右上角的“Generate API Key”按钮。平台会为您提供一对“API Key”和“Authentication Token”,您需要记下。
见截图。

API 键看起来像这样:a:$org:a84ps90Ajs

令牌看起来像这样:MP$08VKz!8rXwnR-Q*

使用 API 密钥建立 MQTT 连接时,以下规则适用:

MQTT 客户端 ID:a:$org:$appId MQTT 用户名必须是 API 键:a:$org:a84ps90Ajs MQTT 密码必须是身份验证令牌:MP$08VKz!8rXwnR-Q*