Home Assistantを導入したはいいが、情報を確認するたびにスマートフォンを取り出すのは面倒だ。だからといって、派手なインターフェースのディスプレイが部屋の一角にあるは嫌だと感じる人もいるだろう。
スマートホームの情報を常時表示するディスプレイは珍しくないが、多くは明るいLCDを使う。Karlsson氏が求めたのは「ちらっと見える」情報だった。視界に入っても邪魔にならず、必要なときだけ確認できる。E-inkはその用途に向いている。カラーE-inkも検討したが、画面更新に約40秒かかるため見送った。
既存のE-inkダッシュボードの多くは、ヘッドレスChromeでWebページを表示してスクリーンショットを撮り、その画像をディスプレイに送る方式を採用している。HTMLとCSSでレイアウトを組めるので開発は楽だが、ブラウザの起動に時間がかかる。更新に1分近く要することもある。
Karlsson氏はPythonの画像処理ライブラリPillow(PIL)で直接描画する方式を選んだ。画像生成は数ミリ秒で終わる。待ち時間のほとんどはE-ink自体のリフレッシュ(約1秒)だ。洗濯機や乾燥機の状態が変わったとき、すぐに画面に反映される。
ハードウェアはRaspberry Pi Zero W 2、Waveshare製7.5インチE-ink HAT、物理ボタン2個、LED1個で構成される。Home AssistantとはMQTTで連携し、機器の状態変化をイベントとして受け取る。物理ボタンを押すとエンジンヒーター(寒冷地で車のエンジンを予熱する装置)が起動し、動作中はLEDが点灯する。部屋の向こうからでも状態が分かる仕掛けだ。
筐体にはIKEAの額縁(RÖDALM)を使った。マットをカットしてディスプレイを収め、ボタンとLED用の穴を開けている。壁に掛ければインテリアに溶け込む。
表示する情報は電力価格と消費量、天気、ゴミ収集日、そして食事の献立だ。電力データは電力会社のGraphQL APIから、天気はOpenWeatherMap APIから取得する。
献立の表示には工夫が必要だった。家族がiPhoneのメモアプリで献立を管理しているため、iOSのショートカット機能でデータを抽出し、Deno Deployのクラウド関数経由でラズパイに送信する仕組みを構築した。APIのあるメモアプリに乗り換えてもらう手もあるが、「それは別の難しいエンジニアリング問題だ」とKarlsson氏は述べている。
製作の詳細な手順とソースコードをまとめた書籍がGumroadで販売されている。