从零开始搭建物联网平台(三)数模设计
? ? ? ?首先,我們先從數(shù)模設計開始,這是一個系統(tǒng)的核心和精髓,決定了系統(tǒng)的架構(gòu)和擴展控件。ETCloud的數(shù)模共有22張表,三個模塊。
一、用戶模塊
用戶模塊主要由企業(yè)表、用戶表、角色表、權(quán)限表構(gòu)成。
1. 數(shù)據(jù)權(quán)限
用戶共分為三大類(model_user.usertype)
1.Root用戶?? ?系統(tǒng)管理員 可以查看所有設備、所有產(chǎn)品、所有用戶,擁有一切功能
2.Admin企業(yè)管理員?? ?查看自己的產(chǎn)品和同一企業(yè)的產(chǎn)品
3.Normal普通用戶? ? 只查看自己的設備,以設備為維度,反查出產(chǎn)品
2.菜單按鈕權(quán)限
用戶的頁面權(quán)限表是父子層級的表。一級為菜單權(quán)限,二級為按鈕權(quán)限。
通過給角色賦予權(quán)限,再給用戶賦予角色的方式實現(xiàn)不同用戶展現(xiàn)不同的頁面菜單和按鈕
3. 用戶來源
由ROOT(系統(tǒng)管理員)創(chuàng)建企業(yè)(附帶創(chuàng)建默認管理員)
企業(yè)管理員可以創(chuàng)建自己的同一企業(yè)的管理員和普通用戶
具有普通用戶自動注冊賬號功能
具有自動注冊企業(yè)的站好的功能
具有微信用戶反向創(chuàng)建平臺賬號的功能
企業(yè)表model_eid
| id | varchar(36) | varchar | 36 | NO | ? | id@id |
| name | varchar(100) | varchar | 100 | YES | ? | 企業(yè)名稱 |
| describes | varchar(100) | varchar | 100 | YES | ? | 描述@描述 |
| status | tinyint(1) | tinyint | ? | YES | ? | 狀態(tài)@是否禁用0禁用1開啟 |
| varchar(255) | varchar | 255 | YES | ? | 企業(yè)郵箱 | |
| phone | varchar(255) | varchar | 255 | YES | ? | 企業(yè)電話 |
| address | varchar(255) | varchar | 255 | YES | ? | 企業(yè)地址 |
| createtime | timestamp | timestamp | YES | CURRENT_TIMESTAMP | 創(chuàng)建時間@創(chuàng)建時間 | |
用戶表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 | ? | 狀態(tài),是否禁用@狀態(tài),是否禁用 | |
| usertype | int(11) | int | ? | YES | ? | 用戶類型@用戶類型1ROOT2.admin,3.普通用戶 | |
| max_dev | int(255) | int | ? | YES | ? | 最大連接設備數(shù) | |
| createtime | timestamp | timestamp | YES | CURRENT_TIMESTAMP | 創(chuàng)建時間@創(chuàng)建時間 | ||
| 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 | ? | 權(quán)限集合@權(quán)限集合 |
| type | int(11) | int | ? | YES | ? | 類型@0root1普通root2admin3普通4其他 |
權(quán)限表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 |
二、設備模塊
設備模塊主要由產(chǎn)品表、設備表、節(jié)點表構(gòu)成
1.創(chuàng)建產(chǎn)品
產(chǎn)品的意義在于規(guī)范同一類設備。定義同一類產(chǎn)品的通信協(xié)議,其中產(chǎn)品密鑰是為了為了自動注冊時鑒別未知設備是否允許連接平臺
2.創(chuàng)建節(jié)點
當我們新建好一個產(chǎn)品后,就需要定義這個產(chǎn)品具備那些功能,這些功能的可讀、可寫決定著在這個產(chǎn)品下的設備是否可以操作下發(fā)。以及設備的數(shù)據(jù)展現(xiàn)形式
3.創(chuàng)建設備
設備的引入有兩種方式,一種是在平臺手動創(chuàng)建,一種是自動注冊。
每個設備都擁有自己的唯一序列號,作為clientid,用戶名輸入產(chǎn)品id,密碼是token和設備序列號的sm加密。這樣就可以一機一密。更好的確保保全性。
產(chǎn)品表model_product
| id | varchar(32) | varchar | 32 | NO | ? | ? |
| eid | varchar(32) | varchar | 32 | YES | ? | 租戶ID |
| name | varchar(255) | varchar | 255 | YES | ? | 產(chǎn)品名稱 |
| treaty | varchar(255) | varchar | 255 | YES | ? | 產(chǎn)品協(xié)議 |
| describes | varchar(255) | varchar | 255 | YES | ? | 產(chǎn)品描述 |
| types | varchar(255) | varchar | 255 | YES | ? | 產(chǎn)品類別 |
| token | varchar(255) | varchar | 255 | YES | ? | 產(chǎn)品密鑰 |
| user_id | varchar(32) | varchar | 32 | YES | ? | 用戶ID |
| createtime | timestamp | timestamp | YES | ? | 創(chuàng)建時間 | |
節(jié)點表model_node
| varchar(32) | id | varchar | 32 | NO | ? | ? |
| varchar(255) | product_id | varchar | 255 | YES | ? | 產(chǎn)品ID |
| varchar(255) | name | varchar | 255 | YES | ? | 節(jié)點名稱 |
| varchar(255) | skey | varchar | 255 | YES | ? | 節(jié)點標志 |
| varchar(255) | sunit | varchar | 255 | YES | ? | 節(jié)點單位 |
| varchar(255) | rwtype | varchar | 255 | YES | ? | 讀寫類型 |
| varchar(255) | types | varchar | 255 | YES | ? | 節(jié)點類型(1數(shù)值型2開關型3字符串) |
| int(255) | pic | int | ? | YES | ? | 節(jié)點圖片 |
| varchar(255) | describes | varchar | 255 | YES | ? | 節(jié)點描述 |
設備表model_device
| id | varchar(32) | varchar | 32 | NO | ? | ? |
| product_id | varchar(255) | varchar | 255 | YES | ? | 產(chǎn)品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 | ? | 創(chuàng)建時間 | |
| updatetime | timestamp | timestamp | YES | ? | 更新時間 | |
| describes | varchar(255) | varchar | 255 | YES | ? | 設備描述 |
| is_black | tinyint(4) | tinyint | ? | YES | ? | 是否在黑名單 |
| is_order_db | tinyint(255) | tinyint | ? | YES | ? | 是否存儲指令下發(fā)日志 |
| is_conn_db | tinyint(255) | tinyint | ? | YES | ? | 是否存儲設備連接日志 |
| is_node_db | tinyint(255) | tinyint | ? | YES | ? | 是否存儲功能節(jié)點日志 |
三、告警模塊
告警模塊主要由三張表構(gòu)成
1. 告警模板
告警模板主要定義了推送給用戶方式,告警的內(nèi)容,可以填充告警的設備序列號,和異常數(shù)據(jù)值,異常節(jié)點
2.觸發(fā)器
定義觸發(fā)器的目的在于,過濾設備發(fā)送給平臺的數(shù)據(jù)。如果設備數(shù)據(jù)異常了就及時推送給用戶。便于對設備進行相應的處理。
3.觸發(fā)器節(jié)點
主要用戶給多個設備,或者一類產(chǎn)品下的所有設備添加觸發(fā)器。如果某個節(jié)點數(shù)據(jù)異常了就指定告警模板的處理方式
告警模板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 | ? | 告警內(nèi)容 |
| types | int(255) | int | ? | YES | ? | 推送方式 |
| way | varchar(255) | varchar | 255 | YES | ? | 推送路徑 |
| user_id | varchar(255) | varchar | 255 | YES | ? | 創(chuàng)建人ID |
| createtime | timestamp | timestamp | YES | ? | 創(chuàng)建時間 | |
觸發(fā)器model_trigger
| id | varchar(32) | varchar | 32 | NO | ? | ? |
| product_id | varchar(32) | varchar | 32 | YES | ? | 產(chǎn)品ID |
| snids | varchar(255) | varchar | 255 | YES | ? | 設備序列號集合 |
| name | varchar(255) | varchar | 255 | YES | ? | 觸發(fā)器名字 |
| content | varchar(255) | varchar | 255 | YES | ? | ? |
| warn_id | varchar(255) | varchar | 255 | YES | ? | 告警模板ID |
| user_id | varchar(255) | varchar | 255 | YES | ? | 創(chuàng)建人 |
| createtime | timestamp | timestamp | YES | ? | 創(chuàng)建時間 | |
觸發(fā)器節(jié)點model_trigger_node
| id | varchar(32) | varchar | 32 | NO | ? | ? |
| trigger_id | varchar(32) | varchar | 32 | YES | ? | 觸發(fā)器ID |
| node_id | varchar(32) | varchar | 32 | YES | ? | 節(jié)點ID |
| node_name | varchar(255) | varchar | 255 | YES | ? | 節(jié)點名稱 |
| node_key | varchar(255) | varchar | 255 | YES | ? | 節(jié)點KEY |
| node_type | varchar(255) | varchar | 255 | YES | ? | 節(jié)點類型 |
| relation | int(255) | int | ? | YES | ? | 觸發(fā)關系 |
| svalue | varchar(255) | varchar | 255 | YES | ? | 觸發(fā)值 |
四、日志模塊
日志模塊主要由系統(tǒng)運行日志、告警日志、設備連接日志、指令下發(fā)日志、功能節(jié)點日志構(gòu)成
1.系統(tǒng)運行操作日志 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 | ? | 內(nèi)容@內(nèi)容 |
| createtime | timestamp | timestamp | NO | CURRENT_TIMESTAMP | 創(chuàng)建時間@創(chuàng)建時間 | |
2.告警日志model_warn_log
| id | varchar(255) | varchar | 255 | NO | ? | ? |
| sn | varchar(255) | varchar | 255 | YES | ? | 告警設備 |
| content | varchar(255) | varchar | 255 | YES | ? | 告警內(nèi)容 |
| is_read | int(11) | int | ? | YES | ? | 是否已讀 |
| warn_id | varchar(255) | varchar | 255 | YES | ? | 告警模板 |
| createtime | timestamp | timestamp | YES | ? | 創(chuàng)建時間 | |
| 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 | ? | 狀態(tài)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.指令下發(fā)日志model_order_log
| id | varchar(255) | varchar | 255 | NO | ? | ? |
| content | varchar(255) | varchar | 255 | YES | ? | 指令內(nèi)容 |
| create_time | timestamp | timestamp | NO | CURRENT_TIMESTAMP | 創(chuàng)建時間 | |
| sn | varchar(255) | varchar | 255 | YES | ? | 設備序列號 |
| topic | varchar(255) | varchar | 255 | YES | ? | 訂單主題 |
| user_id | varchar(255) | varchar | 255 | YES | ? | 用戶id |
?
5.功能節(jié)點日志model_node_log
| id | varchar(32) | varchar | 32 | NO | ? | ? |
| content | varchar(255) | varchar | 255 | YES | ? | 節(jié)點內(nèi)容 |
| create_time | timestamp | timestamp | NO | CURRENT_TIMESTAMP | 創(chuàng)建時間 | |
| sn | varchar(255) | varchar | 255 | YES | ? | 節(jié)點序列號 |
| topic | varchar(255) | varchar | 255 | YES | ? | 節(jié)點主題 |
五、公共模塊
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 | 創(chuàng)建時間@創(chuàng)建時間 | |
2.數(shù)據(jù)推送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 | ? | 數(shù)據(jù)推送URL@數(shù)據(jù)推送URL |
| sjurl | varchar(100) | varchar | 100 | YES | ? | 時間推送URL@時間推送URL |
| httptoken | varchar(36) | varchar | 36 | YES | ? | HTTP頭授權(quán)碼@HTTP頭授權(quán)碼 |
| secondcycle | int(11) | int | ? | YES | ? | 調(diào)度周期@調(diào)度周期 |
| startstatus | varchar(36) | varchar | 36 | YES | ? | 啟用狀態(tài)@啟用狀態(tài) |
| 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 | ? | 內(nèi)容@內(nèi)容 |
| createtime | timestamp | timestamp | YES | ? | 創(chuàng)建時間@創(chuàng)建時間 | |
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 | ? | 字典狀態(tài) |
總結(jié)
以上是生活随笔為你收集整理的从零开始搭建物联网平台(三)数模设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 40_ZYNQ7020开发板RS485协
- 下一篇: multisim变压器反馈式_借助Mul