2016-03-14 3 views
1

Я успешно подключил свой проект ESP8266 Arduino к ступице Azure IoT, выполнив действия, описанные здесь:Невозможно прочитать Azure ВГД данные сообщений ступицы MQTT подписки

https://azure.microsoft.com/en-gb/documentation/articles/iot-hub-mqtt-support/

Библиотека MQTT, что я использую следующие библиотеки:

https://github.com/Imroy/pubsubclient

Использование кода я смог опубликовать события лазурного. Проблема начинается при попытке прочитать сообщения, переданные на устройство.

Вот код:

http://pastebin.com/7AVLQfFh

Когда я посудить Azure Проводник устройства, чтобы отправить сообщение на устройстве я получаю следующие результаты:

Capture of results
Как вы можете видеть длина полезной нагрузки совпадает с количеством символов в сообщении, но символы не совпадают. А также, если я изменяю переданную строку, тогда значения в результате совпадают.

Как здравомыслия чек я попробовал код против другой MQTT службы (Adafruit IO), и результаты, как и следовало ожидать (здесь сообщение «ON» или «OFF»):

Adafruit IO image Служба Azure MQTT должна делать что-то другое, когда отправляет сообщения на устройство, что мне нужно знать, это то, что он делает по-другому.

ответ

1

Всего пару часов назад мне удалось получить сообщения, идущие от концентратора Azure IoT до моего ESP8266, используя оригинальный PubSubClient - link here. Вы используете вилку этой библиотеки, которая была сделана более ориентированной на объект и, вероятно, имеет больше улучшений .. но если вы не очень зацепились за использование более новой версии, я бы порекомендовал получить оригинал и попробовать его.

У меня есть код на GitHub, если вам нужна ссылка: link

Один важно упомянуть: PubSubClient.ч нуждается в изменении #defineMQTT_MAX_PACKET_SIZE 128 к #defineMQTT_MAX_PACKET_SIZE 256 или больше, если вы работаете с большими пакетами

Кроме того, я не пытался посылать сообщения, так что я не знаю, как это будет работать.

Update: Я также написал короткое сообщение в блоге о том, как установить его: link

+0

не была игра, но еще да выглядит как смена клиента в порядке. – mikehole

1

Согласно this documentation page, property_bag is RFC2396 закодирован.

RFC 2396-encoded(<PropertyName1>)=RFC 2396-encoded(<PropertyValue1>)&RFC 2396-encoded(<PropertyName2>)=RFC 2396-encoded(<PropertyValue2>)… 

Но не ABCD то же самое в виде простого текста против URI кодируются вы спросите ... Ну, да.

Установите Stunnel (https://www.stunnel.org/index.html), открыть соединение TLS 1.2 для IoT Hub на 8883/TCP, а затем указать MQTT.fx или Pāho к нему и нюхать трафика с Wireshark, посмотрим, что получится.

Я смог прочитать все сообщения в текстовом ASCII-тексте во время разговора с IoT Hub over REST, так что бы это ни было, я думаю, что это MQTT.

Если вы еще этого не сделали, вам следует открыть проблему на своем GitHub. Они кажутся довольно отзывчивыми: https://github.com/Azure/azure-iot-sdks/issues

Смежные вопросы