_・)Keep Smiling

モソモソと日々の雑感を書き溜めるというか書き殴るというか書き捨てるというか

_・)魔法の鏡。

いよいよ第二種電気工事士の試験が明日に迫りました。進捗ダメです。

さて、そんな訳で勢いあまって3つもエントリーしてしまったRaspberry Pi Advent Calendar 2022もいよいよ24日目です。イブですよ。イブ。

予定?ドラクエだよ!

adventar.org

ちなみに、私の前回の記事と今回の記事の間に挟まれた2日間は、gyaboさんによるガチめのベアメタル関連記事が挙げられていました。

qiita.com

qiita.com

今回の記事は例によってゆるゆるふわふわだよ!ごめんね!反省はしない。

RasPiで魔法の鏡をつくろう

結構有名なアプリなので知っている人も多いと思うんですが、Raspberry Piを使って様々な情報を表示できる「魔法の鏡」・・・いわゆるスマートミラー的なモノを作るためのアプリとして「MagicMirror²」というものがあります。

magicmirror.builders

ひっじょーにざっくり言ってしまえば、天気や予定、写真など、色々な情報を自由に画面上にレイアウトできちゃうソフトウェアです。

vimeo.com

コレを使って鏡に表示したい情報を作り込んで、それをマジックミラー(ミラーガラス、ハーフミラー)の裏側から透過表示させれば、あら不思議、スマートな魔法の鏡のできあがりという訳です。 このへんは「Raspberry Pi MagicMirror」とかでググるといっぱい情報がでてくるので参考にしてみてください。

www.google.com

おっきな時計と予定表がほしかったんじゃ!

前回の記事では、Raspberry PiとInkyを使った日めくりカレンダーを紹介しましたが、そうするとカレンダーだけでは無く、現在時刻やスケジュールの表示だってしたくなるってのが人情ってモノです。

実際問題、今何時なのかを毎回スマホやPCの画面で確認するのはストレスがマッハで、なんとかしたいなぁと思っていました。まぁ、なんとかした結果、魔法の鏡じゃ無くて「Micro Dot pHAT」を使った時計を先にRaspberry Pi ZERO Wで作っちゃったんですが・・・。

Micro Dot pHATでつくった時計

これはこれでまた便利で、今でも目の前にドーンと置いているんですが、この大きさ故に予定の表示はさすがに現実的ではない。

そこで白羽の矢が立ったのが、今回の「MagicMirror²」というわけです。

私の魔法の鏡はこう!

さてこのアプリ、画面レイアウトの自由度がかなり高い反面、自分の望むままの表示を行うにはCSSガリガリ書かかなきゃいけなかったりと結構苦労したりします。まぁ、大変とは言え難易度はそんなに高くはないので、試行錯誤していけば徐々に形になっていきます。今日現在の私の鏡はこんな感じ。

背景の写真は1分間隔くらいで更新されます。

また「MagicMirror²」のウリの1つに、様々なモジュールを組み合わせて機能を追加できる点があるのですが、ここでは試行錯誤の結果、私の鏡が採用しているモジュールについて紹介したいと思います。

まずは標準モジュール

MagicMirror²のモジュールは大きく分けて、MagicMirror²に同梱されている標準モジュールと、様々な人が開発している、サードパーティーモジュールに分けられます。

サードパーティーモジュールを利用する場合は、MagicMirror²本体に追加して各モジュールのインストールをしなくてはなりませんが、標準モジュールであればコンフィグ(config.js)で設定を書くだけで利用ができちゃいます。

デフォルトのコンフィグでもいくつかの標準モジュールが有効になっているのですが、私は少しカスタマイズしつつ、以下の標準モジュールを利用しています。

  • Alert
    • 他のモジュールからのアラートがあった場合に表示を行うモジュールです。
  • Update Notification
    • 更新がある場合に表示を行うモジュールです。
  • Clock
    • 日付や時刻の表示を行うモジュールです。
    • 私は見やすさの為に、画面上部でかなり大きく表示するようにしています。
  • Weather
    • 天気予報を表示するモジュールです。
    • 好きなロケーションを指定することができます。
    • 私は本日の天気の詳細と、5日分の天気予報を表示しています。
  • Calendar
    • 予定表示を行うモジュールです。
    • 外部iCal形式のカレンダーを読み込んでくれます。
      • 私は、祝日、Todoist(ToDo)、Office365の予定表(仕事用)などを読み込んでいます。
    • 読み込んだ予定は後述する「MMM-CalendarExt3」のモジュールでカレンダー表示しています。
  • News Feed
    • 外部ニュースサイトが配信しているニュース記事を表示するモジュールです。
    • 私はNHKとYahhoニュースから、最新記事のタイトルを表示させています。

それぞれのモジュールの詳しいカスタマイズ方法は、各ドキュメントページをご参照ください。かなりカスタマイズできるってことがお分かり頂けると思います。

サードパーティーモジュールも豊富

標準モジュールだけでも十分に便利なんですが、サードパーティーモジュールを利用するとさらに便利に魔法の鏡を操ることができるようになります。

とは言え、こちらのリストを見て頂ければお分かりになるかと思いますが、数がめちゃめちゃ多いので、正直全部を試すことは現実的ではありません・・・。開発が滞っているモノもあったりするので、それぞれのRepositoryの更新具合を見ながら、使うモノを決めていくと良いでしょう。

最終的に、今私が使っているサードパーティーモジュールは、以下のものです。

  • MMM-AutoDimmer
    • 指定した時間に画面を暗くしてくれるモジュールです。
    • 基本的にMagicMirror²は画面表示しっぱなしですが、夜間などで画面を暗くしたい時に使います。
    • 指定した時間までに徐々に暗くするなどのカスタマイズができます。また、暗さをどの程度にするかも選べます。
      • 逆に、暗くした画面を徐々に明るくしていく事なども可能です。
  • MMM-BackgroundSlideshow
    • 指定したディレクトリの中にある画像を背景として表示してくれるモジュールです。
    • いわゆるフォトフレーム的な使い方が可能です。
    • Googleフォトから表示してくれるようなモジュールもあるのですが、私はこっちのほうが好みでした。
    • 画像は前回記事と同様に、クラウドストレージをWevDavでマウントしてRsyncで同期させてます。
  • MMM-CalendarExt3
    • 標準のCalendarモジュールで読み込んだ予定を柔軟に表示してくれるモジュールです。
    • 私は、先週・今週・来週の三週間分の予定を表示するのに使っています。
    • 表示する文字の大きさなど、細かくカスタマイズすることが可能です。
  • MMM-MagicMover
    • 画面の焼き付きを防止してくれるモジュールです。
    • ほんの少しずつ表示をずらしてくれるらしいです。
    • 本当に動いているかは分かりません・・・気休めです。

他にも面白そうなモジュールは沢山あるのですが、画面いっぱいに表示してしまうと逆に使いづらくなってしまうので、ほどほどに情報を絞るのがお勧めです。えぇ、いっぱい詰め込んで失敗しましたとも・・・。

というわけで

合計3つものRaspberry Piで動く時計やカレンダーに囲まれて日々暮らしております。なんだかんだで予定はPCで確認しちゃうことも少なくないので、もうこれはほぼ自己満足の世界ですね。MagicMirror²の為に、Rasdpberry Pi 4とFHDなモバイルディスプレイを使ってしまっているのも「それならEcho Showを使う方が安かったのでは・・・」となるのですが、いいのです。それが大人です。

それではみなさん、よいクリスマスを!

あ、、、勉強しなくては・・・・。