スポンサーリンク

Magic Mirror 2で天文デジタル時計を作る

ラズピコで作った天文デジタル時計に少し飽きてきたので、新しいバージョンを組んでみることにした。ラズピコ版は、12星座の絵が変わるようにはしているんだけれど、1年に12回しか変化がない。月齢は毎日変わるのだけれど、変化が小さい。飽きるわけだ。

ラズピコで作り直すとすることもできたんだが、メモリやディスプレイ解像度の制約があってリッチな表現ができない。いろいろと探してみると、MagicMirror2という、いわゆるダッシュボードアプリを見つけた。元はハーフミラーに情報を透過させてダッシュボード的に使うためのアプリのよう。

手元には、400 ×1280の7.9インチ静電容量式タッチディスプレイがある。このディスプレイは、PC-8201のようなハンドヘルドを作ってターミナルとして使ってみようと取り置きしていたもの。このディスプレイの背面には、ラズパイを装着できる。これならデジタル時計(=天文ダッシュボード)にぴったりだ。

結果、外観的にはこんなのができた。天気と月齢が確認できるだけじゃなく、ISSのライブ映像が楽しめる。

以下、作業メモ。長文。

MagicMirrorのインストール

SDカードにインストールしたのは、Raspbian GNU/Linux 11 (bullseye)。Bookwormは、依存関係とかありそうで、ちょっと心配。MagicMirrorのインストールに関しては、こちらのブログを多いに参考にさせていただいた。

RaspberryPi+MagicMirror2で超簡単にGoogleフォトフレームをつくる - Qiita
(MMM-GooglePhotosのバージョンが2.03にアップデートされ、説明を一部修正致しました。なお、今までバージョン2.02以前を使用し、2.03にアップデートした…
ラズパイでYouTube動画再生機能付き時計を作る方法【MagicMirror2使用】 | sozorablog
Raspberry Piを使った「YouTube動画を再生できる時計」の作り方をご紹介します。MagicMirror2というソフトを使用すれば、高度なコーディングの知識がなくても、比較的簡単に自作可能です。

作業はMacからSSHで。もちろん本番のディスプレイで作業してもOK。手動でも自動でもインストールができるけれど、今回は自動でのインストールを選択。それなりに時間がかかるが、次の一行でnode.jsのセットアップも自動でやってくれるみたいなので楽ちん。

bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/raspberry.sh)"

スクリーンセーバーをオフにするかとか、自動起動するかと聞かれるのでいずれもYESを選択しておいた。インストール自体は問題なく終わった。
天文デジタル時計にほしい機能は、もちろん時間。そして月齢の表示。ラズピコ版では、湿度・温度計を実装していたけれど、たまに値が読み取れなくてフリーズすることがあったので、今回は見送り。代わりに天気は表示させたい。それから、調べてみると、YouTubeも流せるらしい。これは、見飽きない時計になりそうだぞ。
表示設定は、/MagicMirror/config にあるconfig.jsを書き換える。config.js.sampleをconfig.jsにリネームすると改変が楽MagicMirrorは、このファイルの読み書きを監視しているらしく、書き換えるたびにアプリが再起動して再描画するようになっている。

サンプルに入っているモジュールを非表示にしたいときは、config.jsのなかの非表示にしたいモジュールのたとえばmodule: “newsfeed”, の下あたりに disabled: true, を追加すればOK。

ほかのコンフィグはこちら

Module Configuration | MagicMirror² Documentation
The open source modular smart mirror platform.

天気モジュール

細かい設定は、上のブログに譲るとして、まずは天気の表示。天気のモジュールはデフォルトで設定されているので、インストールの必要はない。ただ、Open Weather APIが必要。サインアップしてとってくる(無料)。config.jsにあるewatherのモジュールにlocationIDを書き込むんだが、そのIDをインデックスファイルから探すのが一苦労だった。ファイルサイズがバカでかいらしく、CotEditorでは開けなかった。なんとかVSCodeで開けた。東京のLocationIDは1850147だ。あとは取得したAPIキーを入力しておく。

月齢モジュール

月齢表示には、MMM-MoonPhaseを使った。MMM-Moonというモジュールもあるんだが、私の環境ではうまくImageが表示できなかった。モジュールのインストールが必要。/MagicMirror/Modulesに移動して、Gitをクローンする。
git clone https://github.com/EnderFlop/MMM-Moon

YouTubeモジュール

MMM-EmbedYoutubeを使う。ここに何を表示させるかが問題なんだけれど、天文デジタル時計ってことで、国際宇宙ステーションからの眺めをライブ配信しているNASAのチャンネルを選んでみた。モジュールのインストール方法は上と同じ。/modules/に移動して、cloneする。んで、npm install。チャンネルのIDはP9C25Un7xaMで、config.jsに書き込むためのvideo_idにもなる。

