我的物联网设备已连接到物联网中心,并且能够通过导出选项接收数据。现在我想向我的设备发送一些命令,例如,在订阅的URL'devices/....ba50621/messages/devicebound/#‘上发送设备心跳的json数据
{ "action": "heartBeat",
"requestId": "b2c3d4e5-3424-4dca-32dc-12b73290cfed"
}
我参考下面的链接创建了服务应用程序,以发送云到设备的消息,
使用连接字符串as,
"HostName=asdasdas.azure-devices.net;DeviceId=asdasdasda50621;SharedAccessKey=nXmyveEPrV....pmo9jULvDtik="
此连接字符串是在设备通过dps注册时收到的。我在服务应用程序上使用了这个连接。我不知道这是否正确。
当应用程序尝试发送消息时,我得到了未经授权的错误。在上面的文档中,链接表示从物联网集线器的共享访问策略中获取连接字符串。但我使用的是iot central和上面的连接字符串。
金德尔帮我修好它。
发布于 2020-02-24 16:07:14
发布于 2020-02-24 21:54:43
如果您的IoTC应用程序不是遗留应用程序,您可以使用预览IoTC应用程序(这是一种CapabilityModel驱动的模型类型)以及REST API支持来调用您的设备。目前的预览版没有你正在尝试实现的功能,比如向设备发送C2D消息。
IoTC预览仅支持调用设备方法- Execute Command。以下屏幕片段演示了此功能。在本例中,我使用我的Azure IoT Hub Tester,其中的虚拟设备使用MQTT协议直接连接到IoT中央应用程序的底层IoT集线器。
我已经使用IoT ESP32模板创建了一个免费的Azure中心应用,为device1注册和配置,并从AzureKit IoT集线器测试器连接:
请注意,还缺少来自设备的响应对象,如CapabilityModel模式中所述。
更新
当echo方法被调用时,我在设备端添加了缺失的屏幕片段:
如上图所示,设备收到了REST POST有效负载,并根据PnP模型模式将其发布的响应返回给调用者。
更新2
下面的屏幕片段演示了如何调用device4的升级命令。请注意,device4是根据模板SmartConnect FM-201 IoT网关创建的PnP设备。
device4将响应发送回调用者和IoTC应用程序。下图显示了它的历史记录:
再次注意,REST响应和IoTC应用程序中都缺少响应对象。我希望,这是这个预览版中的一个错误,它将很快修复它,以跟进CapabilityModel模式。
https://stackoverflow.com/questions/60371317
复制相似问题