我正在使用来自ESP8266 NodeMCU和Arduino IDE的pubsub库。
https://github.com/knolleary/pubsubclient/tree/master/examples/mqtt_esp8266
我的设备已在IBM Bluemix IoT Foundation(IoTF)注册。
我正在使用的客户名称是
char* myclient = "d:ORGID:Devicetype:Deviceid";
其中orgid是来自Bluemix的orgID,设备类型和ID来自我在IoTF中创建和注册的设备。我发帖的主题是我的代码中的这一行:
client.publish("iot-2/evt/status/fmt/json", msg);
在Node-RED中,我有一个IOT-in节点查看设备状态并使用Bluemix服务进行身份验证。
当我将一个调试节点从IoT-in节点查看完整的消息对象时,我看到了这个错误(注意:我在这个调试输出中将orgid更改为ORGID):
{
"_msgid": "9f433f7b.60bcc",
"deviceId": "InterConnect",
"deviceType": "nodeMCU",
"payload": {
"Action": "Disconnect",
"ClientAddr": "24.47.149.38",
"ClientID": "d:ORGID:nodeMCU:InterConnect",
"CloseCode": 276,
"ConnectTime": "2016-02-14T18:32:19.328Z",
"Port": 1883,
"Protocol": "mqtt4-tcp",
"ReadBytes": 111,
"ReadMsg": 0,
"Reason": "The topic is not valid.",
"SecureConnection": false,
"Time": "2016-02-14T18:32:19.397Z",
"User": "use-token-auth",
"WriteBytes": 4,
"WriteMsg": 0
},
"topic": "iot-2/type/nodeMCU/id/InterConnect/mon"
}
我想知道我的主题是如何改变它在这里显示的内容。有什么想法吗?
答案 0 :(得分:0)
这是因为我的代码订阅了" iot-2 / evt / command_id / fmt / format_string"而不是" iot-2 / cmd / command_id / fmt / format_string" - 一旦我解决了这个问题,一切都很顺利。