玩转OneNET物联网平台之简介-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5313|回复: 1

玩转OneNET物联网平台之简介

[复制链接]
发表于 2019-6-27 09:48 | 显示全部楼层 |阅读模式
本帖最后由 单片机菜鸟 于 2019-11-28 09:47 编辑

[md]**QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷**
![image]()


## 1.前言
    在进入OneNet系列之前,我们先来了解一下OneNet平台。读者可以自行阅读[OneNet官方文档](https://open.iot.10086.cn/doc/),博哥这里只是做到抛砖引玉的作用。

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

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

## 3.OneNET物联网平台架构

![image]()

    可以通过上图去理解整个OneNet平台的设计架构,对于我们来说,比较关注以下几点:

### 3.1 设备接入
    OneNET提供安全稳定的设备接入服务,支持包括LWM2M(CoAP)、MQTT、Modbus、HTTP、TCP等在内的多种协议:
- 在考虑低功耗以及广覆盖的场景,建议使用CoAP协议接入
- 在工业modbus通信场景,建议使用DTU+Modbus协议接入
- 在需要与设备实时通信的场景,建议采用MQTT协议接入
- 在设备单纯上报数据的场景,可以使用HTTP/HTTPS协议接入
- 在用户需要自定义协议接入的场景,建议采用TCP+脚本的方式接入

具体参考 [设备开发协议](https://open.iot.10086.cn/doc/book/device-develop/multpro/sdk-doc-tool/doc.html),大家可以点击下载具体的协议文档以便学习查阅。

### 3.2 设备管理
    OneNET平台针对不同的使用场景,提供关于设备的包括生命周期管理、在线状态监测、在线调试、数据管理等功能在内的丰富的设备管理功能。

具体参考 [入门手册](https://open.iot.10086.cn/doc/book/easy-manual/login.html)

### 3.3 API列表
    OneNET提供开放的、丰富的、基于HTTP/HTTPS的API接口,用户可以使用API进行设备管理,数据查询,设备命令交互等操作,在API的基础上,根据自己的个性化需求指定搭建上层应用。

    具体参考 [API列表](https://open.iot.10086.cn/doc/book/application-develop/api/api-list.html),作为开发者的我们需要根据产品接入协议来选择不同的API。

    平台提供的API列表如下:

#### 3.3.1 设备管理相关 —— 重要
API | 请求方式 | 说明
---|---|---
新增设备 | POST | 供应用层使用
注册设备 | POST| 用于设备自行注册场景
更新设备信息 | PUT | 用于更新设备属性
查询设备详情 | GET| 用于查询设备属性,包括设备在线状态
批量查询设备信息 | GET |
批量查询设备状态 | GET|
删除设备 | DELETE|

#### 3.3.2 数据流管理相关  —— 重要
API | 请求方式 | 说明
---|---|---
新增数据流 | POST | 建立某设备独有的数据属性,产品内建议使用数据流模板替代
更新数据流属性 | PUT|
查询数据流状态 | GET | 可用于查询数据流配置以及最新数据点
删除数据流 | DELETE |

#### 3.3.3 数据管理相关 —— 重要
API | 请求方式 | 说明
---|---|---
查询设备历史数据 | GET |
批量查询设备最新数据 | GET|
上传数据点 | POST | 设备/应用服务器均可通过HTTP/HTTPS方式上传数据
上传文件 | POST| 可用于设备上传原始数据、图片、文件等
获取文件 | GET |

#### 3.3.4 设备命令相关
API | 请求方式 | 说明
---|---|---
下发命令 | POST | 平台主动发送数据至设备
查询命令状态 | GET| 用于查询某条命令的执行情况
查询命令响应 | GET | 设备收到命令时需要设备发送命令响应
查询设备历史命令 | GET|

#### 3.3.5 触发器相关
API | 请求方式 | 说明
---|---|---
新增触发器 | POST |
更新触发器 | PUT|
查询触发器详情 | GET |
删除触发器 | DELETE|

#### 3.3.6 apikey相关
API | 请求方式 | 说明
---|---|---
新增apikey | POST | 新增的apikey只具有设备级的权限
更新apikey | PUT|
查询apikey | GET |
删除apikey | DELETE|

#### 3.3.7 topic相关(限MQTT设备使用)
API | 请求方式 | 说明
---|---|---
发布消息 | POST | 发布消息到topic
查询订阅设备列表 | GET| 查询订阅某个topic的设备列表
查询设备订阅详情 | GET | 查询设备的topic订阅列表
查询topic列表 | GET|

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

具体参考 [HTTP推送](https://open.iot.10086.cn/doc/book/application-develop/httppush/introduce.html)

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

具体参考 [安全鉴权](https://open.iot.10086.cn/doc/book/easy-manual/auth.html)  以及 [API鉴权](https://open.iot.10086.cn/doc/book/application-develop/api/api-usage.html)

## 4.资源模型
    OneNET资源模型如下图:

![image]()

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

![image]()

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

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

![image]()

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

![image]()

![image]()

![image]()

    其中最重要的信息就是“设备接入协议”,协议适用场景请见 [协议简介](https://open.iot.10086.cn/doc/book/easy-manual/product&device/protocal-introduce.html)。

![image]()

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

### 6.2 创建设备
    创建产品后会提示立即添加设备,而创建设备又有多种方式。
#### 6.2.1 创建单个设备 —— 手动创建
    创建产品后会提示立即添加设备,我们在提前预知设备的前提下推荐采用此种方式。具体可看成官方文档  [创建单个设备](https://open.iot.10086.cn/doc/book/easy-manual/product&device/device-create/single-device.html) 。

**手动创建使用场景**:
- 提前预知设备,比如温湿度控制系统上传数据节点,我们可以提前预知设备信息以及设备数量。

#### 6.2.2 批量创建设备 —— 手动创建
    除了单个创建设备外,平台还提供批量创建设备的功能。具体可看成官方文档  [批量创建设备](https://open.iot.10086.cn/doc/book/easy-manual/product&device/device-create/batch-devcie.html) 。

**手动创建使用场景**:
- 提前预知设备,比如多点温湿度控制系统上传数据节点,我们可以提前预知设备信息以及设备数量。

#### 6.2.3 自动创建设备 —— API创建
    在无法提前知道设备的场景下,我们无法提前去创建设备节点,**推荐的做法是设备自动往OneNet平台注册**。比如,智能家居LED系统中,我们无法提前预知家里会安装多少LED设备,这个时候就需要设备可以自动注册绑定系统。在后面OneNet Mqtt中我们会讲解这一点,属于常用功能。具体API可以参考 [API列表](https://open.iot.10086.cn/doc/book/application-develop/api/api-list.html),**开发者需要注意不同协议下使用不同的API**。

### 6.3 数据流与数据点
    创建完设备之后,我们就可以开始处理数据了。  
    OneNet平台通过数据流与数据点来组织设备上行数据,如下图所示:
![image]()

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

![image]()

### 6.4 应用管理 —— 数据展示
    通过OneNET应用编辑器,用户可以方便快捷地实现OneNET平台上的设备数据流可视化。请开发者自行查看文档 [应用管理](https://open.iot.10086.cn/doc/book/easy-manual/application-manage/1.html)  
    基本上到这里,我们完成了OneNet平台上的一个项目配置。

## 7.总结
    本篇属于纯理论篇,大体上介绍了一下OneNet平台下的一些知识点,方便我们有个大体了解。接下来的篇章,博主将针对不同协议进行不同讲解。[/md]
 楼主| 发表于 2019-11-28 10:15 | 显示全部楼层
自我顶一下  https://blog.csdn.net/dpjcn1990
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 08:54 , Processed in 0.095117 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表