IoT Core(Lambdaとの接続)
ルールは、IoT Coreで受信したデータに対する処理を定義します。
IoT Coreのルールにアクセスして、右上の「作成」をクリックしてください。
ACTの作成
/check_point
というtopicでpublishされたデータのみをこのルールの対象とします。
以下の通り入力してください。
名前 |
check_point |
ルールクエリステートメント |
SELECT * FROM '/check_point' |
ルールクエリステートメント
画面をスクロールして「アクションの追加」をクリックしてください。
アクションの追加
「メッセージデータを渡すLambda関数を呼び出す」をクリックしてください。
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:」が付いた行を有効化します。
07 | pinMode(PIR_MOTION_SENSOR, INPUT); |
12 | int ret = digitalRead(PIR_MOTION_SENSOR); |
13 | if (ret != detected) { |
17 | // 検知したとき: Hello!と表示しクラウドへ送信 |
18 | M5.Lcd.fillScreen(TFT_BLUE); |
19 | M5.Lcd.setTextColor(TFT_WHITE, TFT_BLUE); |
20 | M5.Lcd.drawString("Hello!", 160, 120, GFXFF); |
23 | M5.Lcd.fillScreen(TFT_BLACK); |
24 | M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); |
25 | M5.Lcd.drawString("....", 160, 120, GFXFF); |
27 | sendDetected(detected); |
動作確認
M5Stackの電源をONし、センサーの前に手をかざすと、Slackへ通知が来ることが確認できました。
Slack
おわりに
センサーで人を検知したら、Slackに通知するIoTシステムが完成しました。M5StackやAWSを使用したことで、ほんの僅かなプログラムでIoTシステムが構築できることをお分かりいただけたのではないでしょうか。
しかし、実際にこのIoTシステムを本番運用ことを想定したとき、いかにしてこのシステムをテストするか考えなければなりません。このシステムはセンサーが反応したとき初めて動作するので、愚直にテストするのであればテストのたびにセンサーの前で誰かに動いてもらってシステムの挙動を確認することになります。
また、判定に使用したセンサの値がSlackにしか残っておらず、このままではセンサの値の集計・分析が難しいという問題も残っています。このままではIoTシステムとして、少しナンセンスです。
そこで、次回はデータベースへセンサの値を記録するようクラウドアプリケーションを修正する方法を解説した後、mockmockを利用して、このクラウドアプリケーションを簡単にテストする方法をご紹介します。
次回もお楽しみに!