Raspberry Pi を自動で起動、シャットダウンする

Raspberry Pi

ラズベリーパイを、自動起動、自動シャットダウン、自動電源OFF(電源断)とする方法について、設定手順と活用ポイントをまとめておきます。ラズパイをタイマー起動する手順です。

以下の構成で動作確認をしています。

構成: Raspberry Pi、デジタルタイマー、WiFi ネットワーク(ローカル)

背景

日頃、Raspberry Pi の電源を、自動でタイマー起動、自動シャットダウンさせて活用しています。
具体的には、自宅にいる時間帯に Raspberry Pi を自動で起動し、時報の再生、Webサーバーの稼働、いつも見るサイトのウェブスクレイピングの自動実行など、自動化を進めています。

Google検索をすると、Raspberry Pi を起動した状態で、任意のプログラムを「自動実行」する事例は出てきます。
ところが、一番肝心のラズパイの電源自体はどうやって「自動起動」し、どうやって自動で電源 OFF にしたらよいのかについては、あまり情報が見つかりません。専用の基板として電源管理用の RPZ-PowerMGR が見つかりますが、予算に余裕がないと手が出しにくい状況です。ラズパイがもう一、二個買えます。。

ということで、比較的低額な予算で、Raspberry Pi を自動でタイマー起動し、自動で電源を完全に OFF にするまでの設定について、ポイントをまとめておきます。
汎用な構成ですので、ラズパイ本体の ON/OFF のみならず、ラズパイにつないでいるモニターやスピーカー、それ以外の機器の ON/OFF の自動化も可能となります。

必要なもの

以下のデジタルタイマーを使います。

・ Raspberry Pi 4 (または 3 model B+ など)
・ デジタルタイマー REVEX PT70DW(白)、または、PT70DG(黒)
  (私が購入したときの価格は 1,500円前後でしたが、価格と在庫が常時変動しています。ご検討される場合はリンク先を確認してください。)
・ USB 電源用アダプタ・ケーブル(5V電源用、スマートフォン用の USB 電源アダプタ使用可)
・ LAN ネットワーク(LAN ケーブル等、または、WiFi 環境)
・ Raspberry Pi にアクセスするためのパソコン

※ もしすでに、電源用アダプタなど Raspberry Pi が動作する一式を持っているのであれば、二千円以下程度で自動起動のシステムを構築できることになります。
※ デジタルタイマーで、曜日と時刻がデジタルで設定できる製品を探すと、なぜかこの製品くらいしか見つかりません。複数の家電量販店の店頭で探してみても、アナログタイプなら見つかりますが、デジタルのタイプが見つかりません。

設定手順

① 必要に応じて、Raspberry Pi にリアルタイムクロックなどの周辺デバイスを接続し、あらかじめ、設定を済ませておきます。
② キーボード、モニター(HDMI モニターなど)、LAN 環境も必要があれば、接続しておきます。
(私の場合、自動起動用の Raspberry Pi は、WiFi 経由でリモートデスクトップで接続して使っています。)
③ 上の写真のように、デジタルタイマーと、テーブルタップ(背面)、USB 電源用アダプタ、USBケーブル、Raspberry Pi を接続します。

手動での起動・停止のテスト

続いて、デジタルタイマーの電源を手動で ON/OFF します。

具体的には、写真で、「プログラム」ボタンを長押しすると、電源を ON にできます。もう一度、長押しすることで、手動で OFF に切り替えることができます。

★ 手動で機器が動くことを確認すれば、あとは、下記の時計の時刻合わせと、タイマーの時刻設定(14セット設定可)をするだけです。

時計の時刻合わせ

デジタルタイマーの時計の時刻合わせの手順は、以下とおりです。

時計の時刻合わせの手順
① 通常のモード(時刻表示)の状態で、「時計」ボタンを押します。
→ すると、時計の時刻合わせ用のモードになります。
② この時刻合わせ用のモードの状態で、「曜日」、「時」、「分」ボタンを押して、曜日、時刻の設定をします。
③ 設定が終わったら、「プログラム」ボタンを1回押すと、通常のモード(時刻表示)に戻ります。

→ これで完了です。

なお、本体内部に充電式のバッテリーが内蔵されていますので、時計の時刻とタイマーの設定時刻は、一度設定すると、デジタルタイマーをコンセントから外しても維持するようになっています。(バッテリーが持つ間は時刻を維持します。確認はしていませんが、数時間は維持するように思います。)

タイマーの時刻合わせ ~タイマーでの起動&電源オフ

タイマーは、複数個(14組の ON/OFF 設定、計28個)、設定できるようになっています。
設定方法は以下のとおりです。

