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

时间:2017-10-05 12:40:27

标签: azure azure-iot-hub

根据IoT Hub中直接方法的文档,声明用户通过面向服务的URI " {iot hub} / twins / {device id}调用直接方法/ methods /" ,设备在MQTT主题" $ iothub / methods / POST / {method name} /" 上接收它 我对这种映射的工作原理有些困惑。
物联网集线器中是否有任何内部映射将请求重定向到特定设备?
其他设备如何识别该方法不适用于它们,因为设备正在侦听的主题似乎不是特定于设备的,我们只需要一个特定的设备来接收该方法调用?

3 个答案:

答案 0 :(得分:0)

当设备使用IoT Hub进行身份验证时,它会包含其设备ID。请参阅:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support#using-the-mqtt-protocol-directly

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

答案 1 :(得分:0)

每个直接方法都针对单个设备,即使多个直接方法具有相同的名称,只有目标设备才能接收该方法。

所以随时测试并使用它。

答案 2 :(得分:0)

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

基本上,Azure IoT Hub有两种端点,例如面向设备的端点和面向服务的端点。 有关这些端点的更多详细信息是here

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

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

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

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

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

使用Azure IoT Hub评估MQTT设备的行为可以使用第三方工具完成,例如MQTTBox客户端,https://iotdevtool.comAzure IoT Hub Tester等。

以下屏幕截图显示在MQTT设备上调用Direct方法。请注意使用带有Azure IoT Hub的直接MQTT协议的Azure IoT Hub Tester。

步骤1:在面向服务的端点(Http)上调用直接方法。请注意,url地址具有目标设备ID(在此测试Device10中)。 step1

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

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

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