Device connected, but 'IBMIoT: Error: Connection refused: Not authorized' message keeps popping up

Device connected, but 'IBMIoT: Error: Connection refused: Not authorized' message keeps popping up

我正在 IBM Bluemix 中试验 IoT 服务,参加 a running MOOC at Coursera。我已经设置了试用帐户并成功注册了一些设备。我正在使用 Bluemix 中的以下简单 Node-RED 流程测试 Bluemix 和我的 Raspberry Pi 之间的连接:

Node-RED flow @ Bluemix

其中normalalert是各自字符串的简单注入节点,format message节点同样简单(returnsmsg,其中msg.payload = {'a' : {'indicator' : msg.payload}};IBM IoT节点如下:

senseHAT 设备已注册并成功连接到 Bluemix,如 Watson IoT Platform 仪表板所示:

从 Raspberry 方面,我设置了以下简单流程来捕获 Bluemix 中发出的 'commands'(normalalert):

Node-RED flow @ Raspberry Pi

all commands节点如下:

现在,虽然 'commands' normalalert 从 Bluemix 传递到我的 Raspberry,但我不断收到主题错误消息,如下所示(注意时间戳):

并且在 Node-RED 控制台中记录了一条类似的错误消息(每分钟一次):

Connection Error :: Error: Connection refused: Not authorized
9 Jun 19:41:19 - [error] IBMIoT: Error: Connection refused: Not authorized
Iotfclient is offline. Retrying connection
Connection was closed.

我想知道怎么可能,一方面让 'commands' 通过,另一方面每分钟收到一条错误消息,声称我没有连接,因为我的设备没有授权。

有什么想法吗?

旁注(以及可能有用的附加信息):

  1. 在 Watson IoT Platform 仪表板中按 'Refresh',senseHAT 设备显示为已断开连接;刷新整个页面(即从浏览器),它再次出现连接
  2. 无论我尝试过什么,我都无法连接上面显示的其他两个设备(b827eb0a0ee8b827eb5f5bbd)——我什至尝试在 Bluemix 中删除并重新注册它们...

根据我之前的评论,看起来这可能是网关和设备混淆的原因。从日志看来,您似乎更改了网关和设备之间的设备 ID 类型,在某些情况下,ID 为 b827eb0a0ee8 的设备已作为网关连接(在屏幕截图中仅显示为设备),随后断开连接,因为它尝试未经授权的操作(可能是尝试连接未注册的设备;即客户端 ID 混淆问题)。

暂时禁用设备的自动注册,因此如果设备不存在(因为客户端 ID 错误),则网关设备将断开连接。

我接受 Paul 的回答是正确的,因为它帮助我弄清楚发生了什么,但它相当神秘。以下是实际情况以及补救措施。

如果(甚至 不小心 )您尝试错误地将设备连接为网关(反之亦然),整个事情就会变得一团糟...:[=​​11= ]

  1. 您无法重新连接 device/gateway,即使您返回并更正凭据(即您的 device/gateway 注定失败...)
  2. 一旦发生这样的事情(意外...),所有你其他注册的设备,虽然都可以成功连接到Bluemix,但给出我描述的错误信息在我上面的问题中(包括 Node-RED 控制台中的状态,永远报告 Connection was closed.
  3. 重新启动您的 Bluemix 应用程序无效

因此,一旦由于某种原因发生了这样的 mistake/accident,补救措施 就是停止并重新启动您的本地 Node-RED 服务(即在我的情况下我 Raspberry Pi 中的那个 运行).

我希望这有助于平台的未来改进 - 这当然是一种意外行为。

我有同样的行为。只是重新启动本地 Node-RED 没有帮助。重新启动后,我删除了 wiotp-credentials 节点,重新创建它,部署流程,并最终连接了我的网关。