从零开始搭建物联网平台(三)数模设计

       首先,我们先从数模设计开始,这是一个系统的核心和精髓,决定了系统的架构和扩展控件。ETCloud的数模共有22张表,三个模块。

一、用户模块

用户模块主要由企业表、用户表、角色表、权限表构成。

1. 数据权限

用户共分为三大类(model_user.usertype)

1.Root用户    系统管理员 可以查看所有设备、所有产品、所有用户,拥有一切功能
2.Admin企业管理员    查看自己的产品和同一企业的产品
3.Normal普通用户    只查看自己的设备,以设备为维度,反查出产品

2.菜单按钮权限
用户的页面权限表是父子层级的表。一级为菜单权限,二级为按钮权限。

通过给角色赋予权限,再给用户赋予角色的方式实现不同用户展现不同的页面菜单和按钮

3. 用户来源

由ROOT(系统管理员)创建企业(附带创建默认管理员)

企业管理员可以创建自己的同一企业的管理员和普通用户

具有普通用户自动注册账号功能

具有自动注册企业的站好的功能

具有微信用户反向创建平台账号的功能

企业表model_eid

id varchar(36) varchar 36 NO   id@id
name varchar(100) varchar 100 YES   企业名称
describes varchar(100) varchar 100 YES   描述@描述
status tinyint(1) tinyint   YES   状态@是否禁用0禁用1开启
email varchar(255) varchar 255 YES   企业邮箱
phone varchar(255) varchar 255 YES   企业电话
address varchar(255) varchar 255 YES   企业地址
createtime timestamp timestamp YES CURRENT_TIMESTAMP 创建时间@创建时间

用户表mode_user

id varchar(32) varchar 32 NO   ID@ID  
eid varchar(32) varchar 32 YES   EID分组@EID分组
email varchar(100) varchar 100 YES   电子邮箱  
username varchar(100) varchar 100 YES   用户名  
password varchar(100) varchar 100 YES   密码@密码
phone varchar(100) varchar 100 YES   手机号  
role varchar(200) varchar 200 YES   角色@角色
status int(1) int   YES   状态,是否禁用@状态,是否禁用
usertype int(11) int   YES   用户类型@用户类型1ROOT2.admin,3.普通用户
max_dev int(255) int   YES   最大连接设备数
createtime timestamp timestamp YES CURRENT_TIMESTAMP 创建时间@创建时间
openid varchar(255) varchar 255 YES   微信openid

角色表model_role

id varchar(100) varchar 100 NO   主键@这个字段是主键
rolename varchar(100) varchar 100 YES   角色名称@角色名称
remark varchar(100) varchar 100 YES   备注@备注
powers varchar(100) varchar 100 YES   权限集合@权限集合
type int(11) int   YES   类型@0root1普通root2admin3普通4其他

权限表model_power

id varchar(11) varchar 11 NO   ID@ID
name varchar(100) varchar 100 YES   名称@名称
describe varchar(200) varchar 200 YES   描述@描述
pid varchar(11) varchar 11 YES   父Id

二、设备模块

设备模块主要由产品表、设备表、节点表构成

1.创建产品

产品的意义在于规范同一类设备。定义同一类产品的通信协议,其中产品密钥是为了为了自动注册时鉴别未知设备是否允许连接平台

2.创建节点

当我们新建好一个产品后,就需要定义这个产品具备那些功能,这些功能的可读、可写决定着在这个产品下的设备是否可以操作下发。以及设备的数据展现形式

3.创建设备

设备的引入有两种方式,一种是在平台手动创建,一种是自动注册。

每个设备都拥有自己的唯一序列号,作为clientid,用户名输入产品id,密码是token和设备序列号的sm加密。这样就可以一机一密。更好的确保保全性。

产品表model_product

