我探索了使用 Azure REST API 将数据从设备发送到云。它可以无缝运行,没有任何问题。我没有找到关于使用“Azure IoT Hub REST APIs”将云到设备消息发送到 Arduino 板的好文章。有人可以就此提供建议吗
3 回答
您也可以像 azure 门户一样发送请求。来自 AZ 门户的所有 C2D 都通过此端点https://main.iothub.ext.azure.com/api/Service/SendMessage/发送,有效负载是如下所示的 json:
{
"hostName": "iothub-hostname",
"owner": "twinUpdate",
"key": "key for the iothub",
"deviceID": "your device on that hub",
"body": "{\"test\": \"This is a test over postman\"}",
"properties": "[]"
}
请记住,您需要使用有效的 Bearer 令牌添加授权标头。您可以在登录 AZ Portal 时获取此信息。
正如彼得潘所说,目前没有用于发送 C2D 消息的 RESTful API。但是,您还有其他一些选择。
使用 Azure 函数应用程序。您可以创建 HTTP 触发器 Azure Function App 以用作 RESTful 代理,并在 Azure Function App 上运行 IoT Hub SDK 以发送 C2D 消息。
如果您无法使用 5671 端口让 AMQP 连接到服务端的 IoT 中心,请使用具有 443 端口的AMQP over WebSockets 。我们基于Rhea开发了一个基于 Web 的 IoT Hub开发工具,您可以参考我们的代码。
根据官方文档Send and receive messages with IoT Hub,在我查看了 Azure IoT Hub 使用不同语言发送云到设备消息的源代码后,没有 REST API 支持发送云到设备消息。要将 c2d 消息从应用程序发送到 Azure IoT Hub,推荐的协议是 AMQP,简单的方法是使用 Azure IoT Hub SDK。您可以参考Communication protocol
以下部分。
但是,如果您想从 Arduino 接收 c2d 消息,您可以参考该部分Cloud-to-device messages
并在 Arduino 上使用 REST API Receive Device Bound Notification
。