从零开始搭建物联网平台(三)数模设计
首先,我们先从数模设计开始,这是一个系统的核心和精髓,决定了系统的架构和扩展控件。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开启 | ||
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分组 | ||
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 | 字典状态 |
从零开始搭建物联网平台(三)数模设计相关推荐
- 从零开始搭建物联网平台(1):开篇
前言: 读大学的时候学的是物联网工程,大概是在大二的时候开始接触单片机,那时候特喜欢捣鼓那些东西,就觉得特别酷有极客范.还记得第一次做物联网相关的是一个远程控制的开关,第一次调通的时候真的很兴奋,啥也 ...
- 从零开始搭建物联网平台(6):消息的持久化
遇到的问题: 查看了EMQ文档发现并不提供消息的持久化功能,MQTT协议是按照设备一直在线设计的,数据都是保存在内存里的,但是考虑到用户上传传感器数据不可能接收了就扔掉,那样就没法查看历史数据了,所以 ...
- 从零开始搭建SpringBoot项目(三)——小程序Uni-app项目搭建(详细教程和实战)
前情回顾 从零开始搭建SpringBoot项目(一)--开发环境搭建 从零开始搭建SpringBoot项目(二)--Swagger接口测试平台搭建 目录 前情回顾 一.前置条件 二.本篇介绍 三.获取 ...
- 如何从零开始搭建直播平台,从flash时代的rtmp到过渡期的flv和webrtc的未来以及简单聊聊webassmbly
前言 在2020年12月flash正式落幕之后,流媒体领域是否有新的技术替代?有没有较为成熟的整体方案?市面上的直播/流媒体平台都在使用哪些方案?有没有通用又简单快速的搭建方案?不同的方案在行业内部也 ...
- 数模设计和GND的分割设计
1.板层的结构 板层的结构是决定系统的EMC性能一个很重要的因素.一个好的板层结构对抑制PCB中辐射起到良好的效果.在现在常见的高速电路系统中大多采用多层板而不是单面板和双面板.在设计多面板时候需要注 ...
- Spring+mqtt 搭建物联网平台服务端
服务端采用Springboot.JPA.Mysql为基本框架,同时接入了EMQ.JWT.微信认证.Lombook.的一些组件 一.框架搭建 使用IDEA创建项目,选择spring initializr ...
- GPRS连接阿里云物联网平台三
记录设备接入阿里云的过程 三,下发命令 上一篇写了上传数据,今天继续分享如何从云平台下发命令控制终端设备 1,添加功能,要实现新的事件第一件事还是在阿里云添加功能 还是添加一个自定义功能,就是个开关功 ...
- Spring Boot Vue从零开始搭建系统(三):项目前后端分离
转载 http://www.360doc.com/content/19/1030/11/67080110_870024161.shtml 前言 本文主要是想通过后端 Spring Boot 技术和前端 ...
- 开源系统搭建物联网和智能家居平台
一.项目简介 1. 物美智能 (wumei-smart) 是一个简单易用的生活物联网平台.可用于搭建物联网平台以及二次开发和学习. 2. 设备接入使用EMQX消息服务器,加密认证:后端采用Spring ...
- 低代码构建物联网平台,让物联网项目更简单
物联网(Internet of Things,IoT)是普遍联系的网络,是基于互联网.电信网等信息网络的承载体,可以视为互联网的延伸和升级,是科学技术发展的必然,也被称为继计算机.互联网和移动通信网络 ...
最新文章
- java-com-util-common-service:BaseService.java
- VS2017 报错该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
- nagios errors
- 360 自动打开word_Word文档高手的组合键用法,你知道几个?
- P1457 城堡 The Castle 位运算+BFS+思维(难题,好题)
- 亚马逊出的平板电脑_亚马逊推出了这款不到400元的平板电脑!学生党的福音!...
- CUDA TOOlkit Programming Guide 2. Programming Model
- python 通过ip获取城市_Python根据用户IP判断所属城市 !
- 另类windows与ubuntu共享实现
- 06-移动端开发教程-fullpage框架
- 关于Unity中DOTween插件的使用(专题一)
- 临时邮箱有什么用,推荐5个临时邮箱
- iPhone长截图快捷指令(科技兽修改版)
- calib matlab,toolbox_calib 图片处理,各种用于 的.M文件,非常适 初学者。 matlab 242万源代码下载- www.pudn.com...
- 逻辑函数的描述工具介绍
- 骑士CMS4.1.23本地包含漏洞
- CTF竞赛实战 中国菜刀与一句话木马
- C语言写出猜数字游戏的代码
- python-使用pycaw设置电脑音量(包含转换)
- java接口里面可以定义变量么?