「今ここで、これ聞いてるよ」ESP32とSpotify連携のDIYディスプレイ

FabScene(ファブシーン)

パートナーが今どこにいて、何を聴いているのか。そんな情報を電子ペーパーにさりげなく映し出すデバイス「HomeLink」を、DomDom3333氏がバレンタインデーのプレゼントとして製作し、GitHubでソースコードを公開した。

ハードウェアにはLilyGO T5 4.7インチ電子ペーパーディスプレイ(960×540ピクセル、1bpp)を使用する。ESP32を内蔵しており、Wi-Fi経由でサーバーから画像データを取得して表示する。電子ペーパーなので電力消費が少なく、棚やデスクに置いて常時表示しておける。

バックエンドはASP.NET Core Web APIで構築した。2つの外部サービスからデータを取得する。1つはSpotify APIで、相手が今聴いている曲名、アーティスト名、アルバムアートを取得する。もう1つはOwnTracksで、スマートフォンのGPS座標をHTTP経由で自前のサーバーに送信するオープンソースの位置情報共有アプリだ。外部クラウドサービスを経由しないため、位置情報は自分のインフラ内で完結する。

サーバー側では、これらのデータをImageSharpライブラリで1枚の画像に合成する。曲情報とアルバムアート、現在地の地名を960×540ピクセルのモノクロ画像としてレンダリングし、Floyd-Steinbergディザリングで階調を表現する。ESP32側はこの画像をHTTP GETで定期的に取得して電子ペーパーに描画する。ETagによる変更検知に対応しており、画面内容が変わっていなければデータ転送をスキップする。

再描画の頻度はSpotifyの再生状態に応じて変わる。音楽再生中は5~120秒間隔、一時停止中は15~600秒間隔で更新する。位置情報にはNominatim(OpenStreetMap系の逆ジオコーディングサービス)による住所変換に加え、あらかじめ登録した場所名(自宅や職場など)との照合機能があり、表示には「自宅でくつろいでいる」のようなフレンドリーな文言を生成する。サーバーはDockerで動作し、SQLiteで状態を永続化する。ソースコードはGitHubで公開されている。

関連情報

HomeLink(GitHub)

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!
目次