ソラコムでSoracom Cloud Camera Services「ソラカメ」のテクニカルディレクターの五十嵐です(ニックネーム:ash)。
今回は、高見が先日紹介したブログ記事「スマートプラグで「ソラカメ」やIoTデバイスの電源コントロール!(前編)」に引き続いての後編になります。
前回は「スマートプラグ」を利用して遠隔からソラカメやIoT機器の電源をON/OFFする方法について紹介しました。スマートプラグを利用することによって現場への駆けつけが不要になる一方で、IoT機器の状態については常に監視し続ける必要がありました。今回は、ソラカメを例にして、カメラが意図せずにofflineになった場合にスマートプラグのon/offをAPIを用いて自動で行う方法について紹介します。
SwitchBot プラグミニで、IoT機器の電源のoff/onの自動化
今回もこちらのスマートプラグ(型番:W2001400)を利用します。
こちらのスマートプラグはSwitchBotのAPI Key(API トークンとシークレット)を発行することで、APIを通してスマートプラグの操作が可能になります。SwitchBotのAPI トークンとシークレットを発行する方法の詳細についてはこちらのBlogを参照してください。発行したAPI Keyはプロフィール → 設定画面の開発者オプションからいつでも、確認/再発行が可能です。
API Keyを利用することによってSwitchBot APIを通して、スマートプラグを操作することが可能になります。
今回利用するのは次の2つのAPIになります。
- Get device list:登録されているスマートプラグの一覧取得に利用
- Send device control commands:登録されているスマートプラグのoff/onを操作するために利用
ソラカメAPI
ソラカメにも各種のAPIが用意されており、APIを通してソラカメを操作することが可能です。今回はカメラの一覧を取得するlistSoraCamDevices APIに含まれるカメラの接続状態を表すconnectedの値を利用して、オフライン(connected: false)のカメラの電源をoff/onします。SORACOMのユーザーコンソールではこちらの状態のところになります。
このステータスはカメラの定期的な通知が途絶えた場合にfalseになり、現状検知までの間隔は最大で約10分となっています。ソラカメのAPIを利用するためにはソラコムのAPI Key(API Key およびToken)が必要になります。ソラコムのAPI Keyの発行方法についてはこちらを参照してください。
アーキテクチャ
今回のアーキテクチャはこちらになります。AWS LambdaをAmazon EventBridge(Amazon CloudWatch Events)を利用して定期実行し、オフラインになっているカメラをlistSoraCamDevices APIを利用して検出し、オフラインになったカメラのスマートプラグをSwitchBotのapiを利用してoff/onします。
その際に、一つ課題となるのがカメラと、カメラにつながっているスマートプラグの紐付けです。今回はカメラの名前とスマートプラグの名前を一致させることでこの問題を解決しました。
今回利用したプログラムはこちらになります。処理の流れは以下のようになります。
デプロイ方法
まず git clone https://github.com/soracom-labs/sora-cam-sample-applications
とした後、そのディレクトリ内にあるsora_cam_smart_plug/.env.templateをsora_cam_smart_plug/.envにrenameして自身の環境に合わせた設定をします。
SORACOM_AUTH_KEY_ID="keyId-xxx" SORACOM_AUTH_KEY="secret-xxx" SWITCH_BOT_TOKEN="xxx" SWITCH_BOT_SECRET="xxx" CHECK_INTERVAL_MINUTES=30
- SORACOM_AUTH_KEY_ID: ソラコムのAPI Key
- SORACOM_AUTH_KEY: ソラコムのAPI Token
- SWITCH_BOT_TOKEN: SwitchBotのAPI Token
- SWITCH_BOT_SECRET: SwitchBotのAPI Secret
- CHECK_INTERVAL_MINUTES: Lambdaで定期的に監視する間隔(分)
.envの設定が終了したらAWS CDK for Pythonを利用して環境を構築を行います。AWS CDK toolkitおよびAWS CDK for Pythonの設定が完了している環境で、app.pyが置いてあるディレクトリで以下を実行してください。
cdk deploy
この様なpromptが表示されると思うのでy↩️でdeployが始まります。
deployが成功すれば、 設定したCHECK_INTERVAL_MINUTES分毎に、オフラインのカメラがあればカメラの対象のスマートプラグの電源がoff/onされます。詳細な結果はAmazon CloudWatch Logsから確認することができます。これで遠隔地にもいかず、さらには監視し続けることもなくIoT機器の電源を自動的にoff/onすることが可能になります。
その他注意事項
スマートプラグは利用法を間違うと大変危険なので、必ず付属の取扱説明書をよくお読みの上、正しく安全にご使用ください。CHECK_INTERVAL_MINUTESを短くすると短時間でoff/onを繰り返す可能性があるので、 こちらの値は慎重に設定してください。
監視が必要無くなった場合、cdk deployを実行したディレクトで下記を実行することによって、AWS環境を削除することができます。
cdk destroy
最後に告知です。
6月20日 15:00-15:50 にカメラを利用した見回り・点検業務、効率化に役立つ「現場のオペレーション改善に役立つカメラ活用とは?」オンラインセミナーを開催します。ソラカメを利用した現場オペレーションの改善事例の紹介を中心としたセミナーになっております。
7月5日〜7月6日にIoTカンファレンス「SORACOM Discovery 2023」を開催します。今回登場したソラカメだけではなく、IoTの今を知ることのできる2日間のカンファレンスです。ソラカメも実機やデモの展示、ワークショップを予定しておりますので、ぜひご来場ください。
― ソラコム 五十嵐 (ash)