2016-12-14 105 views
0

使用此项目here能够让esp8266将消息发送到Azure Iot集线器,并且我可以使用PowerBI读取它们。但是,我希望能够使用设备浏览器Twin将消息发送到设备。从Azure接收云到设备消息到esp8266

我想,因为esp使用HTTP POST请求将消息发送到Iot集线器,所以我应该能够使用HTTP GET请求读取使用正确端点时发送到设备的消息,概述了here

这是正确的,还是我错过了什么?这样做似乎只会导致错误。如果这是正确的方式,那么适当的GET请求的格式是什么。

+2

你得到什么错误?您是否使用HTTPS和正确的[请求URI](https://docs.microsoft.com/zh-cn/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请求。它成功发送数据到物联网集线器: POST/devices/[Device ID]/messages/events?api-version = 2016-02-03 HTTP/1.1 Host:[Device Group] .azure-devices.net 授权:SharedAccessSignature SR = [共享访问签名] 内容类型:应用/原子+ 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

通过REST API从Azure IoT集线器接收Cloud-to-Device消息,您可以使用GET method

与POST方法不同,您需要在Request URI部分中使用“devicebound”而不是“events”。

关于通用参数和标题,仅需要授权标头,并且与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] 
相关问题