クラウドアプリケーションを構築してデータを送信しよう

IoT Core(Lambdaとの接続)
ルールは、IoT Coreで受信したデータに対する処理を定義します。
IoT Coreのルールにアクセスして、右上の「作成」をクリックしてください。
/check_pointというtopicでpublishされたデータのみをこのルールの対象とします。
以下の通り入力してください。
| 項目名 | 入力値 |
|---|---|
| 名前 | check_point |
| ルールクエリステートメント | SELECT * FROM '/check_point' |
画面をスクロールして「アクションの追加」をクリックしてください。
「メッセージデータを渡すLambda関数を呼び出す」をクリックしてください。
先ほど作成したLambda関数「check_point」を選択し、「アクションの追加」をクリックしてください。
アクションが追加されたことを確認し、「ルールの作成」をクリックしてください。
M5Stackのプログラムを修正
M5Stackのプログラムの「Secret.h」を開いて、以下定数を修正します。
| 項目名 | 入力値 |
|---|---|
| WIFI_SSID | お使いのWiFi環境のSSID |
| WIFI_PASSWORD | お使いのWiFi環境のパスワード |
| CLOUD_ENDPOINT | IoT Coreの設定で表示されるエンドポイント |
| ROOT_CA | IoT CoreのRoot CA |
| CERTIFICATE | ダウンロードした証明書のうち「xxxxxxxxxx-certificate.pem.crt」の内容 |
| PRIVATE_KEY | ダウンロードした証明書のうち「xxxxxxxxxx-private.pem.key」の内容 |
次に「M5StackCheckPoint」タブを開き、「TODO:」が付いた行を有効化します。
void setup() {
M5.begin();
M5.Power.begin();
setupWifi();
setupMqtt();
setupLcd();
pinMode(PIR_MOTION_SENSOR, INPUT);
}
void loop() {
// 検知状態を読み出し
int ret = digitalRead(PIR_MOTION_SENSOR);
if (ret != detected) {
// 検知状態が変化した場合
detected = ret;
if (detected) {
// 検知したとき: Hello!と表示しクラウドへ送信
M5.Lcd.fillScreen(TFT_BLUE);
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLUE);
M5.Lcd.drawString("Hello!", 160, 120, GFXFF);
} else {
// 検知していないとき
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);
M5.Lcd.drawString("....", 160, 120, GFXFF);
}
sendDetected(detected);
delay(1000);
}
}
動作確認
M5Stackの電源をONし、センサーの前に手をかざすと、Slackへ通知が来ることが確認できました。
おわりに
センサーで人を検知したら、Slackに通知するIoTシステムが完成しました。M5StackやAWSを使用したことで、ほんの僅かなプログラムでIoTシステムが構築できることをお分かりいただけたのではないでしょうか。
しかし、実際にこのIoTシステムを本番運用ことを想定したとき、いかにしてこのシステムをテストするか考えなければなりません。このシステムはセンサーが反応したとき初めて動作するので、愚直にテストするのであればテストのたびにセンサーの前で誰かに動いてもらってシステムの挙動を確認することになります。
また、判定に使用したセンサの値がSlackにしか残っておらず、このままではセンサの値の集計・分析が難しいという問題も残っています。このままではIoTシステムとして、少しナンセンスです。
そこで、次回はデータベースへセンサの値を記録するようクラウドアプリケーションを修正する方法を解説した後、mockmockを利用して、このクラウドアプリケーションを簡単にテストする方法をご紹介します。
次回もお楽しみに!
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- IoTシステムの概要を知り、実際にデバイスを動かしてみよう
- データをDynamoDBへ保存&mockmockによるIoTシステムのテスト方法
- PagerDutyのアプリ連携(Slack/JIRA/Custom Incident Action)
- Slackを独自アプリケーションで拡張する
- サーバーレスな事例が次々登場―ServerlessConf Tokyo 2016レポート
- Policy as Codeでインフラのコンプライアンスを自動実現! 「Pulumi CrossGuard」を活用してみよう
- PagerDuty Tips(Terraform/オンコール通知/インシデント分析)
- マイクロソフトが新Kinect発表、次世代版HoloLensにも活用?
- チェック・ポイント、最新脅威情報に基づくマネージドセキュリティサービスを提供開始
- 「K8sGPT」の未来と生成AIを用いたKubernetes運用の最前線









