物联网关键技术:如何实现设备接入
物联网云平台
设备接入、规则引擎、实时计算、数据存储都是物联网云平台的关键技术,其中设备接入组件(IoT Hub)是物联网云平台的核心。
物联网云平台架构(简化示意图)
物联网云平台需要支持多网络多协议设备的接入,关键是解决物联网协议的碎片化问题,IP协议可以有效解决链路层以下的协议多样性,但更多要考虑支持面向各种场景的应用层协议。
常见物联网应用层协议
物联网常用的应用层数据传输协议包括:MQTT、CoAP、HTTP(S)、LwM2M、STOMP、AMQP、Socket/WebSocket等。
Web应用最常用的协议是HTTP(s)协议,但不能支持双向通信;基于HTTP的WebSocket可以实现物联网系统的双向通信,或者直接使用基于TCP/UDP的Socket通信。
STOMP(Simple Text Oriented Messaging Protocol)是一个被广泛使用的简单面向文本的消息协议,被用于通过中间服务器(Broker)在客户端之间进行异步消息传递。
企业中间件系统中最流行的消息协议是 AMQP(Advanced Message Queuing Protocol),高级消息队列协议。
即时通信系统最常用的是基于XML的可扩展通信和表示协议XMPP(Extensible Messaging and Presence Protocol)。STOMP、AMQP、XMPP这些协议也可以用于物联网系统中,实现系统的互操作,但对于资源受限的物联网系统不适合。
物联网系统最常用的应用层协议还是MQTT和CoAP,以上这些协议与之相比,在设备和网络上所需要的资源都要多得多。
MQTT协议传输层可以是TCP、TLS和websocket(SSL)。
MQTT(Message Queuing Telemetry Transport)是IBM制定的物联网通信协议,现在已是物联网领域应用最为广泛的协议。MQTT协议的优势在于它的简单性。MQTT 协议的关键特性就是发布者和订阅者模型。与所有消息协议一样,MQTT将数据的发布者与使用者分离。在主题类型或消息有效负载上没有任何限制。
CoAP与HTTP协议的原语一致,非常容易转换。
与MQTT主要基于TCP协议不同,CoAP(Constrained Application Protocol)基于UDP协议,并且数据很容易转换为HTTP。相比MQTT来说,CoAP更轻量级,适合于内存更小的低功耗设备。CoAP协议名字的含义就是“受限应用协议”,顾名思义,可以使用在资源受限的物联网设备上。
LwM2M协议架构图
LwM2M(lightweight Machine to Machine)也是一个轻量级的物联网协议,LwM2M基于CoAP协议之上,主要可以使用在资源受限(包括存储、功耗等)的嵌入式设备上。
设备接入IOT Hub
IoT Hub是物联网云平台的核心组件,主要负责物联网设备的接入,同时也负责设备认证以及设备管理的功能。其核心是一个支持平台与设备双向消息通信的服务,一般需要支持包括MQTT、CoAP、LwM2M等协议,尤其是要支持MQTT协议。很多IoT Hub都基于MQTT Broker服务来实现。
IBM Bluemix云计算平台
IBM的Bluemix云计算平台(后与IBM Cloud品牌合并)为物联网应用提供了基础设施,其中最主要的部分就是Bluemix IoT Foundation,起到IoT Hub的作用,完成了设备的接入。再通过Kafka消息队列将MQTT中的的消息传给后端消息服务处理。
要实现IoT Hub,可以基于开源的MQTT Broker。目前比较著名的MQTT Broker包括EMQ、eclipse mosquitto等。
EMQ支持多种接入形式
EMQ是由中国公司开发的,不仅支持MQTT,还支持CoAP、LWM2M等协议,基于 Erlang/OTP 语言平台开发,支持海量设备的接入。有开源版本和收费的企业版。很多云服务公司都用到了EMQ,许多网关设备都可以作为MQTT客户端与EMQ进行发布和订阅消息。