id varchar(32) varchar 32 NO    
eid varchar(32) varchar 32 YES   租戶ID
name varchar(255) varchar 255 YES   产品名称
treaty varchar(255) varchar 255 YES   产品协议
describes varchar(255) varchar 255 YES   产品描述
types varchar(255) varchar 255 YES   产品类别
token varchar(255) varchar 255 YES   产品密钥
user_id varchar(32) varchar 32 YES   用户ID
createtime timestamp timestamp YES   创建时间

节点表model_node

varchar(32) id varchar 32 NO    
varchar(255) product_id varchar 255 YES   产品ID
varchar(255) name varchar 255 YES   节点名称
varchar(255) skey varchar 255 YES   节点标志
varchar(255) sunit varchar 255 YES   节点单位
varchar(255) rwtype varchar 255 YES   读写类型
varchar(255) types varchar 255 YES   节点类型(1数值型2开关型3字符串)
int(255) pic int   YES   节点图片
varchar(255) describes varchar 255 YES   节点描述

设备表model_device

id varchar(32) varchar 32 NO    
product_id varchar(255) varchar 255 YES   产品ID
user_id varchar(255) varchar 255 YES   用户ID
eid varchar(255) varchar 255 YES   租户ID
name varchar(255) varchar 255 YES   设备名称
position varchar(255) varchar 255 YES   设备位置
sn varchar(255) varchar 255 YES   设备序列号
createtime timestamp timestamp YES   创建时间
updatetime timestamp timestamp YES   更新时间
describes varchar(255) varchar 255 YES   设备描述
is_black tinyint(4) tinyint   YES   是否在黑名单
is_order_db tinyint(255) tinyint   YES   是否存储指令下发日志
is_conn_db tinyint(255) tinyint   YES   是否存储设备连接日志
is_node_db tinyint(255) tinyint   YES   是否存储功能节点日志

三、告警模块

告警模块主要由三张表构成

1. 告警模板

告警模板主要定义了推送给用户方式,告警的内容,可以填充告警的设备序列号,和异常数据值,异常节点

2.触发器

定义触发器的目的在于,过滤设备发送给平台的数据。如果设备数据异常了就及时推送给用户。便于对设备进行相应的处理。

3.触发器节点

主要用户给多个设备,或者一类产品下的所有设备添加触发器。如果某个节点数据异常了就指定告警模板的处理方式

告警模板model_warn_info

id varchar(255) varchar 255 NO    
name varchar(255) varchar 255 YES   告警模板名字
level int(255) int   YES   告警等级
content varchar(255) varchar 255 YES   告警内容
types int(255) int   YES   推送方式
way varchar(255) varchar 255 YES   推送路径
user_id varchar(255) varchar 255 YES   创建人ID
createtime timestamp timestamp YES   创建时间

触发器model_trigger

id varchar(32) varchar 32 NO    
product_id varchar(32) varchar 32 YES   产品ID
snids varchar(255) varchar 255 YES   设备序列号集合
name varchar(255) varchar 255 YES   触发器名字
content varchar(255) varchar 255 YES    
warn_id varchar(255) varchar 255 YES   告警模板ID
user_id varchar(255) varchar 255 YES   创建人
createtime timestamp timestamp YES   创建时间

触发器节点model_trigger_node

id varchar(32) varchar 32 NO    
trigger_id varchar(32) varchar 32 YES   触发器ID
node_id varchar(32) varchar 32 YES   节点ID
node_name varchar(255) varchar 255 YES   节点名称
node_key varchar(255) varchar 255 YES   节点KEY
node_type varchar(255) varchar 255 YES   节点类型
relation int(255) int   YES   触发关系
svalue varchar(255) varchar 255 YES   触发值

四、日志模块

日志模块主要由系统运行日志、告警日志、设备连接日志、指令下发日志、功能节点日志构成

1.系统运行操作日志 modle_syslog

id varchar(32) varchar 32 NO   ID@ID
model varchar(100) varchar 100 YES   模块@模块
level int(11) int   YES   等级@等级
eid varchar(32) varchar 32 YES   分组@分组
userid varchar(32) varchar 32 YES   用户ID@用户ID
source varchar(100) varchar 100 YES   来源@来源
content varchar(500) varchar 500 YES   内容@内容
createtime timestamp timestamp NO CURRENT_TIMESTAMP 创建时间@创建时间

