Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

同報メールを発信している市区町村も増えてきました。御多分に漏れず、我が市もだいぶ以前から同報メールを実施していて、初期の頃から受信して活用してきました。便利ですよね。

その同報メールの受信は主にスマホが担っているのですが、災害時は仕方ないとしても、結構な頻度で配信されます。重要なことばかりとはいえ、中には「そんなことも?」という内容があるのも事実です。

放っておくと、結構溜まっていて大事な情報を見逃す機会も多くなりました。着信する度に件名は目を通すのですが、気持ち的には負担です。

そこで、モニターに新着くらいは表示させておこうと思いました。更にこれを共用部に置けば、自分以外も目に出来るので少し役立ちそうです。 当然ながらそんな仕組みは世の中にたくさんあります。イチイチ、PCの画面では大袈裟です。

Raspberry Pi Zero 2 / 2wを採用

Raspberry Pi、それもZero系なら消費電力も小さいし良いでしょう。ただ、メモリーが少ないので、デスクトップ(GUI)を使うほどでもありません。 それに操作することも必要無いテキスト表示だけですから、装飾も要りません。

そういえば、TTYに直接描画できるじゃないと思ったけど、確かTTYは日本語が扱えない(はず)。以前に画像をTTYに渡して表示したことはある。 少しだけ検索したら、日本語が扱えるfbtermがあった。これでいい。

Raspberry Pi OSもLite(以下、Lite)で十分だし、Pythonで書けばIMAPメールを扱うのも簡単そうだ。

IMAPメール

現在はGmailにしても、Googleアカウントを2段階認証ONにして、アプリパスワードを発行し、それを使ってRaspberry Pi等から接続できます。

このアプリパスワードの発行というのは初学者にはツラい。

IMAP直接ではなく、Proton mail + Bridgeでも実現できるけど、こちらは有料アカウントのみの機能。

仕方ないので、このラズパイダで借りているXserverのメールを使うことにしました。独自ドメインIMAPです。

基本は同じで、Gmailでもアプリパスワードを発行さえしておけば、今回のPythonプログラムで動くハズです。

■Pi 5は8GBモデルがオススメ

全部繋いでゴツイZero2w

Zero系って、本体が小さいのにケーブルの取り回しが、ねー。 キーボードは外すとしても、電源とHDMIケーブルがゴツイから本体が小さいのがあまり意味が無い気がする。

Raspberry Pi Zero2wのフルセット

Raspberry Pi Zero2wのフルセット状態

特に今回はWi-Fiが搭載されていないZero2だったから、有線LANケーブルを繋いだり、作業用にマウスとキーボードも繋いでいる状態だから、見た目が煩雑な感じ。

うまく出来た結果

肝心のモニターへの表示は、行数と文字サイズを調整して、最新メール1件を表示させることにしました。

件名は追加し、ある特定の文字(今回はTEL)以下は切りました。署名の部分です。あとURLが記載されていることがあり、それが長いためその行は丸ごと表示させません。

概要が分かれば良いのでもっと短くても良いんですけどね。本格的にやるなら、AIを呼び出して要約したものを羅列するのはアリかもしれない。

imapmail display single

IMAPで受信した最新メール1件の表示

今回で必要になったのは、Python標準のimaplibとemailだけで、追加インストールはfbtermと日本語フォントくらいで済みました。

懸念していた消費メモリーも、100MB〜120MBくらいで済みそうだから、Zero系で常時稼働させておいても何ら問題ないです。

唯一、モニターだけがどうしても消費電力が高いため、モバイルモニターにすることで軽減させることにした。

この文字サイズでも2通を上下にも表示できましたが、同じ文字サイズとは行かず、たまに長いメールの時に内容が分からないことがあったので、運用はメール1件にした。プログラム的には2通表示に切り替えられる。

最初にテストで使ったのはZero2だったので、Wi-Fiの搭載が無く設置に難がありました。

Zero2wであれば、Wi-Fiが受信できるので、最終的にはモバイルモニター用電源とZero2wの電源、HDMIケーブルだけになります。

モニターを壁掛けしたり、台に置いたりした裏側に、Zero系は小さいから貼り付けてしまえるのがグッドです。

注意点

ttyかpstsか分からなくなったら、ttyコマンドで現在のttyが分かります。

最初にログインしたコンソール画面は/dev/tty1、fbtermと入力後は/dev/pts/0で、SSH接続した場合、/dev/pts/1でした。 tty1に居る通常コンソールで、以下のように実行すれば、fbtermで実行できます。--で繋ぐのね。

fbterm -- python3 imap_display_single.py

既にfbtermコマンドを実行した後は、単にpython3 imap_display_single.pyでいい。 fbtermから抜けて元に戻るにはexitと打てばいい。

作業ログはこちら

失敗も含めて、記した作業時のログをまとめました。完成したコードもこちらです。参考にして同じ仕組みを作ってみてください。

(作業ログ)IMAPメールをモニターに表示する仕組み(Zero2/2w)

検証環境
Model: Raspberry Pi Zero 2 W Rev 1.0 / Raspberry Pi Zero 2
OS: Debian GNU/Linux 13 (trixie)
Kernel: 6.12.47+rpt-rpi-v8
Rブラック Rブラック
モバイルモニターとZero2wはそれなりの価格だから費用対効果は薄い。マニア向け。
Rレッド Rレッド
・・・。 プログラムも簡単だし、習作にはもってこいの仕組みでした。