python - 使用 REST api、端点发送云到设备消息 Azure IoT 中心

标签 python azure rest cloud azure-iot-hub

我正在尝试使用 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/

相关文章:

azure - 数据在 Azure 时序洞察中同时进入热存储和冷存储

python - 导入错误: module 'main' has no attribute '__main__' after doing pip -e

python - 如何在字节文件中将 '\\' 替换为 '\' ?

python - 抽象模型的最佳文件夹结构

python - 如何使用python从Azure应用程序库获取数据库密码?我正在 google Dataproc 集群上运行这个 python 文件

rest - gRPC(HTTP/2) 是否比使用 HTTP/2 的 REST 更快?

c# - 使用 python.net 获取 C# 枚举描述?

azure - 将 Azure 静态网站配置为不需要尾部斜杠

android - 如何防止其他 iOS/Android 应用程序使用我的 RESTful API?

正则表达式匹配特定的 URI