目标:向通过MQTT WebSocket连接的一组Azure IoT Hub设备发送消息。
初步想法:让一组IoT Hub设备(X组)订阅包含主题X的消息。
问题:
在Communicate with your IoT hub using the MQTT protocol文档中,我没有看到将设备订阅到其他主题的方法。我只看到订阅设备特定端点的示例 devices/{device_id}/messages/devicebound/#
。
该页继续说“IoT Hub不是通用的pub-sub消息传递代理,它只支持记录的主题名称和主题过滤器”。我认为这些主题是
devices/{device_id}/messages/devicebound/
devices/{device_id}/messages/devicebound/#
我的结论:我不能让一组IoT Hub设备(组X)订阅包含主题X的邮件。
问题:
答案 0 :(得分:1)
你的结论是正确的。 Azure IoT Hub本身不是MQTT代理。 如果要将消息发送到连接到Azure IoT Hub的一组设备(与其连接的协议无关),则需要查看Cloud 2 Device features IoT Hub之一。 根据您的方案,您可以使用以下方法之一:云2设备消息,双胞胎或方法。 IoT Hub在后端公开API(很容易与Service Client SDK一起使用),允许使用其中任何一个。
C2D消息用于将原始数据发送到设备,这意味着您在云和设备之间实现自己的“协议”。 C2D消息在云中也是持久的,因为如果设备未连接,IoT Hub将保留它们(在设置中定义的特定时间)。
设备双胞胎允许将设备的配置与云同步,并允许在设备上进行批量操作(当然,您希望仔细查看)。
Device Direct Methods允许从云端调用在设备上运行的功能,并且Twins支持批量操作。