4.4 動作確認

Greengrassのデプロイ

アクション > デプロイを選択し、作成した構成をGreengrass上にデプロイします。

Greengrass

Cloud9上でAlertデバイスのプログラムを実行

Cloud9の画面に戻り、Alertデバイスの作業を行っていたターミナルから、以下の引数を自分の環境に合わせ、Alertデバイスのプログラムを実行します。

引数
thing-name 登録したセンサーのモノの名前 例) Alert
region 利用しているリージョン 例) ap-northeast-1
cd ~/environment/alert
python3.7 main.py --thing-name Alert --region ap-northeast-1

実行されると、以下のようなログが出力されます。

Performing greengrass discovery...
Trying core arn:aws:iot:ap-northeast-1:539325253908:thing/handson_20200501_Core at host 127.0.0.1 port 8883
Connected!
Subscribed to alert/# with QoS.AT_MOST_ONCE

アラートを発生させる

Cloud9のターミナルで、SensorとAlertのプログラムがそれぞれ別のタブで動いていることを確認してください。

Lambdaファンクションでは、load average 1の値が、しきい値0.3を超えるとAlertデバイスにメッセージを送信するように動いています。そこで、エラーを発生させるために、Cloud9で新しいターミナルを開いて、以下のコマンドを実行します。

yes > /dev/null

しばらく実行したままにするとCPU使用率が上がり、load average 1の値も上昇します。しきい値を超えたら、Alertデバイスの方に以下のようなログが出力されることを確認してください。

Alert!! Received message from topic 'alert/world': b'{"status": "alert", "value": 0.36}'
Alert!! Received message from topic 'alert/world': b'{"status": "alert", "value": 0.36}'
Alert!! Received message from topic 'alert/world': b'{"status": "alert", "value": 0.35}'

Lambdaファンクションでは環境変数のVALUEを参照してしきい値を設定しています。しきい値を変えたい場合は、GreengrassのLambdaの詳細を開き、環境変数にVALUEを追加し、新しいしきい値を設定してデプロイすると、変更することが可能です。この様に環境によって変わるような値は、環境変数経由で渡すことが出来ます。

この手順では、Sensorデバイスからメッセージを受け取ったLambdaが、メッセージのデータが指定されたしきい値を超えると、Alertデバイスに通知させることを設定しました。

例えば、工場やスマートホームのデートウェイデバイスで、様々なセンサーから上がってくるデータを判断しながらアクションを起こすことが出来ます。つまり、クラウドに常にデータを送らなくてもローカルで判断して処理を行えます。

この手順での作業は以上となります。