YAT
開源 Open source · 無伺服器 Serverless · 香港優先 Hong Kong first 早期開發 Early development · v0.3

你的一天,靜靜顯示。 Your day, quietly displayed.

把一部約 US$60 的電子紙裝置,變成一塊安靜的資訊顯示屏 —— 天文台天氣同警告、巴士同港鐵到站、頭條新聞。中英對照,一眼看完,一枚電池用幾個星期。

A ~US$60 off-the-shelf e-ink device becomes a calm information display: Observatory weather and warnings, bus and MTR arrivals, headlines. Bilingual, glanceable, weeks on one battery.

裝置 Device
reTerminal E1002
晶片 Chip
ESP32-S3
面板 Panel
800 × 480 六色電子紙
續航 Battery
數星期 weeks
伺服器 Servers
零 none
帳戶 Accounts
零 none
授權 Licence
GPL-3.0
YAT 顯示現時天氣的畫面:大字「28°」、沙田、濕度 90%,底部標示資料來源為 data.weather.gov.hk。A YAT screen showing current weather — 28 degrees in Sha Tin, 90% humidity — sourced from data.weather.gov.hk.
hko-now — 現時天氣 · 由香港天文台開放數據直接繪製,800 × 480,六色電子紙。 Rendered by the engine itself, not a mockup.
01

這是什麼What it is

沒有伺服器No server, anywhere

一版就是一個 JSON 檔案 —— 我們叫它 pack。裝置經你的 WiFi 直接向公開 API 取數,再由韌體內的引擎繪製。沒有帳戶、沒有雲端、沒有訂閱、沒有遙測;這個專案除了靜態檔案之外,什麼都不託管。

A page is one declarative JSON file — a pack — executed by an engine inside the firmware. The device talks to public APIs directly. No account, no cloud, no telemetry.

為香港而設Hong Kong first

天文台的天氣同八號波、環保署的空氣質素、KMB / 城巴 / 港鐵的到站時間、潮汐、匯率 —— 全部是本地真實的開放數據,繁體中文同英文一齊出。香港優先,但唔止於香港。

Observatory weather and typhoon warnings, AQHI, KMB / Citybus / MTR arrivals, tides, FX — real local open data, in 繁體中文 and English. Hong Kong-first, not Hong Kong-only.

開放的Open

GPL-3.0 授權,由引擎、韌體到頁面規格全部公開。你可以自己寫一個 pack,或者將整個 repo 交俾 AI 助手,用一句說話講出你想睇乜。

GPL-3.0-licensed, end to end. Write a pack yourself — or point a coding agent at the repo and describe the page you want.

02

運作方式How it works

裝置一日之內大部分時間都在深度睡眠。每次醒來,它只做四件事,然後再睡。

01 醒來Wake

計時器、按鍵或警告接管觸發。時鐘穿越深度睡眠繼續行走。

02 取數Fetch

直接以 HTTPS 向公開 API 取數,用內建 CA 驗證,不經任何中介。

03 繪製Render

引擎解析 pack、抽取數值、排版 widget,輸出 800 × 480 的畫面。

04 睡眠Sleep

數據無變就跳過刷新 —— 不浪費一次電子紙重繪,也不浪費電。

Wake on a timer, a button or a warning takeover → fetch over verified HTTPS → run the pack through the engine → skip the refresh entirely when the data hash is unchanged, then deep-sleep.

一個引擎,三個目標One engine, three targets

同一份 C++ 核心,編譯成裝置韌體、桌面預覽 CLI、同瀏覽器 WASM。三者渲染出來的像素完全一致 —— 所以你在電腦上看到的,就是屏幕上會出現的。

The same portable core builds for the device, a native CLI preview, and WebAssembly — verified pixel-identical, byte for byte.

用一句說話造一版Packs are written by agents

Pack 的規格寫得夠精確,本身就是給機器讀的。這個 repo 會自我導航:把任何編程助手指向 repo 根目錄,講你想要的頁面就得。

$ cd yat && claude
> "整一版顯示西貢 69 號小巴到站時間嘅 pack"
03

項目現況Where the project actually is

早期開發階段,一部裝置,實測數字照直講。Early development, one device, honest numbers.