設定方法
① 通常モード(時刻表示)の状態で、「プログラム」ボタンを1回、押します。
② すると、1つめの設定(プログラム)での、電源 ON の時刻設定のモードになります。この状態で、ON となる時刻を設定します。
③ つぎに、もう一度、「プログラム」ボタンを押します。すると、1つめのプログラムでの、電源 OFF の時刻設定のモードになります。そこで、OFF となる時刻の設定をします。
何個目のプログラムの設定中だったか、ON/OFF いずれの設定中だったかは、画面に表示されます。
④ この後、続けて、「プログラム」ボタンを複数回押していくことで、②から③と同等の要領で、複数個のタイマーの設定ができるようになっています。必要な分、設定をしていきます。
・ 最大で 14セット(14種類)までの ON/OFF の時刻設定が可能です。
・ 設定を消したい場合は、「クリア」ボタンを押します。すると、何も設定されていない状態になります。
⑤ 設定が終わり、設定モードを抜けるには、「時計」ボタンを1度、押します。
→ すると、通常の時刻表示(通常動作時は、デジタル時計になっている)のモードに戻ります。

時刻合わせの詳細について
・ 設定モードにした状態で、「曜日」、「時」、「分」ボタンを押していくことで、それぞれ、設定ができます。
・ ボタンの長押しで数値を連続で送ることができます。
・ 「曜日」ボタンを複数回押していくことで、「月」~「日」のそれぞれ「月~日」の一括設定「月~金」の一括設定「土~日」の一括設定、の各パターンで設定できるようになっています。一括で曜日を設定しておくことも、個別の曜日で設定することもでき、とても実用的です。

タイマーの指定時刻の設定例

設定例を以下に示します。
月~金: 07:00 に起動 09:00 に停止  18:00 に起動 23:00 に停止
土~日: 09:00 に起動 23:00 に停止

・ この設定であれば、14セット設定できるうち、3セットの ON/OFF 設定をすれば、動くようになります。
・ 平日は、朝(出かける際の自動化・お知らせ用途)と、夕方~深夜(家に帰ってきてから使えるようにするため)に ON となるように設定する例です。
・ 土、日については、朝9:00 から 23:00 まで ON となるよう設定する例(通常、家にいるので)です。
・ 最近は、リモートワークも増えています。平日も土日と同様な設定にしてもよいと思います。

電源オフ時のラズパイ側の command 設定

デジタルタイマーを使って Raspberry Pi の電源のオンオフをする場合、デジタルタイマーの電源を OFF にする前に、Raspberry Pi 側でシャットダウンを実行しておいたほうが安全です。
ファイルの書き込み中に OFF となると、SD カードのデータなどを破損する可能性があるからです。

そこで、Raspberry Pi でターミナルを起動し、以下の例のように、シャットダウンのコマンドの設定をしておきます。
設定例
crontab -e
30 08 * * * sudo shutdown -h now
30 22 * * * sudo shutdown -h now
→ [ctrl] + “x” キー → “y” で保存、終了できると思います。

・ 上記は、朝(08:30)と夜(22:30)に、Raspberry Pi のシャットダウンコマンドを実行する一例です。
具体的には、ラズパイのシャットダウンコマンドは “sudo shutdown -h now” ですので、時刻を記載して、コマンドを書き込んでおきます。
・ デジタルタイマー側では、電源を OFF にする時間を、平日の 09:00 と夜の 23:00 としました。そこで、これらの 30分前にはシャットダウンを実行しておく、という一例です。
・ ここでバッファーを 30分としているのは、かなり余裕をとった設定です。
これまで、デジタルタイマーを数年間、複数個、使っています。私の過去の経験からは、数か月(3か月~半年?)放置しておくと、デジタルタイマーの時刻が、ネットなどの時刻に対して約10分前後進む、といった感じになっています。
すると、数か月、自動運用する場合は、電源を ON/OFF する時刻が、10分程度は前倒しになる可能性があります。そこで、多少、時間が進む(前後する)分、バッファーを入れた時刻設定をしておきます。

うまく動いたら

・ デジタルタイマーでの起動、終了がうまく動いたら、例えば、起動している時間帯に、Windows パソコンからリモートデスクトップ等で、Raspberry Pi にアクセスし、Python スクリプトなどを crontab で自動実行させる設定をしてみるなど、活用してみてください。

・ 私の場合、上記の crontab の設定について、実際は sudo 以降の部分をスクリプトファイル化して実行するようにしています。その中でシャットダウン時刻等のログの書き出しと、シャットダウンコマンドの実行をするようにしています。起動時用のスクリプトも作成し、起動時に crontab から自動実行し、起動時刻をログに書き出すようにしています。
こうすることで、ログを残すことができ、日々の Raspberry Pi の稼働状況をトレースできるようになります。たとえば、ログファイルで起動時刻を確認すれば、過去数か月にわたって、デジタルタイマーの時刻設定が何分ずれてきているか、把握することができます。
・ さらに、Raspberry Pi の USB 端子には、常時外部メモリ(USB カードリーダーとSD カード)を刺しておき、ログデータはすべて、外部のメモリに書き込むようにしています。SD カードは書き込み回数に上限があるので、データが飛んだ場合のリスク分散のためです。
・ なお、Raspberry Pi 本体は、時刻を維持するためのクロックと時刻用電池を持っていません。したがって、自動で起動したとき、Raspberry Pi 単体では正しい時刻を維持できません。そこで、リアルタイムクロック(写真の上部)を使うと、起動/再起動などをした場合に、設定した時刻を維持できるようになります。設定方法については、末尾の関連リンクにまとめています。
測定データのログ収集を自動化するような場合、ラズパイをスタンドアロンで動かしたい場合、指定時刻にタイムラプスで画像データを取得したい場合、時刻のずれを最小化したい場合などでは、リアルタイムクロックが必要になると思います。

