Ошибки темы при публикации события в MQTT

Я использую библиотеку pubsub из NodeMCU ESP8266 и Arduino IDE.

https://github.com/knolleary/pubsubclient/tree/master/examples/mqtt_esp8266

Мое устройство зарегистрировано в IBM Bluemix IoT Foundation (IoTF).

Имя клиента, которое я использую,

char* myclient = "d:ORGID:Devicetype:Deviceid"; 

Где orgid — это мой orgID из Bluemix, а тип и идентификатор устройства — это устройство, которое я создал и зарегистрировал в 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"
}

Мне интересно, как моя тема изменилась на то, что она показывает здесь. Любые идеи?


person Henryw4    schedule 14.02.2016    source источник


Ответы (1)


Это происходило из-за того, что мой код подписывался на «iot-2/evt/command_id/fmt/format_string» вместо «iot-2/cmd/command_id/fmt/format_string» — как только я это исправил, все стало нормально.

person Henryw4    schedule 15.02.2016