IoT 数据上云框架
IoT 数据上云业务框架,能够帮助开发者快速掌握物联网数据上云业务开发的流程,通过 YoC 物联网平台,进一步降低了数据上云的难度。该框架中也提供传感器驱动模型,多种通信联接协议栈,包括 WiFi、NB-IoT、BLE/BLE-Mesh、LoRa 等。
物联网云协议介绍
MQTT 协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),一个轻量的发布订阅(publish/subscribe)模式消息传输协议,该协议构建于 TCP/IP 协议上,专门针对低带宽和不稳定网络环境的物联网应用设计。MQTT 最大优点在于,可以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT 协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
- 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合
- 对负载内容屏蔽的消息传输
- 使用TCP/IP提供网络连接
三种消息发布服务质量:
“至多一次”:消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况:
环境传感器数据:丢失一次读记录无所谓,因为不久后还会有第二次发送
普通APP的推送:倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了
“至少一次”:确保消息到达,但消息重复可能会发生
“只有一次”:确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次
- 协议开销小(固定长度的头部仅2字节)
- 使用 Will 遗言特性通知有关各方客户端异常中断的机制:
CoAP 协议
CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。最近几年专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量。在这种大背景下,物联网和M2M技术应运而生。虽然对人们而言,连接入互联网显得方便容易,但是对于那些微型设备而言接入互联网非常困难。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。
CoAP 消息类型
CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。
- CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。
- NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。
- ACK——应答消息,接受到CON消息的响应。
- RST——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。
与 MQTT 区别
MQTT 和 CoAP 都是行之有效的物联网协议,但两者还是有很大区别的,比如 MQTT 协议是基于 TCP,而 CoAP 协议是基于 UDP。从应用方向来分析,主要区别有以下几点:
- MQTT 协议不支持带有类型或者其它帮助 Clients 理解的标签信息,也就是说所有 MQTT Clients 必须要知道消息格式。而 CoAP 协议则相反,因为 CoAP 内置发现支持和内容协商,这样便能允许设备相互窥测以找到数据交换的方式。
- MQTT 是长连接而 CoAP 是无连接。MQTT Clients 与 Broker 之间保持 TCP 长连接,这种情形在 NAT 环境中也不会产生问题。如果在NAT环境下使用 CoAP 的话,那就需要采取一些 NAT 穿透性手段。
- MQTT 是多个客户端通过中央代理进行消息传递的多对多协议。它主要通过让客户端发布消息、代理决定消息路由和复制来解耦消费者和生产者。MQTT 就是相当于消息传递的实时通讯总线。CoAP 基本上就是一个在 Server 和 Client 之间传递状态信息的单对单协议。
LWM2M 协议
LwM2M(Lightweight M2M,轻量级 M2M),由开发移动联盟(OMA)提出,是一种轻量级的、标准通用的物联网设备管理协议,可用于快速部署客户端/服务器模式的物联网业务。
LwM2M 为物联网设备的管理和应用建立了一套标准,它提供了轻便小巧的安全通信接口及高效的数据模型,以实现 M2M设备管理和服务支持。
LwM2M 协议主要特性包括:
- 基于资源模型的简单对象
- 资源操作:创建/检索/更新/删除/属性配置
- 资源的观察/通知
- 支持的数据格式:TLV/JSON/Plain Text/Opaque
- 传输层协议:UDP/SMS
- 安全协议:DTLS
- NAT 防火墙应对方案: Queue 模式
- 支持多 LwM2M Server
- 基本的 M2M 功能:LwM2MServer,访问控制,设备,网络连接监测,固件更新,位置和定位服务,统计
物联网云平台
阿里云 aliot
物联网平台是阿里云针对物联网领域开发人员推出的一款设备管理平台。高性能IoT Hub实现设备与云端稳定通信,全球多节点部署有效降低通信延时,多重防护能力保障设备云端安全。此外,物联网平台还提供丰富的设备管理功能、稳定可靠的数据存储能力,以及规则引擎。使用规则引擎,您仅需在Web上配置简单规则,即可将设备数据转发至阿里云其他产品,获得数据采集、数据计算、数据存储的全栈服务,真正实现物联网应用的灵活快速搭建。
物联网套件提供了如下的能力:
- 嵌入式设备快速接入(设备端SDK)
- 设备管理
- 设备和数据信息安全
- 桥接到阿里云其他产品, 对设备数据存储/计算
OneNET
OneNET 平台是中国移动基于物联网产业打造的生态平台,可以适配各种网络环境和协议类型,现在支持的协议有LWM2M(NB-IOT)、EDP、MQTT、HTTP、MODBUS、JT/T808、TCP透传、RGMP等。用户可以根据不同的应用场景选择不同的接入协议。具有高并发可用、多协议接入、丰富 API 支持、数据安全存储、快速应用孵化等特点,同时,OneNET 平台还提供全方位支撑,加速用户产品的开发速度。
OneNET 软件包功能特点:
- 断线重连
- 自动注册
- 自定义响应函数
- 自定义 topic 和回调函数
- 上传二进制数据
微软 Azure
Azure IoT 中心的服务托管在云中运行,充当中央消息中心,用于 IoT 应用程序与其管理的设备之间的双向通信。 通过 Azure IoT 中心,可以在数百万 IoT 设备和云托管解决方案后端之间建立可靠又安全的通信,生成 IoT 解决方案。几乎可以将任何设备连接到 IoT 中心。
使用 Azure 软件包连接 IoT 中心可以实现如下功能:
- 轻松连入 Azure IoT 中心,建立与 Azure IoT 的可靠通讯
- 为每个连接的设备设置标识和凭据,并帮助保持云到设备和设备到云消息的保密性
- 管理员可在云端大规模地远程维护、更新和管理 IoT 设备
- 从设备大规模接收遥测数据
- 将数据从设备路由到流事件处理器
- 从设备接收文件上传
- 将云到设备的消息发送到特定设备
可以使用 Azure IoT 中心来实现自己的解决方案后端。 此外,IoT 中心还包含标识注册表,可用于预配设备、其安全凭据以及其连接到 IoT 中心的权限。
传感器驱动
YoC 提供了传感器驱动框架,同时已经集成了部分传感器的驱动,使用者可以在驱动列表中找到自己所需要的传感器型号,如果不存在列表中,使用者可以根据传感器驱动框架增加对应的传感器驱动。传感器驱动程序不仅能提供传感器SDK,还能提供传感器驱动像ALS,气压计,温度,加速度计,陀螺仪,磁力计等。
uDATA 模型
YoC 中 uDATA 是根据物联网的特点,设计成的面对IoT的感知设备处理框架。对数据上云的数据模型进行抽象,隐藏了不同云平台协议的差异,消除了不同云平台SDK 的差异。
uDATA 框架主要分 IoT 框架和 uDATA 数据模型两层:
- IoT 框架负责完成与云端的数据对接,通过云平台官方提供的 SDK,完成数据的上行与下发。
- uDATA 数据模型,负责数据的采集与反馈处理。系统定时的将外围的传感器数据收集起来,保存在uDATA中,定时通过 IoT 框架将数据模型上传到云平台。云平台下发的数据,通过 IoT 框架的传换,存入到 uDATA 数据模型中,并触发数据更新事件。
详见 “ IoT 数据上云业务框架 ”
开发板资源
CB2201
详见 “第九章 应用程序开发” 的 “ 阿里云MQTT传感数据上云例程 ”