当然のことだけれど、夜になると真っ暗。特に海の上は真っ暗。陸上だと、たまに街の光が横切って味わい深い。気になるのは、ISSはいまどこを飛んでいるのかってこと。そんなときは、ISSトラッカーで確認する。

ISS Tracker

オーストラリアの赤い砂漠、北アメリカの小さな町の明かりなどが確認できた。加えてISSとセンターの会話が聞けたりするのも雰囲気があってよい。古川聡宇宙飛行士の生声も聞けた。

拡張モジュールは、こちらに一覧があるので、好きなものを引っ張ってきたい。

3rd Party Modules
MagicMirror² is an open source modular smart mirror platform. With a growing list of installable modules, the MagicMirro...

ダッシュボードが完成

ここまで来たら、ダッシュボードらしくなってきた。できたのがこちら。本日の日付、東京の天気、ISSのライブ配信、月齢がひと目で確認できる。下のISS画像は、モザンビークとマダガスカルの間くらいのところ。雲が邪魔。

こちらはオーストラリアの赤い砂漠

ラズピコ版と比較してみる。結構、クールなできあがり。ラズピコ版のほうが8bitっぽくて、これはこれでいいんだけどね。

あと宿題がある。モーションセンサーを使って人がいるときだけディスプレイをオンにするMMM-PIR-Sensor-Liteというモジュールがある。入れてみたんだが、私の環境ではどうもうまく動かない。私のディスプレイはMIPI DSIなので、それが原因かもしれない。HDMI接続のディスプレイならうまくいくかもだ。動きました)。それから台座もプリントするかな(作りました)。

MagicMirror2の停止と再起動

起動

pm2 start all

停止

pm2 stop all

再起動

pm2 restart all

まとめ

センサーのほかに問題があるとしたら価格(汗)ディスプレイが約1万6000円。ラズパイ本体が約1万7000円(8GB)。3万3000の時計である。時計に8GBはオーバースペックだろ。

はらへった。

