指定時刻にRaspberry Piの電源をON/OFF (RPZ-PowerMGR)

RPZ-PowerMGRを使って、指定時刻にRaspberry Pi(ラズパイ)の電源ON/OFFする方法の解説です。決まった時間だけ起動して消費電力を抑えることが可能で、モバイルバッテリーやソーラーシステムでの運用に最適です。

Raspberry Pi OS Version 2021-01-11対応

更新日 : 2021年3月7日

Raspberry Pi電源の課題

Raspberry Piは大変便利な小型コンピューターです。しかし、電源まわりには課題もあります。Raspberry Piを使っていて、次のような悩みを持ったことはありませんか?

  • USBケーブルを抜き差ししないと電源をON、OFFできない
  • 決まった時間だけ起動して消費電力を抑えたい
  • モバイルバッテリーで長時間運用したい

RPZ-PowerMGRを使えばこれらの問題を解決できます。具体的には次のようなことが可能です。

指定日時に電源ON、OFF

あらかじめ登録した日時、時刻に電源ON、OFFできます。必要なときだけ電源をONすれば省電力でRaspberry Piを運用できます。モバイルバッテリーで長期間の稼働が可能になります。

月、日、曜日、時、分を自由に指定でき、毎週、毎日、毎時のような指定も可能です。例えば以下のようなスケジュールが簡単に作成できます。

  • 毎時0分に電源ON、10分に電源OFF
  • 毎日8:15に電源ON、17:40に電源OFF
  • 毎週月、水、金の20:00に電源ON
  • 毎月15日の0:00に電源ON
  • 1月15日の9:00に電源ON
  • 現在時刻から10分後に電源OFF、60分後に電源ON

他社製品の多くはRTCのアラーム機能を使う構成です。そのためスケジュールを同時に1個しか登録できず、起動するたびに次の時刻を登録するプログラムを記述しなければなりません。

一方、RPZ-PowerMGRは専用開発したスケジューラーを搭載しています。そのためスケジュールを最大250個登録可能で、複雑なスケジュールに対応できます。一度登録しておけばRaspberry Pi側からの管理は不要です。CSVファイルインポート、エクスポート機能もあるので表計算ソフトを使ってスケジュール作成、管理でき、同じ設定を複数台に展開できます。

超低消費電力

超低消費電力のIC、回路設計により、Raspberry Pi電源OFF時の消費電力をわずか5uA以下に抑えました。長期間の省電力運用を可能にします。(これとは別にモバイルバッテリー側の電圧供給回路での電力消費が生じる場合があります。)

指定時刻のON/OFF以外にも、RPZ-PowerMGRには電源管理、省電力運用に必要な機能が搭載されていて便利です。

電源を制御する仕組み

どのように電源を制御するのか、仕組みを解説します。

RPZ-PowerMGRはRaspberry Piの40ピンコネクターに装着する拡張基板(HAT)です。

下の図にあるように、外部電源がRPZ-PowerMGRに接続されており、Raspberry Pi本体への電源供給、切断をコントロールできる構成になっています。電源は40ピンコネクター経由で供給されるので、Rasbperry Pi本体の電源コネクターは使用しません。

RPZ-PowerMGRは、搭載しているスケジューラーが指定時刻になると自動的に電源ON/OFFします。OFFする際は安全にRaspberry Piをシャットダウンしてから電源を落とす仕組みになっています。

電源ON/OFFの流れ

詳細な電源ON/OFFの流れは、トリガーが時刻に変わるだけでスイッチによる電源ON/OFFと共通です。スイッチによる電源ONの流れ、電源OFFの流れの記事を参照してください。本記事では時刻(スケジュール)の指定方法について解説します。

セットアップ

RPZ-PowerMGRのセットアップの全手順は製品ページのセットアップ(ハードウェア)セットアップ(ソフトウェア)を参照してください。本記事では指定時刻に電源をON/OFFする方法について解説します。

指定時刻に電源ON

RPZ-PowerMGRのスケジュール(電源ON/OFF時刻)の表示、変更はコントロールツールから可能です。「sc」サブコマンドを指定するとスケジュール関連の操作になります。

まず、最初の例として毎日8時15分に電源ONするスケジュールを登録してみましょう。pmgr.pyと同じディレクトリで以下のコマンドを実行します。(代替I2Cアドレス0x22を使っている場合は「-a」オプションの指定が必要です)

