1

我正在尝试将 arduino 连接到 Watson IoT。使用以下命令:

mqtt.connect(0, "d6acq3.messaging.internetofthings.ibmcloud.com",1883,"d:d6acq3:Arduino_Helligkeit:1234567890","use-token-auth","<as it was provided>");

这是我用于MQTT的库 ,其中连接命令指定如下:

bool connect (int id, String brooker, unsigned int port, String deviceId);

bool connect ([s.o], String userName , String password);

在 Watson Platform 上,我在设备的连接日志中看到以下消息:

Closed connection from 93.231.145.115. 
The topic is not valid: use-token-auth 
The topic does not match an allowed rule    07.02.2017 11:58:16
Closed connection from 93.231.145.115. 
The topic is not valid: use-token-auth 
The topic does not match an allowed rule 2 times in the last 5 minutes  07.02.2017 11:58:16
Closed connection from 93.231.145.115. 
The topic is not valid: use-token-auth 
The topic does not match an allowed rule    07.02.2017 11:56:03
Closed connection from 93.231.145.115. 
The topic is not valid: use-token-auth 
The topic does not match an allowed rule    07.02.2017 11:45:36

提前感谢您提供任何帮助以使其正常工作。

4

1 回答 1

1

正如 Dan 所说,Watson IoT 平台只允许使用某些主题字符串,因此您应该确认您使用的是正确的主题字符串。

对于应用程序,事件主题:iot-2/type/{device type}/id/{device id}/evt/{event type}/fmt/{format type}

对于应用程序,命令主题:iot-2/type/{device type}/id/{device id}/cmd/{command type}/fmt/{format type}

对于设备,事件主题:iot-2/evt/{event type}/fmt/{format type}

对于设备,命令主题:iot-2/cmd/{command type}/fmt/{format type}

但是,我在日志中看到的内容表明您正在尝试使用比您在帖子中指定的更长的客户端 ID 进行连接。我看到这个错误:

令牌验证失败(设备不存在):ClientID='d:d6acq3:Arduino_Helligkeit:12345678901486464057428',

因此,您需要检查以确保您的连接使用的是您已注册的正确设备 ID。

于 2017-02-07T12:55:04.987 回答