2024年02月09日
_ [computer] RaspberryPi での温度計測(OS入れ直し、Mail送出をexim4からpythonに変更)
工場施設の方で、点検の為に1時間ほどの停電がありましたが、それ以降、セラーの温度計測と温度変化を記録していたラズパイから、レポートのMailが届かなくなりました。
この古いラズパイ、SDカードを使っているためか、停電すると結構な頻度で起動しなくなります(今まで、二度ほどあった)。早速モニタの所に持ってきて、接続して見てみましたが、もうOS自体が立ち上がりません。電源が原因ではない様なので、SDカードを調べた所、全く認識せず。つまり、SDカードが死んだみたいです。
SDカードを交換して、OSからの入れ直しになるのですが、ラズパイのOSも長らく見ていない間に、名前から変わったみたいです。専用のOSは"Raspberry Pi OS"と言うのになった様です。手元のは古いラズパイですし、CUIでしか使ったことがないので、とりあえず、Raspberry Pi OS lite のlegacy版を選択しました。
まずは、raspi-configで設定です。
SSH有効化と、言語をja_JP.UTF-8 を選択、しかしシステムはUSにしておきます。
設定の中でも、とりわけキーボードの選択が何だか解りづらいです。結局検索して教えてもらいました。普通は以下の順に選択です
Generic 105-key PC (intl.)
Japanese - Japanese (OADG 109A)
The default for the keyboard layout
No compose key
IPアドレスの固定化は、/etc/dhcpcd.confで行うので、dhcpcd.confのコメントを見て編集してリブートします。
さてその後はsshで繋いで、いつもの様にexim4をインストールして、設定して、テストメール送信・・・しても届かない!!。他の記事を検索して幾つか参照して、exim4の設定を見直しても、Gmailのアプリパスワードを再度取り直しても、何度やってもMailが届かない!(正確には、「送れていない」)。
/var/log/exim4/mainlogを見てみると、
> R=smarthost defer (-36): host lookup for smtp.gmail.com did not complete
となってまして、何だかgmailの方にアクセス出来ていないみたいです。
最初DNS設定が消えたのかな、とも思いましたが、大丈夫ですし、ping smtp.gmail.comでも返信があります。なので、やはりexim4の設定の様で、色々試しても駄目、仕方なく、稼働中のもう一方のラズパイのexim4の設定ファイルをそのままコピーして適用してみたのだけど、これもまた駄目、あと、あれやこれやで、結局半日つぶれてしまいました、、
夜、Mailを送る関連で見ていたら、「pythonでmailを送る」と言う記事を見かけました。内容はその通りで、pythonでGmailを使ってMailを送るプログラムが簡単に書ける様なのです。
早速サンプルプログラムをwindowsで走らせてみると、いとも簡単にmailが送れました。試したところ、Raspberry Pi OS liteでは既にpythonがインストール済みだったので、プログラムをこちらに持ってきて走らせてみると、これまた簡単にMailが送れました。
一時、exim4がエラーになってどうしてもMailが送れないのは、もしかしたらOSの環境のせいかも、とも疑っていましたが、やはりexim4に問題があった様です。稼働中の設定ファイルを移植しても動かなかったのですが、そこはバージョンの違いなのでしょう。しかし、何度も設定しなおしても動かないので、もうexim4を使うのを諦めて、pythonでMailを送ることにしました。
教えてもらった、Mailを送るpythonのサンプルプログラムを少し変えて、標準入力からのテキストデータを本文にして、指定のアドレスにMailを送る様にしました。そして、このプログラムを使う様に、スクリプトを変更しまして、やっと無事復帰しました。
停電になる度、割と高い確率で不動になりますので、以前はSDカードのバックアップを取った事がありました。今回も考えましたが、このくらいの単機能なシステムなら、その都度幾らか手間はかかるでしょうが、その時々の新しいOSとその環境でやり直した方が、色々な事の勉強になって良いかなと思い、止めておきました。