./pmgr.py sc 8:15 on
スケジュールを登録しました
登録されているスケジュールが1個あります. 
  #001 ON  Repeat  **/**  08:15

スケジュールが登録され、登録済みのスケジュールの一覧が表示されました。

「#001」はスケジュール番号で、削除する際に指定します。

「ON」は電源ONするスケジュールを示します。

「Repeat」は何回も繰り返し実行するスケジュールを意味します。

「**/**」は月と日がワイルドカードとなり、すべての月と日に実行されることを意味しています。今回の例では月、日を省略したのでワイルドカードになりました。

指定時刻に電源OFF

先程は電源ONするスケジュールだったので、次は毎日17:40分に電源OFFするスケジュールを登録してみましょう。以下のコマンドを実行します。

./pmgr.py sc 17:40 off
スケジュールを登録しました
登録されているスケジュールが2個あります. 
  #001 ON  Repeat  **/**  08:15
  #002 OFF Repeat  **/**  17:40

「#002」に登録できました。これで毎日8:15から17:40までの間だけ電源ONする運用ができます。スケジュールは最大250個まで登録できます。

スケジュールを削除

スケジュールを削除するには「-R」オプションに続けて削除したい番号を指定します。次の例では「1」を指定しました。

./pmgr.py sc -R 1
スケジュール#001を削除しました. 
登録されているスケジュールが1個あります. 
  #001 OFF Repeat  **/**  17:40

#001の8:15のスケジュールが削除されたことがわかります。#002の17:40のスケジュールが繰り上がって#001になりました。

スケジュールを登録、削除すると、登録済みのスケジュール一覧から次のON/OFF時刻を計算する処理が入ります。次のON/OFFスケジュール時刻まで10秒を切っている状況だと、安全のためスキップされる場合がありますのでご注意ください。

登録済みスケジュール一覧を表示

以下のように「sc」サブコマンドだけを指定すると、現在登録済みスケジュールの一覧を表示できます。

./pmgr.py sc

1度だけ実行されるスケジュールを登録

特に指定しない場合、スケジュールはRepat(繰り返し)モードになり、何度も実行されます。一方、「-o」オプションを指定するとOne Time(1回のみ)になり、1度実行されると自動的に削除されます。

./pmgr.py sc -o 8:15 on
スケジュールを登録しました
登録されているスケジュールが1個あります. 
  #001 ON  OneTime **/**  08:15

3つめの項目が「OneTime」の表記になっているのがわかります。1度8:15に電源ONが実行されるとスケジュールは削除され、翌日以降は実行されません。

なお、8:15にすでに電源ONだった場合はスケジュールは実行されず、削除もされません。

毎時実行されるスケジュールを登録

時間にワイルドカード「*」を指定することで、毎時実行されるスケジュールを登録できます。以下のように実行すると毎時0分にONして10分にOFFするようになります。分をワイルドカードにすることはできません。

./pmgr.py sc *:0 on
./pmgr.py sc *:10 off

月、日を指定したスケジュールを登録

「-D」オプションに続けて「月/日」を指定できます。以下は1月15日の9:00にONする例です。

./pmgr.py sc -D 1/15 9:00 on

月をワイルドカード「*」にすることもできます。以下は毎月15日の0:00に電源ONする例です。

./pmgr.py sc -D */15 0:00 on

注意点として、日、時をワイルドカードに指定した場合、それより上位はすべてワイルドカードにする必要があります。以下の組み合わせ表を参考にしてください。

指定指定指定指定
ワイルドカード指定指定指定
ワイルドカード
(-D 省略)
ワイルドカード
(-D 省略)
指定指定
ワイルドカード
(-D 省略)
ワイルドカード
(-D 省略)
ワイルドカード指定
ワイルドカード指定可能な組み合わせ

日は日付以外に曜日を指定することができます。曜日はアルファベット3文字で指定します。

  • 日曜日: Sun
  • 月曜日: Mon
  • 火曜日: Tue
  • 水曜日: Wed
  • 木曜日: Thu
  • 金曜日: Fri
  • 土曜日: Sat

以下は毎週月曜日の20:00に電源ONする例です。

./pmgr.py sc -D */Mon 20:00 on

n分後にスケジュール登録

「-l」オプションを使うと現在からn分後にスケジュールを登録できます。以下は今から10分後にOFFして、60分後にONする例です。

./pmgr.py sc -l 60 on
./pmgr.py sc -l 10 off