2.告警日志model_warn_log

id varchar(255) varchar 255 NO    
sn varchar(255) varchar 255 YES   告警设备
content varchar(255) varchar 255 YES   告警内容
is_read int(11) int   YES   是否已读
warn_id varchar(255) varchar 255 YES   告警模板
createtime timestamp timestamp YES   创建时间
user_id varchar(255) varchar 255 YES    

3.设备连接日志model_client_log

id varchar(32) varchar 32 NO   主键
client_id varchar(255) varchar 255 YES   客户端id
connected int(11) int   YES   状态0下线,1上线
createtime datetime datetime   YES   上线时间
ip_address varchar(255) varchar 255 YES   客户端ip地址
port varchar(255) varchar 255 YES   客户端端口
user_name varchar(255) varchar 255 YES   用户名
sub_scriptioncnt int(11) int   YES    

4.指令下发日志model_order_log

id varchar(255) varchar 255 NO    
content varchar(255) varchar 255 YES   指令内容
create_time timestamp timestamp NO CURRENT_TIMESTAMP 创建时间
sn varchar(255) varchar 255 YES   设备序列号
topic varchar(255) varchar 255 YES   订单主题
user_id varchar(255) varchar 255 YES   用户id

 

5.功能节点日志model_node_log

id varchar(32) varchar 32 NO    
content varchar(255) varchar 255 YES   节点内容
create_time timestamp timestamp NO CURRENT_TIMESTAMP 创建时间
sn varchar(255) varchar 255 YES   节点序列号
topic varchar(255) varchar 255 YES   节点主题

五、公共模块

1.定时任务model_task

id varchar(32) varchar 32 NO    
taskgroup varchar(100) varchar 100 YES   任务组名@任务组名
taskname varchar(100) varchar 100 YES   任务名称@任务名称
cron varchar(100) varchar 100 YES   时间表达式@时间表达式
type int(11) int   YES   类型@1每天2一次
userid varchar(32) varchar 32 YES   用户ID@用户ID
taskdata datetime datetime   YES   定时日期@定时日期
tasktime datetime datetime   YES   定时时间@定时时间
createtime timestamp timestamp NO 0000-00-00 00:00:00 创建时间@创建时间

2.数据推送model_push

id varchar(36) varchar 36 NO   主键@这个字段是主键
servicehost varchar(36) varchar 36 YES   服务HOST@服务HOST
serviceport int(11) int   YES   服务PORT@服务PORT
dburl varchar(100) varchar 100 YES   点表推送URL@点表推送URL
dturl varchar(100) varchar 100 YES   数据推送URL@数据推送URL
sjurl varchar(100) varchar 100 YES   时间推送URL@时间推送URL
httptoken varchar(36) varchar 36 YES   HTTP头授权码@HTTP头授权码
secondcycle int(11) int   YES   调度周期@调度周期
startstatus varchar(36) varchar 36 YES   启用状态@启用状态
updatetime timestamp timestamp NO CURRENT_TIMESTAMP 修改时间@修改时间
note varchar(300) varchar 300 YES   备注@备注
roleid varchar(36) varchar 36 YES   所属组@所属组

3.版本管理model_version

id varchar(32) varchar 32 NO   id@id
versions varchar(100) varchar 100 YES   版本号@版本号
remark varchar(100) varchar 100 YES   备注@备注
content varchar(100) varchar 100 YES   内容@内容
createtime timestamp timestamp YES   创建时间@创建时间

4.字典表model_dictionary

id varchar(255) varchar 255 NO    
dname varchar(255) varchar 255 YES   字典名称
dvalue varchar(255) varchar 255 YES   字典值
num int(11) int   YES   字典code
pid varchar(255) varchar 255 YES   字典父ID
status int(11) int   YES   字典状态

你可能感兴趣的:(从零开始搭建物联网平台)