物联网协议CoAP协议学习
CoAP:Constrained Application Protocol协议是为物联网中资源受限的设备制定的应用层协议,即简化版的基于UDP的HTTP协议。其核心内容为资源抽象、REST式交互可扩展的头选项等。应用程序通过URI标志来获取服务器上的资源,使其可以像HTTP协议一样对资源进行GET、PUT、POST和DELETE等操作。C/S架构,功耗低不能反向控制。适用于需要通过标准互联网网络进行远程控制或监控的小型低功率传感器,开关,阀门和类似的组件,服务器对不支持的类型可以不响应
CoAP协议自身拥有如下特点:
1)报头压缩,数据包小
包含一个紧凑的二进制报头和扩展报头,它只有短短的4B的基本报头。
2)方法和URIs
为了实现客户端访问服务器上的资源,这是Web架构的主要特点。
3)传输层使用UDP协议,适用于非安全性数据场合
CoAP协议是建立在UDP协议之上,以减少开销(TCP需要三次握手)和支持组播功能。
4)支持异步通信
HTTP协议对M2M通信不适用,这是由于事务总是由客户端发起的。CoAP协议支持异步通信,这对M2M通信应用来说是常见的休眠/唤醒机制。
5)支持资源发现
为了自主地发现和使用资源,它支持内置的资源发现格式,用于发现设备上的资源列表,或者用于设备向服务目录公告自己的资源。
6)支持缓存
CoAP协议支持资源描述的缓存以优化其性能。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)
是IBM(依托ThinkPHP框架)开发的传感器和控制器之间的一个即时通讯协议,基于发布订阅模式(消息的生产者和消费者解构decoupling,极大地提高系统的扩展性和网络拓扑),有多个客户端--》一个代理服务器(channel)《--多个目标服务器组成的多对多,基于TCP、异步常连接,功耗大可以进行反向控制(服务器对客户端的控制)。
MQTT不支持带有类型或者其它帮助Clients理解的标签消息。MQTT消息可用于任意目的,但前提是所有的Clients必须知道消息格式。而CoAP则相反,它内置内容协商和发现支持,这样允许设备彼此窥测以找到交换数据的方式
报警:设置触发条件,消息推送(各种途径短消息、GPRS/邮件。。。),远程控制和处理。
分布式缓存Redis之发布/订阅(Pub/Sub)https://blog.csdn.net/u011489043/article/details/78780255
LWM2M:移动的onenet即是
是传统的OMA-DM协议基础之上发展起来的,属于订阅主动(服务器向客户端订阅))上报型(周期性或时间触发),基于REST架构,以coap为传输层协议,以资源为基本单位。
LwM2M载荷支持四种格式 plain text、Opaque、TLV、JSON,这四种协议要求服务器端必须都要支持,而在客户端必须支持TLV格式
LwM2M协议的主要开源实现有以下几个:
- OMA LwM2M DevKit:提供可视化界面与LwM2M服务器交互。
- Eclipse Leshan:基于Java,提供了LwM2M服务器与LwM2M客户端的实现。
- Eclipse Wakaama:基于C,提供了LwM2M服务器与LwM2M客户端的实现。
- AVSystem Anjay:基于C,提供了LwM2M客户端的实现。
此外,EMQ也实现了EMQ服务器上的LwM2M网关插件,实现了LwM2M协议的大部分功能,LwM2M设备可以注册至EMQ-LWM2M上,从而通过EMQ-LWM2M访问并管理设备,设备也可以向EMQ-LWM2M上报信息,并使用EMQ后端的服务来采集数据,参考:https://www.jianshu.com/p/11d34008f486