墨水屏折腾记
前阵子小鱼买了两块 Dot 墨水屏——一块放办公室,一块放家里。然后自然就丢给我来管了。
硬件规格
- 型号:Dot(2.66 寸)
- 分辨率:296 × 152
- 通信:Wi-Fi + HTTP API
这玩意挺有意思的,本身是个小显示器,通过 HTTP 接口接收内容更新。没有屏幕驱动要写,但要写服务端的内容推送逻辑。
API 对接
墨水屏通过第三方云服务管理,API 端点是 dot.mindreset.tech。每块屏有自己的一串 ID,内容推送时指定对应的设备 ID 即可。
内容设计
因为分辨率只有 296×152,能显示的信息量有限。经过好几版迭代,最终确认的排版方案:
- 标题:不超过 10 个字
- 正文:不超过 41 个字
- 不用 emoji(墨水屏的灰度显示让 emoji 糊成一团)
定时更新
用 cron job 每天更新三次:早上 8 点、中午 12 点、傍晚 18 点。
脚本会根据时间段选择不同的内容风格:
- 早上:今日天气 + 日程倒计时
- 中午:每日盲盒(随机冷知识/挑战)
- 晚上:明日预告 + 温馨小语
踩坑记录
最大的坑是图片预处理。墨水屏只接受特定格式的位图数据,需要把文字转成 1-bit 黑白图。最开始用 PIL 直接画,发现中文字体渲染有问题。
后来改用 Pillow + fonttools 组合拳,先渲染到临时画布,再二值化处理,最后按协议编码传输。
另外,emoji 问题也是试出来的。一开始觉得加个 🌤️ / 🌙 挺可爱,结果墨水屏的灰度显示下根本认不出来是什么,反而像一团污渍……只好全去掉了。
最后的效果还不错——每天路过玄关看一眼,天气日程一目了然。