物联网云平台系统设计

2023-11-12

##物联网云平台系统设计

下面将谈到几个关键问题:

  • 设备如何接入网络?
  • 设备间如何通信?
  • 物联网数据的用途?
  • 如何搭建起一个物联网系统框架呢?它的技术架构又是怎么样呢?
  • 物联网终端软件系统架构?
  • 物联网云平台系统架构?

###1. 物联网设备如何接入到网络?

只有设备接入到网络里面,才能算是物联网设备。这里涉及到2个关键点:接入方式以及网络通信方式

####设备接入方式:
当前有2种接入方式

  1. 直接接入:物联网终端设备本身具备联网能力直接接入网络,比如 在设备端加入NB-IOT通信模组,2G通信模组。
  2. 网关接入:物联网终端设备本身不具备入网能力,需要在本地组网后,需要统一通过网关再接入到网络。 比如终端设备通过zigbee无线组网,然后各设备数据通过Zigbee网关统一接入到网络里面。常用到本地无线组网技术有Zigbee,Lora,BLE MESH, sub-1GHZ等。

在物联网设备里面,物联网网关是一个非常重要的角色。一个处在本地局域网与外部接入网络之间的智能设备。主要的功能是网络隔离,协议转化/适配以及数据网内外传输。

一个典型的物联网网关架构如下:

####网络通信方式
常用的通信网络主要存在2种方式:

1.移动网络(主要户外设备用)
移动网络2G/3G/4G/5G/NB-IOT等
2.宽带(主要户内设备用)
WIFI,Ethernet等

###物联网设备接入网络后如何开展M2M,M2C通信?

物联网设备终端接入网络后,只是物联网应用的开始。 设备接入网络后,设备与设备之间需要互相通信, 设备与云端需要互相通信。 只有互通,物联网的价值才展现出来。 既然要互通,则需要一套物联网通信协议。只有遵循该套协议的设备相互间能够通信,能够交换数据。

常用的物联网通信协议有哪些? 主要有如下协议:MQTT,COAP等,他们有个共同点都是基于消息模型来实现的。设备与设备之间,设备与云端之间通过交换消息来实现通信,消息里面携带了通信数据。

###物联网设备之间,设备与云平台能够交换数据后,接下来要干怎么呢?

21世纪,什么最重要?数据。 有了大量的物联网设备数据后, 针对数据,人类可以去挖掘里面的规律,挖掘里面的商业价值,对设备未来的状态进行预测等等。

对于物联网数据应用,分几个层次来讲

  1. 基础应用:监控

通过物联网收集到设备数据后, 如果设备数据状态超过预设的状态则自动第一时间报警,管理员第一时间开展处理,可以通过远程操作,下达命令。把问题解决在萌芽状态。

2.进阶应用: 报表统计

通过统计方法, 对设备的历史运行数据进行统计分析。可以按不同维度分析出不同报告。然后以图表或者大屏方式展现在管理员面前。 管理员可以快速直观的了解到整个物联网设备运行状况。

3.高级应用: 数据挖掘/机器学习

这部分需要从数据里面挖掘出有价值的东西出来。比如通过一段时间时间设备数据的连续跟踪分析并结合人类过往的设备运维经验,通过机器学习方式预测设备发生故障概率,以及发生故障后可能的引起原因,并给出维修方案。刚才举的例子,是物联网高级应用里面的冰山一角。 通过引入现在火热的AI技术。 物联网就能变成智能物联网了。 也许在不久的将来, 人与设备可以自由对话,设备与设备之间也能够对话并自动做出最优决策。

综合所述,物联网的价值在于提高生产效率,管理效率,极大促进社会生产力的提高。

###如何搭建起一个物联网系统框架呢?它的技术架构又是怎么样呢?

###物联网终端设备软件系统架构

常见系统框架的总结下来主要存在如下2种: 带RTOS的(处理复杂的业务场景,场景里面通过需要多个事务并行协同完成工作)和不带RTOS的(通常处理的业务场景较单一)

