IOT物联网概述及应用层架构入门篇_iot物模型 如何对接-程序员宅基地

技术标签: 架构  网络  项目管理  物联网  

IOT物联网概述及应用层架构入门篇

本文是本着了解物联网原理及如何架构软件到具体案例的应用而梳理的一篇文章,学习了多位前辈的成果,有不足的地方请及时指正。

一、IOT是什么?

IOT即物联网,英文全称为Internet of Things。是指通过射频识别、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理的网络。

该概念最早于1999年提出,曾被称为继计算机、互联网之后,世界信息产业发展的第三次浪潮,到现在已发展20余年。如今,在日常生活中,我们已经可以接触到非常多的物联网产品,如智能家电、智能门锁等,这些都是物联网技术比较成熟的应用。

二、IOT是如何实现的?

举一个例子:我们从某宝买了一枚智能灯泡,到货后我们需要做如下操作步骤:

**第一步:【通电】**将灯泡拧到了灯口;
**第二步:【应用】**扫描说明书的二维码下载APP;
**第三步:【配网】**按照说明通过APP和灯进行交互使设备联网;
**第四步:【鉴权】**设备连网后设备请求接入服务,应用层会根据鉴权规则确认设备是否可以接入,允许接入后设备即可成功使用服务。(如果成功,用户无法感知)
**第五步:【使用】**这时我们就可以在APP上控制灯的颜色、灯的亮度、灯的开关,充分享受物联网带来的便捷了。
*概念解释:

**配网:**指的是将设备连接到互联网上,有的设备通过家用Wi-Fi入网,比如家里的摄像头;有的通过蓝牙入网,比如手环;有的通过zigbee网关入网,比如智能路灯,具体的入网方式和设备所要处理的业务、位置有关,整体从耗电量、通信范围、数据上传下载量等多个维度平衡选择。
**鉴权:**指设备接入应用层的时候需要确认是不是拥有应用层发给你的标识,举个例子:你拿着身份证在国内可以畅行无阻;但在国外就是行不通的,因为国外不承认“身份证即为合法居民”这个规则,只有“护照”别人才会承认。
以上操作步骤的具体实现架构原理如下图:

https://pic1.zhimg.com/80/v2-66a9d68f86fd9208420f4623811884f0_720w.jpg

IOT基础构成层

三、IOT三个基础层展开说明

3.1 感知层

**感知层定义:**感知层即我们的智能设备层,可以类比为我们的视觉、味觉、嗅觉、听觉等。感知层帮我们度量、定义事和物,比如温度、湿度、雾霾指数、是否移动、光照度、气味等;主要的技术有传感器技术、射频识别技术、二维码技术等。

感知层包含的设备类型:目前接触的智能设备有两种

第一种:简单的单一感知能力的设备,如烟雾探测器、安装GPS的防丢水杯等;

第二种:传感器、摄像头等混合并实现联动的复杂设备。

现目前第一种设备的厂商较多;第二种设备是第一种设备的组合创新,这不仅考验厂家的设备硬件能力,也需要有相当的软件实力。

*概念解释:

射频识别技术:即radio frequency identification,简称RFID,是一种简单的无线系统,包含阅读器、标签、应用程序三部分。主要是标签,标签由耦合元件和芯片组成,每个标签都有唯一识别码,然后附着在物体上,然后通过天线与阅读器通信,阅读器通过收集到的信息传到应用程序上面进行计算,从而赋予物体“开口说话”的功能。
传感器:对于传统的定义为,能感受到被测量并按照一定的规则转换成可用输出信号的器件或装置。对于广义上的传感器,在此基础上还会加入微处理器、模数转换、通信模组、电路设计、嵌入式程序等能力,极大程度地提升传感器的智能化。

3.2 网络层

网络层定义:实现数据传输,把数据从感知层传输至应用层(平台层)。

网络层包含内容:网络层分为物接入互联网、互联网传输两部分。

1. 物接入互联网部分

在这里插入图片描述

物接入互联网方式明细表

2. 互联网传输部分

互联网传输目前有两种比较主流的通讯协议:MQTT和CoAP

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输):是一个基于客户端-服务器的消息发布/订阅传输协议,可保持长连接,实现多对多异步通信;
CoAP(The Constrained Application Protocol,受限应用协议):是一种客户端-服务器单对单的协议,具备轻量低功耗的特点。

3.3 应用层

应用层定义:应用层就像我们的大脑,我们会对接收到的信息进行归类、判断并作出相应的动作或决定。

应用层的实现方式:目前实现方式大致可以分为两种

烟囱式的实现,即一套软件解决一类设备,优点是成本低、工期短,缺点是可扩展性差;
搭建SaaS、PaaS、IaaS架构,优点是可扩展性好,工期长,适应性较高,缺点是成本高。
烟囱式的实现:只沉淀单一类型的设备数据,不能做大数据化,主要以行业应用、闭环应用为主,一定程度上属于内联网、专用网。这种模式物体/信息共享难、应用系统间互联互通难,既难以适应规模化、协同化的发展要求,也难以引导和催生物联网更大的、潜在的发展。

云计算架构:SaaS、PaaS、IaaS实现

SaaS、PaaS、IaaS是云计算提出的架构,而云计算是实现物联网的技术之一,再延伸的说:人工智能依赖于大数据,大数据依赖于人联网、物联网,而这些都依赖于云计算。

所以从云计算的这个架构去看物联网是这样的:

SaaS(Software as a Service)强调应用即服务,我们用来控制灯、窗帘、音响的软件都属于SaaS层。即终端使用层。

PaaS(Platform as a Service)强调平台即服务,平台层不关心这个物是灯还是窗帘,只知道这类型的【物】有12个不同类型的属性,且这个类型的【物】连接了1324个具体的设备。哪个类型的【物】有XX个不同类型的属性,连接了XX个设备;物模型、物影子、规则引擎、物接入等这类抽象概念都在这一层实现。即平台方控制层。

IaaS(Infrastructure as a Service)强调基础设施即服务,灯的色温值是什么,电饭煲的煮饭方式是什么,窗帘是开是关,这些数据都是要存储在数据库中;PaaS层在几秒内要找到目标设备等这类动作是需要计算能力的;而承载这些数据库、计算能力的都是真实的硬件资源。IaaS层就是要调度、计算哪些工作需要多少资源,什么弹性伸缩、扩缩容都是这一层做的事情。即基础能量给予层。
在这里插入图片描述

云计算架构:SaaS、PaaS、IaaS实现

四、应用层所需的功能模块

在这里插入图片描述

物联网平台层整体产品架构参考
在这里插入图片描述
设备接入平台层的数据信息流转图

1. 产品管理

产品是设备的集合,通常是一组具有相同功能定义的设备集合。该模块以一种硬件产品为粒度,创建产品及配置产品相关信息。

产品信息管理:硬件产品的功能描述、性能参数、发布状态等信息管理;
组网拓扑管理:对于传感器、采集仪、网关,由于通讯方式不同,产品的组网拓扑便不同。此处描述各类产品入网的拓扑关系;
版本&固件管理:对产品的版本信息及固件进行管理;
物模型管理:物模型,即一类物理世界的实物(如传感器)在平台的数字化模型。物模型对该产品的上行数据、下行指令,上下行动作进行描述。简单来说,物模型就是该实体能对外提供什么信息以及能对它做什么,因此物模型是设备与平台之间的关键枢纽。

2. 设备管理

设备是硬件产品的最小单位,每个设备都对应一个唯一编码,从设备入库开始便记录相关信息,并且可以对设备进行资产分配、安全认证、配置操作等行为,最后对设备从入库到报废的全生命周期管理。

