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

2023-11-02

       首先,我们先从数模设计开始,这是一个系统的核心和精髓,决定了系统的架构和扩展控件。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   字典状态
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从零开始搭建物联网平台(三)数模设计 的相关文章

  • Java:等于和==

    让我们看看我们有 2 个对用户定义类实例的引用 即 Java 中的 a 和 b 会不会有一种情况 a b 但 a equals b 返回 false 当然 实施 equals 完全取决于班级 所以我可以写 class Foo public
  • 捕获动态表中 HTML 元素的值

    我有从数据库生成的以下动态表
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • 在 Java 中生成 LaTeX 输出 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于从 Java 生成 LaTeX 输出的 Java 库 渲染乳胶 JLatex数学 https
  • Map:为 Integer 和 Double 类型定义方法,但不为 String 类型定义方法

    我正在尝试定义一个方法putIfGreaterThan 为了我的新Map class 给定一个键 仅当新值大于旧值时 它才会用新值替换旧值 我知道我可以通过组合来实现这一点 通过有一个private final Map
  • mysqli_stmt_bind_result 的奇怪问题

    好吧 这让我很烦恼 我似乎在 PHP 文档中找不到任何内容 在 Google resultosphere 中也找不到任何内容 所以也许有人可以在这里提供帮助 我正在使用准备好的语句 绑定结果 然后使用这些绑定结果来填充下拉列表 例子
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • 检查更新时 Maven 无限期挂起

    我正在使用 Maven 构建一个项目 我是新手 并且它挂起 mvn package INFO Scanning for projects INFO INFO Building Presentation Reports INFO task s
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • php echo 不工作

    我的代码似乎不起作用 单选按钮出现 但旁边什么也没有 似乎 mysql fetch array 由于某种原因无法工作 因为我已经玩过代码并反复测试它以查找代码似乎遇到的位置出现问题并停止工作 有人可以告诉我出了什么问题吗 欢呼声我是新手 最
  • 如何根据从 jtextfield 和组合框接收的值将数据行添加到 Jtable

    我有一个JFrame表格有JTextFields JCombobox等等 我能够将这些值接收到变量 现在我想将接收到的数据添加到JTable当用户单击 添加 或类似的操作时在新行中 我创造了JTable使用 net beans 的问题是将这
  • 为什么从类构造函数调用的方法应该是最终的? [复制]

    这个问题在这里已经有答案了 我是一名 Java 新手 我试图理解 Oracle 网站教程中的以下行 https docs oracle com javase tutorial java IandI final html https docs
  • Unix 纪元时间转 Java Date 对象

    我有一个包含以下内容的字符串UNIX 纪元时间 https en wikipedia org wiki Unix time 我需要将其转换为 Java Date 对象 String date 1081157732 DateFormat df
  • MySQL:查询中周数的周日期范围

    我有一个看起来像这样的数据库表 id clock info 1 1262556754 some info 2 1262556230 some other info 3 1262556988 and another 4 1262555678
  • 运行 Espresso 测试时在 Android studio 中找不到属性 android:forceQueryable

    我已经使用 android studio 录制了我的 Android 应用程序 Espresso 测试记录浓缩咖啡测试选项中Run菜单 在记录的最后 我用自己的文件名保存了测试 单击保存按钮后 IDE 会自动在以下位置创建文件Android
  • 使用 Retrofit 获取原始 HTTP 响应

    我想从我的 API REST 获取原始 http 响应 我尝试过这个界面 POST login FormUrlEncoded Call
  • Java环境变量设置方法

    我已将以下行插入 bash profile export GOOGLE APPLICATION CREDENTIALS Users jun Downloads export PATH PATH GOOGLE APPLICATION CRED
  • 为什么 OOP 中静态类的最佳实践有所不同?

    我目前正在阅读有关 Java 最佳实践的内容 我发现根据这本书 https rads stackoverflow com amzn click com 0321356683我们必须优先选择静态类而不是非静态类 我记得在 C 最佳实践中 我们
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • 如何在 tomcat 上部署 Java Web 应用程序 (.war)?

    我有一个 warJava Web 应用程序的文件 现在我想将它上传到我的 ftp 服务器 以便我可以执行它 我应该执行哪些步骤来运行它 webapp的上下文路径是 mywebapp Edit 实际上 我的 ftp 服务器名称是ftp bil