この記事へのコメント

  1. 沢山のノウハウがギュッと詰まったトピック・・
    有難うございます。
    いつか暇を見て真似をしてみようと思います。
    ・・・
    其にしてもISSのライブ映像・・美しい。
    いつも使ってるタブレットで全画面表示にして流してると、、
    何だか、とりあえずコレデもイイカナって思えてしまう。
    恐ろしい・・

    • i*matさん、お褒めいただいて、ありがとうございます。

      さっきは夜のオーストラリアで落雷を見ました。宇宙から地球を見てもきれいですね。タブレット全画面にしてデスクに立てかけておくでも十分な気がしますyo!

      • こんにちは。
        長文で失礼します。
        RasPiは全くの初心者です。

        3~4日前からこちらの解説を参考にMagicMirrorを弄ってます。
        この記事は懇切丁寧で、理解しやすいです。

        買ったまま仕舞ってあったRasPi4を開封して使い始めました。
        半導体品薄とかで入手難だった頃、立派なケースやドライバーなどがセットになって化粧箱に入った高級品?しか在庫が無く、割高だった覚えがあります。
        私は、買ったら満足して「いつか暇が出来たらやる」と、そのまま寝かせるクセがあります。
        RasPiもそうして2~3年寝かしていましたが、MagicMirrorの紹介を読んで、やってみようと思いました。

        OSは推奨のBullseyeではなくBookwormを選択しました。というのは、予定したwifiのAPに接続できなかったからです。(でもOSを変えてもやはり繋がらず、急遽別のAPに繋ぎました。)

        質問が一つあります。

        原因が何か分かりませんが、RasPiの動作が不安定で、SSHターミナルでリモートで操作しているんですが、時々無反応になることがあります。アプリインストール作業中にストールすると怖いです。(まあ、最初のメディア作成からやり直せばいい話と思いますが・・)
        原因の切り分けが必要と思いますが、どの辺りから調べればよいとお考えですか?
        極めて雑駁な質問でお恥ずかしいですが、迷える子羊に御教授願えたら幸甚です。

        • ワインもラズパイも寝かせるとふくよかな風味になるそうです。2〜3年寝かせたのなら、きっと美味しいパイになっていますよ。

          しかし、i*matさん、私は初心者ですよ。私の言うことを信じていいのかしらん(不安しかない)

          不安定になるということは、接続には成功しているけれど、反応しなくなる。あるいは応答するまでの時間がかかるという症状でしょうか。

          ちょうど昨日、PiとMacで繋いだSSHの反応が鈍くなっていました。接続に成功はしたのですが、そのうちコマンドを送っても反応しなくなったという症状でした。何をしていいか分からなかったので、Macを再起動したら、直りました(謎)

          それから電源でしょうか、Pi4なので、安定運用には5V3Aが必要なのではないかと。私はたまに無精をして、ACからではなくてUSBから電源をとることがあるのですが、5V3Aが確保できてないことがあるみたいでした(記憶薄)。

          これでうまく行けばいいのですが…..

          • さっそくアドバイス有難うございます!
            小さいけどPCですね!
            1に電源・・
            2にネットワーク、
            3、4が無くて
            5に冷却(?)ですかね。
            まずはカイ(shell)から始めよ…地道に調べてみます!

            にゃあさんの天文時計…ドンドンカッコよくなってきてますね!タノシミ々

            • 私の天文時計(Pi4)は、ファンなしの状態だと50度超えのアチチでしたが、ファンを付けたら40度前後で稼働するようになりました。ネジ1本の簡易取り付けですが、裏側は見えないのでいいんです(笑)

              時計プロジェクト、うまくいくといいですね!

              • お陰様で動きました!!
                セットに入ってたヒートシンクと5V冷却ファンを取り付けてギリ49度です。
                電波的には金属製ケースも災いしてると思い、有線LANに変更しました。
                有難うございました。。

                • 金属ケースの問題でしたか。有線LANなら確実ですね!
                  いやあ、本当に地球は美しいです^^

  2. めちゃめちゃいいね。^^b What the hell a cool this is!

    • 自分でもなかなか気に入りましたyo!

      • ↑の英文、日本語の”こりゃ~すげぇ!”あたりを狙ってるんだけど、ネイティブの人に通じるんだろうか?
        驚いてるであろうニュアンスは伝わると思うけど、いい意味と悪い意味どっちに捉えられるんだろうという疑問がある。

        • ネイティブじゃないのですが、雰囲気は通じると思いますyo。coolが入っているので肯定的に伝わると思います。

          マジレスすると、文法的には
          “What the hell is this cool thing?”とかですかね。
          イギリス英語なら
          “What a bloody cool thing this is!”

          とか?

          • ありがとう。

            同じ表現で米語は疑問文よりで、英語は感嘆文よりなんだね。
            日本語でも聞いているけど答えを求めてない表現があるから、英語と米語の違いではなく状況や話者の違いなんだろうな。

            何て事してくれてるんだ?^^みたいな

            • なんてことしてくれるんだ? は

              米:What (the hell) are you doing?
              英:What (the bloody hell) are you doing?

              ですかね。文法は同じですが、イギリス人はBloodyが大好き!

              • <<余談>> ※ レス不要
                10年以上前、めちゃイケで変-1グランプリなる企画があってね。
                変-1=変なおじさんの継承者を決めるグランプリ。
                そこで劇団ひとりが英語版変なおじさんの寸劇を披露して、変なおじさん(=劇団ひとり)に対して『なんだ君は?』というセリフが『Who the hell are you?』だった。
                “the hell”ってなんだ?と思い調べて『へぇ~、こんな言い回しがあるんだ。』と思ったんだ。

                da hun dah!^^

  3. はらへった(笑)

    この時計はどこで売っていますか?
    と思えるくらい素晴らしいできですね。
    どこかが真似して製品化しそう

    さらにその日の天文イベントを表示してくれると素敵
    (そんなサイト自体アルノか?)

    • あれから、スタンドを作ってみましたよ。売れるかしら?
      センサーはいまのところ飾りですがw
      https://tentaip.space/wp-content/uploads/2024/03/stand.jpg
      天文イベントを表示してくれるサイトって、英語ならどこかにありそうですね。
      探してみます〜。

  4. 横長のディスプレイに情報が並んでいるのがかっこいいですね!
    自分も余っていた7″LCDと使わなくなったRPi3+で作ってみました。が、なんか普通(^^;
    表示されている情報はおんなじなんですけど。

    確かにこれに新品のラズパイを使うのはなんかもったいないですね。しかも8GB(笑)

    • フルパワーで動かすアプリではないですよね(笑)ディスプレイがHDMIなら、ZERO 2 Wで動きそうな気がします。作り直そうかしら…

      似たようなサービスにDAKboardというのがあって、このほうがレイアウトがきれいかもしれません。天文系の情報をどこまで配置できるかやってないのでわかりませんが…
      https://shop.dakboard.com/

      • これも面白そうですね。自分でラズパイを用意して使えるようにOSイメージも配布しているんですね。売り物だけあってこっちのほうがだいぶ洗練されていて、気が効いたものが表示できそうです。が、free planだとレイアウトを変更できなさそうで残念・・

        • ウエルカムボードとか情報共有の手段として法人用に需要があるみたいですが、個人向けにはこの手のアプリは、無料せめて買い切りがよいですよね。

  5. PIRセンサを入手したので、自分も付けてみました。MMM-PIR-Sensor-Liteが開発終了してしまっているみたいで、代わりにMMM-Pirを使ってみたら、自分もMIPI DSI接続ですがちゃんと動きましたよ(^^)。

    • ねこめしさん、ありがとうございます! あとで試してみます。希望が持てました!

タイトルとURLをコピーしました