1. ackcell

    No comment

    ackcell
Changes in body
Source | HTML | Preview
@@ -1,98 +1,98 @@
# 概略
## 目的
[こちらのブログ] (https://qiita.com/MechaTracks/items/b715f4712611e64df78e)でRaspberry piの簡易型UPSの記事がありますが、リレー付き電源を付加してより本格的な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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580616/b5f77280-a692-8b8d-dff5-655538a6886c.jpeg)
左から Raspberry pi 4 model B, slee-Pi2 Plus, リレー
### slee-Pi2 Plus
既存の標準モデルslee-Pi2に外部入力コネクタが増設されたモデル。
![slee-Pi2 and slee-Pi2 Plus 2020-02-06 20.44.44.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580616/61d693fe-b70b-5e73-ec59-60ab46f95233.jpeg)
上:slee-Pi2標準モデル,下:slee-Pi2 Plus(右上に2つコネクタが増設されている)。いずれもRaspberry piに装着済み
### リレー
電源入でスイッチが入るリレーで、slee-Pi2 Plusの外部入力コネクタに接続する。
![Relay 2020-02-06 16.45.43.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580616/1d02975b-c516-8865-3115-00efab6cb5ca.jpeg)
また、電源はslee-Pi2 Plusの電源コネクタに接続する。
これで、リレーに接続したACアダプタに電源が入ると、slee-Pi2 Plusに電源が入り、外部入力のスイッチがonになる。これをトリガーとして、Raspberry piの起動が始まる。
![slee-Pi2 Plus 2020-02-06 16.45.38.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580616/128835b0-9569-b34e-ae06-550abe73d6c7.jpeg)
リレースイッチをslee-Pi2 Plusの外部入力コネクタ、電源ラインを電源コネクタに接続
### ACアダプタ(hi,Lo)
2系統の電源の電圧差を検出し、シャットダウンするので、電圧が異なるACアダプタを用意します。
![power 2020-02-09 09.57.16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580616/15de353f-8443-bb8c-3d5a-5c1c16efe625.jpeg)
-:15V、:12V(slee-Pi2標準モデル同梱)
+:15V、:12V(slee-Pi2標準モデル同梱)
# セットアップ
Raspberry pi、slee-Pi2 Plus、電源、リレー付き電源を接続し、Rasbianの設定を[前回ブログ](https://qiita.com/ackcell/items/ea71147b8603627ec5bf)で言及した[ansible playbook](https://github.com/ackcell/mechatrax-slee-Pi2-Mackerel)でセットアップします。
## 電圧確認
2系統ある電源の電圧を調べます。直接sleepi2ctl -g voltageを使ってもいいですが、せっかくなのでMackerelのログを見てみます。
![Screenshot_2020-02-09 RPi4B · Mechatrax-software(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580616/aad50580-7887-cc5b-86d4-4304a2e4743c.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 -h 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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580616/43893b75-35b7-7281-112d-79386bbda850.png)
起動時のwakeup-flagが"extin"になっており、外部入力がトリガーになっているのが分かります。
# まとめ
この方式により、[以前のブログ](https://qiita.com/MechaTracks/items/b715f4712611e64df78e)にあった課題
・電源復旧までの稼動維持は求めない(電源断⇒シャットダウン出来ればOK)
・電源断の頻度が少ない(1次電池を使用するため、高頻度だと電池交換も高頻度になりツライ)
・対象となる台数が少ない(電源復帰時に自動起動ができないので)
の内、最後は解消できます。残りはどのような電源が準備できるかに依存します。また、2系統の電圧の差がある電源を準備しなければなりません。
電源断時に、alertを上げるトリガ(mailやslackなど)とshutdown処理を行うトリガの2つのthresholdで検出できれば、便利かもと思いました。