随机推荐

  • Java实现Kafka生产者和消费者的示例(1),mysqlsql语句面试题

    RecordMetadata recordMetadata null try 将消息发送到Kafka服务器的名称为 one more topic 的Topic中 recordMetadata kafkaProducer send new P
  • liboqs-go库在Mac编译使用

    liboqs go库在Mac编译使用 liboqs go是liboqs 量子安全密码算法的开源C库的go封装 将在mac m1上部署和开发使用 所以简单记录下过程 部署 安装基础依赖工具 brew install cmake ninja o
  • Python3,5行代码,Chatxxx能对PDF文件进行旋转、提取、合并等一系列操作,看了这篇,80岁老奶奶走路都不扶墙了。

    ChatPDF的妙用 1 引言 2 代码实战 2 1 原理 2 2 安装 2 2 示例 2 2 1 创建PDF文件 2 2 2 旋转PDF文件 2 2 3 拆分PDF文件 2 2 4 合并PDF文件 2 2 5 提取PDF文件内容 3 总结
  • Linux编译器

    Vi是LINUX系统的第一个全屏幕交互式编译工具 vi的查找与替换 lt 要查找的字符 gt 向下查找要找查的字符 lt 要查找的字符 gt 向上查找要找查的字符 range s string1 string2 gc 替换 例如 10 20
  • 读书笔记----《编写高质量代码:改善Java程序的151个建议》第八/九章

    读书笔记 编写高质量代码 改善Java程序的151个建议 第八 九章 第八章 异常 110 提倡异常封装 111 采用异常链传递异常 112 受检异常尽可能转化为非受检异常 113 不要在finally块中处理返回值 114 不要在构造函数
  • MySQL - 表字段的自增约束

    设置表字段值自动增加 AUTO INCREMENT AUTO INCREMENT是MySQL唯一扩展的完整性约束 当向数据库表中插入新记录时 字段上的值会自动生成唯一的ID 在具体设置AUTO INCREMENT约束时 一个数据库表中只能有
  • 【Unity 3D】VR飞机动态拆装及引擎开关控制案例(附源码和演示视频 超详细)

    需要源码和资源包请点赞关注收藏后评论区留言私信 上一篇博客介绍了如何搭建飞机场景 制作了飞机引擎开启喷射火焰 并且让飞机起飞了参考链接如下 飞机场景搭建 一 效果展示 其中按空格可以控制后部引擎开关 即喷火和不喷火 演示视频如下 拆装飞机控
  • 仿微信 QQ聊天界面,弹出软键盘,listview上移,标题不动

    转载请注明出处 http blog csdn net ym4189 article details 79568820 完美解决聊天布局 顶部title固定 底部是EditText 中间是ListView 弹出软键盘 ListView上移 标
  • JAVA中的基本数据类型和包装类

    8大基本数据类型 byte byte 8位 存放的数据范围是 128 127之间 默认值为0 short short 16位 数据范围是 32768 32767之间 默认值为0 int int 32位 数据范围是 2 31 2 31 1 默
  • Unity3D 屏幕点击特效

    前言 屏幕点击特效目前用到两种 场景中特效和UI特效 其实就是坐标和层级之间的区别 无论特效用的帧动画 粒子特效亦或是贴图都可以使用 根据项目稍微调整下就好了 如果想优化的话可以写个对象池 这里就不赘述了 1 UI点击特效 注意要将Laye
  • java—手机号脱敏

    Java中手机号脱敏是指将真实手机号码中的一部分数字用特定字符替换 以保护用户的个人信息 通常 手机号码脱敏会将手机号的中间几位或者最后几位替换成特定字符 例如用 X 或者其他随意选择的字符来代替 手机号脱敏的目的是防止用户个人信息外泄 在
  • leetcode——探索字节跳动系列题目

    今天登陆leetcode发现探索区多了字节跳动的专栏 特意用了一下午去刷 有些是之前刷过的 但题目不错 就当是复习一遍吧 这里记录一下我会的以及自己觉得不错的题目 原题链接请点击题目 一 挑战字符串 3 无重复字符的最长子串 分析 这题要求
  • library()加载问题解决

    Rstudio中 在加载包 访问时遇到以下问题 trying URL https mirrors tuna tsinghua edu cn CRAN bin windows contrib 3 6 tseries 0 10 47 zip C
  • excel vlookup多个条件匹配多列_Excel数据多条件交叉查询,全部3种方法都在这,vlookup函数已经out了...

    Excel进行数据查询 相信许多人都会说一个函数 那就是vlookup函数 许多人会把这个函数当做Excel函数中的NO 1 毋庸置疑在Excel数据匹配的时候 单条件数据查找vlookup的功能确实是非常的强大 但是在进行数据多条件查询的
  • unity的C#学习——方法的定义、调用、递归与参数传递

    文章目录 C 方法 1 方法的定义与调用 2 方法的递归调用 3 方法的参数传递 3 1 按值传递参数 3 2 按引用传递参数 ref关键字 3 3 按输出传递参数 out关键字 C 方法 一个方法是把一些相关的语句组织在一起 用来执行一个
  • 开机后黑屏看不到桌面_电脑开机后黑屏不显示桌面解决方法

    方法一 设置原因的解决办法 1 开机后如果不显示桌面的图标 你就在桌面上点击右键 查看 显示桌面图标 这样你的桌面上的图标就会出现了 桌面功能也就正常了 2 如果你的问题是不显示图标也不显示任务栏的话 你就按住键盘上的esc shift c
  • 蓝桥杯官网练习题(0的个数)

    问题描述 给定一个正整数 n 请问 n 的十进制表示中末尾总共有几个 0 输入格式 输入一行包含一个正整数 n 输出格式 输出一个整数 表示答案 样例输入 20220000 样例输出 4 评测用例规模与约定 对于所有评测用例 1 lt n
  • 解决ThinkPad E580因AMD显卡导致系统崩溃的问题

    前言 由于着急解决问题 毕竟是常用电脑 而且现在也没法去修或者换电脑 修不好就真没用的了 所以基本全程没图 最后对问题原因有个猜测 如题 可能是因为AMD显卡相关程序导致的 如果有人知道具体原因请指点一下 对问题原因的猜测依据和文中一部分图
  • 双系统grub引导时,出现error: file '/boot/vmlinuz-xxx-xxx-xxx' not found的解决方法

    晚上本想修改一下grub cfg文件 去掉多余的引导项 没成想出现如题之尴尬局面 一番度娘之后终解决 下面是解决方法 Note 在grub下 注意提示按c进入grub命令行模式 首先需要确定你的ubutun安装到哪个硬盘哪个区 1 1 可以
  • 从零开始搭建物联网平台(三)数模设计

    首先 我们先从数模设计开始 这是一个系统的核心和精髓 决定了系统的架构和扩展控件 ETCloud的数模共有22张表 三个模块 一 用户模块 用户模块主要由企业表 用户表 角色表 权限表构成 1 数据权限 用户共分为三大类 model use