云平台功能描述
后台展示
单个展开[项目三]里边所有设备(不包括RTU),主要是PC端,可布置于客户服务器
实时数据
根据登录用户所属公司(一级公司)以及下属公司(二级以及再下级公司),展示最后一条数据 HTTPAPI函数:根据当前用户所在公司查询下级公司、项目,以及根据所选公司、名称查询最新一条数据
| 一级公司 | 设备一名称,编号,ICCID | 历史 | 更新 | 曲线 |
|---|---|---|---|---|
| 项目二 | 详情二(当前数值) <该处项目采用label名称> | |||
| 二级公司 | 详情三(单位) <该处项目采用label名称> | |||
| [项目三] | 详情四(描述) <该处项目采用label名称> | |||
| 项目四 | 设备二名称,编号,ICCID | 历史 | 更新 | 曲线 |
| 三级公司 | 详情一(名称、当前数值、单位、描述)<该处项目采用label名称> | |||
| 项目五 | 详情二(名称、当前数值、单位、描述)<该处项目采用label名称> | |||
| ------------------------------------------------- | ||||
| 导出excel |
历史曲线
HTTPAPI函数:根据设备_id以及起止时间查询历史数据 来自于实时数据页面跳转 曲线起止时间可以设定,默认最近24小时
测站管理
RTU管理(新增、修改、删除)
HTTPAPI函数:根据当前用户所在公司查询下级公司、项目,以及根据所选公司、名称新增、修改、查询、绑定所属RTU以及包含设备 根据登录用户所属(一级公司)以及下属(二级以及再下级公司)
| 搜索RTU | 搜索编号 | 搜索ICCID | 新增 | ||
|---|---|---|---|---|---|
| 项目一 | RTU名称,编号,ICCID | 详情 | 更新 | 修改 | 解绑 |
| 项目二 | 详情一(设备名称、设备编号、所属公司) | ||||
| 二级公司 | 详情二(设备名称、设备编号、所属公司) | ||||
| [项目三] | 详情三(设备名称、设备编号、所属公司) | ||||
| 项目四 | 详情四(设备名称、设备编号、所属公司) | ||||
| 三级公司 | RTU名称,编号,ICCID | 详情 | 更新 | 修改 | 解绑 |
| 项目五 | 详情一(设备名称、设备编号、所属公司) | ||||
| 详情二(设备名称、设备编号、所属公司) |
项目管理(新增、修改、删除)
根据登录用户所属(一级公司)以及下属(二级以及再下级公司)
| 搜索项目 | 搜索编号 | 新增 | ||
|---|---|---|---|---|
| 项目管理 | 项目名称,编号 | 详情 | 更新 | 修改 |
| 详情一(设备名称、设备编号、所属公司、触发方式) | ||||
| 详情二(设备名称、设备编号、所属公司、触发方式) | ||||
| 详情三(RTU名称、RTU编号、所属公司、触发方式)<此处RTU也可作为设备的一种,从云函数处上报整理一致> | ||||
| 详情四(RTU名称、RTU编号、所属公司、触发方式) | ||||
| 项目名称,编号,ICCID | 详情 | 更新 | 修改 | |
| 详情一(设备名称、设备编号、触发方式) | ||||
| 详情二(设备名称、设备编号、触发方式) |
设备管理(新增、修改、删除)
根据登录用户所属(一级公司)以及下属(二级以及再下级公司)
| 搜索设备 | 搜索编号 | 新增 | ||
|---|---|---|---|---|
| 设备管理 | 设备名称,编号、所属公司,ICCID | 详情 | 更新 | 清除(同步RTU解绑) |
| 设备名称,编号、所属公司,ICCID | 详情 | 更新 | 清除(同步RTU解绑) | |
| 设备名称,编号、所属公司,ICCID | 详情 | 更新 | 清除(同步RTU解绑) | |
| 设备名称,编号、所属公司,ICCID | 详情 | 更新 | 清除(同步RTU解绑) |
系统管理
企业管理(新增、修改、删除)
根据登录用户所属(一级公司)以及下属(二级以及再下级公司)
| 搜索企业 | 搜索编号 | 新增 | ||
|---|---|---|---|---|
| 企业管理 | 企业名称,编号,联系人,上级公司,联系电话 | 详情 | 更新 | 修改 |
| 企业名称,编号,联系人,上级公司,联系电话 | 详情 | 更新 | 修改 | |
| 企业名称,编号,联系人,上级公司,联系电话 | 详情 | 更新 | 修改 | |
| 企业名称,编号,联系人,上级公司,联系电话 | 详情 | 更新 | 修改 |
用户管理(新增、修改、删除、权限调整)
根据登录用户所属(一级公司)以及下属(二级以及再下级公司)
| 搜索名称 | 搜索编号 | 新增 | |||
|---|---|---|---|---|---|
| 用户管理 | 用户名称,头像,昵称,所属公司,联系电话 | 详情 | 更新 | 修改 | 权限 |
| 用户名称,头像,昵称,所属公司,联系电话 | 详情 | 更新 | 修改 | 权限 | |
| 用户名称,头像,昵称,所属公司,联系电话 | 详情 | 更新 | 修改 | 权限 | |
| 用户名称,头像,昵称,所属公司,联系电话 | 详情 | 更新 | 修改 | 权限 |
前端
同后台,主要是手机端,可布置于客户服务器。展示方法适应于手机屏幕
大屏
-定制,主要用于数据分析,主要是PC端,可布置于客户服务器
服务器
1、serverless服务器可以设置定时巡检函数,功能根据需求设置 2、serverless服务器托管前端页面并具备各种安全措施 3、serverless服务器布置CDN服务 4、数据库位于serverless服务器 5、API函数位于serverless服务器,分为client、admin、device 6、tcp云平台位于腾讯云服务器,并与serverless服务器建立关系 7、mqtt云平台位于腾讯云服务器,并与serverless服务器建立关系 8、实时互动前端与遥测端均需开启mqtt服务 9、服务器并发数:>100万/小时 10、响应时间<30秒 11、服务器数据库DRTUx;DBX;DEVICEX;Enterprise 12、云端校验设备编码与ICCID符合性,不符则拒绝,并返回状态 13、设备端首选http API连接,反馈可读性强 14、http遥测上传path:/router/device1/pub/adddata 15、MQTT订阅主题定义:/dev/RTU/ICCID/tx/json 16、其他SL651等由协议处理 17、设备激活方法: 云端设置ICCID参数 遥测端发送数据,如没有该ICCID则设置,作为激活
httpAPI
url:"http://device.czinv.com" 1、遥测端用/router/device1/pub/adddata
//上行
{
"encry":false,//数据库加密
"no":{
"bsonType": "string",
"description": "设备编码",
"label": "设备编码",
"trim": "both"
},
"name":{
"bsonType": "string",
"description": "设备名称",
"label": "设备名称",
"trim": "both"
},
"iccid":{
"bsonType":"string",
"description": "sim卡号",
"label": "sim卡号"
},
"RTU":{
"bsonType":"string",
"description": "连接RTU编号",
"label": "RTU编号"
},
"obj":{
"bsonType": "object",
"properties":{
"0": {
"dataType":{
"bsonType":"int",
"description": "数据类型",
"label": "数据类型"
},
"label": {
"bsonType":"string",
"description": "名称",
"label": "名称"
},
"unit":{
"bsonType":"string",
"description": "单位",
"label": "单位"
},
"description":{
"bsonType":"string",
"description": "描述",
"label": "描述"
},
"Value":{
"bsonType":"array",
"description": "数值",
"label": "数值"
}
},
"1": {
"dataType":{
"bsonType":"int",
"description": "数据类型",
"label": "数据类型"
},
"label": {
"bsonType":"string",
"description": "名称",
"label": "名称"
},
"unit":{
"bsonType":"string",
"description": "单位",
"label": "单位"
},
"description":{
"bsonType":"string",
"description": "描述",
"label": "描述"
},
"Value":{
"bsonType":"number",
"description": "数值",
"label": "数值"
}
}
}
}
}
//下行
{
code:0,msg:"ok"
}
2、遥测端用/router/device1/pub/getpara(云端配置通过MQTT、websocket下发得到,不再通过http获取)
//遥测端获取云端设置
//上行
{
iccid:""
edit:"时间戳"//本地最后更新的时间,与云端比较,有更新时下载,var timestamp = new Date().getTime();
}
//下行
{
code:0,msg:"ok",data:{
encod:RTU编码
iccid:ICCID
rtu_model:RTU型号
rtu_factory:RTU生产商
rtu_company:归属公司(当前账户所属公司)
center_1:中心定义1{
sim_channel:sim2选择
protocol:上传协议
/* [选择
5:HJ212(TCP)
4:SZY206(TCP)
3:SL651(TCP)
2:MQTT(JSON)
1:HTTP(JSON)
0:websocket
] */
port:端口号
gprs:连接方式:
/* [选择
0:IP
1:域名
] */
ip:IP地址
url:域名
path:API路径(仅http模式)
apn:APN接入点
heart:心跳时间
user:用户名
pass:密码
code:遥测站分类码
}
center_2:中心定义2
{... ...}
serial_0:串口0{
buad:波特率[2400,4800,9600,19200,38400 选择默认9600]
parity:奇偶校验[无校验,偶校验、奇校验选择默认无校验]
bits:数据位[7,8 选择默认8]
stop:停止位[1,1.5,2 选择默认1]
device:[
{
ID:仪器编号_id
addr:协议地址
},{
ID:仪器编号_id
addr:协议地址
},
]
}
serial_1:串口1{
波特率
奇偶校验
数据位
停止位
通讯协议(MODBUS、其他专用协议)
协议地址 (从口用)[输入字符]
}
device:[
{
ID:仪器编号_id
addr:协议地址
},{
ID:仪器编号_id
addr:协议地址
},
]
}
}
device:{
_id:绑定到RTU
label:仪器名称,
No:仪器编号,
protocol:通讯协议
sta:工作状态(开、关)
gap:采集周期(毫秒),
timeout:超时时间ms
Endian_int_16:16位整数字节序
Endian_int_32:32位整数字节序
Endian_float_32位浮点数字节序
Endian_CRC_32位浮点数字节序
device_note:仪器注释
retry:重试次数-------------------
channel:[{
reg:MODBUS区域01/02/03/04
data_type:通道通讯协议
/* [选择0-7
0:16位有符号
1:16位无符号
2:16位-4位BCD
3:32位有符号
4:32位无符号
5:32位-4位BCD
6:32位浮点数
7:64位浮点数
] */
local:通道地址
rw:read/write/r_w[选择 读/写/读写]
reference:仪表底数[输入数字]
scale:true[选择]
unit:单位[输入字符]
doi:标志符[输入字符,16进制00-FF]
ex_doi:扩展标志符[输入字符,16进制00-FF]
}]
}
3、/router/device1/pub/getdevice
//根据项目、公司查询多台设备参数
//上行
{
parent_id:mould
}
//下行
{
code:0,msg:"ok",data:{
}
}
4、后端用/router/device1/pub/getdevice_one
//获取企业或项目的设备列表以及该设备
上行
{
mould:mould
}
//下行
{
label:设备名称,//来自PROJECT
No:设备编号,//来自PROJECT
trigger:发送方式:0,//来自PROJECT
iccid:ICCID,//以下来自DB_1
RTU:所属RTU,
obj:数据{
0:{
label:
unit:
description:
Value
},
FF02:{
label:
unit:
description:
Value
}
}
}
5、/router/user/pub/login
//上行
{
"username":xx,
"password":xxxxxx
}
//下行
{
"code": 0,
"msg": "",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2NjU3MjNiMmU3NDY1YTUwZjJkMjgwZmMiLCJyb2xlIjpbXSwicGVybWlzc2lvbiI6W10sImlhdCI6MTcxNjk4NjgwMiwiZXhwIjoxNzE3NTkxNjAyfQ.RrllBNzwJPeq5yeZ-WUYOqEPNHCl5DttJF3iOxJNlGM",
"tokenExpired": 1717591602848,
"uid": "665723b2e7465a50f2d280fc",
"type": "register",
"userInfo": {
"_id": "665723b2e7465a50f2d280fc",
"dcloud_appid": [
"__UNI__DA978AF"
],
"my_invite_code": "NN36LV",
"register_date": 1716986802842,
"register_env": {
"app_name": "",
"app_version": "",
"app_version_code": "",
"appid": "__UNI__DA978AF",
"channel": "",
"client_ip": "183.199.128.179",
"os_name": "",
"uni_platform": "h5"
},
"username": "czl99",
"status": 0
},
"username": "czl99",
"errCode": 0,
"errMsg": "",
"message": "",
"needUpdateUserInfo": true,
"vk_uni_token": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2NjU3MjNiMmU3NDY1YTUwZjJkMjgwZmMiLCJyb2xlIjpbXSwicGVybWlzc2lvbiI6W10sImlhdCI6MTcxNjk4NjgwMiwiZXhwIjoxNzE3NTkxNjAyfQ.RrllBNzwJPeq5yeZ-WUYOqEPNHCl5DttJF3iOxJNlGM",
"tokenExpired": 1717591602848
}
}
6、/router/user/pub/register
//上行
{
"username":xx,
"password":xxxxxx
}
//下行
{
"code": 0,
"msg": "登录成功",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2NjBkMDllY2NhYTFiY2I1NzllNmI3NTAiLCJyb2xlIjpbIuWkqeS7quezu-e7n-euoeeQhuWRmCJdLCJwZXJtaXNzaW9uIjpbInN5cy1wZXJtaXNzaW9uLXVzZXIiXSwiaWF0IjoxNzE2OTg2ODc5LCJleHAiOjE3MTc1OTE2Nzl9.ad1dTBfsgbNj4iZjp-xZXsHlWndeUU5WpQZD0nvgoDc",
"uid": "660d09eccaa1bcb579e6b750",
"username": "TYADMIN",
"type": "login",
"userInfo": {
"_id": "660d09eccaa1bcb579e6b750",
"dcloud_appid": [
"__UNI__EE86733",
"__UNI__DA978AF"
],
"mobile": "19999999999",
"mobile_confirmed": 1,
"register_date": 1712130540040,
"role": [
"天仪系统管理员"
],
"username": "TYADMIN",
"allow_login_background": true,
"gender": 0,
"nickname": "天仪管理用户",
"status": 0,
"last_login_date": 1716986879707,
"last_login_ip": "183.199.128.179",
"login_ip_limit": [],
"Enterprise": "沧州天仪仪器仪表有限公司"
},
"tokenExpired": 1717591679707,
"errCode": 0,
"errMsg": "",
"message": "",
"needUpdateUserInfo": true,
"vk_uni_token": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2NjBkMDllY2NhYTFiY2I1NzllNmI3NTAiLCJyb2xlIjpbIuWkqeS7quezu-e7n-euoeeQhuWRmCJdLCJwZXJtaXNzaW9uIjpbInN5cy1wZXJtaXNzaW9uLXVzZXIiXSwiaWF0IjoxNzE2OTg2ODc5LCJleHAiOjE3MTc1OTE2Nzl9.ad1dTBfsgbNj4iZjp-xZXsHlWndeUU5WpQZD0nvgoDc",
"tokenExpired": 1717591679707
}
}
7、/router/device_1/enterprise/sys/add
//上行
{
"parent":"",
"name":"",
"contact":"",
"zip_code":"",
"wx":"",
"tel":"",
"email:",
"facsimile":""
}
//下行
{
code:0,msg:"ok"
}
8、/router/device_1/enterprise/sys/delete
//上行
{
"_id":""
}
//下行
{
code:0,msg:"ok"
}
9、/router/device_1/enterprise/sys/getlist
//上行
{
}
//下行
{
}
10、/router/device_1/enterprise/sys/update
//上行
{
"_id":""
"parent":"",
"name":"",
"contact":"",
"zip_code":"",
"wx":"",
"tel":"",
"email:",
"facsimile":""
}
//下行
{
code:0,msg:"ok"
}
11、//获取当前用户公司信息
在登录页面获得,vk.setVuex('$user.enterpriseInfo', enterprise);
vk.getVuex("$user.userInfo.Enterprise")
this.avatar = vk.getVuex("$user.enterpriseInfo")[0]
12、//获取RTU信息 13、//获取指定最后一条设备信息 14、//获取指定时间、设备的信息
云端、遥测主要功能
设备分配
1、后台设置,注意ICCID为核心要素 2、扫码(如已分配需要解绑方可再次分配)
设备添加方法
1、遥测设备预置方法:扫码添加,设置设备归属公司和项目 2、云端设置,遥测设备根据ICCID下载,云端设置设备归属公司和项目 3、遥测端手动触发下载设置,触发方法:触摸屏、PIN引脚、USART触发 4、遥测端USART调试口设置规则:上电30秒内为调试口,期间如果有成功通讯,则定义为调试口。否则超期转为正常口
用户注册
1、云端分配用户名(后台前端) 2、前端APP注册(前端)。云端分配所属企业(可选) 3、前端注册类型:用户名密码,微信,手机短信
用户查看
1、具备所属企业用户可以查看当前公司以及下级公司所有数据 2、否则,只可以查看当前设备扫码数据
多租户管理
1、当前用户可用建立分公司、项目、设备,分公司也可建立下级分公司、项目、设备 2、可管理当前公司以及下级公司、项目、设备 3、多租户分级分层管理 4、租户权限设置管理 5、租户可以由上级用户-建立-删除-权限调整
公司/项目新建修改
1、可以新建当前用户公司下建立分公司、项目 2、可以以公司/项目分组查看设备信息 3、上级公司自动根据当前账户生成 4、如没有归属分公司或者项目、设备可以删除
外接设备开发
1、预制多种仪表程序 2、云端增加仪表程序,云端更新设备接入种类、型号 3、云端编辑设备串口、MODBUS地址、数据解析,非遥测设备预制仪表协议云端开发下载使用 4、一个RTU下可以驱动一个或者以上设备 5、管理以设备名称、编号为准,RTU透明
数据上报方式
1、定时上报 2、数据变化上报 3、触发需大于触发预置
数据上传协议
1、云端设置 2、http,mqtt,sl651,等等
实时数据
1、曲线展示 2、表格展示
历史数据
1、曲线展示 2、表格展示 3、批量导出excel
前端二次开发
1、APP开源,可编辑为APP、web、微信小程序,百度小程序,京东小程序,支付宝小程序 2、免费中性APP可用 3、大屏定制开发:展示可用可用于各种分析方法 4、按照公司、项目展示数据,可微信分享 5、扫码查看当前设备实时数据
数据转发
1、其他平台可通过HTTP API获取实时数据 2、其他平台可通过HTTP API获取一年内历史数据
设备管理
1、云端设备编辑(已激活状态下) 2、设备激活(预制设备) 3、上网卡查询
多重预警
1、微信推送 2、手机短信 3、电子邮件 4、HTTP交互等多种方式进行预警提示
云端MODBUS参数设置
{可定义以及调入模板,模板为单独数据库}
D_RTU(管理端设置ICCID参数后测站端根据ICCID下载改设置;测站端预编辑好后定时上传无需下载){
moudl:模板名:RTU型号+xxx(存储于D_RTU_MOULD)
encod:测站编码(模板时为null)[输入数字]
iccid:ICCID(模板时为null)[自动获取]
rtu_model:RTU型号[输入字符]
rtu_factory:RTU生产商[输入字符]
rtu_company:归属公司(当前账户所属公司)(模板时为null)[设置时自动获取账户所属公司,获取不到时提示激活失败]
edit:"时间戳"//与上传比较,有更新时下载var timestamp = new Date().getTime();
"position":{
"longitude":longitude,
"latitude":latitude,
}
center_1:中心定义1{
sim1_en:sim1使能[X]
sim2_en:sim2使能[X]
protocol:上传协议:[选择
4:HJ212(TCP)
3:SZY206(TCP)
2:SL651(TCP)
1:MQTT(JSON)
0:HTTP(JSON)
]
port:端口号[输入数字]
gprs:连接方式:[选择
0:IP
1:域名
]
ip:IP地址[输入字符]
url:域名[输入字符]
path:API路径(仅http模式出现)[输入字符]
apn:APN接入点[输入字符]
heart:心跳时间[输入数字]
user:用户名[输入字符]
pass:密码[输入字符]
code:遥测站分类码 (MQTT\http不出现)[输入数字]
}
center_2:中心定义2
{... ...}
center_3:中心定义3
{... ...}
center_4:中心定义4
{... ...}
center_5:中心定义5
{... ...}
center_6:中心6为固定服务器参数设置通道
{sim1使能
sim2使能
上传协议:HTTP/https(JSON)
端口号:80/443
连接方式:域名
域名:device.cinv.com
API路径:/router/xxxxx
APN接入点}
serial_0:串口0{
mode:主从定义(上电30秒默认调试,期间有成功通讯定位为调试,否则改为正常)[
0:从
1:主
]
Serial:串口号[选择
0:串口0
1:串口1
]
buad:波特率[2400,4800,9600,19200,38400 选择默认9600]
parity:奇偶校验[无校验,偶校验、奇校验选择默认无校验]
bits:数据位[7,8 选择默认8]
stop:停止位[1,1.5,2 选择默认1]
protocol:通讯协议(MODBUS、其他专用协议)[MODBUS选择]
addr:协议地址(从口用)
}
serial_1:串口1{
主从定义(上电30秒默认调试,期间有成功通讯定位为调试,否则改为正常)
串口号
波特率
奇偶校验
数据位
停止位
通讯协议(MODBUS、其他专用协议)
协议地址 (从口用)[输入字符]
}
device:[
DEVICE.json modbus设备定义_id,DEVICE.json modbus设备定义_id//遥测端http获取时,_id转为实际JSON
]//需要新转增,不固定,发送单元
}
<DEVICE.json>
modbus设备定义(名称,公共){
mould:构建公司,public(为公共模板)
label:设备名称[输入字符]
No:设备编号[输入字符]
trigger:发送方式:[选择]
[
0:定时
1:数值变化
]
gap:采集间隔(分钟)[输入数字,最小0.1]
data:[{
label:名称[输入字符]
description:描述[输入字符]
doi:标志符[输入字符,16进制00-FF]
ex_doi:扩展标志符[输入字符,16进制00-FF]
serial_NO:串口号[输入数字]
local:true[是否本RTU]
addr:MODBUS地址[输入数字]<local=true时指示通道号>
reg:MODBUS区域[选择 01 线圈/02 离散/03 保持/04 输入]
rw:r/w/r_w[选择 读/写/读写]
dataType:数值类型[选择0-7
0:16位有符号
1:16位无符号
2:16位-4位BCD
3:32位有符号
4:32位无符号
5:32位-4位BCD
6:32位浮点数
7:64位浮点数
]
analysis:类型0/1/2/3/4解析顺序[选择0-5
0:16位0[12]
1:16位1[21]
2:32位0[1234]
3:32位1[2143]
4:32位2[3412]
5:32位3[4321]
]
crc:校验字节解析[选择
0:LH
1:HL]
unit:单位[输入字符]
scale:true[选择]
ulo:量程下限[输入数字]
uhi:量程上限[输入数字]
reference:仪表底数[输入数字]
trig_value:触发阈值[输入数字]
func:执行函数(仅下行)
alert_en:报警方式[0:dis,1:UP(>=alart_h),2:DOWN(<=alart_l),3:DOU(>alart_h;<alart_l)]
alart_H:上限报警
alarm_L:下限报警
}]//需要新转增,不固定
}
遥测端功能
设备脚本
1、外设1:Esim 2、外设2:卡槽sim 3、外设3:LCD屏 4、外设4:RS485三个 5、协议:MODBUS主从、TCP-MODBUS 6、协议:主从口设置规则:根据端口设置 7、协议:其他专有协议 8、MODBUS解析内置,数据结构内置或者云端下载 9、输入开关信号(可选) 10、万能输入0-10V/0-20mA(可选) 11、输出无源节点(可选) 12、输出PWM2路(0-10V/0-20mA可选) 13、主力LUA脚本 14、自动判断sim卡可用性,非可用sim卡下设置不可用,中心六除外 15、中心六自动判断sim卡可用性并执行 16、按照线程执行中心1-5下项目 17、当触发时执行中心六下项目,非触发不执行 18、主要功能: a)HTTP与服务器通讯读取设置(固定中心6,非触发不执行) b)http/mqtt/HJ212(TCP),SZY206(TCP),SL651(TCP)解析协议内置 c)参数设置通过http从云端获取 d)参数设置从串口MODBUS从口获取 e)默认参数设置格式JSON f)无论MODBUS从口还是http云端,以最后一次获取为准 g)根据RTU设置和设备设置解析协议并发送,协议见b) h)读取MODBUS数据协议协议解析(位、8位、16位、单精度浮点数、双精度浮点数、字符等等) i)PWM具备校正字节 j)时间通过网络校准,内置不带电池时钟 k)低功耗模式和定时唤醒功能 19、设备发送数据结构
/ websocket 结构 数据库: vk-ws-connection 当前在线的用户 vk-ws-group 设备用户组的用户名,头像,设备id,具备权限:管理、只读、读写 vk-ws-order 设备订单状态以及用户名关联 DB-X-PARA 设备最后一条更新记录,当新用户上线时,补发最新一条数据 操控流程: 设备发送参数到设备指定DB-X-PARA,然后检查该设备的在线用户,并将该信息同步至改用户 当有用户上线时,检查该用户所有的组并同步信息至该用户 扫码绑定设备,第一个用户为管理用户,后续权限都需要有管理用户授权 管理用户可以解散设备组,便于重新绑定 /