一、你如果想学基于Arduino的ESP8266开发技术

一、基础篇

二、网络篇

三、应用篇

四、高级篇

1.前言

    在进入OneNet系列之前,我们先来了解一下OneNet平台。读者可以自行阅读OneNet官方文档,博哥这里只是做到抛砖引玉的作用。

2.OneNET物联网平台简介

    OneNET定位为PaaS服务,即在物联网应用和真实设备之间搭建高效、稳定、安全的应用平台

  • 面向设备,适配多种网络环境和常见传输协议(包括我们讲的MQTT、HTTP等),提供各类硬件终端的快速接入方案和设备管理服务;
  • 面向企业应用,提供丰富的API和数据分发能力以满足各类行业应用系统的开发需求,使物联网企业可以更加专注于自身应用的开发,而不用将工作重心放在设备接入层的环境搭建上,从而缩短物联网系统的形成周期,降低企业研发、运营和运维成本。

    简单理解为:放心用,OneNet平台为你考虑了方方面面。

3.OneNET物联网平台架构

玩转OneNET物联网平台之简介-LMLPHP

    可以通过上图去理解整个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相关

新增apikeyPOST新增的apikey只具有设备级的权限
更新apikeyPUT
查询apikeyGET
删除apikeyDELETE

3.3.7 topic相关(限MQTT设备使用)

发布消息POST发布消息到topic
查询订阅设备列表GET查询订阅某个topic的设备列表
查询设备订阅详情GET查询设备的topic订阅列表
查询topic列表GET

3.4 HTTP推送

    针对某些实时性要求较高的场景,OneNET提供数据推送功能,可以过滤掉设备端频繁的周期性上报数据,将用户关心的实时性较高的数据,通过HTTP/HTTPS的方式推送到用户的应用服务器上。

具体参考 HTTP推送

3.5 安全认证

    OneNET提供用户资源访问安全认证机制,提供产品级以及设备级的不同粒度的密钥,并支持用户自定义密钥访问权限,最大限度保证用户设备以及应用层接入的安全性。

具体参考 安全鉴权 以及 API鉴权

4.资源模型

    OneNET资源模型如下图:

玩转OneNET物联网平台之简介-LMLPHP

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常用术语:

玩转OneNET物联网平台之简介-LMLPHP

6.OneNet开发准备

    理解了OneNet基本知识之后,我们就可以开始建造我们自己的项目(博主不会教你怎么去注册OneNet,请自行注册登录)。

6.1 创建产品

    登录后进入开发者中心,创建不同协议下的产品(项目),博主在这里先创建三个不同协议的产品(项目,后面的案例会基于这三个产品进行)。

玩转OneNET物联网平台之简介-LMLPHP

它们分别对应以下产品配置:

玩转OneNET物联网平台之简介-LMLPHP

玩转OneNET物联网平台之简介-LMLPHP

玩转OneNET物联网平台之简介-LMLPHP

    其中最重要的信息就是“设备接入协议”,协议适用场景请见 协议简介

玩转OneNET物联网平台之简介-LMLPHP

    每种协议对应自己的开发方式以及调试工具,开发者可以自行查阅官方文档。

6.2 创建设备

    创建产品后会提示立即添加设备,而创建设备又有多种方式。

6.2.1 创建单个设备 —— 手动创建

    创建产品后会提示立即添加设备,我们在提前预知设备的前提下推荐采用此种方式。具体可看成官方文档 创建单个设备

手动创建使用场景

  • 提前预知设备,比如温湿度控制系统上传数据节点,我们可以提前预知设备信息以及设备数量。

6.2.2 批量创建设备 —— 手动创建

    除了单个创建设备外,平台还提供批量创建设备的功能。具体可看成官方文档 批量创建设备

手动创建使用场景

  • 提前预知设备,比如多点温湿度控制系统上传数据节点,我们可以提前预知设备信息以及设备数量。

6.2.3 自动创建设备 —— API创建

    在无法提前知道设备的场景下,我们无法提前去创建设备节点,推荐的做法是设备自动往OneNet平台注册。比如,智能家居LED系统中,我们无法提前预知家里会安装多少LED设备,这个时候就需要设备可以自动注册绑定系统。在后面OneNet Mqtt中我们会讲解这一点,属于常用功能。具体API可以参考 API列表开发者需要注意不同协议下使用不同的API

6.3 数据流与数据点

    创建完设备之后,我们就可以开始处理数据了。
    OneNet平台通过数据流与数据点来组织设备上行数据,如下图所示:
玩转OneNET物联网平台之简介-LMLPHP

    设备上传并存储数据时,必须以key-value的格式上传数据,其中key即为数据流(stream)名称,value为实际存储的数据点(point),value格式可以为int、float、string、json等多种自定义格式。
    在实际应用中,数据流可以被用于分类描述设备的某一类属性数据,例如温度,湿度,坐标等信息,用户可以自定义数据流的数据范围,将相关性较高的数据归类为一个数据流。
    数据流中的数据在存储的同时可以“流向”后续服务,数据流是平台后续数据服务(规则、触发器、消息队列等)的服务对象,后续数据服务支持用户通过选择数据流的方式选择服务的数据来源
    数据流中的数据平台会默认以时序存储,用户可以查询数据流中的不同时间的数据点的值,如下图:

玩转OneNET物联网平台之简介-LMLPHP

6.4 应用管理 —— 数据展示

    通过OneNET应用编辑器,用户可以方便快捷地实现OneNET平台上的设备数据流可视化。请开发者自行查看文档 应用管理
    基本上到这里,我们完成了OneNet平台上的一个项目配置。

7.总结

    本篇属于纯理论篇,大体上介绍了一下OneNet平台下的一些知识点,方便我们有个大体了解。接下来的篇章,博主将针对不同协议进行不同讲解。

05-11 16:05