由買返嚟到見到自己揀嘅畫面,成條路行得通,真人由頭到尾行過一次 The whole path — box to your own chosen pages — works, walked end to end by a real person 可用 WORKING
網頁燒錄器:Chrome / Edge 經 USB-C 寫入完整映像,自動入下載模式 The web flasher — full image over USB-C from Chrome or Edge, automatic bootloader entry 可用 WORKING
用電話設定 WiFi:撳住綠色掣到「嘀」一聲 → 個芒出 QR → 加入 YAT-xxxx → 彈出頁面揀網絡 Wi-Fi from a phone: hold the green button, scan the QR on the panel, join YAT-xxxx, pick your network in the page that pops up 可用 WORKING
裝置自己開設定頁(http://yat-xxxx.local)—— 頁面庫直接喺入面揀、填設定、一撳裝落機,唔使插線 The device serves its own settings page at http://yat-xxxx.local — browse this site's pack library, fill the form, install, no cable 可用 WORKING
Pack 規格 0.3-draft、JSON Schema 同 18 個對住真實 API 的示範 pack(頁面庫入面 16 版可以直接裝) Pack Spec 0.3-draft, strict JSON Schema, 18 example packs — 16 of them installable straight from the gallery 可用 WORKING
可攜引擎 —— 韌體 / 原生 CLI / WASM 三個目標,像素完全一致 Portable engine — firmware, native CLI and WASM, pixel-identical 可用 WORKING
韌體主迴圈實機驗證:喚醒 → 取數 → 繪製 → 六色刷新 → 深度睡眠,含 hash 跳過同按鍵喚醒 Firmware loop verified on hardware, with hash-skip and button wake 可用 WORKING
撳一下綠色掣講嘢轉版(廣東話)—— 要喺設定頁自己入一個語音辨識 key 先用得 Tap the green button and say a page name in Cantonese — needs your own speech key, entered in the settings page 要自備 key BRING A KEY
發佈流水線:完整燒錄映像、UF2、sha256 manifest —— 但仲未打過第一個 tag Release pipeline builds factory image, UF2 and manifest — but no release is tagged yet 已建成 BUILT
第一個公開 release —— 有咗之後,「燒錄」頁就唔使自己 build 韌體 The first public release — until it exists, the Flash page needs a firmware image you built yourself 下一步 NEXT
OTA 更新同回滾(分割區已經預留,未接線) OTA updates and rollback — the partition layout is reserved, the plumbing is not written v0.5
電池實測數字(深睡電流、每次刷新 mAh)仲未量度並寫入 repo Measured battery numbers — sleep current, mAh per cycle — not yet recorded v0.1 未完 OPEN
老實講 In plain terms 成個流程係真嘅,行得通,而且已經有人由開箱行到見到自己揀嘅畫面 —— 燒錄、用電話入 WiFi、喺裝置自己開出嚟嘅設定頁揀版,全部做得到。差嘅係第一個公開 release:今日「燒錄」頁要你自己由 repo build 一個韌體檔出嚟先燒得,打咗第一個 tag 之後就會自動攞。冇硬件都試到:用 tools/preview 喺電腦渲染任何一版。 The flow is real and someone has walked all of it: flash, Wi-Fi from a phone, then choose pages on the settings page the device serves itself. What's missing is the first public release — today the Flash page needs a firmware image you built from the repo yourself; once a tag is cut it will fetch one. No hardware? Render any page on your computer with tools/preview.
04

你需要什麼What you need

一部裝置A device

SeeedStudio reTerminal E1002(六色電子紙)或 E1001(黑白,刷新較快)。約 US$60,現成買到,唔使改裝。

一條 USB-C 數據線A USB-C data cable

要真係有數據線芯嗰種。淨係充電嘅線係最常見嘅安裝失敗原因。

2.4 GHz WiFi2.4 GHz WiFi

ESP32-S3 無法連接只有 5 GHz 的網絡。這是可預期的頭號支援問題。

桌面版 Chrome 或 Edge —— 淨係燒錄嗰次Desktop Chrome or Edge — for the flash only

燒錄經 WebSerial 進行,一部裝置一世人做一次。之後揀版同改設定全部用電話,喺裝置自己嘅設定頁度做。其他瀏覽器可以用 UF2 拖放方式安裝。

沒有帳戶要開。整個流程由頭到尾,都沒有任何嘢需要註冊。No accounts are created at any point — there is nothing to sign up for.