如今网上讨论的有关物联网的帖子很是之多,但大部分都是介绍理论或者有关硬件,通信相关的问题,好比物联网模块,物联网通信协议MQTT、XMPP、NB_IOT等,我的认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展现等也是物联网模块中很是重要的部分,因此做者就根据自身工做中总结出来的建构在云端的物联网平台基本架构分享给你们,并基于此架构如何一步一步来开发一套物联网平台。mysql
物联网平台,应该是基于如今的互联网,通信技术来建构,而不依赖与特定的硬件模块,用户能够基于自身的设备技术架构,简单轻松接入物联网。下图是物联网的核心架构:sql
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设计的初衷是让智能设备开发者摆脱对特殊模块的依赖,对于智能设备的开发,只要具有联网功能便可,没有特别多的要求。
本文分享自微信公众号 - 互联网后端架构(fullstack888)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。