SORACOM IoT レシピ:IoTカメラでオフィスの入室者をLINEへ通知
クラウド型カメラ「ソラカメ」で入室者のチェック、LINEへ通知
公開日: 2022 年 2月
レシピ難易度: ★★☆☆☆
リモートワークと出社のハイブリッド体制を取るようになると、オフィスの管理者も毎日出社しているわけではありません。どのような人が入室しているかの確認の方法として、モーション検知機能を持つカメラを利用して、動き (モーション) があったときに画像を通知することが考えられます。
本レシピでは、Soracom Cloud Camera Services(以下、ソラカメ) 対応のIoTカメラ「ATOM Cam」のモーション検知機能、およびソラカメのイベント API を用いて動きがあったタイミングの画像を取得し、LINE Notify で通知します。API は AWS Lambda 上で実行します。
使用する SORACOM サービス
- Soracom Cloud Camera Services
全体構成
- Amazon EventBridge で定期的に AWS Lambda を呼び出す
- ソラカメ API で過去 1 分のイベント一覧を取得
- イベント発生時の静止画像をダウンロード
- ダウンロードした画像を LINE Notify で通知
※イベントが複数あった場合、3, 4 は全てのイベントに対して実施します
本レシピを行うのに必要な時間、概算費用
本レシピは以下の通りです。
- 必要な時間: 約 60 分
- 概算費用: 約3,900円
- ソラカメの月額費用(990円~)や、AWS サービスの月額費用(約70円)は別途となります
※ 概算費用: ハードウェアや SORACOM を始めとした各種サービスの概ねの費用 (送料などの付帯費用や無料枠適用は考慮しないものとしています)
このコンテンツの進め方
上から内容を読み進みながら作業を行なっていきます。また左サイドに追従する目次からページ内の移動が可能です。
本コンテンツは現状のままで提供され、株式会社ソラコムは、誤りがないことの保証を含め、明示であると黙示であるとを問わず、本コンテンツの記載内容につき、いかなる種類の表明も保証も行いません。
掲載情報の閲覧及び利用により、利用者自身、もしくは第三者が被った損害に対して、直接的、間接的を問わず、株式会社ソラコムは責任を負いかねます。
本コンテンツを実践する中で用意された機器、利用されたサービスについてのご質問は、それぞれの機器やサービスの提供元にお問い合わせをお願いします。機器やサービスの仕様は、本コンテンツ作成当時のものです。
株式会社ソラコムが提供する機器・サービスについてのご質問はフォームで受け付けております。機器・サービスご利用前の導入相談は https://soracom.jp/contact/ に、機器・サービスご利用開始後のサポートは、SORACOMユーザーコンソール内のサポートサイトから「リクエストを送信」(要ログイン)にてお問い合わせください。
Copyright (c) 2023 SORACOM, INC.
準備
本レシピを行うためには以下のものをご用意ください。
ハードウェア
品名 | 数量 | 価格 | 備考 |
[ソラカメ対応製品] ATOM Cam 2 | 1 | 約3,480円 | ATOM Cam Swing でも構いません。 |
パソコン | 1 | – | インターネット接続が可能でサイトへの接続が自由であること。 Google Chrome 等の最新ブラウザーが利用可能な事。 |
iOS または Android スマートフォン | 1 | – | ソラカメの登録作業に用いる ATOM アプリを App Store または Google Play からインストールします。OS 要件はアプリのインストールページに記載されています。 |
※ 金額はレシピ作成時となります。金額は税込み・送料別です。
ご購入について
ハードウェアは以下よりご購入いただけます。
その他必要なもの
必要なもの | 費用 | 作成方法など |
SORACOM アカウント | 無料※ | SORACOM アカウントの作成 |
AWS アカウント | 無料※ | AWS アカウントの作成 |
LINE アカウント | 無料※ | App Store、Google Play でインストールします |
※ アカウント作成・維持の費用の料金です。
すでに AWS アカウント持っている場合の確認事項
- ルートアカウントを利用する場合:特に確認すべき事項はありません。先に進んでください。
- IAM アカウントを利用する場合:東京リージョン(ap-northeast-1)内のサービスへの権限の有無を確認してください。
- 本資料では ap-northeast-1 を使用します。また、必要権限の解説およびサポートは致しかねますが、主に AWS Lambda、Amazon Rekognition、Amazon CloudWatch といったサービスへの権限、ならびに AWS IAM におけるロールの作成といった権限になります。
- AdministratorAccess ポリシーが割り当てられていれば完遂可能です (同ポリシーを割り当てたことによる影響については IAM アカウント管理者にご相談ください)
ソラカメが届いたら
Soracom Cloud Camera Services のカメラ (以降、ソラカメ) は ATOM アプリへ登録することでモーションなどのイベントを SORACOM API で取得できるようになります。まず ATOM アプリの利用開始、ソラカメの登録をしましょう。
※既に登録しているソラカメについてレシピを実施する場合は次へお進みください。
ATOM アプリの利用を開始する
以下の SORACOM ユーザードキュメントを参照して利用を開始してください。
ソラカメを登録する
以下の SORACOM ユーザードキュメントを参照して登録してください。
ソラカメのモーション検知を有効にする
以下の SORACOM ユーザードキュメントを参照してモーション検知を有効化してください。
ソラカメのデバイス ID を控える
ここからは SORACOM ユーザーコンソールで操作します。
SORACOM ユーザーコンソールにログインした後 [メニュー]>[ソラコムクラウドカメラサービス]>[デバイス管理]とクリックします。
今回イベントを通知したいソラカメの「デバイス ID」(12 桁の英数字) をコピーします。PC 上のメモ帳アプリなどへペーストしてください。控えたデバイス ID は後で使用します。
ユーザーコンソールからソラカメのイベントを確認する
今回イベントを通知したいソラカメの名前をクリックして、デバイス詳細画面へ遷移します。
デバイス詳細画面の「イベント」タブをクリックして、対象のソラカメのイベント一覧を確認します。更新アイコンで、最新のイベント一覧を取得できます。
ATOM アプリにてモーション検知の設定がされていれば、イベント画像が表示されています。画像の表示がない場合は、以下を確認してください。
- カメラの前でモーションが発生しているか (ゆっくりと手を振るなどしてみてください)
- ATOM アプリにてモーション検知の設定をしているか
SAM ユーザーを作成する
本レシピでは AWS Lambda から SORACOM API を呼び出してイベントを取得します。SORACOM API を外部から呼び出すには、SAM ユーザーの作成が必要です。
SORACOM ユーザーコンソールで [ユーザー名]>[セキュリティ]とクリックします。
[SAM ユーザー作成]をクリックします。
名前・概要を入力して[作成]をクリックします。
パラメータ | 値 |
名前 | SAM ユーザーを識別する任意の名前 (例: sccs-event-api) |
概要 | SAM ユーザーについての説明 (例: ソラカメのイベント API を実行する) |
SAM ユーザーの権限を設定する
作成した SAM ユーザー名をクリックします。
[権限設定]のタブより、[直接指定]の欄に以下をコピー & ペーストして、[保存]をクリックします。
{ "statements": [ { "api": [ "SoraCam:listSoraCamDeviceEventsForDevice", "OAuth2:authorize" ], "effect": "allow" } ] }
SAM ユーザーの認証キー ID、認証キーを控える
[認証設定]のタブより、[認証キーを生成]をクリックします。
[クリップボードにコピー]をクリックして、PC 上のメモ帳アプリなどへペーストしてください。認証キー ID、認証キーシークレットは後で使用します。
LINE Notify をセットアップする
LINE Notify の詳細については、LINE Notify のヘルプページを参照してください。
PC から以下の URL を開き、LINE Notify のセットアップを開始します。
[ログイン]をクリックします。
[QR コードログイン]をクリックし、スマートフォンの QR コードリーダーで読み取ります。案内に従ってログインしてください。
右上のメニューから[マイページ]をクリックします。
トークン発行の準備ができました。
LINE Notify のトークンを控える
[トークンを発行する]をクリックします。
トークン名を記入し、[1:1でLINE Notifyから通知を受け取る]を選択して[発行する]をクリックします。
[コピー]をクリックして、PC 上のメモ帳アプリなどへペーストしてください。LINE Notify のトークンは後で使用します。
AWS CloudShell を開く
AWS マネジメントコンソールより、右上の AWS CloudShell のアイコンをクリックします。
アプリケーションをデプロイする
(参考) デプロイするアプリケーションについての解説
このパートを読み飛ばして「デプロイするアプリケーションのコードをダウンロードする」へ進んでもレシピを達成できます。アプリケーションの内容やデプロイの仕組みを理解したい場合に参照してください。
デプロイのためのツールやアプリケーションのソースコードは GitHub のリポジトリに保管されています。
デプロイの仕組みについて
このアプリケーションは AWS Serverless Application Model (SAM) を利用して構築できます。先ほどユーザーを作成した SORACOM Access Management (SAM) とは異なりますので注意してください。
AWS Serverless Application Model (SAM) は AWS Lambda などの AWS のサービスについて設定の管理やデプロイをするためのフレームワークです。設定内容は YAML 形式のファイルなどに定義できます。また SAM CLI を用いて定義した設定どおりに AWS のサービスをデプロイできます。今回は設定内容をリポジトリ配下の template.yaml ファイルに定義しており、SAM CLI が既にインストールされている AWS CloudShell からデプロイします。デプロイの具体的な方法はこの後のパートで説明されます。
template.yaml の内容について
template.yaml の記法については AWS Serverless Application Model (SAM) のドキュメントを参照してください。今回のアプリケーションにおいては主に以下のような特徴があります。
- Resources セクションで AWS Lambda を使用するよう定義しています。
- Evnvironments – Variables プロパティでは AWS Lambda の環境変数を定義しています。Parameters セクションを参照させることで、アプリケーションのデプロイ時に環境変数の内容を指定できるようにしています。
- Events プロパティでは Amazon EventBridge から定期的に Lambda を実行するよう定義しています。
アプリケーションの内容について
sora_cam_event_notification ディレクトリ配下のファイルの意味を解説します。
- __init__.py: Python アプリケーションを作成するときに必要なファイルです。このアプリケーションにおいては中身はありません。詳細は Python の公式ドキュメントを参照してください。
- app.py: AWS Lambda へデプロイされるプログラムの 1 つです。Lambda が実行された時最初に実行されるプログラムです。以下 3 つを実行しています。
- soracom_api.py を実行してソラカメのイベント一覧を取得
- イベントがあった時、イベント発生時の画像をダウンロード
- イベントがあった時、line_notify.py を実行してダウンロードした画像を LINE Notify へ通知
- line_notify.py: LINE Notify にかんするコードが書かれたプログラムです。app.py から呼び出されます。
- soracom_api.py: SORACOM API にかんするコードが書かれたプログラムです。app.py から呼び出されます。
- requirements.txt: アプリケーションに必要なモジュールを記載。今回は画像ダウンロードのために `request` モジュールを利用します。アプリケーションのビルド時に参照されます。
デプロイするアプリケーションのコードをダウンロードする
以下のコマンドを AWS CloudShell へコピー & ペーストして、Enter キーを押して実行します。
git clone https://github.com/soracom-labs/sora-cam-event-notification.git
以下のような表示が確認できます。
[cloudshell-user@ip-10-2-16-157 ~]$ git clone https://github.com/soracom-labs/sora-cam-event-notification.git Cloning into 'sora-cam-event-notification'... remote: Enumerating objects: 13, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (11/11), done. remote: Total 13 (delta 0), reused 13 (delta 0), pack-reused 0 Receiving objects: 100% (13/13), 8.28 KiB | 2.76 MiB/s, done.
デプロイするアプリケーションのディレクトリへ移動する
以下のコマンドを AWS CloudShell へコピー & ペーストして、Enter キーを押して実行します。
cd sora-cam-event-notification/
以下のように、デプロイするアプリケーションのディレクトリへ移動し、”$” の前に “sora-cam-event-notification” が表示されるようになります。
[cloudshell-user@ip-10-2-68-8 ~]$ cd sora-cam-event-notification/ [cloudshell-user@ip-10-2-68-8 sora-cam-event-notification]$
アプリケーションをビルドする
ビルドとは、コードをもとにアプリケーションをデプロイできる状態にすることです。
以下のコマンドを AWS CloudShell へコピー & ペーストして、Enter キーを押して実行します。
sam build
緑色の文字で、以下のような表示があればビルドに成功しています。
Build Succeeded
アプリケーションをデプロイする
以下の手順でアプリケーションでデプロイすると、削除するまで毎分アプリケーションが実行されます。本レシピの達成後、不要であれば「あとかたづけと注意事項」を参照して削除してください。またいつでも同じ手順でデプロイできます。
以下のコマンドを AWS CloudShell へコピー & ペーストして、Enter キーを押して実行します。
sam deploy --guided
デプロイでは、ここまでに控えた認証情報などの入力を求められます。以下のように入力してください。
パラメータ | 意味 | 値 |
Stack Name [sam-app] | アプリケーションの名前 | SAM アプリケーションを識別する任意の名前 (例: sora-cam-event-notification) |
AWS Region [ap-northeast-1] | アプリケーションをデプロイする AWS リージョン | 東日本リージョンを指定します (例: ap-northeast-1) |
Parameter soracomAuthKeyId | SAM ユーザーの認証キー ID | 「SAM ユーザーの認証キー ID、認証キーを控える」で控えた認証キー ID (“keyId-” で始まります) |
Parameter soracomAuthKey [secret-xxxxxx] | SAM ユーザーの認証キー | 「SAM ユーザーの認証キー ID、認証キーを控える」で控えた認証キー (“secret-” で始まります) |
Parameter deviceId [XXXXXXXXXXXX] | ソラカメのデバイス ID | 「ソラカメのデバイス ID を控える」で控えたデバイス ID (12 桁の英数字) |
Parameter lineNotifyToken [replace it to your own token] | LINE Notify のトークン | 「LINE Notify のトークンを控える」で控えたトークン (長い英数字) |
Confirm changes before deploy [y/N] | デプロイ前の確認有無 | 何も入力せずエンターキーを押します |
Allow SAM CLI IAM role creation [Y/n] | SAM CLI に AWS IAM を作成させるかの確認 | 何も入力せずエンターキーを押します |
Disable rollback [y/N] | ロールバックを有効にするかの確認 | 何も入力せずエンターキーを押します |
Save arguments to configuration file [Y/n] | 設定をファイルに保存するかの確認 | 何も入力せずエンターキーを押します |
SAM configuration file [samconfig.toml] | 設定ファイル名の確認 | 何も入力せずエンターキーを押します |
SAM configuration environment [default] | SAM の環境 | 何も入力せずエンターキーを押します |
`Creating the required resources…` という表示の後、デプロイを開始します。デプロイには数分ほどかかります。
`Successfully created/updated stack – sora-cam-event-notification in ap-northeast-1` という表示が確認できれば、デプロイは完了です。
イベントの通知を確認する
ソラカメの前で動き (モーション) をすることで、LINE Notify へ通知されることを確認します。
あとかたづけと注意事項
本レシピでは継続的に費用がかかるサービスとして、AWS サービスを利用しています。
AWS サービスの削除
本レシピでは Amazon EventBridge で定期的に AWS Lambda を呼び出しています。不要であれば、以下の手順で削除してください。
- 東日本リージョンの AWS マネジメントコンソール へログインする
- 検索窓より “CloudFormation” を検索して開く
- 手順「アプリケーションをデプロイする」にて「Stack Name [sam-app]」で指定したアプリケーション名を選択する
- [削除] をクリックする
- [スタックの削除] をクリックする (削除完了には数分かかります)
SORACOM の SAM ユーザーの削除
SAM ユーザーの維持に課金は発生しませんが、不要であれば以下のドキュメントを参照して削除してください。
LINE Notify の連係解除
LINE Notify の連携維持に課金は発生しませんが、不要であれば以下の手順で削除してください。
- https://notify-bot.line.me/ja/ へアクセスする
- [ログイン]をクリックする
- [QR コードログイン]をクリックし、スマートフォンの QR コードリーダーで読み取る。案内に従ってログインする。
- 右上のメニューより、[マイページ]をクリックする
- 「連携中サービス」より作成した連携を探し、[解除]をクリックする
次のステップ
本レシピでは、モーション検知のイベントを取得して通知する仕組みを作りました。次のステップとして以下のような応用が考えられます。
- Amazon Rekognition などの画像分析サービスと組み合わせる
- 動画エクスポートの API を利用して、画像ではなくイベントを検知した周辺の動画を通知する
このように、クラウドへ接続したカメラを「眼」として活用することで、必要な時に必要な画像・動画を取得できます。是非いろいろなユースケースでご活用ください。