nは1から999の範囲で指定できます。なお、秒は切り上げとなるので、1分後を指定した場合は最短1分、最長1分59秒後に実行されます。

「-l」オプションで登録したスケジュールはOne Time(1回のみ)となります。

csvファイルのエクスポート

「-f」オプションに続けてファイル名を入力すると、登録済みスケジュール一覧をcsvファイルにエクスポートできます。以下は「sch.csv」ファイルにエクスポートする例です。

./pmgr.py sc -f sch.csv

csvファイルの書式

エクスポートされたcsvファイルを表計算ソフトで開くと、以下のような書式になっています。

csvファイルの書式

1行目はヘッダーとなります。2行目以降にスケジュールが記述されています。

A列は電源ONかOFFを指定します。小文字でも構いません。

B列はRepeatかOneTimeかを指定します。「R」、「O」だけの指定も可能で、大文字と小文字を区別しません。

C、D、E、F列に月、日、時、分を指定します。「*」か「**」でワイルドカードになります。曜日はSun、Mon、Tue、Wed、Thu、Fri、Satで指定できます。

この書式に従って自分でcsvファイルのスケジュールを編集、追加した後、インポート機能でRPZ-PowerMGRに登録することができます。多数のスケジュール管理や、複数台のRaspberry Piへ同じスケジュールを登録するのに便利です。

csvファイルのインポート

「-i」オプションを指定した上で「-f」オプションに続けてファイル名を入力すると、csvファイルからスケジュールを登録できます。すでに登録されているスケジュールに追加されるので、必要な場合はインポート前に既存のスケジュールを削除してください。

./pmgr.py sc -i -f sch.csv

タイムゾーンの変更

Raspberry PiはRTCに協定世界時(UTC)の時刻を設定して動作します。そのため、ローカル時刻を計算するためにRPZ-PowerMGRにはUTCからの差分を分で設定する機能が備わっています(タイムゾーン設定)。

出荷時には日本に合わせた540分(+9時間)がセットされているため変更の必要はありません。日本以外で使用するなどの特殊な事情がある場合は、コンフィグ変更サブコマンド「cf」と「-z」オプションで変更できます。

以下はローカル時間の差分を0に設定する例です。

./pmgr.py cf -z 0
コンフィグ情報
  ファームウェアバージョン: 1.00
  スタートアップタイマー: 30秒
  シャットダウンタイマー: 150秒
  シャットダウン要求信号: GPIO16
  シャットダウン完了信号: GPIO26
  タイムゾーン設定: 0

まとめ

RPZ-PowerMGRを使って、指定時刻にRaspberry Pi(ラズパイ)の電源ON/OFFする方法の解説は以上です。決まった時間だけ起動して消費電力を抑えることが可能で、モバイルバッテリーやソーラーシステムでの運用に最適です。

これ以外にも、RPZ-PowerMGRには電源管理に便利な様々な機能が搭載されています。そちらの記事も参考にしてみて下さい。

RPZ-PowerMGR (Raspberry Pi用 電源管理/制御/RTC拡張基板)

スイッチで電源ON/OFF、指定時刻に電源ON/OFF、シャットダウン後自動電源OFFを可能にする拡張基板です。Raspberry Pi(ラズパイ)の電源の課題を解決し、省電力運用を可能にします。RTCで電源OFF時も時刻を保持します。USB Type-C端子を搭載し、モバイルバッテリーでも利用できます。

E32-SolarCharger (ESP32、ESP-WROOM-32/WiFi搭載 プログラマブルIoT 鉛バッテリーソーラー充電基板)

Arduino IDEで動作を自由にプログラミング可能な、IoTソーラーチャージャー基板です。WiFi内蔵マイコンであるESP32(ESP-WROOM-32)を採用しました。鉛バッテリー充放電回路、microSDスロット搭載。状況にあわせた充電、負荷の接続/切断ができ、ネットワークからのモニタリングも可能です。

PythonとpigpioでRaspberry Piの赤外線制御 (家電、エアコン、照明、テレビなどを制御するホームIoT)

Pythonとpigpioを使ってRaspberry Piで赤外線の送受信を行う方法について解説しています。サンプルプログラムを用意しているので、簡単に受信、登録、送信動作をさせることができるほか、データ解析も可能です。赤外線を使ってエアコン、照明、テレビなどの家電を制御することが可能になります。