Azure IoT中心如何与嵌入式/ IoT设备交互?


13

我正在使用Azure IoT平台,并且我了解设备如何将数据发送到IoT中心(如果我没有记错,那只是Web服务调用或类似的调用)。

但是我不知道IoT中心如何将数据/命令/输入发送到设备,因为我们不在IoT中心上进行设备通信(我们没有任何将数据推送到设备的要求)。IoT中心可以直接与设备交互吗?(使用设备的唯一ID或使用IP,Mac地址等任何唯一身份)。

我读过某个地方,如果IoT中心有任何输入,设备会继续向IoT中心发出请求,然后IoT中心将数据/命令/输入发送到设备以作为响应。真的吗?如果没有,请解释。

Answers:


14

IoT中心连接的设备使用的模型是它们将永远不接受传入连接。IoT中心设备永远不会充当“服务器”,这是Azure IoT安全模型的关键部分。对此的确定模型封装在Clemens Vasters的“服务辅助通信”中

因此,设备总是在“轮询”外部服务以发送数据或接收命令。这些API使它看起来像是在将数据发送到设备,但始终是建立传出连接的设备。

IoT中心通过两种方式执行此操作:

  1. 通过将数据发送到设备端点/devices/{deviceId}/messages/devicebound。这是一个AMQP消息传递终结点,类似于队列或主题订阅。该设备在读取命令时需要根据需要确认接收,这是基础AMQP协议的一部分。这与MQTT相同,并且https是有效的后备。API为您包装了所有这些内容。还有其他概念,例如“直接方法”,它们是围绕基本相同的基础消息协议的API包装
  2. 通过使用服务器端设备对,这是在逻辑上使属性在设备和服务器之间保持同步的一种方法。您在设备twin上设置了一个属性,当设备同步时,该属性将同步到设备。这是基于消息的较少,并且建立在LWM2M设备管理协议的基础上。

作为AMQP(或MQTT)协议的一部分,应注意很多“轮询”,连接,共享连接,收据等,该协议又包装在IoT中心SDK中。因此,上述内容经过了高度简化,但是重申一下,IoT中心不能也不会(永远)尝试将数据发送到设备上的ip地址/端口。


感谢@Simon,现在我很清楚,仅负责呼叫IoT中心以发送或接收数据的设备。您在答案中提到了“ Azure IoT”,因此只想确认一下,您的答案在所有IoT平台上的应用程序?或仅适用于Azure IoT。
Shri

@ShrikantBhusalwad答案并不适用于所有平台,因为尚未开发许多平台。这是一个通用模型,对安全性有好处,但是其他模型可能是合理的-特别是在新环境中。
肖恩·霍利哈内

2
我并不熟悉所有平台,但是大多数云平台都将是相似的。AWS使用MQTT,这几乎是相同的。正如@sean所观察到的,它不能应用于所有平台,但是很少有平台会预先接受危险的安全实践。使用“设备即服务器”模型的方法将是旧式的,或者具有更高的安全性(随着边缘或网格模式的发展)。Azure IoT在体系结构上支持现场和云网关,以解决旧版或基于边缘的设备的问题
Simon Munro

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.