不带RTOS设备终端系统框架:

带RTOS设备终端系统框架:

RTOS是什么? 实时多任务操作系统,有了它,在终端设备里面可以并行运行多个任务。每个任务负责一个事务。通过并行化运行,响应实时性及效率就得到提升。RTOS实时操作内核一般包含的重要组件如下:

1. 任务调度
2. 任务间同步与通信
3. 内存分配
4. 中断管理
6. 时间管理
7. 设备驱动

以任务调度组件举例:
在嵌入式操作系统中,任务是CPU上最小运行单元。通常一个稍微复杂点IOT APP是由多个任务协同完成。比如有的任务负责处理用户事件输入以及UI显示,有的任务负责处理数据通信,有的任务负责业务逻辑处理。

既然一个系统中有多个任务在跑,而CPU资源确是单一的,这样导致每个时刻只能由一个任务在CPU上跑。 因此为了每个任务都能够在CPU上有运行机会,就涉及到了任务调度概念。 任务调度需要按照一定的规则来,那一般是按照哪些规则来的? 我们常见的调度方式有3种: 一个基于优先级调度的, 一个是基于时间片调度的, 一个是把优先级和时间片结合在一起调度。

以优先级调度举例,在定义任务的时候,给每个任务分配一个优先级,在运行的时候,高优先级的任务都会优先被运行。 直到没有高优先级任务后,低优先级任务才会被运行。 假如低优先级任务获得CPU资源后,这是如果有高优先级任务就绪怎么办呢? 两种处理方式:1. 继续运行 2. 抢占式。 高优先级抢占CPU资源进入运行状态。

其他组件就不一一列举了。

###物联网云平台系统架构

物联网云平台系统架构主要包含四大组件:

  • 设备接入
  • 设备管理
  • 规则引擎
  • 安全认证及权限管理

####设备接入

设备接入主要都干些什么呢?
1.包含多种设备接入协议,最主流的是MQTT协议。有些云计算厂商也在MQTT协议上精简协议变成独有的接入协议。
2.并发连接管理,维持可能是数十亿设备的长连接管理。

如果应对数十亿的设备连接管理? 目前开放出来的MQTT代理服务器大都是单机版,最多也就是并发连接十几万设备。因此如果要管理数十亿的连接,需要用到负载均衡,用到分布式架构。在云平台需要部署分布式MQTT代理服务器。

####设备管理

一般以树形结构的方式管理设备,包含设备创建管理以及设备状态管理等等。根节点以产品开始, 然后是设备组,再到具体设备。
主要包含如下管理:
产品注册及管理
产品下面的设备增删改查管理
设备消息发布
OTA设备升级管理等

####规则引擎

物联网云平台通常是基于现有云计算平台搭建的。 一个物联网成熟业务除了用到物联网云平台提供功能外,一般还需要用到云计算平台提供功能,比如云主机,云数据库等。用户可以在云主机上搭建web 行业应用服务。

规则引擎主要作用是把物联网平台数据通过过滤转发到其他云计算产品上。
比如可以把设备上报的数据转发到table store数据库产品里。

规则引擎一般使用方式:类SQL语言,通过编写SQL语言,用户可以过滤数据、处理数据,并把数据发到其他云计算产品,或者其他云计算服务。

####安全认证及权限管理

物联网云平台为每个设备颁发唯一的证书,需要证书通过后才能允许设备接入到云平台。云平台最小授权粒度一般是做到设备级。我们所说的证书一般分为2种:一种是产品级证书,一种是设备级证书。 产品级证书拥有最大的权限,可以对产品下所有的设备进行操作。 设备级证书,只能对自己所属的设备进行操作,无法对其他设备进行操作。

因此每个接入云平台的设备都在本地存储一个证书(其实存在形式是一个KEY,有多个字符串构成)。每次与云端建立连接时,都要把证书带上。以便云端安全组件核查通过。

####云计算产品

