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のフルセット状態
特に今回はWi-Fiが搭載されていないZero2だったから、有線LANケーブルを繋いだり、作業用にマウスとキーボードも繋いでいる状態だから、見た目が煩雑な感じ。
うまく出来た結果
肝心のモニターへの表示は、行数と文字サイズを調整して、最新メール1件を表示させることにしました。
件名は追加し、ある特定の文字(今回はTEL)以下は切りました。署名の部分です。あとURLが記載されていることがあり、それが長いためその行は丸ごと表示させません。
概要が分かれば良いのでもっと短くても良いんですけどね。本格的にやるなら、AIを呼び出して要約したものを羅列するのはアリかもしれない。

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レッド


