在终端设备和主机服务之间交换应用程序数据时,MQTT被广泛用于物联网。发布-订阅模型使其易于使用:无需握手,协商等(至少在MQTT协议层以上)。它的主要目的是使数据生产者能够轻松地将其数据分发给消费者。
但是,当涉及到要在终端设备上配置设置的中央服务器时,我不确定该模型是否非常合适。服务器将要向设备发送命令并等待响应(例如,读取特定设置,等待响应),这实际上不适合MQTT的发布-订阅模型。
我想知道是否有任何现有协议适合发送和接收命令以及配置远程设备?
在终端设备和主机服务之间交换应用程序数据时,MQTT被广泛用于物联网。发布-订阅模型使其易于使用:无需握手,协商等(至少在MQTT协议层以上)。它的主要目的是使数据生产者能够轻松地将其数据分发给消费者。
但是,当涉及到要在终端设备上配置设置的中央服务器时,我不确定该模型是否非常合适。服务器将要向设备发送命令并等待响应(例如,读取特定设置,等待响应),这实际上不适合MQTT的发布-订阅模型。
我想知道是否有任何现有协议适合发送和接收命令以及配置远程设备?
Answers:
听起来像是CoAP的工作:
像HTTP一样,CoAP基于广受欢迎的REST模型:服务器在URL下提供资源,客户端使用GET,PUT,POST和DELETE等方法访问这些资源。
从开发人员的角度来看,CoAP感觉非常像HTTP。从传感器获取值与从Web API获取值没有太大区别。
显然,它可以以非常低的开销实现:
CoAP设计用于在低至10 KiB RAM和100 KiB代码空间的微控制器上工作
CoAP在RFC 7252中指定,并且有多种实现方式(例如C)。
它非常受REST启发,因为REST与用于Web API的HTTP一起使用,因此,如果您熟悉它们,您将很快采用CoAP。如果没有,您可能会发现此演示文稿对上下文很有用。这个想法是,每种HTTP方法都具有语义含义,例如,GET
从设备请求信息而无需更改任何内容和POST
,PUT
并对DELETE
数据进行突变。
如您所说,在您的设备充当中央系统协调的“服务器”(充当每个设备的客户端)的情况下,发布/订阅模型不起作用。取而代之的是,类似于HTTP的模型是理想的,除了HTTP具有太多的开销(这是CoAP的所在)。
我想知道是否有任何现有协议适合发送和接收命令以及配置远程设备?
是的,物联网中有一种更好的设备管理协议。它是LwM2M-比MQTT以及COAP,MQTT和HTTP效率更高。
LwM2M带有定义明确的数据和设备管理模型,提供了各种现成的标准对象(IPSO智能对象),连接监视,远程设备操作以及结构化的FOTA和SOTA更新,而在MQTT中,这些功能完全是供应商和平台特定。接下来就是使用MQTT,必须从头开始创建固件更新或任何其他管理功能。相反,LwM2M提供固件升级作为其基本功能之一,因此无需发明任何新的通信构建块。
在这里,您可以比较MQTT与LwM2M以及整个崩溃过程。