-3

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

Node-RED 流 @ Bluemix在此处输入图像描述

wherenormalalert是各个字符串的简单注入节点,format message节点同样简单(返回msg, where msg.payload = {'a' : {'indicator' : msg.payload}};IBM IoT节点如下:

在此处输入图像描述

从 Watson IoT Platform 仪表板可以看出, senseHAT 设备已注册并成功连接到 Bluemix:

在此处输入图像描述

在 Raspberry 方面,我设置了以下简单流程来捕获Bluemix 中发出的“命令”(normal和):alert

Node-RED 流程 @ Raspberry Pi在此处输入图像描述

节点如下all commands

在此处输入图像描述

现在,尽管“命令”从normalBluemixalert传递到我的 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.

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

有任何想法吗?

附带说明(以及可能有用的附加信息):

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

3 回答 3

7

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

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

于 2016-06-10T09:26:44.093 回答
1

我接受保罗的回答是正确的,因为它帮助我弄清楚发生了什么,但它相当神秘。这就是正在发生的事情以及补救措施。

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

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

因此,一旦由于某种原因发生此类错误/事故,补救措施是停止并重新启动您的本地 Node-RED 服务(即在我的情况下,在我的 Raspberry Pi 中运行的服务)。

我希望这有助于平台的未来改进——这肯定是一种意想不到的行为。

于 2016-06-10T12:45:56.783 回答
0

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

于 2016-12-08T12:34:00.903 回答