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

Raspberry Pi

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

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

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

背景 ~ 自動化のすすめ

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

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

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

必要なもの

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

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

※ もしすでに、電源用アダプタなど Raspberry Pi が動作する一式を持っているのであれば、二千円前後で自動起動のシステムを構築できることになります。

設定手順

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

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

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

手動操作で 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 に停止

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

電源オフ時のラズパイ側のコマンド設定

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

そこで、Raspberry Pi でターミナルを起動し、以下の例のように、シャットダウンのコマンドの設定をしておきます。

設定例
$ crontab -e
編集画面で末尾に以下の2行を追加します。
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分程度は前倒しになる可能性があります。そこで、上記では、30分、早めにシャットダウンコマンドを実行する事例としています。

うまく動いたら

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

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

活用ポイント ~ 導入効果

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

・ デジタルタイマーを導入することで、Raspberry Pi の電源の ON/OFF が完全に自動化できるようになります。使うたびに都度発生していたセットアップのための時間や手間が解消します。完全ハンズフリーとなります。

・ この設定でさらに、リモートデスクトップで Raspberry Pi にアクセスできるように設定しておくと、周囲が散らかることもなく、技術検討に着手するハードルを下げることができます。
・ あとは、Python スクリプト、カメラ、機器、AI などの機能を追加していくだけで、日頃行う定型作業を順次、自動化、リモート化、高度化していくことが可能になります。

・ 私の場合、まず、Windows パソコンで、便利そうな Python のスクリプトを作っていきます。使えそうなレベルのものができたら/動作確認ができたら、Raspberry Pi に移植して、以後、自動実行する、といった運用をしています。空き時間などに、稼働中にリモートでアクセスし、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 カードの価格と大差がありません。(相対的に、SDカードが高すぎると思います。。)
デジタルタイマー自体、室内使用であれば3年以上は動いており、デジタルタイマーの ON/OFF 回数には、SDカードの書き込み回数ほどの強い制約がありません。すると、必要な時間帯のみ ON に設定することで、実質的にデバイスの経年劣化を最小化できることになります。

ラズパイを数か月以上の期間、常時稼働させた経験のある方もいらっしゃると思いますが、特に対策をせずに使うと、1年くらいで SDカードが破損すると思います。SDカードの書き込み回数は、普及しているタイプで 1000 回程度のオーダーとなっています。この書き込み回数が1年間の日数 365日に対して少なすぎます。(365日/年×3回書き込み/日 = 書き込み回数1000回/年、というオーダーとなる。Linux を起動したとき、書き込み回数が1日3回で済むというのは考えにくいですし、他方、容量が大きいほど反比例で、書き込み回数の上限に達する確率は下がります。とはいえ、常時稼働させてランダムにログを書き込むと、経験的に数年でどこかがやられてくる/どこかのファイルが化ける、というのが実感です。実際、実用で使おうとすると劣化の程度を見積りたくなってきますが、この点について定量的な指摘をしたサイトをなぜか見たことがないように思います。。)
そこで、デジタルタイマーを使うことで稼働時間を限定し、SD カードなどの消耗品の寿命を延ばすよう運用することで、デジタルタイマーの購入費用を回収したり、経年劣化による損失を最小化することが可能になります。

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

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

まとめ

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

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

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

関連リンク
・ リアルタイムクロックに関するまとめ 【Raspberry Pi】
・ Raspberry Pi にリモートデスクトップで接続する
・ 起動、終了時にログを出力する 【Raspberry Pi】

外部リンク [PR] 

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

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

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