根据 IoT 中心中直接方法的文档,指出用户通过面向服务的 URI 调用直接方法“{iot hub}/twins/{device id}/methods/" 并且设备在 MQTT 主题上接收它"$iothub/methods/POST/{method name}/"
我对这个映射的工作原理有些困惑。
IoT 中心中是否有任何内部映射将请求重定向到特定设备?
其他设备如何识别该方法不适合他们,因为设备正在监听的主题似乎不是特定于设备的,并且我们只需要特定设备来接收该方法调用?
最佳答案
Azure IoT 中心是设备和云(IoT Stack)之间的双向集成网关。其主要目标是通过默认(内置)或自定义端点将设备遥测数据快速摄取到云流管道。
基本上,Azure IoT 中心有两种端点,例如面向设备的端点和面向服务的端点。 有关这些端点的更多详细信息是 here 。
在内部,Azure IoT Hub不是面向总线的,它不是通用的MQTT代理,它不是通用的通信代理,它是一个具有点对点星形拓扑通信(例如设备到-)的集成网关。云 (D2C) 和云到设备 (C2D) 消息传递。没有直接的设备到设备消息传递。
C2D 消息传递有一些限制,请参阅 IoT Hub quotas and throttling 。 C2D 消息传递可以使用设备孪生功能以异步或同步方式进行。
基本上,C2D 消息传递是基于点对点的星形通信,换句话说,您不能向设备发送多播广播消息。在这种情况下,推荐的方式是创建一个作业来逐个向设备发送消息。
通过 Azure IoT 中心在设备上调用直接方法只能通过使用 Http 协议(protocol)的面向服务的终结点。在另一端(例如面向设备的端点),它只能由具有面向连接的协议(protocol)(例如 MQTT 或 AMQP)的设备使用。
面向设备的端点支持 MQTT v3.1.1 通信协议(protocol),查看更多详细信息 here 。
要使用 Azure IoT 中心评估 MQTT 设备的行为,可以使用 MQTTBox 客户端、https://iotdevtool.com 等第三方工具来完成。 , Azure IoT Hub Tester等
以下屏幕片段显示在 MQTT 设备上调用直接方法。请注意 Azure IoT 中心测试器使用直接 MQTT 协议(protocol)与 Azure IoT 中心。
第 1 步:在面向服务的端点 (Http) 上调用直接方法。请注意,url 地址具有目标设备 ID(在本测试中为 Device10)。
关于azure - 设备如何接收 IoT 中心中的直接方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585872/