我正在尝试使用 Azure IoT 中心和 REST api(不使用 Azure IoT 中心 python SDK)从云向我的设备发送消息。
我可以成功从具有 uri https://<myiothub>.azure-devices.net/devices/<devid>/messages/events?api-version=2018-06-30
的设备向集线器发送消息(POST 请求) 。在文档中 https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-c2d它说有一个服务端端点 /messages/devicebound
。但是,它们没有显示完整的示例,因此我不完全确定应该使用的完整端点是什么,以及如何/在哪里指定发送到哪个设备。
无论如何,我尝试了以下方法:
curl -v POST \
https://<myhub>.azure-devices.net/messages/devicebound?api-version=2018-06-30 \
-H 'Authorization: SharedAccessSignature <sas>' \
-H 'Content-Type: application/json' \
-d '{
"payload": {
"key": "value"
}
}'
其中是通过 Azure CLI 生成的 az iot hub generate-sas-token -n <myhub>
。我收到错误消息
{"Message":"ErrorCode:ArgumentInvalid;Request must contain IoTHub custom 'To' header","ExceptionMessage":"Tracking ID:ec98ff8...
我把结尾剪掉了。因此,我尝试添加一个“To” header ,无论我输入什么,它都会返回相同的错误消息。
我也尝试了这里的建议 Cloud-to-device Azure IoT REST API ,即通过端点 https://main.iothub.ext.azure.com/api/Service/SendMessage/ 发送,但没有运气。
最佳答案
要使用 IoT 中心 API 从设备端接收云到设备消息,您必须执行以下请求 -
curl -X GET \
'https://{your hub}.azure-devices.net/devices/{your device id}/messages/deviceBound?api-version=2018-06-30' \
-H 'Authorization: {your sas token}'
关于python - 使用 REST api、端点发送云到设备消息 Azure IoT 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56600734/