万维组态接入文档

  演示地址:http://121.40.16.189:12000

  1. 万维组态本地部署文档
  2. 万维组态线上部署文档
  3. 万维组态操作说明文档
  4. 万维组态接入文档
  5. 万维组态绑点示例文档
  6. 万维组态接入源代码说明
  7. 万维组态扩展图元示例文档
  8. 万维组态大屏图元示例文档

万维组态测试后端,提供了万维组态编辑器所需的所有数据接口以及mqtt连接示例;下面我们一一介绍;

1、数据表

1.1、数据点位表

1.1.1、数据点位表结构

数据点位表是存储点位的,数据结构如下:

CREATE TABLE `rc_variable` (
  `id` bigint(11) NOT NULL COMMENT '主键',
  `name` varchar(255) NOT NULL COMMENT '点位名称',
  `dwkey` varchar(50) NOT NULL COMMENT '点位属性',
  `templete_id` bigint(11) NOT NULL COMMENT '模版id',
  `value_type` tinyint(2) NOT NULL COMMENT '数值类型',
  `default_value` varchar(255) NOT NULL COMMENT '默认值',
  `sort` int(4) DEFAULT NULL COMMENT '排序',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `unique_temp_var_name_key` (`name`,`dwkey`,`templete_id`) USING BTREE COMMENT '每个模版的变量名称点位属性唯一'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据点位';
1.1.2、数据点位表字段介绍

id: 唯一主键;

name: 点位名称,区别点位用,必须设置,相对于模版唯一;

dwkey:点位属性,用于mqtt/websocket数据通信,必须设置,相对于模版唯一;

templete_id:外键,关联模版表,一个模版有多个点位;

value_type:点位值的数据类型,有整型(0)、浮点型(1)、字符串(2),必须设置;

default_value:点位的默认值,必须设置,不管是整型还是浮点型都用字符串返回;

sort:排序字段;

1.1.3、数据点位表存储例子

比如我们实际场景中又一个数据点是 "阀门开关状态"的点,这个点的实时值为0或者1,我们就在将点位添加到点位表时

name: 阀门开关状态;

dwkey:fmzt;// 注意这个值 下面我们会用到

templete_id: 模版表ID;

value_type: 0;//整型

default_value: '0';//默认值为0

sort: 1;

以上是我们在添加点位时的例子,特别注意的是,在同一个模版中,点位名称name是唯一的,点位属性dwkey也是唯一的, 请勿重复;dwkey是我们在数据通信时重要凭证,例如我们在websocket消息体是如下的json:

{
  'fmzt': 1,
  // 其他点位键值。。。
}

我们在接收到以上消息后,就会遍历我们添加的点位,用点位的dwkey值获取点位的实时值;例如我们添加的阀门开关状态点位, 它的dwkey字段的值为【fmzt】,我们从收到json消息中就可以匹配到最新的实时值为【1】,这个时候点位【阀门开关状态】对应的实时值就会更新为 1,从而去通知组态图更新受【阀门开关状态】约束的【虚拟变量】的返回值,从而刷新组态图中绑定了这些受影响的虚拟变量的图元

1.2、数据模版表

1.2.1、数据模版表结构

数据模版表是存储一个数据模版的,数据结构如下:

CREATE TABLE `rc_templete` (
  `id` bigint(11) NOT NULL COMMENT '主键',
  `name` varchar(255) NOT NULL COMMENT '模版名称',
  `content` longtext COMMENT '组态内容',
  `virvar_json` longtext COMMENT '虚拟变量JSON',
  `edversion` bigint(11) NOT NULL DEFAULT '0' COMMENT '组态编辑内容版本号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `status` tinyint(4) DEFAULT '0' COMMENT '状态',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='模版';
1.2.2、数据模版表字段介绍

id: 唯一主键;

name: 模版名称,必须设置;

content: 组态内容,存放组态图文件的路径;

virvar_json:存放虚拟变量的json字符串;配置的所有虚拟变量存在这里

edversion:组态编辑提交内的容版本号, 必须设置 默认可以设置为0;

1.2.3、数据模版表解释

数据模版表为什么会存在?主要是为了管理变量及组态内容、虚拟变量等,一个模版可以被多个组态实例使用,也就是说我们只要创建一个模版, 就可以使用到多个组态实际场景中;例如我们有是个污水处理厂,而这些污水处理厂使用的设备都是相同的,假如没有模版,我们要创建组态的话, 就要创建10个,画10次图,并且要绑定10次点位数据,这时,模版就很好的解决了重复工作,我们只需要创建一个模版,这是个组态在创建的时候 只需要引用下这个模版。

1.3、组态表

1.3.1、组态表结构

组态表是存储组态实例的表结构,数据结构如下:

CREATE TABLE `rc_device` (
     `id` bigint(11) NOT NULL COMMENT '主键',
     `name` varchar(255) NOT NULL COMMENT '组态名称',
     `templete_id` bigint(11) NOT NULL COMMENT '模版id',
     `thumb` longtext COMMENT '封面',
     `slave_url` varchar(255) DEFAULT NULL COMMENT '从机地址',
     `remark` varchar(500) DEFAULT NULL COMMENT '备注',
     `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
     `create_time` datetime DEFAULT NULL COMMENT '创建时间',
     `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
     `update_time` datetime DEFAULT NULL COMMENT '更新时间',
     PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='组态';
1.3.2、组态表字段介绍

id: 唯一主键;

name: 组态名称;

templete_id: 关联的模版id;

thumb:组态封面;

slave_url:从机地址,就是mqtt/websocket的服务地址;

1.3.3、组态表解释

此处我们终点介绍slave_url,它是我们数据通信的地址,我们在预览组态时,前端会通过此值来连接到消息服务器, 从而前端可以实时接收到点位数据变化的消息,刷新组态图,前端的事件(反向控制)也会通过自这个消息通道把事件发出去; 我们这里就是以MQTT作为消息传输通道,当有点位数据发生变化时,外部就可以通过该通道,将点位值发送到固定的topic上 (topic/preview/subscribe/device/{id}),前端在连接到slave_url指定的消息服务器后,会自动订阅一个topic 这个topic用组态id作为标识,只要时预览这个组态图,就会订阅这个topic,外部在点位数据发生变化后只要将消息下发到这个topic上 订阅这个topic的组态都会被刷新;注意这里又一个反向控制,这个就是前端再触发反向控制事件后会发出消息到消息服务器,事件分为 两种

1、发送修改点位值消息,消息体是:

{
    deviceId: 组态id,
    clientId: 前端订阅时的设备id,
    key: 点位属性名,
    value: 点位将要修改的值
}

固定topic是topic/client/changePoint,所以外部要想接收到反向控制修改点位值就必须监听这个topic;

2、发送反向控制指令,指令是我们在绑定事件的时候定义好的,消息体是:定义好的指令,固定topic是:topic/client/command, 所以外部要想接收到反向控制指令就必须监听这个topic;

2、接口

前端在预览时需要初始化,这个时候我们定义了4个外部接入组态时必须实现的接口

2.1、获取组态信息

接口路由:GET/app/none/configuration/{id},其中id为组态id;

返回值格式为

{
  device: {
    组态表属性...
  },
  templete: {
    模版表属性...,
    rcVariableList: [// 数据点位列表
      {点位表属性...},
      {点位表属性...}
    ],
  },
}

2.2、保存组态信息

接口路由:POST/app/none/configuration/save

参数:id、 content、edversion、virvarJson

当传入:id、 content、edversion是保存画布信息,也就是组态内容;

当传入:id、 virvarJson是保存虚拟变量信息;

保存完成后返回最新 edversion;具体参照 AppFrontController

2.3、通用上传单图片

接口路由:POST/app/none/upload/file

返回图片路径

2.4、上传图纸接口(组态画布内容)

接口路由:POST/app/none/upload/content/{deviceId}/{templeteId}deviceId:组态ID, templeteId:模版ID,

返回图纸存放路径

 如需了解更多关于万维组态,请添加微信:

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值