一、你如果想学基于Arduino的ESP8266开发技术
一、基础篇
二、网络篇
三、应用篇
四、高级篇
1.前言
在进入OneNet系列之前,我们先来了解一下OneNet平台。读者可以自行阅读OneNet官方文档,博哥这里只是做到抛砖引玉的作用。
2.OneNET物联网平台简介
OneNET定位为PaaS服务,即在物联网应用和真实设备之间搭建高效、稳定、安全的应用平台:
- 面向设备,适配多种网络环境和常见传输协议(包括我们讲的MQTT、HTTP等),提供各类硬件终端的快速接入方案和设备管理服务;
- 面向企业应用,提供丰富的API和数据分发能力以满足各类行业应用系统的开发需求,使物联网企业可以更加专注于自身应用的开发,而不用将工作重心放在设备接入层的环境搭建上,从而缩短物联网系统的形成周期,降低企业研发、运营和运维成本。
简单理解为:放心用,OneNet平台为你考虑了方方面面。
3.OneNET物联网平台架构
可以通过上图去理解整个OneNet平台的设计架构,对于我们来说,比较关注以下几点:
3.1 设备接入
OneNET提供安全稳定的设备接入服务,支持包括LWM2M(CoAP)、MQTT、Modbus、HTTP、TCP等在内的多种协议:
- 在考虑低功耗以及广覆盖的场景,建议使用CoAP协议接入
- 在工业modbus通信场景,建议使用DTU+Modbus协议接入
- 在需要与设备实时通信的场景,建议采用MQTT协议接入
- 在设备单纯上报数据的场景,可以使用HTTP/HTTPS协议接入
- 在用户需要自定义协议接入的场景,建议采用TCP+脚本的方式接入
具体参考 设备开发协议,大家可以点击下载具体的协议文档以便学习查阅。
3.2 设备管理
OneNET平台针对不同的使用场景,提供关于设备的包括生命周期管理、在线状态监测、在线调试、数据管理等功能在内的丰富的设备管理功能。
具体参考 入门手册
3.3 API列表
OneNET提供开放的、丰富的、基于HTTP/HTTPS的API接口,用户可以使用API进行设备管理,数据查询,设备命令交互等操作,在API的基础上,根据自己的个性化需求指定搭建上层应用。
具体参考 API列表,作为开发者的我们需要根据产品接入协议来选择不同的API。
平台提供的API列表如下:
3.3.1 设备管理相关 —— 重要
新增设备 | POST | 供应用层使用 |
注册设备 | POST | 用于设备自行注册场景 |
更新设备信息 | PUT | 用于更新设备属性 |
查询设备详情 | GET | 用于查询设备属性,包括设备在线状态 |
批量查询设备信息 | GET | |
批量查询设备状态 | GET | |
删除设备 | DELETE |
3.3.2 数据流管理相关 —— 重要
新增数据流 | POST | 建立某设备独有的数据属性,产品内建议使用数据流模板替代 |
更新数据流属性 | PUT | |
查询数据流状态 | GET | 可用于查询数据流配置以及最新数据点 |
删除数据流 | DELETE |
3.3.3 数据管理相关 —— 重要
查询设备历史数据 | GET | |
批量查询设备最新数据 | GET | |
上传数据点 | POST | 设备/应用服务器均可通过HTTP/HTTPS方式上传数据 |
上传文件 | POST | 可用于设备上传原始数据、图片、文件等 |
获取文件 | GET |
3.3.4 设备命令相关
下发命令 | POST | 平台主动发送数据至设备 |
查询命令状态 | GET | 用于查询某条命令的执行情况 |
查询命令响应 | GET | 设备收到命令时需要设备发送命令响应 |
查询设备历史命令 | GET |
3.3.5 触发器相关
新增触发器 | POST | |
更新触发器 | PUT | |
查询触发器详情 | GET | |
删除触发器 | DELETE |
3.3.6 apikey相关
新增apikey | POST | 新增的apikey只具有设备级的权限 |
更新apikey | PUT | |
查询apikey | GET | |
删除apikey | DELETE |
3.3.7 topic相关(限MQTT设备使用)
发布消息 | POST | 发布消息到topic |
查询订阅设备列表 | GET | 查询订阅某个topic的设备列表 |
查询设备订阅详情 | GET | 查询设备的topic订阅列表 |
查询topic列表 | GET |
3.4 HTTP推送
针对某些实时性要求较高的场景,OneNET提供数据推送功能,可以过滤掉设备端频繁的周期性上报数据,将用户关心的实时性较高的数据,通过HTTP/HTTPS的方式推送到用户的应用服务器上。
具体参考 HTTP推送
3.5 安全认证
OneNET提供用户资源访问安全认证机制,提供产品级以及设备级的不同粒度的密钥,并支持用户自定义密钥访问权限,最大限度保证用户设备以及应用层接入的安全性。
4.资源模型
OneNET资源模型如下图:
4.1 用户(user) —— OneNet平台账号
理解为每一个OneNet平台账号
4.2 产品(product) —— 具体项目
用户的最大资源集为产品,产品下资源包括设备、设备数据、设备权限、数据触发服务以及基于设备数据的应用等多种资源,用户可以创建多个产品。理解为用户下的每一个项目,比如博哥建立一个温湿度监控系统。
4.3 设备(device) —— 项目涉及到的物理设备
设备为真实终端在平台的映射,真实终端连接平台时,需要与平台设备建立一一对应关系,终端上传的数据被存储在数据流中,设备可以拥有一个或者多个数据流。比如每一个温湿度模块+8266可组成一个设备。
4.4 数据流与数据点 —— 物理设备上传的数据
数据流用于存储设备的某一类属性数据,例如温度,湿度,坐标等信息;平台要求设备上传并存储数据时,必须以key-value的格式上传数据,其中key即为数据流名称,value为实际存储的数据点,value格式可以为int、float、string、json等多种自定义格式。比如温湿度数据。
4.5 APIkey —— 用户校验标识
APIkey为用户进行API调用时的密钥,用户访问产品资源时,必须使用该产品目录下对应的APIkey。其实跟买车票一样,有身份证才让上车。
4.6 触发器(trigger) —— 报警服务
触发器为产品目录下的消息服务,可以进行基于数据流的简单逻辑判断并触发HTTP请求或者邮件。跟报警机制有点类似,触发了报警机制(比如温度超过多少),就做一些用户提示操作。
4.7 应用(application) —— OneNet自带UI展示
应用编辑服务,支持用户以拖拽控件并关联设备数据流的方式,生成简易网页展示应用。比如,温湿度控制系统,我们可以拉取控件展示温度折线图。
5.术语解释
在开发OneNet项目之前,我们需要了解OneNet常用术语:
6.OneNet开发准备
理解了OneNet基本知识之后,我们就可以开始建造我们自己的项目(博主不会教你怎么去注册OneNet,请自行注册登录)。
6.1 创建产品
登录后进入开发者中心,创建不同协议下的产品(项目),博主在这里先创建三个不同协议的产品(项目,后面的案例会基于这三个产品进行)。
它们分别对应以下产品配置:
其中最重要的信息就是“设备接入协议”,协议适用场景请见 协议简介。
每种协议对应自己的开发方式以及调试工具,开发者可以自行查阅官方文档。
6.2 创建设备
创建产品后会提示立即添加设备,而创建设备又有多种方式。
6.2.1 创建单个设备 —— 手动创建
创建产品后会提示立即添加设备,我们在提前预知设备的前提下推荐采用此种方式。具体可看成官方文档 创建单个设备 。
手动创建使用场景:
- 提前预知设备,比如温湿度控制系统上传数据节点,我们可以提前预知设备信息以及设备数量。
6.2.2 批量创建设备 —— 手动创建
除了单个创建设备外,平台还提供批量创建设备的功能。具体可看成官方文档 批量创建设备 。
手动创建使用场景:
- 提前预知设备,比如多点温湿度控制系统上传数据节点,我们可以提前预知设备信息以及设备数量。
6.2.3 自动创建设备 —— API创建
在无法提前知道设备的场景下,我们无法提前去创建设备节点,推荐的做法是设备自动往OneNet平台注册。比如,智能家居LED系统中,我们无法提前预知家里会安装多少LED设备,这个时候就需要设备可以自动注册绑定系统。在后面OneNet Mqtt中我们会讲解这一点,属于常用功能。具体API可以参考 API列表,开发者需要注意不同协议下使用不同的API。
6.3 数据流与数据点
创建完设备之后,我们就可以开始处理数据了。
OneNet平台通过数据流与数据点来组织设备上行数据,如下图所示:
设备上传并存储数据时,必须以key-value的格式上传数据,其中key即为数据流(stream)名称,value为实际存储的数据点(point),value格式可以为int、float、string、json等多种自定义格式。
在实际应用中,数据流可以被用于分类描述设备的某一类属性数据,例如温度,湿度,坐标等信息,用户可以自定义数据流的数据范围,将相关性较高的数据归类为一个数据流。
数据流中的数据在存储的同时可以“流向”后续服务,数据流是平台后续数据服务(规则、触发器、消息队列等)的服务对象,后续数据服务支持用户通过选择数据流的方式选择服务的数据来源。
数据流中的数据平台会默认以时序存储,用户可以查询数据流中的不同时间的数据点的值,如下图:
6.4 应用管理 —— 数据展示
通过OneNET应用编辑器,用户可以方便快捷地实现OneNET平台上的设备数据流可视化。请开发者自行查看文档 应用管理
基本上到这里,我们完成了OneNet平台上的一个项目配置。
7.总结
本篇属于纯理论篇,大体上介绍了一下OneNet平台下的一些知识点,方便我们有个大体了解。接下来的篇章,博主将针对不同协议进行不同讲解。