
开发者 Kayden 推出 Tesserae:在浏览器拼装看板并推送至电子墨水屏
来源标题:Tesserae: E-ink dashboard companion. Compose dashboards and push to e-ink panels
Tesserae 是 Kayden 开发的自托管电子墨水屏看板工具,可在浏览器中以磁贴方式拼装看板,无头渲染后将画面通过 MQTT 或 HTTP 推送到一块或多块屏幕。项目以 AGPL-3.0-or-later 开源,服务器无需账号,仅默认关闭的更新检查与匿名统计会联网,另提供托管版 Tesserae Cloud。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Tesserae:电子墨水屏看板伴侣。在浏览器中编排看板,推送到电子墨水屏面板。
自托管的电子墨水屏看板伴侣。在浏览器中编排基于磁贴的看板,无头渲染画面帧,再通过 MQTT 或 HTTP 推送到一个或多个面板。
承接外包项目。我是 Kayden,Tesserae 的创建者和维护者,并有一群不断壮大的贡献者协助。我承接 AI 相关的外包工作:自定义 agent、把 AI 模型连接到你的工具和数据的 MCP server,以及为团队搭建 AI 辅助的开发工作流。我也承接全栈、嵌入式和 Home Assistant 项目——Tesserae 本身就是由这类工作构建而成的。
如果 Tesserae 对你有用,赞助可以帮助它保持独立并持续维护。
邮件洽谈外包 · 在 GitHub 上赞助 · 在 Ko-fi 上支持
以 AGPL-3.0-or-later 开源。自托管服务器无需账号,也永远不必与我们通信:唯一的外部联系是 api.tesserae.ink,用于检查更新、匿名安装计数和每日聚合心跳,该功能默认关闭、需主动选择开启(首次运行设置时会询问一次;可在 设置 → 系统 → 在线功能 中切换)。
Tesserae Cloud 是一个独立托管版 Tesserae,面向不想自己运行服务器的人:登录、创建看板、连接你的显示屏。这个自托管服务器始终是完整产品,并且始终免费,受支持的面板也不绑定云端:随时可以将其指向你自己的服务器,不过在云端创建的看板专属于云端,需要在这里重新创建。
📖 完整文档:安装指南、硬件快速上手、控件库、社区目录、架构深入解析、如何构建控件、如何添加硬件支持。
mkdir tesserae && cd tesserae curl -fsSLO https://raw.githubusercontent.com/dmellok/tesserae/main/docker-compose.yml docker compose up -d
打开 http://localhost:8765。首次请求会引导你完成密码设置和入门向导。
其他安装方式:Home Assistant App、Proxmox VE 辅助脚本、LXC / MicroCloud、macOS / Linux / Pi shell 安装器、Windows PowerShell、手动 venv。
服务器已在运行?选一个硬件快速上手,把面板挂到墙上。
看板就是普通 HTML。编辑器预览和生产渲染加载的是同一个 URL:无头 Chromium(Playwright)按面板分辨率对合成结果截图,因此“编辑器里看着没问题,到了面板上就崩了”这种情况在构造上就不可能发生。
随后画面帧会经过按设备配置的渲染器:针对面板实测色板做 Floyd-Steinberg 抖动(Spectra 6 和 ACeP 面板实际上并不产生 sRGB 原色;校准测量值来自 epdoptimize),然后打包成面板所需的确切字节格式:打包的 4 位 Spectra 6、1 位单色,或 4 位灰度。
设备被刻意设计为瘦客户端,不在设备端解码图像。常在线客户端(驱动 Inky 的 Pi)会在页面发生变化的那一刻通过 MQTT 接收推送的画面帧。电池供电客户端(ESP32)会唤醒,通过 REST 用 If-None-Match 获取画面帧(304 会同时跳过下载和缓慢的电子墨水刷新),POST 电池 + RSSI 遥测数据,然后按服务器驱动的间隔进入深度睡眠。墙上时钟时间来自 HTTP Date 头,因此设备端不需要 SNTP。
browser editor Tesserae server panels ┌──────────┐ HTTP ┌──────────────────────┐ MQTT ┌─────────────┐ │ composer │────────▶│ headless render │───────▶│ Pi + Inky │ │ /compose │ │ dither (measured │ ├─────────────┤ └──────────┘ │ palettes) │ REST │ ESP32, │ │ pack panel-native │◀──────▶│ Kindle, │ │ schedule / rotate │ │ TRMNL │ └──────────────────────┘ └─────────────┘
每一层都是“丢一个文件夹就能扩展”的插件:控件、主题、渲染器、传输方式和设备类型。这些接缝都是真实目录:plugins/ · renderers/ · transports/ · devices/。
用 AI 构建看板(MCP)。Tesserae 提供 MCP API,agent 可以借此布置自由形式的看板、渲染预览以检查工作成果,并将其推送到面板。该功能默认开启;在你的 agent 所在机器上运行 tesserae-mcp 桥接程序(远程 agent 需要从 设置 → 系统 → MCP 获取 token)。详见文档。
服务器端渲染,固件保持简单。服务器会把每个画面帧预渲染成面板控制器所需的确切字节;设备固件直接把这些字节流式传输到面板。添加新面板只需一个板级头文件加一个驱动。网络、电源和配网栈永远不用改。
控件网络出口有白名单。第三方控件在 plugin.json 的 requires: 块中声明所需的网络主机,主机在 socket 层强制执行白名单。未声明的连接会抛出 CapabilityDenied,而不是偷偷外联。隔离就到这个程度:控件其余部分在进程内运行,信任模型是对社区目录的 PR 审查,而非沙箱。威胁模型有如实记录,包括它抓不到什么。
一台服务器,一群面板。Tesserae 将渲染、传输和硬件解耦,因此单个实例就能驱动家里所有面板,每个面板各有自己的看板、计划和轮播。
社区控件可从经过审计的目录安装。固定版本的发布压缩包,经 sha256 校验、schema 验证和 PR 审查:tesserae-widgets。
Tesserae 通过“丢文件夹”式设备插件渲染到若干面板系列之一。下表中,✅ 表示该面板已在真实硬件上确认(在我的测试台上或经社区报告);TBD 表示客户端和硬件配置已发布,但尚无人在实体面板上确认过画面帧。各渲染器的测试台矩阵见 屏幕与兼容性。
下方部分链接是联盟营销链接。Seeed 产品链接以及 Pimoroni Inky Frame 和 Inky Impression 链接带有 Tesserae 联盟标签:通过这些链接购买会支付一小笔佣金并回馈项目,Seeed 链接还能让你在结账时获得折扣。这里没有任何产品是因为这一点而被列出,面板的 ✅ / TBD 状态完全如上所述。不带标签的链接是普通产品链接。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。