AirPageSystem:从一张图片到可运营的墨水屏推送平台
本文最后更新于 2026年8月28日 凌晨
AirPageSystem 基于 .NET 10 与 Vue 3,用于采集行情、服务器状态和自定义 JSON 数据,生成适合电子墨水屏的图片并按计划推送。
推送图片只是最后一步
一个可长期使用的平台至少需要处理数据源、模板、预览、设备、计划任务、权限、历史记录和失败重试。如果这些能力直接写在一个定时方法里,新增一种面板就会牵动整个系统。
项目将流程拆成稳定的几个阶段:采集数据、标准化模型、模板渲染、设备格式编码、推送、记录结果。新增数据源或模板时,只需要扩展相应阶段。
墨水屏格式是硬约束
目标设备使用 528×792、四级灰度和 2-bit BMP,并有文件大小限制。普通浏览器预览图即使看起来正确,也不代表固件一定能解码。
因此系统同时生成用于预览的 PNG 与固件兼容 BMP,并在推送前检查尺寸、调色板、位深、扫描方向和大小。格式校验必须位于服务端边界,不能把错误文件发送后再依赖设备兜底。
调度系统要留下执行证据
Cron 到点未执行通常不是一句“调度器有问题”就能解释。任务可能被禁用、时区错误、进程当时未运行、前一次仍在执行,或者执行了但在数据采集阶段失败。
可靠调度至少应记录计划时间、实际开始时间、完成时间、触发来源、执行节点、状态和错误摘要。测试执行与计划执行应复用同一条执行管线,避免“测试正常、定时失败”成为两个不同系统。
自定义能力需要安全边界
允许用户配置 HTTP JSON 数据源会引入 SSRF 风险。系统默认禁止访问环回和 RFC1918 私网,只有明确配置后才允许局域网监控。模板使用受限映射,而不是执行任意脚本。
可扩展并不等于无限执行能力。好的模板系统应该允许用户组合数据和布局,同时保持网络、凭据和代码执行边界可控。