#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 入口 —— 取数据 → 渲染 → 推送到设备。 用法: python3 main.py # 渲染并推送(设备 host 取自 .env 的 EPD_HOST) python3 main.py --render-only # 只渲染生成图片,不推送(output/dashboard.png) python3 main.py --target e1002 # reTerminal E1002:渲染 800x480 六色图 + 固定尺寸 index.html 到 output/e1002/, # 不推送(由 SenseCraft HMI 的 HTML 控件从公网地址周期性抓取) 配置统一从同目录 .env 读取(见 .env.example),真实环境变量优先。 """ import argparse import config from data import get_dashboard_data from renderer import DashboardRenderer def main(): parser = argparse.ArgumentParser(description="墨水屏仪表盘:渲染并推送") parser.add_argument("--render-only", action="store_true", help="只渲染,不推送") parser.add_argument("--target", choices=("miao", "e1002"), default="miao", help="miao=喵喵固件 400x300 三色屏(默认,局域网推送);e1002=reTerminal E1002 800x480 六色(产出 HTML 页)") args = parser.parse_args() data = get_dashboard_data() if args.target == "e1002": from renderer_e1002 import E1002Renderer, write_page png = E1002Renderer().render_to_file(data, config.E1002_PNG_PATH) html = write_page(config.E1002_HTML_PATH, png) print(f"[渲染] 已生成 {png}") print(f"[页面] 已生成 {html}(部署到公网 HTTPS 后填入 SenseCraft HMI 的 HTML 控件)") return path = DashboardRenderer().render_to_file(data, config.OUTPUT_PATH) print(f"[渲染] 已生成 {path}") if args.render_only: return from pusher import push_image host, resp = push_image(path) print(f"[推送] 设备 {host} 成功:{resp}") if __name__ == "__main__": main()