数据源与输出动作设计说明(嵌入式局域网优化版)
一、概述
本设计针对嵌入式设备在局域网环境运行的特点进行优化,主要目标:
- 去掉所有互联网依赖(云推送、外网告警)。
- 强化本地执行、南向控制、局域网内通信能力。
- 保证轻量化和嵌入式资源可控。
- 提供统一的可配置接口,支持 bbolt 本地存储缓存和离线重发机制。
- 前端页面需支持数据源和输出动作的配置、监控和操作。
数据流向(影子快照融合版): 南向采集模块 / 北向订阅 → 输入适配器 → Shadow Device(原子快照) → Snapshot Bus(合并/优先级) → 调度引擎 → 规则执行单元 → 结果处理器 → Workflow/Commit → 北向局域网输出 / 本地动作 / 南向控制
二、数据源页面设计优化
1. 数据源列表视图
显示字段:
| 字段 | 描述 | 可操作性 |
|---|---|---|
| 数据源ID | 系统唯一标识 | 不可修改 |
| 数据源名称 | 用户自定义名称 | 可编辑 |
| 数据源类型 | 南向采集(影子设备) / 北向订阅(局域网内) | 可筛选 |
| 快照版本 | 最新 Snapshot Version | 可刷新 |
| 快照延迟 | Snapshot Bus P95 延迟 | 监控指标 |
| Commit计数 | 差量 Commit 次数 | 可查看 |
| 协议类型 | Modbus/BACnet/OPC UA/MQTT(局域网Broker) | 不可修改 |
| 状态 | 在线 / 离线 / 异常 | 高亮异常 |
| 最新数据时间 | 最近采集时间 | 可刷新 |
| 数据质量 | 正常 / 异常 / 丢失 / 超时 | 颜色区分 |
| 订阅规则数 | 被多少规则共享 | 支持跳转规则列表 |
交互功能:
- 支持按 协议类型 / 状态 / 异常类型 筛选
- 支持批量启停数据源
- 点击数据源跳转至详细页
2. 数据源详细页
详细信息展示:
-
基本信息
- 数据源ID / 名称 / 类型 / 协议 / 连接参数
- 局域网 IP / 端口 / 通信状态
-
实时数据
- 最新采集值 / 时间戳 / 数据质量 / Snapshot Version(组完成后递增)
- 历史数据趋势图(折线图/表格)
-
共享源订阅规则
- 当前订阅规则列表
- 规则状态(启用 / 停用)
- 可跳转编辑规则
-
缓存与分发信息
- 缓存使用率(环形/条形图)
- Snapshot Bus 分发延迟(P95/P99)与队列深度
- 合并窗口(window_ms)与优先级(Pack 高优先)
- 去重与丢弃次数(去抖动生效)
-
操作按钮
- 测试连接 / 立即采集
- 启停数据源
- 调整缓存策略
- 异常清理(丢弃或重试缓存)
三、输出动作优化(嵌入式局域网版)
1. 总体原则
- 局域网优先:所有输出动作只在局域网内执行,不依赖互联网。
- 接口统一化:动作接口抽象化,可动态选择通道、设备及点位。
- 动作配置化:动作类型、目标、数据格式、触发条件可在前端配置。
- 可重试与容错:失败动作缓存至本地数据库(bbolt),支持重发。
- 轻量与稳定:异步执行、批量优化、资源可控。
- 触发源约束:北向发布只由 Points Commit 触发;规则只消费 OnSnapshot(不直接监听点位)。
2. 输出动作类型及优化细节
2.1 北向局域网上报(局域网内数据分发)
| 类型 | 优化设计 |
|---|---|
| MQTT(局域网Broker) | - QoS 0/1/2 - 支持主题模板(${SourceID}/${Metric}) - 支持批量/实时发送 - 支持离线缓存重发 - 支持局域网 IP 白名单 |
| WebSocket(局域网内) | - 单条或批量发送 - 连接状态监控 - 异常重连策略 - 可选心跳机制维持长连接 |
前端配置项:
- 输出动作名称
- 输出方式(MQTT / WebSocket / HTTP 局域网)
- 局域网目标地址/端口
- 数据格式选择(JSON / 二进制 / 字符串)
- 重试策略配置(次数 / 间隔 / 最大等待)
优化要点:
- 批量发送与压缩降低 CPU / 内存负载
- 本地缓存与重发保证可靠性
- 消息模板化与局域网访问控制
- 提供成功率、延迟和失败次数统计
- 发布源统一:由 Points Commit 触发(与 Snapshot/规则解耦,零侵入)
2.2 本地动作(嵌入式设备内部处理)
| 类型 | 优化设计 |
|---|---|
| 本地日志 | - 支持日志级别 - 按规则生成单独日志文件 - 支持轮转与归档 |
| 数据库存储 | - 使用轻量嵌入式数据库 bbolt - 批量写入,异步操作 - 数据过期清理策略 |
| 文件缓存 | - CSV/JSON 文件 - 支持断电/断网续存 - 文件大小和数量可配置 |
前端配置项:
- 动作名称
- 执行方式(日志 / 数据库 / 缓存队列)
- 文件路径或 bucket 选择(bbolt)
- 数据存储格式(JSON / protobuf)
- 是否启用重试机制
优化要点:
- 异步写入避免阻塞规则执行
- 缓存过期策略防止存储满溢
- 提供缓存状态监控(大小 / 条数 / 写入速度)
2.3 南向控制动作(局域网设备控制)
| 类型 | 优化设计 |
|---|---|
| 设备控制 | - 支持 Modbus/BACnet 等局域网协议 - 支持批量/单点指令下发 - 支持执行结果回调 - 支持失败重试与告警 |
| 子系统联动 | - 局域网内联动空调/照明/门禁等 - 支持条件触发 - 支持多目标动作顺序配置 |
前端配置项:
- 动作名称
- 通道选择(Modbus / BACnet / 其他协议)
- 目标设备 ID / 地址
- 点位选择(Device.Point)
- 输出值或控制命令
- 执行模式(单次 / 循环 / 条件触发)
- 重试次数 / 重试间隔
优化要点:
- 异步执行,规则快速返回
- 动作执行结果可追溯
- 支持失败通知与重试
- 提供模拟测试功能
- 统一工作流闭环:Check → Delay → Write → Confirm → Snapshot Refresh → Commit(北向自动发布)
2.4 动作触发策略与组合
- 触发条件:规则结果触发(基于 OnSnapshot 的状态变化、阈值超限),可组合 AND/OR
- 组合动作:一条规则可绑定多个动作(北向 + 南向 + 本地)
-
前端页面:
- 规则选择 → 动作绑定
- 多动作组合顺序配置
- 条件触发逻辑可视化编辑器
3. 输出动作通用优化策略
- 统一动作管理:规则配置页统一管理所有动作,支持启停和优先级设置
- 异步执行与线程池:确保高频数据流时系统稳定
- 失败处理策略:入队列重试、失败记录、UI 告警
- 批量优化:支持批量发送 / 批量写入 / 批量控制,降低 CPU 和 I/O 压力
- 可监控性:统计成功率、延迟、失败次数,并提供前端仪表盘
- 来源一致性:所有北向发布与页面展示统一从 Points Commit / Snapshot Bus 消费,避免直接点位驱动
五、配置示例(快照与输出动作)
# system.yaml(节选)
snapshot_bus:
window_ms: 250
queue_capacity: 10000
async: true
priority:
pack: high
cell: normal
rule_engine:
thread_pool:
size: 32
max_queue: 5000
points_commit:
differential: true
outputs:
mqtt:
enabled: true
qos: 1
topic_template: "${SourceID}/${Metric}"
retry:
max_attempts: 5
backoff_ms: 500
4. 数据可靠性与容错
- 本地缓存:bbolt 数据库缓存失败动作,支持离线重发
- 状态监控:前端显示动作最近执行状态、失败次数、错误信息
- 重试策略:固定间隔 / 指数退避 / 手动重发
- 安全与稳定:局域网内动作执行,无外网依赖,接口封装不暴露规则逻辑