「Pi-protect」と「SORACOM Lagoon」で通知システム構築

メカトラックス株式会社の[@kiyonaga](https://qiita.com/kiyonaga)です。

今回は写真のラズパイ防塵防水IoTゲートウェイ 「 [**Pi-protect**](https://mechatrax.com/products/pi-protect/)（パイプロテクト）」と データ可視化サービスの「[SORACOM Lagoon](https://soracom.jp/services/lagoon/)」 を組み合わせて通知システムを実装します。

[**Pi-protect**](https://mechatrax.com/products/pi-protect/) は、ラズベリーパイを業務用途で使用する際にネックとなる防水・防塵、RTC、電源管理等の機能を備えたIoTゲートウェイです。
4G通信モジュール「[4GPi](https://mechatrax.com/products/4gpi/)」、電源管理/死活監視モジュール「[slee-Pi3](https://mechatrax.com/products/slee-pi/)」に加え、停電時バックアップキャパシタ他で構成されるので、**設置環境に合わせた柔軟な開発**ができます。
![piprotect1@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/d6e3d7b9-68a7-8d68-b6a3-1aa87e0325cc.png)

## 構成イメージ
![gazou.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/c455d3ed-0f3c-d725-fa51-64b300ce3002.jpeg)
① Pi-protect に接続した USB カメラで撮影して、サーバ(Harvest Files)に画像データを送信
② SORACOM Lagoon で可視化
③ 画像がサーバに届いたら LINE に通知

## 必要なものと前準備
・ **Pi-protect** x 1台
・ **USB カメラ** x 1台
今回使用したカメラは[こちら](http://www.webcamerausb.com/elp-outdoor-waterproof-1080p-full-hd-night-vision-cctv-surveillance-mini-high-speed-3060120fps-ov2710-cmos-dome-usb-camera-p-191.html)
・ **SORACOM SIM**　(SORACOM Air for セルラー) x 1枚
画像などを扱う場合は plan-DU 等の大容量プランをおすすめします
今回は動作確認程度なので plan-D を使用
SIM の料金プランについては[こちら](https://soracom.jp/store/s_category/sim/)
・ **SORACOM Air for セルラー** アカウント作成
作成方法は[こちら](https://soracom.jp/start/)

## 手順
1. Pi-protect と USB カメラ、電源ケーブルを接続
2. SORACOM Harvest・Lagoon の設定、SIM の APN 登録
3. 動作確認

## 1. Pi-protect 起動準備
① **USB カメラを接続する**
今回使用したカメラ
![converted-0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/f3f043d2-fcf3-e685-d0d4-efe9a77e2607.jpeg)
まず、ケーブルグランドを外して USB ケーブルをゴムブッシュに通します。
ゴムブッシュには切り込みが入っているので簡単に脱着可能です。
![append.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/86977a11-c775-a34b-2117-9a3428c60fc5.jpeg)
ゴムブッシュとゴムブッシュカバーを組み合わせます。
![Image_20210511_110918.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/1ca5f67a-d0ed-47d3-c9df-d4ecdb2d27ef.jpeg)
次に USB ケーブルをケーブルグランドから通してラズベリーパイのUSB ポートに接続します。
※ USB コネクタのサイズによっては上手くラズベリーパイの USB ポートに接続できない可能性があります。
接続後にケーブルグランドを締めますが、締め方が緩いと防水機能が低下するのでご注意ください。
締める際の目安として、ケーブルが動かなくなる程度まで締めこみそこから半回転程度締めてください。
![converted-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/6986d9ff-aa35-b392-fa4e-692c6132a1b2.jpeg)
最終的にこうなりました。
![converted-5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/95ebe8f5-2c4e-5d93-10a7-a14536f0ddee.jpeg)

② **電源ケーブルを接続する**
コネクタの凹凸を合わせて挿し込み、コネクタ側のナットを締めます。
![Image_20210511_110930.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/52b8aafe-3928-e74d-3d78-8f143c180e4d.jpeg)
起動準備が整ったら電源を投入してください。

## 2. SORACOM Air と Lagoon 設定
各リンク先を参照して設定を行ってください。
Pi-protect に同梱する SD カードは、標準 OS（Raspberry Pi OS）上に 4GPi や slee-Pi3 のユーティリティソフトを含めた稼働環境を構築済みですので、電源投入後すぐにログインして設定が可能です。
Lagoon の詳細は[こちら](https://users.soracom.io/ja-jp/docs/lagoon-v2/)から

① **4GPiに SIM の APN を登録する**
・[設定方法](https://github.com/mechatrax/4gpi/wiki/%E3%81%9D%E3%81%AE%E4%BB%96#%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A)
・[APN 情報](https://users.soracom.io/ja-jp/guides/getting-started/setup/#%e3%82%b9%e3%83%86%e3%83%83%e3%83%97-3-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e5%90%8d-apn-%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b)
APN 情報を元に設定方法の nmcli コマンドを実行してください。

② **画像データを Lagoon で可視化するための設定する**
・[設定方法](https://users.soracom.io/ja-jp/docs/harvest/lagoon/)
設定完了時点では Lagoon のパネルに画像は表示されません。

③ **LINE 通知用に Lagoon で Alart の作成と設定する**
・[Notification Channel 作成](https://users.soracom.io/ja-jp/docs/lagoon-v2/alert-notification-channel/#notification-channel-%e3%81%ae%e4%bd%9c%e6%88%90)
・[LINE 通知 Alart 作成](https://users.soracom.io/ja-jp/docs/lagoon-v2/alert-notification-channel/#line)
・[Alart の設定](https://users.soracom.io/ja-jp/docs/lagoon-v2/alert-rules/)
LINE 以外に Slack、Discord、mail 等への通知もできます。

## 3. 動作確認
① **USB カメラで撮影後、サーバ(Harvest Files)にデータを送信する**
以下2つのコマンドを順番に実行してください。
```bash
fswebcam --no-banner -d /dev/video0 -r 640x480 -S 5 ~/harvest_test.jpg
curl -v -X PUT --data-binary @harvest_test.jpg -H "content-type:image/jpg" http://harvest-files.soracom.io/lagoon/harvest_test.jpg
```

② **Lagoon のパネルに画像が表示される**
左パネルに画像のサイズと受信日時、右パネルに画像を表示するように並べました。
パネルの操作に関しては [こちら](https://blog.soracom.com/ja-jp/2021/04/20/soracom-lagoon-new-features-ui/#co-index-4) の動画をご覧ください。
![lagoon.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/2b60d9a6-8f3d-6115-9756-05690a170c98.jpeg)

③ **LINE に通知が届く**
今回はサーバに画像が届くと発報して、LINE に通知が行くようにしました。
送られてきたメッセージ添付の URL を開くと、スマホからもダッシュボードが見れます。
![keitai.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/85a31b53-4c47-3507-1478-7d2582f4f88b.jpeg)

**Lagoon のパネルに画像が表示されない場合以下を確認ください。**
・Lagoon コンソール内の更新ボタンを押す。
・サーバ(SORACOM Harvest Files)に画像データが送信できているか確認。
SORACOM ユーザーコンソールにログインして、左上のハンバーガーメニューから「データ収集・蓄積・可視化」⇒「SORACOM Harvest Files」を選択してください。
送信できている際は、SORACOM コンソール上の lagoon/ をクリックすると以下のように画像データが格納されているのを確認できます。
![harvest.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1174732/a888438f-6ea2-d128-b917-5e85088223f4.jpeg)
・ネットワークに異常がないかどうか
・実行コマンドは正しいかどうか
・設定忘れやエラーがないかどうか

## 4.最後に
以上、[**Pi-protect**](https://mechatrax.com/products/pi-protect/) と [SORACOM Lagoon](https://soracom.jp/services/lagoon/) で通知システムを実装してみました。
距離センサや赤外線センサと組み合わせて監視システムの構築も手軽にできそうです。
また、Pi-protect には [slee-Pi3](https://mechatrax.com/products/slee-pi/) も基本構成に含まれているので節電やシステムエラーにもばっちり対応可能です。
今回は室内での動作確認でしたが、 Pi-protect は**防塵防水仕様**なので屋外センシング等にもってこいです。