お手軽監視センサーシステムを作ってみた

# はじめに

:::note info
本記事は QiitaEngineerFesta 2022 「remote.it を使って ○○ に接続してみた！」に参加して投稿したものになります。

[QiitaEngineerFesta 2022](https://qiita.com/official-campaigns/engineer-festa/2022)
[remote.it を使って ○○ に接続してみた！](https://qiita.com/official-events/8a2ab08f6fa0f093ae39)
:::

映画でよくある、侵入者やお宝に近付く人をセンサーで検知するやつ、IoT 時代の現代なら簡単に実装できるのでは？と思いやってみました。
今回は、外出先から距離測定センサーのプログラムを起動して値を確認するところまでを実装しました。

手順は以下の通りです。

1. ラズパイに超音波センサーを取り付ける
2. remote.it を利用して監視側デバイスからラズパイを起動できるようにする
3. 監視側デバイスからセンサーの計測結果をリアルタイムで確認する

# remote.it を使う理由

リモートでアクセスするための設定が簡単にできそう。

> - リモート.シンプルでセキュアなオンデマンド接続を提供します。
>   - ポートフォワードの必要がない。その結果、ポートスキャンや DOS 攻撃の攻撃対象が取り除かれます。
>   - 携帯電話、衛星、その他の CGNAT ネットワーク上で、パブリック IP アドレスが利用できない、または一時的にしか利用できない、アクセス困難なデバイスへのアクセスを提供します。

https://ja.remote.it/connectivity/getting-started

# 実行環境

センサー側

- Raspberry Pi 4 Model B/4GB
  OS: Raspberry Pi OS (64-bit)

- HC-SR04（超音波距離センサー）

監視側

- iMac (Retina 5K, 27-inch, 2020)
  OS: macOS Big Sur(11.6.1)

- iPhone 13 Pro
  OS: iOS 15.5

# ラズパイに超音波センサーを搭載する

映画でよくあるのは赤外線的なやつだと思いますが、今回はお手軽そうだったので超音波センサーを利用します。
以下の記事を参考にして作成しました。

https://sozorablog.com/%E3%80%90raspberry-pi%E5%85%A5%E9%96%80%E3%80%91%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4%E3%81%A7%E8%B6%85%E9%9F%B3%E6%B3%A2%E8%B7%9D%E9%9B%A2%E8%A8%88%E3%82%92%E4%BD%9C/

作成した結果がこちら。
![001.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/26799c16-8f9b-7a1e-b79b-71042051fd39.gif)

ちゃんと計測できていることが確認できました。

# remote.it のアカウント作成

remote.it のアカウントを作成しておきます。

https://app.remote.it/#/sign-up?utm_source=getstarted&utm_medium=page#/sign-up

# remote.it のデスクトップアプリをインストール

デスクトップアプリをダウンロードします。

https://ja.remote.it/download

自分の環境にあったアプリをダウンロードします。

起動してログインするとこんな感じの画面になります。

![スクリーンショット 2022-07-17 2.17.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/541f922d-3a7d-dc1c-0aae-939e62c73e91.png)

# ラズパイ側に remote.it CLI をインストール

クイックスタートガイドに書いてある通りに設定します。

https://support.remote.it/hc/ja/articles/4422719299597

今回は SSH を登録しました。

```
$ sudo remoteit status
 ✓ Fetching status

Registration: example@example.com, device-registered true, 1 services, 0 connections

Device:
 UID                        | Name                             | Type              | Status       | Address
------------------------------------------------------------------------------------------------------------------------------
 xx:xx:xx:xx:xx:xx:xx:xx    | rasberrypi2                      | device            | connected    | 127.0.0.1:65535


Services:
 UID                        | Name                             | Type              | Status       | Address                  | Enabled
-----------------------------------------------------------------------------------------------------------------------------------------
 xx:xx:xx:xx:xx:xx:xx:xx   | ssh-pi                           |                   | connected    | 127.0.0.1:22             | true

```

rasberrypi2 という名前で、SSH を ssh-pi という名前で登録しました。

また、ラズパイ本体の設定で SSH を ON にしておきます。
![a_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/481f1e51-fb54-2467-e203-38169534cf76.jpeg)

# Mac 側に戻って デバイスとサービスを確認

Mac のデスクトップアプリを更新してデバイスとサービスが登録されていることを確認します。
![スクリーンショット 2022-07-18 20.07.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/cdb6d041-805d-e083-e53e-87c2da205b82.png)

![スクリーンショット-2022-07-18-20.06.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/a7b88ff5-7079-3cba-2c94-04125a594e4e.jpeg)

# ラズパイに接続してプログラムを起動させる

先程のサービスの画面から Launch をクリックするとターミナルが立ち上がりパスワードの入力を求められるので、先程入力したユーザーのパスワードを入力します。
![スクリーンショット-2022-07-18-22.21.50.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/242fb9d3-dfe4-332d-975a-e674ee94e9f5.jpeg)

プログラムを動かしてみます。
![シーケンス 01_1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/2ffcb0bd-8277-25fd-2e1b-01d79441f14f.gif)

ちゃんと計測できていることが確認できました。

# iPhone からも接続してみる

remote.it のアプリをインストールします

https://apps.apple.com/jp/app/remote-it/id1437569166

ログインしてデバイス・サービスを選択していきます。
![IMG_7990_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/a13d3bf4-b54d-7a1f-5d09-ee8e8efc440d.jpeg)
この先ターミナルを使用するのですが、自分は Termius というアプリを使用しました。

https://apps.apple.com/jp/app/termius-terminal-ssh-client/id549039908

Connect をタップして進みます。
![IMG_7991_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/20e6ee3a-8258-7f48-1328-08aad73c5fd6.jpeg)

その後も画面の指示に沿って進めていくとターミナル画面になります。
![IMG_7998_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/b36a0aa3-4f15-88bf-f799-d7c91ca41e27.jpeg)

実際にプログラムを動かしてみます。
![002.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737230/20279ef7-b434-4749-d03a-b09d094f11df.gif)

ちゃんと計測できていることが確認できました。

# まとめ

初めて remote.it を利用してみましたが、使い方はかなり簡単でした。
日本語のスタートガイドも充実しており、書いてある通りに進めていて行けば迷うことなく目的が達成できました。
特にiPhoneからの利用がかなり簡単で驚きました。
今回は SSH のみ使いましたが、別のサービスも今後利用してみたいと思います。

また、センサー側も異常な値を検出したら通知を送ったり、カメラを付けてより監視体制を充実させるなど改良をしていきたいです。
そういったことも今後記事にしていけたらなと思います。

# 他参考にした記事

https://qiita.com/u___sk/items/e0df9581d2e58891ec8a

https://qiita.com/quotto/items/1dc8f16063bbe98c4ca8

https://qiita.com/mskairmail/items/25f985927beb5d3f1b04