IoT -- (一) 物联网平台架构设计分析

现在网上讨论的有关物联网的帖子非常之多,但大部分都是介绍理论或者有关硬件,通讯相关的问题,比如物联网模块,物联网通讯协议MQTT、XMPP、NB_IOT等,个人认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发一套物联网平台。

物联网平台,应该是基于现在的互联网,通讯技术来建构,而不依赖与特定的硬件模块,用户可以基于自身的设备技术架构,简单轻松接入物联网。下图是物联网的核心架构:
这里写图片描述

1. 四大核心模块

在物联网中存在4大核心模块,那就是设备管理,用户管理,数据传输管理,数据管理,只有具备了这四大核心模块,才能认为是一个完整的物联网平台,而所有其他的功能模块都是基于此四大功能模块的延展。

1.1 设备管理

  • 设备类型管理:定义设备的类型,此功能一般由设备的制造商来定义,一种设备类型最重要的是关联到一套独有的数据解析方法,数据的存储方法,已经设备规格等数据,也只有设备的制造商才可以编辑有关设备类型的数据,而设备的使用者只能浏览设备类型的相关信息
  • 设备管理:设备管理定义设备相关信息,每个设备必须定义其设备类型,设备类型有使用者属性,设备在完成销售,并被使用者激活后设备就属于设备使用者了,这时候设备使用者对设备有完全的控制权,可以控制设备的哪些数据可以被制造商查看,可以被哪些用户查看等权限

1.2 用户管理

  • 组织管理:在物联网平台中一个很重要的观念就是组织,所有的设备,用户,数据都是基于组织的管理的,设备制造商是一个组织,设备的使用者是一个组织,家庭都可以是一个组织。
  • 用户管理:用户是基于一个组织下的人员构成,每个组织下面都有管理员角色,管理员可以为其服务的组织添加不通的用户,并分配每个用户不同的权限。一个用户也可以属于多个不同的组织,并且扮演不同的组织
  • 用户组:一组用户,也是基于组织的用户组管理,同一用户组的用户拥有相同的权限
  • 权限管理:同样是基于组织的权限管理,主要是针对对象级别的权限细分,如设备的浏览权限,可以控制每个用户是否看到这个设备;设备数据浏览权限定义是否可以查看设备的运行数据

1.3 数据传输管理

1.31 基本格式

数据传输管理,定义针对一类型设备的数据传输协议,基本格式是:
这里写图片描述

  • 每一个设备有厂商唯一的序列号,因为每个制造商有自己的编码格式,固此序列号没有固定格式。
  • 命令码,为此条数据的作用,比如是上传数据,或者服务器下发给设备的命令等,一般采用2位数字编码00~99
  • 数据,此部分是此条报文,所包含的数据部分,每个协议可以定义不同的解析方式,比如服务器在收到数据包后,会根据预先定义好的解析方式解析数据字段,并按照规则存储

1.32 数据解析定义

  • 每种设备类型可以定义多条命令,每个命令都有自己不同的解析方式,组织的管理员可以为自己的设备类型定义解析方式
  • 服务器接收到数据后,会自动根据预先定义的解析方式解析数据字段
  • 设备开发者要根据在IOT平台定义的数据格式,自行开发自己设备的解析代码
  • 数据字段都按照HEX方式收发

1.33 数据的存储

存储要支持分布式架构,可以为每个设备定义不同的存储位置,在diego iot中数据存储使用mysql数据库,实现不同的设备存储在不同的mysql数据库中
每条数据定义生命周期,在生命结束后,系统将自动删除

1.4 数据管理

  • 权限管理,数据的权限在物联网平台中是至关重要,数据属于谁是一个非常重要的概念,只有设备的拥有者才能定义数据可以给谁看
  • 大数据,物联网数据本身就是海量的数据,我们可以借助一些开源的大数据平台来实现数据的可视化分析,只有经过分析的数据才是有价值的数据
  • 数据的导出,用户可以导出数据到本地做分析

2.网络通讯

现在所有的云端的物联网平台和设备之间的通讯,本质上都是建构在TCP/IP协议之上的,只是对数据包的再封装而已,基于此我们可以是用wifi,4g来实现设备和云平台的通讯,不过设备与设备之间的通讯,可以有wifi,Bluetooth,zigbee等,下面介绍几种常用的通讯架构

2.1 基于移动3/4G通讯
这里写图片描述

此架构是最简单的架构,设备就如同我们的手机,基于移动通讯来上网,其主要需要考虑如下几点

  • 每个设备都需要一个SIM卡,可以到移动服务器商办理专门针对物联网的SIM卡
  • 数据流量问题,这种架构完全是走数据流量,如果有视频数据,将会产生比较大的流量费用,这都是要考虑的
  • 通讯质量问题,这完全依赖于移动服务商的网络覆盖状况,就如同我们手机一样,在有些环境下是没有信号的,也就没办法收发数据

