• モノづくりとアイデアで暮らしを豊かに。『STAGEA』

    制作例(5)では、H10からAWS(正しくはAWS IoT)にMQTT形式でデータを送信することができました。
    AWS IoTは、データの受信だけを行うパッケージなので、単体ではそれ以上のことはできません。
    ここから、S3やRDSなどに橋渡しをすることで蓄積したり、Lambdaと連携して取得したデータの内容に合わせた処理を行うサービスプログラムを展開することで、機能します。
    ここでは、連携方法としては最も手軽なCloudWatchを使用して、こちらの図のようなダッシュボードを作っていきます。


    はじめに

    こちらの機能を使用するためには、H10がAWS IoTと連携できていなければなりません。
    製作例(5)AWSと連携するをご覧いただき、AWSマネジメントコンソール画面から[AWS IoT]->[テスト]で動作確認を予め済ませておく必要があります。


    準備

    (1)H10の電源を入れます。

    (2)AWSマネジメントコンソールを開き、IoT Core(AWS IoTのダッシュボード(設定画面)へのリンクをクリックします。
    AWS IoTの構築から時間が経過していたり、パソコンを買い換えた場合は、ショートカットのリンクが表示されないことがあります。
    AWSマネジメントコンソールの画面からIoT Coreの文字が見当たらない場合は、検索窓(ブラウザの検索窓ではありませんのでご注意ください。)にIoTと入力して表示される候補をクリックします。

    (3)AWS IoT画面の左カラムから[テスト]をクリックします。

    (4)H10の副MCUに書き込んだプログラム(Arduinoソフトウェア画面)の中で書いたトピック名を[トピックのフィルター]に入力し、[サブスクリプション]をクリックします。

    (5)制作例のサンプルプログラムをそのままお使いの場合、およそ1分ごとに測定値をアップロードしています。
    1分以内にデータが届きますので待ちます。

    このようなものが表示されたらデータは正しく届いております。
    動作の確認ができたら、CloudWatchと連携するための設定を行います。
    このままの画面で、次に進んでください。
    数分待ってもデータが届かない場合、製作例(5)AWSと連携する
    に戻って、設定やプログラムを見直してください。
    ・H10本体のジャンパピンは通常モードに戻されていますか。
    ・WiFiにアクセスするためのSSIDや、キー(パスワード)は、プログラムの中に正しく書かれていますか。
    ・AWSから発行された認証キーなどは、正しい場所に正しく記述していますか。
    ・SSIDやキー、認証キーなどをプログラムに書き込む際、誤って前後のダブルクォーテーション記号( ” )やバックスラッシュ記号( \ )を削除していませんか。
    ・バックスラッシュ記号( \ )を誤って削除した時、誤ってスラッシュ記号( / )に書き換えていませんか。
    ・エンドポイントのURLは、正しくコピーアンドペーストされていますか。


    CloudWatchの設定

    (1)MQTTの受信確認を行なった画面の左カラムから[ACT]->[ルール]をクリックします。

    (2)はじめて使う場合、次の画面が表示されるので、[ルールの作成]をクリックします。

    (3)ルールに名前を付けます。名前は自由に付けることができます。

    (4)[ルールクエリステートメント]の背景が黒の部分を次のように編集します。

    SELECT * FROM 'my_h10'

    SELECT * FROM ‘*********’の * 記号以外の部分は編集しないでください。
    * 記号の部分を、副MCUのプログラム内で記述したトピック名に書き換えます。

    (5)画面の中央よりやや下にある[]をクリックします。

    (6)[CloudWatch Logs にメッセージデータを送信する]を選択し、画面下の[アクションの設定]をクリックします。

    (7)【アクションの設定】画面が表示されるので、[新しいリソースを作成する]をクリックします。

    (8)CloudWatchの画面に切り替わります。
    [ロググループの作成]をクリックします。

    (9)蓄積するログを記録するストレージを作成します。
    ストレージの名称を入力して[作成]をクリックします。

    作成が成功すると、以下の画面が表示されます。

    CloudWatchは、新しいタブやウインドウで開いているはずですので、そのまま閉じます。

    (10)AWS IoTのアクション設定画面に戻ったら、図の赤枠の中にある更新ボタンを押します。

    更新ボタンを押すと、先ほど作成したロググループが選べる状態になるので、選択します。

    (11)次に ロール を作成します。
    ロールは、AWS IoTからCloudWatchにメッセージを届けるための橋渡し役のことです。
    AWS IoTやCloudWatchに限らず、Lambdaなども含めて全てのAWSサービスは、ロールを使わずに直接データをつなぎ込むことはできません。
    直接つなげる仕組みだと、セキュリティに穴があきやすくなるため、データの授受ができる役を限定して、役自体を信頼するように構築することで、高いセキュリティ性能と使いやすさを両立しています。

    画面内の[ロールの作成]をクリックします。

    (12)ロールに名前を付けます。自由に入力して[ロールの作成]をクリックします。

    (13)【ルールの作成】画面に戻るので、[ルールの作成]をクリックします。

    (14)ルールの一覧画面が表示されます。
    ここまでの操作で作成したルールの右端にあるメニューボタンを押し、表示されたリストから[有効化]をクリックします。

    (15)ステータスバーに「ルールは正常に有効化されました」と表示されれば、成功です。
    画面左上のAWSマークをクリックして、AWSマネジメントコンソール画面に戻ります。

    (16)AWSマネジメントコンソールの画面から、[CloudWatch]をクリックします。

    (17)左カラムの[ダッシュボード]をクリックします。

    (18)[ダッシュボードの作成]をクリックします。

    (19)自由に名前をつけます。

    (20)ヴィジェットのタイプを選ぶ画面が表示されます。
    ここでは[線]を選択し、[次へ]をクリックします。

    (21)[ログ]を選択して、[設定]をクリックします。

    (22)ヴィジェットの構築画面が表示されます。
    プルダウンメニューをクリックして、使用するデータを選択します。

    (23)(9)で作成したロググループを選択します

    (24)プログラムのようなものが書かれている部分に、以下の内容を記述し、[クエリの実行]をクリックします。

    fields @timestamp,TEMP,HUMI,CDS,NOISE,SMELL,HUMAN,CO,CO2
    | sort @timestamp desc
    | limit 20

    これは、要素[timestamp]を主系列に、TEMP,HUMI,CDS,NOISE,SMELL,HUMAN,CO,CO2の内容を最新の20レコード分リストアップしなさいという意味です。
    これを実行すると、以下のようにリストとして表示されます。

    [ログ]タブをクリックした時、このような表示が出ればAWS IoTとCloudWatchの連携は成功しています。


    (25)連携できていることが確認できたら、今度は以下のSQLを記述します。

    fields @timestamp,TEMP,HUMI,CDS,NOISE,SMELL,HUMAN,CO,CO2
    |stats avg(TEMP),avg(HUMI),avg(HUMAN) by bin(1m)

    (26)[クエリの実行]を押すと、以下のようにグラフ表示されます。

    ここでは、温度・湿度・人感センサの反応値の3つだけ表示させています。

    (27)[ヴィジェットの作成]をクリックします。
    CloudWatchのダッシュボードに、作成したヴィジェットがこのように追加されます。

    他のセンサーは、扱う数字が数千単位であるため、同じ画面で表示させると小さい数字の変動が埋もれてしまうため、別にヴィジェットを作ります。


    (28)画面上部にある[ヴィジェットの追加]をクリックし、(20)〜(27)を繰り返しながら、以下のクエリも登録していきます。

    fields @timestamp,TEMP,HUMI,CDS,NOISE,SMELL,HUMAN,CO,CO2
    |stats avg(SMELL),avg(CO2),avg(CO) by bin(1m)
    fields @timestamp,TEMP,HUMI,CDS,NOISE,SMELL,HUMAN,CO,CO2
    |stats avg(CDS) by bin(1m)

    (29)以下のように表示されたら、完成です。

    (30)最後に、画面上部にある[ダッシュボードの保存]をクリックします。
    この操作を忘れないでください。
    (29)のような画面が一度出ると安心しがちですが、ダッシュボードの保存を忘れると(20)以降の全ての操作を再度やり直すことになります。

    この画面のように、[ダッシュボードの保存]ボタンが無効表示になっていれば、ダッシュボードは保存されています。
    AWSマネジメントコンソール画面に戻り、再度CloudWatchにアクセスして、ダッシュボードを呼び出せば、いつでもこの画面を見ることができます。