Azure 设备如何在物联网中心接收直接方法?

Azure 设备如何在物联网中心接收直接方法?,azure,azure-iot-hub,Azure,Azure Iot Hub,根据IoT Hub中直接方法的文档,说明用户通过面向服务的URI调用直接方法“{IoT Hub}/twins/{device id}/methods/”,并且设备在MQTT主题“$iothub/methods/POST/{Method name}/” 我对这个映射是如何工作的有些困惑。 物联网集线器中是否存在将请求重定向到特定设备的内部映射? 其他设备如何识别该方法不是针对他们的,因为设备正在侦听的主题似乎不是特定于设备的,我们只需要一个特定的设备来接收该方法调用?当设备使用IoT Hub进行

根据IoT Hub中直接方法的文档,说明用户通过面向服务的URI调用直接方法“{IoT Hub}/twins/{device id}/methods/”,并且设备在MQTT主题“$iothub/methods/POST/{Method name}/”
我对这个映射是如何工作的有些困惑。
物联网集线器中是否存在将请求重定向到特定设备的内部映射?

其他设备如何识别该方法不是针对他们的,因为设备正在侦听的主题似乎不是特定于设备的,我们只需要一个特定的设备来接收该方法调用?

当设备使用IoT Hub进行身份验证时,它包括其设备id。请参阅:


然后,IoT Hub可以确保设备接收到正确的直接方法调用。

每个直接方法都以单个设备为目标,即使多个直接方法具有相同的名称,也只有目标设备可以接收该方法


因此,请随意测试和使用它。

Azure IoT Hub是设备和云(IoT堆栈)之间的双向集成网关。其主要目标是通过默认(内置)或自定义端点将设备遥测数据快速摄取到云流管道

基本上,Azure IoT中心有两种端点,例如面向设备的端点和面向服务的端点。 有关这些端点的更多详细信息,请参阅

在内部,Azure IoT Hub不是面向总线的,它不是通用MQTT代理,它不是通用通信代理,它是一个集成网关,具有点对点星形拓扑通信,如设备对云(D2C)和云对设备(C2D)消息传递。没有直接的设备到设备的消息传递

C2D消息传递有一些限制,请参阅。 C2D消息传递可以采用异步或同步方式,使用设备双功能

基本上,C2D消息是基于点对点星形通信的,换句话说,您不能向设备发送多播广播消息。在这种情况下,推荐的方法是创建一个作业,以便逐个向设备发送消息

通过Azure IoT Hub在设备上调用直接方法只能通过使用Http协议的面向服务的端点。在另一端(如面向设备的端点),它只能由具有面向连接的协议(如MQTT或AMQP)的设备使用

面向设备的端点支持MQTT v3.1.1通信协议,请参阅更多详细信息

使用Azure IoT Hub评估MQTT设备的行为可以使用第三方工具(如MQTTBox客户端等)完成

以下屏幕片段显示在MQTT设备上调用直接方法。请注意,Azure IoT集线器测试仪使用直接MQTT协议和Azure IoT集线器

步骤1:在面向服务的端点(Http)上调用直接方法。注意,url地址有一个目标设备id(在这个测试设备10中)。

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

步骤3:设备(Device10)将响应发送回调用程序

步骤4:调用程序在超时限制内收到来自设备10的响应

Azure IoT Hub不是通用的MQTT代理。我们希望在代码中直接使用MQTT主题,因此,我们需要知道设备是如何接收其特定请求的,因为所有设备都在监听一个公共主题,而不是特定于设备的主题。@RahulBansal您已经测试过了吗?您遇到了什么问题?我们还没有测试过。我们正在从理论上评估它是否适合我们的问题陈述。我们试图了解它是如何实际工作的,物联网集线器的内部映射和直接方法的设备。我们在寻找调用直接方法时发生的内部过程。IoT Hub如何通过所有设备都在监听的共同主题将信息处理到目标设备。