Mango Automation V5.0.3时间数据处理及控制页面搭建技术问询
Mango Automation V5.0.3 启停时间统计虚拟数据点配置方案
一、所需虚拟数据点及配置
1. 启停控制开关(二进制点)
- 类型:虚拟数据源(Virtual Data Source)
- 数据类型:Binary(布尔型)
- 点标识符:
device_run_switch - 核心配置:
- 数据源选择
Virtual - 默认值设为
false(初始停止状态) - 勾选「可写」,允许前端页面控制切换
- 数据源选择
2. 启动时间戳点(日期时间型)
- 类型:虚拟数据源
- 数据类型:DateTime
- 点标识符:
device_start_time - 核心配置:
- 数据源选择
Virtual - 默认值设为
null - 绑定事件处理:当
device_run_switch从false切换为true时,自动将当前时间now()写入该点
- 数据源选择
3. 停止时间戳点(日期时间型)
- 类型:虚拟数据源
- 数据类型:DateTime
- 点标识符:
device_stop_time - 核心配置:
- 数据源选择
Virtual - 默认值设为
null - 绑定事件处理:当
device_run_switch从true切换为false时,执行两个动作:- 将当前时间
now()写入该点 - 计算本次运行时长(
(now() - device_start_time)/1000,毫秒转秒),累加到累计运行时长点
- 将当前时间
- 数据源选择
4. 累计运行时长(整数型,单位:秒)
- 类型:虚拟数据源
- 数据类型:Numeric(整数)
- 点标识符:
total_run_seconds - 核心配置:
- 数据源选择
Virtual - 默认值设为
0 - 仅通过停止事件触发更新,实现历史运行时长的累加存储
- 数据源选择
5. 实时运行时长(整数型,单位:秒)
- 类型:虚拟数据源(或元数据点Meta Point)
- 数据类型:Numeric(整数)
- 点标识符:
current_run_seconds - 核心配置:
- 数据源选择
Virtual,或用Meta Point实现定时计算 - 默认值设为
0 - 定时触发(每秒1次)脚本逻辑:
const switchState = pointValue('device_run_switch'); const startTime = pointValue('device_start_time'); if (switchState && startTime) { return Math.floor((Date.now() - startTime.getTime())/1000); } return pointValue('current_run_seconds');
- 数据源选择
二、前端页面展示配置
1. 启停开关组件
- 选用
Binary Switch组件,绑定device_run_switch,设置切换文本为「启动」/「停止」
2. 时间戳展示
- 启动时间:用
Text组件绑定device_start_time,格式设置为yyyy-MM-dd HH:mm:ss - 停止时间:用
Text组件绑定device_stop_time,格式同上
3. 运行时长双格式展示
实时运行时长
- 秒数格式:
Text组件绑定current_run_seconds,格式设为0(整数显示) - 时间格式(HH:mm:ss):
Text组件添加自定义脚本:const secs = pointValue('current_run_seconds') || 0; const h = Math.floor(secs / 3600).toString().padStart(2, '0'); const m = Math.floor((secs % 3600)/60).toString().padStart(2, '0'); const s = Math.floor(secs % 60).toString().padStart(2, '0'); return `${h}:${m}:${s}`;
累计运行时长
- 秒数格式:
Text组件绑定total_run_seconds,格式设为0 - 时间格式(HH:mm:ss):复用上述脚本,将
current_run_seconds替换为total_run_seconds
三、关键注意事项
- 事件处理的触发条件需严格设置为「状态从X切换到Y」,避免重复触发更新
- 实时运行时长的定时频率建议1秒,兼顾实时性与系统性能
- 若无需持久化实时运行时长,可省略
current_run_seconds数据点,直接在前端脚本通过device_start_time与当前时间计算
内容的提问来源于stack exchange,提问作者mk900
相关产品推荐
相关产品推荐

