玩转OneNET物联网平台之简介

❤️博主介绍❤️
😬 作者:单片机菜鸟哥
👉火爆博客:ESP8266 Arduino教程

零基础从入门到熟悉Arduino平台下开发ESP8266,同时会涉及网络编程知识。专栏文章累计超过60篇,分为基础篇、网络篇、应用篇、高级篇,涵盖ESP8266大部分开发技巧。

👻最近更新:ESP32 MicroPython应用

讲解Python在esp32上的应用,包括网络请求、爬虫

快速导航
单片机菜鸟的博客快速索引(快速找到你要的)

如果觉得有用,麻烦点赞收藏,您的支持是博主创作的动力。

1.前言

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

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+脚本的方式接入

具体参考 设备开发协议,大家可以点击下载具体的协议文档以便学习查阅。

3.2 设备管理

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

具体参考 入门手册

3.3 API列表

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

    具体参考 API列表,作为开发者的我们需要根据产品接入协议来选择不同的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请求方式说明
新增apikeyPOST新增的apikey只具有设备级的权限
更新apikeyPUT
查询apikeyGET
删除apikeyDELETE
3.3.7 topic相关(限MQTT设备使用)
API请求方式说明
发布消息POST发布消息到topic
查询订阅设备列表GET查询订阅某个topic的设备列表
查询设备订阅详情GET查询设备的topic订阅列表
查询topic列表GET

3.4 HTTP推送

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

具体参考 HTTP推送

3.5 安全认证

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

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

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

在这里插入图片描述

6.OneNet开发准备

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

6.1 创建产品

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

在这里插入图片描述

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

在这里插入图片描述

image

image

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

在这里插入图片描述

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

6.2 创建设备

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

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

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

手动创建使用场景

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

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

手动创建使用场景

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

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

6.3 数据流与数据点

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

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

在这里插入图片描述

6.4 应用管理 —— 数据展示

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

7.总结

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机菜鸟哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值