2.2 基于wifi局域网
这里写图片描述

此中架构,适合于所有的物联网设备都是运行在一个局部环境中,设备通过wifi或者有线连接到路由器,而由路由器统一连接的物联网服务器,就如同我们家中装一个wifi路由器上网一样的架构,需要注意的事项:

  • 局域网内的智能设备,是没有公网独立的ip的,只有一个局域网内的ip,带来的问题就是,设备可以直接给物联网服务器发送数据包,而物联网服务器是不能直接给设备发送数据包,就因为设备没有公网独立ip
  • 功耗问题,对于使用wifi接入的设备,最好不是电池供电,因为wifi的功耗比较大
  • 干扰问题,如果在大型的厂房部署这种架构,一定要考虑,厂房内是否有强干扰源,如电磁干扰,可以考虑采用工业级的无线路由器,一般抗干扰能力比较强

2.3 基于蓝牙通讯

一般的基于蓝牙的物联网,会考虑通过蓝牙网关来部署
这里写图片描述

蓝牙由于其点对点的通讯方式,所以要考虑如下问题:

  • 蓝牙网关的容量问题,也就是一个蓝牙网关能接入几个蓝牙设备,这取决于蓝牙网关中使用了多少个蓝牙设备
  • 蓝牙的配对问题,蓝牙设备直接的通讯都首先配对才能通讯,如果实现自动配对,如果不能自动配对,大规模部署,将是一个很麻烦的事情

还有一种场景是针对不需要一直在线的物联网设备,而只是在某种特殊需求的情况下,需要连上服务器,这中场景下,我们可以通过手机的蓝牙功能来让设备接入物联网
这里写图片描述

蓝牙手环是这种架构的一种典型应用模式

2.4 基于zigbee

ZigBee也是一种流行的组网模式,zigbee本身设计是针对传感器之间的联网,具有非常强的低功耗能力
这里写图片描述

zigbee接入网络也依赖于zigbee网关,网关本身也是一个zigbee设备,zigbee设备是自组网的,在使用过程中注意的问题有

  • 数据量的问题,设备能力和功耗本身是自相矛盾的,由于ZigBee是超低功耗方案,固在通信能力上也是打折扣的,很适合一些传感器数据的采集,如温度湿度,但如果对大数据量的视频类的就不适用了

这里主要介绍了,几种常用的物联网部署架构,至于物联网协议,这里就不多介绍,网上文章非常多。

3.智能设备

diego iot设计的初衷是让智能设备开发者摆脱对特殊模块的依赖,对于智能设备的开发,只要具备联网功能即可,没有特别多的要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SFTP批量下载与中文文件名乱码问题

一、批量下载 #!/bin/bashUSERroot #密码 PASSWORD123456 #下载文件目录 SRCDIR/data #FTP目录(待下载文件目录) DESDIR/ydfile #银联IP IP 192.111.111.111 #端口 PORT22# 清空当前目录下的旧文件 rm -rf /data/*#连接远程服务器摘取数据资源 lftp sftp://${USER}:${PASSWOR…

华为路由器hilink怎么用_华为无线充电怎么用?MatePadPro无线充电使用方法

越来越多的华为产品支持无线充电,比如Mate 30 Pro支持最高27W无线超级快充,FreeBuds 3 蓝牙无线耳机、荣耀V30 Pro,MatePad Pro平板也都支持无线充电。今天就跟大家分享华为手机无线充电技术原理图,无线充怎么用,无线充…

IoT -- (二) 物联网传感器介绍

传感器(Sensor)可以说是 物联网(Internet of Things, IoT)架构下,让智能自动化设备与智能联网产品,像是智能机器人、智能工厂、智能电动车、智能手环、智能医疗装置、智能家电、智能移动电话等,执行即时互动的关键元件。 资策会MIC资深产业分…

python乘法表运算_Python入门教程(三):史上最全的Numpy计算函数总结,建议收藏!...

点击上方 蓝字 关注我们Numpy提供了灵活的、静态类型的、可编译的程序接口口来优化数组的计算,也被称作向量操作,因此在Python数据科学界Numpy显得尤为重要。Numpy的向量操作是通过通用函数实现的。今天小编会给大家较为全面地介绍下Numpy的通用函数。01…

IoT -- (三) 2018 Top物联网项目排名

每年这个时候,知名物联网研究机构IoT Analytics都会基于市场上纷繁的信息来探索物联网项目的具体实施情况,今年也不例外。作为其追踪物联网生态的一个重要组成部分,IoT Analytics对1600个在企业中实际运行的物联网项目进行了整合、验证和分类…

