赤外線センサーの結果をRaspberryPi 3 Model B+からAWS IoT経由でQuickSightでグラフ化するまで(その4) | そう備忘録

赤外線センサーの結果をRaspberryPi 3 Model B+からAWS IoT経由でQuickSightでグラフ化するまで(その4)

はじめに

赤外線距離センサーでカウントした値をブラウザでグラフ形式で表示するまでを試してみた時の備忘録。

赤外線距離センサー、RaspberryPiの設定に関してはその1の記事を参照の事。

Pythonのプログラムについてはその2の記事を参照の事

AWS IoT Coreの設定についてはその3の記事を参照の事

今回はAWS IoT Analyticsの設定についての記事とする。

なるべく分かりやすように丁寧に書いているつもりですが分かりづらい所や間違いがあればコメントを貰えるとありがたいです。

今回の記事の範囲(AWS IoT Analytics)

事前準備

RaspberryPi側でPythonのプログラムを動かして赤外線距離センサーの値をAWS IoT Coreにパブリッシュする状態にする。

またAWS IoT Coreの設定も済んでいる前提とする。

AWS IoT Analyticsの設定

AWS IoT Analyticsでチャネル、データストア、パイプライン、データストア、データセットの設定を行う。

IoT Analyticsの全体構成図

AWS IoT Analytics全体構成図

まずはAWSサービスメニューからIoT Analyticsを選択する。

AWS IoT Analyticsの選択

チャネルの登録

チャネルを登録する事によりAWS IoT Coreからの受け口が作成される。

左のメニューから”チャネル”を選択して「作成」ボタンをクリックする。

なお、下記の画面ショットは既にチャネルが一つ作成されているので初めてチャネルを作成する画面とは異なる。

チャネルの作成

  • チャネルID:chennel01
  • rawデータを保持する期間の設定:テストなので1年間を指定(デフォルトは無期限)

「次へ」をクリックする。

チャネルの作成 必要項目のセット

メッセージの表示

IoT Coreトピックフィルタにプログラム、AWS IoTCoreで指定したトピック(count/pub)を指定して「メッセージの表示」ボタンをクリックする。

トピックの設定とメッセージの表示

赤外線距離センサーの値がAWS IoT Coreを経由してリアルタイムにメッセージ表示される。

メッセージの受信

IAM※ロールの作成

※Identity and Access Managementの略

AWS IoT Coreがこのチャネルにアクセスする為のロールを作成する。

「新規作成」をクリックして

  • 名前:analytics-role01

として「ロールの作成」ボタンをクリックする。

ロールの新規作成

先程作成されたロールが選択されているので「チャネルの作成」をクリックする。

ロールの設定とチャネルの作成

ちなみに作成されたロールはAWSのメニューから”セキュリティ、ID、およびコンプライアンス”のIAMを選択してメニューから”ロール”をクリックすると表示される。

ロールの表示

作成されたロール

Channel01が作成された。

Channel01が作成された

データストアの作成

次にデータストアを作成する※

※パイプラインを先に作成して最後にデータストアを作成しても大丈夫。

メニューから”データストア”を選択して「作成」ボタンをクリックする。

データストアの作成

  • ID:datastore01
  • 処理済みデータを保持する期間の設定:テストなので1年間を指定(デフォルトは無期限)

「データストアの作成」をクリックする。

名前と期間の設定

datastore01が作成された。

データストアが作成された

パイプラインの作成

チャネルとデータストアを結びつけるパイプラインを作成する。

パイプラインではフィルターやLambda関数での計算が可能だが今回はパイプラインでは何もせずにチャネルとデータストアを結びつけるのみとする。

メニューから”パイプライン”を選択して「作成」ボタンをクリックする。

パイプラインの作成

  • パイプラインID:”pipeline01”
  • パイプラインソース:編集を選択して選択一覧から先ほど作成したchennel01を選択する

パイプラインの作成、パイプラインソースの選択

次へをクリックする。

次へをクリックする

AWS IoT Coreより受け取ったメッセージより自動的に項目名と属性が設定されるので「次へ」をクリックする。

尚、項目を一つづつ「新規追加」で手動で設定するかJSON形式でドキュメントをアップロードする事ができる(未検証)

メッセージの属性の設定

アクティビティ※は追加せずに「次へ」をクリックする。

※アクティビティではメッセージの属性の削除、追加、Lambda関数での計算、フィルターなどを追加することができるが今回は使用しない。

アクティビティの設定

  • パイプライン出力:先ほど作成したdatastore01を選択

「パイプラインを作成する」ボタンをクリックする。

パイプライン出力の設定とパイプラインの作成

パイプラインが作成された。

パイプラインが作成された

データセットの作成

データストアからSQL文を使ってデータを取り出すデータセットを作成する。

メニューから”データセット”を選択して「作成」をクリックする。

データセットの作成

タイプの選択で「SQLの作成」ボタンをクリックする。

SQL データセットの作成

  • ID:dataset01
  • データストアの選択:先ほど作成したdatastore01を選択

「次へ」をクリックする。

データセットの名前、データストアの選択

SQL文を必要に応じて編集して「次へ」をクリックする。

デフォルトでは”SELECT * FROM datastore01”と表示されているので、時系列でデータを取得したかったので” order by sk_date,sk_time,microsecond”を追加した。

SQL文の編集

データ選択フィルターは設定せずに「次へ」ボタンをクリックする。

データ選択フィルター

  • 頻度:1分毎(デフォルトはスケジュールされていません)

「次へ」ボタンをクリックする。

なお、頻度は最短で1分となっている。

他には5分、15分、20分、30分、毎時、毎日、毎週、毎月が選択可能だが最短でも1分なのでリアルタイムでデータを取り出したい要件などには向かないと思う。

またAWS QuckSightでグラフ化する際もStandard Editionで最短で毎日、Enterprise Editionでも最短で毎時なので、いずれにしてもリアルタイムで集計するのでは無くIoT機器でためた過去データをある程度まとめて読み込んで分析する様な要件向けのサービスだと思う。

頻度の設定

分析結果の設定はデフォルトの90日間のままで「データセットの作成」ボタンをクリックする。

分析結果の設定

1分毎にデータセットが更新されるdataset01が作成された。

データセットの作成

データの取り出し

データセットを実行してデータを抽出してみる。

上記で作成したdataset01を選択した後、アクションー>今すぐ実行をクリックする。

アクション、今すぐ実行

”データセットのクエリが正常に開始されました”とメッセージが表示されてしばらく待つと結果のプレビューが表示される。

結果のプレビュー

メニューで”コンテンツ”を選択すると結果のCSVが作成されているのでダウンロードする事ができる。

尚、当方の環境では画面が「作成中」のまま変わらなかったのでF5で更新したり、一度メニュー外で出た後戻ってきたりしたら正常に表示されていた。

コンテンツで結果の表示

尚、結果を表示して初めて気がついたのだが1番右に__dtの項目が自動的に追加されている。

どうやらこの項目はタイムスタンプとして使うためにIoT Analyticsが自動的に追加してくれる項目の模様。

IoT Analyticsを使うのであればPythonのプログラムでDateやTimeやmicrosecondを出力する必要は無かった事が後からわかった。

タイムスタンプの自動追加

動画

AWS IoT Analytics設定の様子を動画で解説している。

実際にAWS IoT Coreからデータを受信してIoT Analyticsで表示するまでを解説しているので見て欲しい。

つづき

AWS IoT Analyticsの設定はこれで終了。

次回はAWS QuickSightで上記データセットの値をグラフ化する。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。