大数据计算产品, 云基础服务(高性能服务器,云数据库,云网络)等

####物联网应用

智慧城市, 智慧农业,工业4.0等

下面一张是来自百度物联网平台架构:
突出展示了物联网设备, 物联网云平台, 云计算平台是如何协同工作的,有较大的参考价值。

转载请注明出处

获取物联网设备端及web应用服务平台端源代码
https://www.adminiot.com.cn/modules/1.html

了解更多物联网技术资讯,物联网开放代码,IOT解决方案请访问
www.adminiot.com.cn

阿里云云产品通用代金券分享,最高1000元,助力大家一步上云,更低成本上云
点击获取阿里云代金券

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

物联网云平台系统设计 的相关文章

  • 按键控制数码管加减清零

    实验说明 实验接线 独立按键模块 gt 单片机管脚 K1 gt P31 K2 gt P30 K3 gt P32 K4 gt P33 未使用 大家可以自己扩展功能 动态数码管模块 gt 单片机管脚 参考动态数码管实验接线 开发攻略内在对应的实
  • 【任务调度系统第二篇】:XXL Job源码分析

    文章目录 写在前面 一 XXL JOB项目源码整体概括 1 源码整体概括说明 2 分析该项目源码时一些必须的知识 2 1 quartz简单介绍 2 2 freemarker前端渲染模板简介 2 3 java基本功修炼 二 xxl job a
  • Vscode编辑器下显示图片遇到的问题

    在编辑器Vscode下显示jpg图片不成功 测试代码和提示错误信息如下图 但是在IDLE中进行如上操作却能正常显示 Python环境为anaconda PIL matplotlib 问题出在什么地方呢

随机推荐

  • 算法1:一个无序的int数组,包含正负数, 排序成:左边为负数 右边为正数

    public class MinusPlubs public static void minusLeftPlusRight int nums int p1 1 boolean firstTime true for int i 0 i lt
  • D2D通信的Matlab关键技术

    D2D通信的Matlab关键技术 D2D Device to Device 通信是一种直接在终端设备之间进行通信的技术 它可以提供高效的通信和资源共享 在本文中 我们将介绍D2D通信的一些关键技术 并使用Matlab提供相应的源代码来实现这
  • 利用Power BI计算组,设计个性化数据标签

    利用Power BI计算组 设计个性化数据标签 知乎 zhihu com https zhuanlan zhihu com p 405532292
  • Exception 开发遇见异常

    1 java lang OutOfmemoryError 原因 常见的有以下几种 1 内存中加载的数据量过于庞大 如一次从数据库取出过多数据 2 集合类中有对对象的引用 使用完后未清空 使得JVM不能回收 3 代码中存在死循环或循环产生过多
  • TCP协议如何保证可靠传输

    TCP的功能是交付数据 所以TCP的可靠就是保证每次数据按序 按时 不丢数据 顺利的交付给对端 可靠不等于安全 TCP尽最大可能的保证数据可靠性 但是没有任何措施保证数据的安全性 所谓安全就是你的数据不会被别人看到或者窃取到 TCP上的数据
  • Ubuntu安装Redis集群(主从+哨兵)

    一 下载 官网 Download Redis 百度云 链接 https pan baidu com s 1sQjpbiFIFhnSpa0 uCP53A 提取码 AA56 版本 redis 6 23 注 本文依旧此博文修改而来 那篇更为详细
  • 使用Java实现七牛云OSS云存储上传图片至指定目录

    使用Java实现七牛云OSS云存储上传图片至指定目录 思路介绍 Controller代码 Util工具类代码 配置类 配置对象QnOssProperties 思路介绍 首先介绍下我的实现思路 前端通过Controller调用上传方法 上传方
  • 深分页优化总结

    前言 最近有面试过也遇到了问关于深分页问题 在这里简单从MySQL ES等方面分享一下自己对该问题认识和总结 一 深分页定义 可以从ES定义上来划分浅分页和深分页的边界 即页数超过10000页为深分页 少于10000页为浅分页 二 MySQ
  • QT打包发布全流程,超详细

    目录 第一步 配置环境变量 这一步不会的可以看我另一篇文章 QT 打包发布之环境变量配置 简单四步搞定 第三步 进行初步测试 主演是看你的程序是否有错 第四步 程序能运行 就可以在上层目录中看到生成了一个release文件夹 第五步 点开文
  • LeetCode周赛总结 第277场

    本文同步发布在我的个人博客 LeetCode周赛总结 第277场 欢迎访问 本次周赛没想到比上周还要简单 前三题都可以用非常简单的方法快速解决 第四题如果想对了方向其实也比较简单 元素计数 题目链接 元素计数 解题思路 相当基础的题目 要同
  • 华为OD机试 - 最佳植树距离(Java)

    题目描述 按照环保公司要求 小明需要在沙化严重的地区进行植树防沙工作 初步目标是种植一条直线的树带 由于有些区域目前不适合种植树木 所以只能在一些可以种植的点来种植树木 在树苗有限的情况下 要达到最佳效果 就要尽量散开种植 不同树苗之间的最
  • 【Java script基础学习】本地对象 - Date

    Date 日期对象 用来操作计算机的日期和时间 获取 获取当前日期时间 获取当前的时间戳 Date now 时间戳 从1970 1 1 0 0 0 到此刻的毫秒数 获取完整的日期对象 new Date 获取到的是一个对象类型的日期 包含日期
  • STM32MP157驱动开发——Linux LCD驱动(上)

    STM32MP157驱动开发 Linux LCD驱动 上 0 前言 一 LCD 和 LTDC 简介 1 LCD 简介 1 分辨率 2 像素格式 3 LCD 屏幕接口 4 LCD 时间参数 5 RGB LCD 屏幕时序 6 像素时钟 7 显存
  • 【Python pygame】零基础也能轻松掌握的学习路线与参考资料

    Python pygame是一款专门用于开发游戏和多媒体应用程序的Python库 它可以帮助开发者实现丰富多彩的图形界面和实时动态交互效果 本篇文章将为大家介绍Python pygame的学习路线 包括入门基础 进阶知识以及优秀实践 帮助大
  • C++中return语句的用法

    C 中的return语句是函数中一个重要的语句 return语句用于结束当前正在执行的函数 并将控制权返回给调用此函数的函数 return语句有两种形式 return return expression 1 没有返回值的函数 不带返回值的r
  • 贪吃蛇(一)--用C++编写一个简单的贪吃蛇

    这里简单介绍怎么用C 编写一个简单的黑白框的贪吃蛇游戏 复杂的加了可视化界面程序点击这里贪吃蛇 二 easyX图形库进行可视化界面制作 首先分析在黑白框中的贪吃蛇需要哪些功能 1 需要能在界面指定位置 x y 直接输出对应内容 2 需要动态
  • 学习的逻辑: 知识经济学

    来自http liguanglei name blogs 2012 11 28 the logic of learning 1 怎么证明学会了 2 你的身价是由你表现出来的知识决定的 不是你掌握的知识决定的 万物有始皆有终 我们的逻辑链条起
  • GEO分析

    title R Notebook output html notebook 1 下载加载包 cran packages lt c tidyr tibble dplyr stringr ggplot2 ggpubr factoextra Fa
  • 汽车租赁毕业设计

    一个基于Java汽车租赁管理系统的毕业设计网站 系统分为用户和管理员2个角色 详细介绍请见下文 一 环境信息 运行环境 java8 mysql5 6 开发语言 java 开发框架 springboot springmvc mybatis t
  • 物联网云平台系统设计

    物联网云平台系统设计 下面将谈到几个关键问题 设备如何接入网络 设备间如何通信 物联网数据的用途 如何搭建起一个物联网系统框架呢 它的技术架构又是怎么样呢 物联网终端软件系统架构 物联网云平台系统架构 1 物联网设备如何接入到网络 只有设备