2016-12-14 1 views
0

Используя этот проект here Я могу получить сообщение esp8266 для отправки сообщений в концентратор Azure Iot, и я могу прочитать их с помощью PowerBI. Тем не менее, я хотел бы иметь возможность использовать проводник устройств Twin для отправки сообщений на устройство.Получение сообщений Cloud-to-Device от Azure до esp8266

Я предполагаю, что поскольку esp отправляет сообщения в концентратор Iot с использованием HTTP POST-запроса, я должен иметь возможность использовать HTTP-запрос GET для чтения сообщений, отправленных на устройство при использовании правильной конечной точки, изложенный в виде here ,

Верно ли это, или я что-то упускаю? Выполнение этого, по-видимому, вызывает ошибки. Если это правильный путь, каков будет формат надлежащего запроса GET.

+2

Какую ошибку вы получаете? Используете ли вы HTTPS с правильным [URI запроса] (https://docs.microsoft.com/en-us/rest/api/iothub/receive-a-cloud-to-device-message) и правильные [параметры] (https://docs.microsoft.com/en-us/rest/api/iothub/device-messaging-rest-apis#bk_common)? Вы [установили заголовок авторизации в соответствующий токен SAS] (https://docs.microsoft.com/en-gb/azure/iot-hub/iot-hub-devguide-security#security-tokens)? – peterdn

+0

Как выглядит ваш запрос GET? –

+0

Вот запрос POST, который я использую. Он успешно отправляет данные в концентратор IoT: POST/devices/[Device ID]/сообщения/события? Api-version = 2016-02-03 HTTP/1.1 Хост: [Группа устройств] .azure-devices.net Авторизация: SharedAccessSignature ср = [Совместный доступ Подпись] Content-Type: применение/атом + XML; тип = запись; кодировка = UTF-8 Content-Length: 177 { "Дев": "[ID устройства]" , «Utc»: «2016-12-13T22: 33: 04», «Цельсия»: 60,00, «Влажность»: 30,00, «Уставка»: 70, «Состояние»: 0, «Гео»: «Западная США», «WiFi»: 0, «Mem»: 18728, «Id»: 2} Я пробовал несколько вариантов этого, чтобы попытаться сделать действительный запрос GET, но никто из них не работал. –

ответ

0

Получение сообщения Cloud-to-Device от концентратора Azure IoT с помощью REST api вы можете использовать GET method.

В отличие от метода POST вам необходимо использовать «устройство» вместо «событий» в части запроса URI.

Об общих параметрах и заголовках требуется только заголовок авторизации, и в запросе POST он совпадает.

В запросе GET не требуется тело.

Таким образом, ваш запрос GET будет выглядеть следующим образом:

GET /devices/[Device ID]/messages/devicebound?api-version=2016-02-03 HTTP/1.1 
Host: [IoTHubName].azure-devices.net 
Authorization: SharedAccessSignature sr=[Shared Access Signature] 
Смежные вопросы