活用のポイント ~ 導入効果

完全ハンズフリーでの自動化が実現

・ デジタルタイマーの導入により、Raspberry Pi の電源の ON/OFF が完全に自動化できるようになります。
これで、使うたびに都度発生していたセットアップのための時間や手間が解消します。
・ この設定でさらに、リモートデスクトップで Linux にアクセスできるように設定しておくと、周囲が散らかることもなく、技術検討に着手するハードルを下げることができます。
・ あとは、Python スクリプトやカメラ、機器などを追加していくだけで、日頃行う定型作業を次第に自動化、高度化していくことが可能になります。

・ 私の場合、まず、Windows パソコンで使えそうな Python のスクリプトを作っていき動作確認が完了したら、Raspberry Pi に移植して、以後、自動実行する、といった運用をしています。

周辺機器ごとの ON/OFF、また、ラズパイに直接関係ない機器の ON/OFF もできる

また、Raspberry Pi 本体以外の電源の ON/OFF も可能です。
例えば、ラズパイにモニターやスピーカーなどの周辺機器がつないであるとき、周辺機器のすべてについて、電源を ON/OFF することが可能です。ラズパイ専用の電源基板を購入してしまうと、こうした使い方はできなくなると思います。
ネット検索をしても、この点について書かれたサイトをあまり見かけません。

ハードウェアの寿命を改善できる

・ また、自動起動、自動シャットダウンとすることで、実際に使う最小限の時間帯だけ、Raspberry Pi や SD カードの電源を入れるといった運用が可能になります。
たとえば、1日に1時間だけ、自動処理をさせるように設定すると、24時間の常時稼働に比べると、SDカードや Raspberry Pi の基板等の劣化・ダメージは計算上 1/24 に減らせることになります。
・ もう少し具体的にいえば、Raspberry Pi を 24時間、常時稼働させて、SD カードが破損した場合、1,000円 ~ 数1,000円程度のマイナスになります。もし万一、Raspberry Pi の基板が寿命に至った場合は、6,000円?等のマイナスになります。
ところが、デジタルタイマーの価格は 1,500円前後です。SD カードの価格と大差がありません。
デジタルタイマー自体、室内使用であれば3年以上は動いており、デジタルタイマーの ON/OFF 回数には、SDカードの書き込み回数ほどの強い制約がありません。すると、必要な時間帯のみ ON に設定することで、実質的にデバイスの経年劣化を最小限にできる点を考慮すれば、十分にペイすることになります。

電源 OFF のみを自動化する設定もおすすめ ~ 後片づけの自動化

・ また、デジタルタイマーで、電源を OFF にする設定だけをしておく活用例もおすすめです。
すなわち、Raspberry Pi を使うときは、デジタルタイマーの「プログラム」ボタンを手動で長押しすることで、Raspberry Pi を起動するようにします。
そして、実験・技術検討、設定、プログラミングなどが終わったら、そのまま放置しておけば、夕方や夜、指定時刻に shutdown コマンドが自動実行され、その後、基板側の電源も勝手に OFF になる。こういった運用が可能です。
”散らかしっぱなし” で放置しておけば、電源 OFF などの後片づけの作業はお任せにでき、安心です。
実際に使っていると、毎回、shutdown コマンドを打って、基板の電源も毎回 OFF にするのが煩雑なんですよね。。こういうところこそ、本来、自動化すべきです!

まとめ

ラズパイの電源をタイマー起動、自動シャットダウン、自動電源断とする手順とポイントをまとめました。

これで、Raspberry Pi の電源 ON から、任意のプログラムの実行、シャットダウン、電源 OFF まで、一連の作業のすべてを自動で実行できるようになりました!

もしすでに、Raspberry Pi などをお持ちでしたら、参考にしてみてください。
電源を含めた自動化が簡単に実現でき、とても便利です。

関連リンク
・ Raspberry Pi にリモートデスクトップで接続する
・ リアルタイムクロックに関するまとめ 【Raspberry Pi】

外部リンク

リーベックス(Revex) コンセント タイマー スイッチ式 簡単デジタルタイマー PT70DW

リーベックス(Revex) コンセント タイマー スイッチ式 簡単デジタルタイマー PT70DG

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