设备全生命周期管理:对设备的物理状态、健康状态、资产归属、调试日志进行记录,记录设备从入库到报废的全生命周期,便于问题追溯分析。
设备资产管理:对设备资产进行划分,便于控制用户设备权限。
虚拟设备:根据物模型构建虚拟设备,用于用户体验、真实设备受限时的模拟调试验证、批量压测验证平台性能等场景。
设备影子:每个设备有且只有一个设备影子,设备可以通过MQTT获取和设置设备影子来同步状态,用于存储设备上报状态、应用程序期望下发的配置,解耦应用于终端设备。一般用于网络不稳定、设备无法实时通信、一个设备在同一时间被反复请求等场景。

3. IoT设备接入

物联网平台支持海量多元异构数据的设备接入,通过简易的配置,便可建立设备与云平台之间的联系,实现稳定可靠的双向通信。

协议接入:使用MQTT协议接入数据,并根据场景定义不同topic进行消息发布订阅。
设备鉴权认证:以网关为单位,对接入数据topic做发布订阅鉴权认证,实现topic级别的权限隔离,提高接入安全性。
数据转换解析:对接入的异构数据进行格式统一,根据物模型对接入数据进行解析。
设备接入配置:此处的目的是把接入到平台的数据与具体的实体对象进行握手,以便于在应用中能够区分不同实体对象的数据。此处依赖于产品物模型与产品组网拓扑。需要注意的是,在应用层中,根据不同业务属性,可能会把实体对象做某些关系映射。
消息通信:当完成设备接入配置后,用户便能实现对设备的交互,包括数据上报、命令下发等。

4. 数据展示

该模块对物联网收集的数据,运用相应的可视化图表进行展示,以便于物联网监测数据能直观展示。此处功能与企业业务方向会紧密相关。

基础监测数据:对结构化数据进行基础图形表格数据展示。
系统集成数据:对视频监控、车流量等系统集成类进行数据展示。
数据可视化:安全监测领域主流的可视化系统,如BIM、GIS、视频融合、人员定位、可视化大屏等。
数据管理:对原始数据的数据维护、数据下载、文档管理等服务。

5. 数据分析

该模块对展示的数据加以分析,把物联网海量数据变成有价值的数据。此处功能与企业业务方向会紧密相关。

基础数据分析:包括同步分析、关联分析、同步分析、频谱分析、风玫瑰图分析;
高级数据分析:针对特定传感器的高级算法分析,包括索力算法分析、动态称重分析、深度测斜分析、柱体分析、索承结构分析;
报告报表分析:专业结构人员使用的分析工具,制作专业分析报告。

6. 规则引擎

规则引擎是指用户可以在物联网平台上可以配置某些规则,在判断条件满足规则后,平台会执行相应的动作来满足用户需求,灵活构建场景联动、报警等定制化业务场景。规则引擎所需要的元素如下:

1)触发条件

触发对象:可以是某个设备,某个测点,也可以是某个时刻,或某个事件;
触发条件:可以是简单的上下限判断,也可以是一个复杂的函数/算法判断;
触发时间:即时效性,可以是一直有效,或者规定时间内有效;
沉淀机制:避免设备上传相同数据导致重复触发规则。
2)执行动作

指令下发:即对制定设备发送指令;
发送通知:如短信、邮件、小程序、APP推送等;
产生报警:在运维报警监控界面产生一条报警记录;
执行时间:立即、或延时;
执行规则:执行某条规则;
规则状态开关:开启或关闭某条规则。
3)日志

每条状态为开启的规则,每次执行都要留有日志,存储触发时间、判断依据、执行动作记录等。

7. 运维服务

此模块为专业运维团队提供运维服务,是业务正常运作的关键。

运维监控:对项目运维情况进行监控,包括设备拓扑网络、运维报警监控、无效数据、设备报表分析;
设备调试:对设备进行远程在线调试;
OTA升级:上传新的升级包,并将OTA升级消息推送给设备,设备即可在线升级;
日志服务:包括设备全生命周期日志、用户操作日志等;
业务工单:支持业务运作的跨部门协作工单,此工单内容根据企业业务不同会有较大差异,此处不做具体展开说明。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37892471/article/details/126004700

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签