Ibm cloud 使用节点red订阅不在bluemix中工作的MQTT

Ibm cloud 使用节点red订阅不在bluemix中工作的MQTT,ibm-cloud,mqtt,iot,node-red,Ibm Cloud,Mqtt,Iot,Node Red,我在MQTT通信中遇到问题。我不熟悉MQTT和IOT。我使用IBMBlueMix作为云服务。我可以使用设备类型上的节点red MQTT node发布数据。但我无法订阅该设备和主题。每当我尝试订阅时,它就会断开连接。 谢谢 在此图片中,我正在将状态事件发布到设备 在这张图片中,我正在云中获取已发布的数据 但是,如下所示,当我尝试订阅时,它会断开连接 PS:我使用的是同一个客户端ID。我不知道如何对同一设备类型使用不同的客户端ID。发布时,您是作为设备发布的,并使用设备客户端ID连接。设备无法

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

在此图片中,我正在将状态事件发布到设备

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

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


PS:我使用的是同一个客户端ID。我不知道如何对同一设备类型使用不同的客户端ID。

发布时,您是作为设备发布的,并使用设备客户端ID连接。设备无法订阅状态事件,因此您应该作为应用程序订阅。它将与一个ID连接,例如:orgId:appId

我将此信息添加为答案,因为它太长,无法作为注释。您可以从Watson IOT平台服务仪表板生成API密钥

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

组织($org)

API密钥($Key)

API令牌($Token)

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

要生成API密钥和令牌,请启动Watson IoT服务仪表板。从左侧边栏中选择“应用程序”,然后在顶部菜单中选择“API密钥”,并选择右上角的“生成API密钥”按钮。平台将为您提供一对需要记录的“API密钥”和“身份验证令牌”。
见截图

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*

如果您共享您的代码(或节点流),我们可以提供更多帮助。还显示您在断开连接时收到的错误/警告。确保您的订阅未使用与发布相同的clientid。除非它们都是同一段代码,否则请确保不要进行两次连接。谢谢您的回复。如何使用其他clientid而不是设备客户端id。我在这一点上感到困惑。根据bluemix文档,clientid应该是:d:orgId:deviceType:deviceId,我得到的错误是代码:8,消息:AMQJS0008I Socket closed。如果是相同的连接,它可以是相同的clientid。您不能同时对两个不同的连接使用同一个clientID。这只是猜测。这一切都可以用Q原样来完成。您应该包括您的代码或节点红流以及订阅时收到的消息。谢谢您的回复。从哪里可以找到appId?我有三个:组织($org)、API密钥($Key)、API令牌($Token)。但仍然对“appId”感到困惑。在这种情况下,客户端Id的$appId是多少?API密钥现在应该显示在仪表板上。它是一个for应用程序、iot服务的6个字符组织以及通过仪表板示例创建API密钥时生成的唯一标识符的串联-a:xxxxxx:1234567890您是否使用MQTTlens进行测试?如果您提供6个字符的组织,我可以检查日志以查看可能发生的错误。我找到了您的组织并检查了日志,并查看了“客户端ID被重用”的错误。因此,问题可能是由于使用相同的客户端ID发布和订阅。因此,使用应用程序订阅将有助于解决问题,或者您可以尝试创建另一个设备ID并使用该ID进行订阅。-现在我知道你的主题是cmd,所以设备应该能够订阅它。我正在使用Mqtt helper进行测试..现在我只是用一个设备id发布,用另一个设备id订阅。它正在订阅,但没有获取数据。。。。我知道Api密钥和令牌,但我仍然不了解$appID。我想我无法正确地向您解释我的问题..MQTT客户机ID:a:$org:$appId…对我来说它将是。。。答:6nxnpd:“哪个appid?”