1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

slee-Pi2 PlusでRaspberry piの電源が落ちた際の復旧を自動化(簡易UPS中級編)

Last updated at Posted at 2020-02-12

概略

s_Img25321.jpg

目的

[こちらのブログ] (https://qiita.com/MechaTracks/items/b715f4712611e64df78e)(電源断時にラズパイを自動でシャットダウン)でRaspberry piの簡易型UPSの記事がありますが、メカトラックス社からslee-Pi2 Plusでの記事化を依頼されたので、リレー付き電源も付加してより本格的なUPS化を目指します。

仕組み

slee-Pi2 Plusの2系統ある電源入力の電圧差を利用して電源断を検出し、shutdownする。
slee-Pi2 Plusに外部入力コネクタに電源と連動したリレーから入力し、電源復帰とともにRaspberry piの再起動を実現します。

必要なもの

  • Raspberry pi 4 model B w/ Rasbian buster lite 2019-09-26
  • slee-Pi2 Plus
  • ACアダプタ2つ(Hi, Lo)
  • 電源と連動するリレー
  • スイッチ付きテーブル・タップ

all 2020-02-06 16.45.28.jpg
左から Raspberry pi 4 model B, slee-Pi2 Plus, リレー

Raspberry pi 4はMechatraxとしては非推奨とのことで、注意してください。

slee-Pi2 Plus

既存の標準モデルslee-Pi2に外部入力コネクタが増設されたモデル。

slee-Pi2 and slee-Pi2 Plus 2020-02-06 20.44.44.jpg
上:slee-Pi2標準モデル,下:slee-Pi2 Plus(右上に2つコネクタが増設されている)。いずれもRaspberry piに装着済み

リレー

電源入でスイッチが入るリレーで、slee-Pi2 Plusの外部入力コネクタに接続する。このリレーは2つ準備したACアダプタのうち、高い電圧の方に接続します。

Relay 2020-02-06 16.45.43.jpg
また、電源はslee-Pi2 Plusの電源コネクタに接続する。
これで、リレーに接続したACアダプタに電源が入ると、外部入力のスイッチがonになる。これをトリガーとして、Raspberry piの起動が始まります。

slee-Pi2 Plus 2020-02-06 16.45.38.jpg
リレースイッチをslee-Pi2 Plusの外部入力コネクタ、電源ラインを電源コネクタに接続

ACアダプタ(hi,Lo)

2系統の電源の電圧差を検出し、シャットダウンするので、電圧が異なるACアダプタを用意します。
power 2020-02-09 09.57.16.jpg

上:15V、下:12V(slee-Pi2標準モデル同梱)

セットアップ

Raspberry pi、slee-Pi2 Plus、電源、リレー付き電源を接続し、Rasbianの設定を前回ブログで言及したansible playbookでセットアップします。

電圧確認

2系統ある電源の電圧を調べます。直接sleepi2ctl -g voltageを使ってもいいですが、せっかくなのでMackerelのログを見てみます。
Screenshot_2020-02-09 RPi4B · Mechatrax-software(1).png

テーブルタップのスイッチをカチカチとやって、期待通りの電圧がでているか確認します。
15vと12vでThresholdをその間に設定すればいけそうです。リレーに連動する電源(ACアダプタ)が高い方(15v)であることを確認し、sleepi2-monitor.confでvoltageのthresholdを13vに設定します。

/etc/sleepi2-monitor.conf
[voltage]
command = "shutdown -h now"
oneshot = true
threshold = 13000

thresholdに13000mvを設定して、sleepi2monを再起動するか、Raspberry piを再起動すると、13vが閾値になります。

systemctl restart sleepi2-monitor.service 
shutdown -r now

実働テスト

これで高い電圧(15v)のACアダプタの電源を切ると、電圧の低い電源(12v)で稼働し続けますが、sleepi2monによるthreshold監視により"shutdown -h now"が実行されます。
Raspberry piが動作を停止し、再び高い電圧のACアダプタの電源を入れると、連動したリレーがslee-pi2 Plusの外部入力にトリガーを与え、Raspberry piが再起動します。

起動・停止時にslackに投稿するメッセージが以下のようになります。
Screenshot_2020-02-09 Slack mackerel-io mechatrax-software.png

起動時のwakeup-flagが"extin"になっており、外部入力がトリガーになっているのが分かります。

まとめ

この方式により、以前のブログにあった課題

・電源復旧までの稼動維持は求めない(電源断⇒シャットダウン出来ればOK)
・電源断の頻度が少ない(1次電池を使用するため、高頻度だと電池交換も高頻度になりツライ)
・対象となる台数が少ない(電源復帰時に自動起動ができないので)

の内、最後は解消できます。残りはどのような電源が準備できるかに依存します。また、2系統の電圧の差がある電源を準備しなければなりません。

電源断時に、alertを上げるトリガ(mailやslackなど)とshutdown処理を行うトリガの2つのthresholdで検出できれば、便利かもと思いました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?