azure - 设备如何接收 IoT 中心中的直接方法?

标签 azure azure-iot-hub

根据 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)。 step1

第2步:设备(Device10)收到直接方法 step2

第3步:设备(Device10)将响应发送回调用者 step3

第4步:调用者在超时限制内收到Device10的响应 step4

关于azure - 设备如何接收 IoT 中心中的直接方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585872/

相关文章:

python - 在 Azure IoT 中心收到消息时触发函数

azure - NextJS 和 Azure - "You do not have permission to view this directory or page."

阶段 : GenerateOutputMediaMetadata 中的 Azure 编码作业错误

wordpress - Azure 应用程序网关后面的 WordPress 中的重定向循环

c - Azure IoT 中心可以部分更新所需的属性吗?

azure - 我是否能够使用 Azure IoT Edge 网关在叶设备和 Azure IoT 中心之间进行双向通信?

azure - 应用洞察 - 可以在生产中继续运行吗?

azure - 如何在azure中的webjobs之间共享配置文件

azure - Azure IoT 中心作业和 Azure IoT 自动设备管理之间的区别

azure - 使用 Azure IoT SDK 中的 ServiceClient.GetFeedbackReceiver() 获取 ACK 消息