该项目下的笔记
Flutter 工程杂项与项目回顾:主题、日志、Result 类型与开发历程
PipeMonitor 系列收尾篇,合并 Material 3 主题、Logger 配置、Result 类型三个薄主题,并回顾 Archive/Plans 下的开发历程与多版本备份组织方式。
跨端时间戳处理:设备 uptime 与服务端墙钟时间的对齐
梳理 PipeMonitor 中 STM32 uptime、Node.js 服务端 received_at 与 Flutter 本地时区三套时间戳的语义差异、转换链路与工程取舍。
用户登录与设备控制 UI:两态切换、表单校验与命令下发反馈
拆解 PipeMonitor Flutter 端用户页两态切换、Form 校验、BottomSheet 周期选择、二次确认对话框与控制页 post-frame SnackBar 反馈的实现细节。
报警列表 UI:FilterChip 筛选 + SliverList 分隔 + 未读徽章
拆解 PipeMonitor Flutter 端报警页:Consumer 响应式绑定、CustomScrollView + SliverList.separated 滚动列表、FilterChip 严重等级筛选、_AlarmTile 展开收起与空态处理。
分阶段部署方法论:三阶段切分让小项目安全上线
PipeMonitor 用 manual-first-stage、private-mqtt-stage、mysql-stage 三阶段切分上线,借助 Docker Compose profiles 按需启用服务,每阶段都有明确 Out Of Scope、验收清单和回退路径。
PT100 温度编码解析:从 16 位原始值到 0.1℃ 有符号整数
详解 PT100 模块 16 位原始值的符号位编码、故障哨兵检测与多通道批量解析的完整数据流。
GitHub Actions 部署 Flutter Web:从触发到 rsync 上线
PipeMonitor 的 Flutter Web 通过 GitHub Actions 自动构建并以 rsync 部署到 VPS 子路径,覆盖 paths 过滤、并发控制、SSH 注入、远程目录校验等关键细节。
Flutter 单元测试实践:从刻度算法到 HTTP/WS 两态命令
结合 PipeMonitor 的四个真实测试文件,讲清单测的组织方式、命名规范、setUp/tearDown 用法,以及刻度边界、旧 payload 兼容、Timer.run 模拟 WS 延迟 ack 等技巧。
Flutter 依赖注入树与 GoRouter 路由设计:从 MultiProvider 到 StatefulShellRoute
拆解 PipeMonitor Flutter 端的依赖注入装配、.value 与 create 的生命周期取舍、StatefulShellRoute 四 Tab 栈保留与登录态驱动的路由重建。
Nginx 反向代理实战:缓存、限流、WebSocket 与 HTTPS
管道监控系统公网入口的 Nginx 配置实录:Flutter Web 缓存策略、登录限流、WebSocket 反代、Basic Auth 与 Certbot HTTPS。
从 H562 到 F103VC:一次降级背后的工程取舍
讲述管道监控系统从 STM32H562 迁移到 STM32F103VC 的引脚、显示、存储与线程模型重构。
RS485 串口驱动细节:DE 控制、TC 等待与错误标志清除
梳理 PipeMonitor 上行链路 USART3 + MAX485 驱动的关键实现:方向脚保护延时、TC 等待、RXNE 屏蔽、F1 错误标志清除顺序与 JSON 完整性检测。
MySQL 存储层:自动建表、历史幂等性与游标分页
详解 PipeMonitor API 的 MySQL 存储层设计:连接池有限次重试、启动自动建表、三元唯一索引去重、uptime 时间戳语义与 before_id 游标分页。
Flutter 跨平台文件保存:Web/Mobile/Desktop 三端实现
详解 PipeMonitor 的跨平台文件保存方案:条件导入、Web Blob 下载、Android Downloads 目录推导、三级回退、UTF-8 BOM 与 CSV 多字段合并导出。
fl_chart 历史曲线绘制:分度值预设与可拖动视口
基于 fl_chart 实现 PipeMonitor 历史曲线页,覆盖 X 轴分度值预设、1/2/5 × 10ⁿ Y 轴刻度算法、可拖动视口与多通道共用时间轴。
远程命令处理与延时复位:ack 先落线再执行
详解 PipeMonitor 的远程命令处理机制:reboot 和 set_upload_period 的执行流程、延时复位保证 ack 先到达云端、以及命令序号回显的请求-响应匹配。
Mosquitto MQTT 私有 Broker 与 ACL:设备到云端的消息通道
详解 PipeMonitor 的 Mosquitto MQTT Broker 配置:Topic 命名规范、ACL 权限控制、设备认证,以及 JSON 行分隔的上行消息格式。
KiCad 硬件设计:双 RS485 传感器板的原理图与物料清单
详解 PipeMonitor 的 KiCad 硬件设计:STM32F103VCT6 主控、双 RS485 通道(传感器 + 上行)、USB-C + CH340C 串口、电源保护,以及设计决策备忘。
LVGL 嵌入式 UI 设计:320x480 屏幕上的管道监控仪表盘
详解 PipeMonitor 基于 LVGL v9 的 LCD 界面设计:卡片式布局、流量主视觉进度条、告警状态栏、心跳脉冲动画,以及 flush 回调与局部刷新策略。
Windows C# Modbus 桌面调试工具:WPF 串口管理与 NModbus 封装
详解 PipeMonitor 配套的 Windows WPF 桌面调试工具:COM 口自动识别、Modbus RTU 主站轮询、压力/流量传感器寄存器解析,以及 NModbus 超时重试机制。
Docker 容器化部署与 Node.js 后端:从 MQTT 到 REST API
详解 PipeMonitor 的 Docker Compose 三容器部署架构、Node.js API 服务的 JWT 鉴权、WebSocket 实时推送,以及 MQTT 与 REST 的双向数据通道。
Flutter 应用数据模型与 API 设计:从 JSON 到 UI 的数据流
详解 PipeMonitor Flutter 端的数据模型设计、Measurement 帧解析与缺值补齐、API 服务抽象层,以及 CSV 导出与文件保存的跨平台实现。
上行 JSON 协议与手写解析器:从传感器到云端的帧格式
详解 PipeMonitor 的 JSON 上行帧格式设计、newlib-nano 浮点格式化兼容方案、valid 位图机制,以及下行命令的手写极简 JSON 解析器。
FAL 分区与 LittleFS:SPI NOR Flash 的可靠存储
从 Flash 分区表到 LittleFS 文件系统挂载,详解管道监控系统如何在 SPI NOR Flash 上构建断电安全的存储层。
字节序问题:流量计 REAL4 解析与联调踩坑
Modbus RTU 的 32 位数据传输涉及字节序和字序的组合,不同厂商的习惯不同。详解管道监控系统如何用可配置的解析策略解决联调时的字节序问题。
嵌入式浮点处理:避免 %f 的定点格式化技巧
在 newlib-nano 不支持 %f 的环境下,如何用纯整数运算实现浮点数的定点格式化,保证 LCD 和 JSON 输出的精度与对齐。
报警系统:阈值判定、边沿触发与多级严重性
管道监控系统的报警设计:如何避免同一条规则每 2 秒刷一次报警,如何区分警告和严重故障,如何让上行线程即时上报。
Modbus 服务层:邮箱队列与总线串行化
通过邮箱 + 信号量实现 Modbus 总线的串行化访问,让多个业务线程安全地共享同一条 RS485 总线,避免时序冲突。
传感器驱动抽象:流量计、温压、PT100 的统一设计模式
详解管道监控系统三类传感器驱动的分层设计:设备层屏蔽硬件差异,服务层提供统一接口,业务层只关心测量值。
离线缓存与断点补传:LittleFS 上的可靠存储
管道监控系统的双层存储设计:CSV 落盘供离线分析,pending.jsonl 缓存未送达的上行帧,网络恢复后自动补传,保证数据不丢。
按键输入与 LCD 电源管理:PA15 复用与防残影策略
从硬件引脚复用到软件消抖,从 LCD 背光控制到周期性 IC 重初始化,详解管道监控系统的人机交互与显示维护设计。
看门狗与多任务健康监控:不止是喂狗
管道监控系统的看门狗设计:不止是简单的 IWDG 喂狗,而是对采集、显示、心跳、上行四个关键线程分别做健康检查,任一线程卡死都能自动复位恢复。
上行通信:JSON 编码、云端 ACK 与断点补传
详解管道监控系统的上行服务设计:手写 JSON 编码器、DR154 透传链路、云端确认机制,以及网络中断时的离线缓存与自动补传策略。
云端确认与历史去重:cloud_ack 下行链路 + UNIQUE(device_id, seq)
tele / alarm 先落库再回 cloud_ack,历史表用 (device_id, seq) 唯一键 + ON DUPLICATE KEY 兜底重放,配合 heart_count 心跳计数把上行链路的可靠性闭环。
管道监控系统多线程架构:RT-Thread 事件驱动设计
围绕 STM32H562 + RT-Thread 的多线程分离架构,详解采集、显示、存储、上行四大线程如何通过事件位与消息队列解耦协作。
Flutter Web 子路径部署与页面组态
管道监控系统的 Flutter Web 端通过 base-href 编排部署到 /scada/,与 API 和 WebSocket 共用同一服务域名,Nginx 子路径单独做 SPA 回退。
LCD 防闪烁与 LittleFS CSV 存储
UI 线程通过脏数据局部重绘消除闪烁;LittleFS 上的 measurements.csv 按时间批量刷盘并自动 Rotate,保证现场无网络也能离线溯源。
Modbus RTU 主站与 nanomodbus 封装
Modbus_Master / Modbus_Service / nanomodbus 三层划分,统一管理采集间隔、超时容错和异常节点过滤,支撑 PXW、超声波、PT100 三类传感器接入。
管道监控系统综述:STM32H562 + RT-Thread 边缘管道监控
围绕 STM32H562 与 RT-Thread 完整版搭建的 Modbus RTU 主站,统一接入压力、温度、流量传感器,本地 LCD 实时显示并落盘 CSV。