但是,当涉及到要在终端设备上配置设置的中央服务器时,我不确定型号很合适。服务器将要向设备发送命令并等待响应(例如,读取特定设置,等待响应),这实际上并不适合MQTT的发布-订阅模型。想知道是否存在任何适用于发送和接收命令以及配置远程设备的协议?
#1 楼
听起来像CoAP的工作:像HTTP一样,CoAP基于广受欢迎的REST模型:服务器在URL下提供资源,客户端使用诸如GET之类的方法访问这些资源。 ,PUT,POST和DELETE。
从开发人员的角度来看,CoAP非常像HTTP。从传感器获取值与从Web API获取值没有太大区别。
显然可以以非常低的开销实现:
CoAP被设计用于在低至10 KiB的RAM和100 KiB的代码空间的微控制器上工作。
CoAP在RFC 7252中指定,并且有多种实现方式(例如,用C语言编写。如果没有,您可能会发现此演示文稿对上下文很有用。这个想法是每个HTTP方法都有一个语义含义,例如
GET
向设备请求信息而不进行任何更改,而POST
,PUT
和DELETE
则对数据进行了突变。到中央系统协调(充当每个设备的客户端)。取而代之的是,类似于HTTP的模型是理想的,除了HTTP具有太多的开销(这是CoAP的用处)。#2 楼
我想知道是否有任何现有协议可以用于发送和接收命令以及配置远程
设备?
是的,是用于IoT的设备管理的更好协议。
它是LwM2M-比MQTT以及COAP,MQTT和HTTP更高,效率更高。管理模型,提供各种现成的标准对象(IPSO智能对象),连接监视,远程设备操作以及结构化的FOTA和SOTA更新,而在MQTT中,这些功能完全是特定于供应商和平台的。接下来就是使用MQTT,必须从头开始创建固件更新或任何其他管理功能。相反,LwM2M将固件升级作为其基本功能之一,因此无需发明任何新的通信构建块。
这里您可以比较MQTT与LwM2M以及整个崩溃过程。
评论
您确定MQTT不允许客户端订阅控制频道吗?我认为这是开始寻找答案的地方,但是我还不具备足够的速度来总结答案。en.wikipedia.org/wiki/Representational_state_transfer别忘了,端点必须是启动通道的端点,因此它可以控制功耗。
@SeanHoulihane当然可以使用MQTT来发送和接收您所描述的命令/设置,但是按照我的看法,理想情况下,您需要具有“基于会话”的协议,即创建会话,发送命令并在同一会话中接收到响应,从而轻松地将响应链接到原始命令。 MQTT是基于消息的,因此根本没有链接彼此之间的链接-由您来处理这一部分。我想知道是否存在可以用于此目的的现成协议。
en.wikipedia.org/wiki/OMA_LWM2M我不确定具体如何,但是云似乎能够发出PUT或POST调用来触发客户端中的回调。
MQTTv5具有标头字段,用于将消息标记为对先前消息的响应。