我的IOT设备已连接到IOT中央,并且能够通过导出选项接收数据。现在我想向我的设备发送一些命令,例如,在json数据下,期望在订阅的URL'devices / .... ba50621 / messages / devicebound /#'
上发送设备的心跳{ "action": "heartBeat",
"requestId": "b2c3d4e5-3424-4dca-32dc-12b73290cfed"
}
我通过参考下面的链接创建了服务应用程序,以将云发送到设备消息,
使用的连接字符串为,
"HostName=asdasdas.azure-devices.net;DeviceId=asdasdasda50621;SharedAccessKey=nXmyveEPrV....pmo9jULvDtik="
当设备通过dps注册时收到此连接字符串。我用这个在服务应用程序上进行连接。我不知道这是否正确。
[当应用程序尝试发送消息时,出现未经授权的错误。在上面的文档中,链接说是从IOT集线器的共享访问策略获取连接字符串。但我使用的是iot Central,并在连接字符串上方使用。
Kindl帮我修复它。
如果您的IoTC应用程序是NOT旧版应用程序,则可以使用具有REST API支持的预览IoTC应用程序(这是CapabilityModel驱动的模型类型)来调用您的设备。当前的预览版没有您想要实现的功能,例如向设备发送C2D消息。
IoTC预览仅支持调用设备方法-Execute Command。以下屏幕片段演示了此功能。对于此示例,我使用我的Azure IoT Hub Tester,其中虚拟设备直接使用MQTT协议连接到IoT Central App的基础IoT中心。
我已经使用AzureKit ESP32模板创建了一个免费的IoT Central应用程序,已为device1注册和配置并通过Azure IoT中心测试器进行了连接:
注意,还缺少设备的响应对象,如CapabilityModel模式中所述。
UPDATE
当调用方法echo时,我在设备端添加了缺少的屏幕片段:
您可以看到上面的图片,设备收到了REST POST有效负载并将其发布的响应基于PnP模型架构发回给调用者。