4加密问题漏洞修复_Apache Shiro 反序列化漏洞实战

Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。2016年,网络中曝光1.2.4以前的版本存在反序列化漏洞。尽管该漏洞已经曝光几年,但是在实战中仍然比较实用。花了点时间研究了下,并根据网络上的利用脚本改进。…

lombok之@RequiredArgsConstructor注解

应用背景:我们在写controller或者Service层的时候,需要注入很多的mapper接口或者另外的service接口,这时候就会写很多的AutoWired注解,代码会看起来很乱。 这时lombok提供了一个注解 RequiredArgsConstructor,它可以写…

文件读取 linux_Linux 进程、线程、文件描述符的底层原理

说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别。Linux 中的进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令的底层工作原理&…

pom.xml中依赖的<optional>true</optional>标签

项目A的pom.xml文件中某个依赖添加了true标签&#xff0c;如下所示 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional><!--防止将此依赖传递到其它模块中--> <…

中如何拉取git代码_git使用教程4pycharm拉取git仓库项目代码

前言当我们在github上看到别人写的项目&#xff0c;想拉到本地学习下。如何用pycharm把git仓库的代码拉取到本地电脑呢&#xff1f;环境准备&#xff1a;1.本地电脑已经安装了git2.已经注册过github账号3.pycharmpycharm配置先自己注册github账号&#xff0c;本地安装git环境&a…

lombok之@Slf4j注解

应用背景&#xff1a;如果不想每次都在实体类中写private final Logger logger LoggerFactory.getLogger(当前类名.class); 可以使用注解Slf4j Sl4j注解是是属于lombok中的一个注解&#xff0c;所以在使用该注解之前一定要引入lombok的依赖&#xff0c;同时IDEA还需要已经安装…

回归指令_用一条指令在新款 Mac 上找回经典的开机启动声

多年使用 Mac 的老用户肯定知道&#xff0c;Mac 在启动时会发出一声「噔&#xff5e;」的启动声音&#xff0c;伴随着 Apple logo 在屏幕上亮起&#xff0c;Mac 正在安全地启动。但如果你在最近几年换了新款 Mac 电脑&#xff0c;你会发现这个熟悉的启动音消失不见了。就像 Mag…

lombok常用注解整理

idea需要先安装好lombok插件&#xff0c;不会的可以参考这里https://blog.csdn.net/qq_43842093/article/details/115426380 引入依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency><groupId>org.projectlombok<…

C/C++ const

看微软的文章&#xff1a; const (C) | Microsoft Learn

gpu浮点计算能力floaps_基准测试移动 GPU 中的浮点精度 - 第 2 部分

投稿人&#xff1a;&#xff0c;2013年6月11日这是有关GPU中浮点质量的一系列博文中的第二篇&#xff0c;我的灵感源自 发表于 的文章。在中&#xff0c;我宣称许多程序员其实并不真正了解浮点数字&#xff0c;也指出如果您准备将它用于比较棘手的东西&#xff0c;那么最好先准…

@DateTimeFormat注解

DateTimeFormat注解位于spring-context-5.0.10.RELEASE.jar包中 import org.springframework.format.annotation.DateTimeFormat; import java.util.Date;public class User {//姓名private String name;//出生日期DateTimeFormat(pattern "yyyy-MM-dd")private Da…

h5页面如何预览excel文件_移动端页面,如何解析预览 word/excel/PDF文件?

展开全部利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件&#xff0c;然后再利用免费的swftools.exe工具生成swf格式的Flash文件&#xff0c;网页中加载flexpaper免费开源工具(32313133353236313431303231363533e59b9ee7ad9431333365633934有广告)实现…

Gson之toJson和fromJson方法

Gson是Google的一个开源项目&#xff0c;可以将Java对象转换成JSON&#xff0c;也可能将JSON转换成Java对象。 Gson里最重要的对象有2个Gson 和 GsonBuilder Gson有2个最基本的方法 toJson() – 转换java 对象到JSONfromJson() – 转换JSON到java对象 引入依赖&#xff1a;…

android 手机内存uri_android 的各种目录详解

App独立文件app独立文件就是那些不依赖于某特定app的文件这类文件当我们删除应用之后&#xff0c;还应该保留在手机上的&#xff0c;例如拍照的照片&#xff0c;不应该随着删除应用而被删除掉。这类文件应该是随着app删除而一起删除的&#xff0c;它们可以被存储在两个地方&…

python3 tkinter详解_python tkinter基本属性详解

1.外形尺寸尺寸单位&#xff1a;只用默认的像素或者其他字符类的值&#xff01;&#xff0c;不要用英寸毫米之类的内容。btn tkinter.Button(root,text 按钮)# 设置按钮尺寸&#xff0c;绝大多数默认单位是像素btn.pack(ipadx 100,ipady 20)2.坐标系btn tkinter.Button(ro…