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

2020年3月13日(金)
岡嵜 雄平

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:」が付いた行を有効化します。

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

おわりに

センサーで人を検知したら、Slackに通知するIoTシステムが完成しました。M5StackやAWSを使用したことで、ほんの僅かなプログラムでIoTシステムが構築できることをお分かりいただけたのではないでしょうか。

しかし、実際にこのIoTシステムを本番運用ことを想定したとき、いかにしてこのシステムをテストするか考えなければなりません。このシステムはセンサーが反応したとき初めて動作するので、愚直にテストするのであればテストのたびにセンサーの前で誰かに動いてもらってシステムの挙動を確認することになります。

また、判定に使用したセンサの値がSlackにしか残っておらず、このままではセンサの値の集計・分析が難しいという問題も残っています。このままではIoTシステムとして、少しナンセンスです。

そこで、次回はデータベースへセンサの値を記録するようクラウドアプリケーションを修正する方法を解説した後、mockmockを利用して、このクラウドアプリケーションを簡単にテストする方法をご紹介します。

次回もお楽しみに!

株式会社Fusic
mockmockの運用・開発を担当するエンジニア、AWS Certified Solutions Architect – Professional。山口県出身。高専卒業後、関西にて組込みソフトウェアの開発を数年間経験。その後、福岡へJターン転職。同時にWeb/IoTエンジニアにスキルチェンジした。プライベートでは2児の父。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています