TTN-AWSデータ蓄積システム
このページでは、TT NデータをAWSに蓄積していく手順をメモしています
<全体像>
TTN
|-----> AWS IoT Core (TTNからのデータを受信してIoT Analyticsに受け渡す役割)
|------> AWS IoT Analytics (データの保持・整形)
|-------> QuickSight (可視化)
<AWS IoT Analyticsのメニュー構造とその役割>
チャネル ----------- 窓口
パイプライン ------ 窓口とデータベースを繋ぐ
データストア ------ 整形前のデータの保持
データセット ------ 整形後のデータの保持
ノートブック
<その他の方法>
TTN -> Tago IO (簡単に表示ができるがメリット、グラフ等の公開も簡単)
TTN -> MQTT -> NODE-RED -> Influx DB -> Grafana (FloodNetはこの仕組みを採用している)
STEP1:TTNとAWSの連携方法
TTNで連携したいアプリケーションを選択する
”APIキー”メニューを選択する
”APIキーの追加”メニューを押す
任意の名前を入力
”APIキーの作成”を押し下げ
APIキーをコピーして保存
”インテグレーション”メニューから”AWS IoT”を選択する
”導入ガイド”をクリックしてそのページに飛ぶ
AWSリージョンから”アジアパシフィック、東京 (ap-northeast-1) ”を選ぶ
”コミュニティ”のタブを選ぶ
青いボタンを押す -> "スタックのクイック作成"ページに飛ぶ
任意のスタック名(例えばTTNのアプリケーション名)を入れる
Cluster Address -> eu1
Application ID -> TTNのアプリケーションIDを入れる
Application API Key -> 先に作成・保存したAPIキーを入力する
ボックをチェックして”スタックの作成”を押す
※ この後画面が移動して、スタックの作成に時間がかかる”CREATE_COMPLETE”が表示されたら完了
※この状態でTTNの当該アプリケーションからAWSにデータが垂れ流し状態となっている
STEP2:AWSの中にデータを格納する
IoT Analyticsに移動する
”リソースプレフィックス”に適当な名前をつけ、"リソースを作成” ボタンを押し下げる。これによって新しいデータセットやそれに関連するパイプラインやデータストアなどが作成される。
”データセット”メニューを選択すると、今作成したリソースが表示される。ただし、この状態ではデータを見にいくスケジュールが設定されていない(トリガーの欄に「トリガーが設定されていません。」の表示)ので、今作成したデータセット名のメニューを押す
”スケジュール”のタブを押し”選択”ボタンを押す
スケジュール設定画面に移るので、”15分毎”などの選択肢を選び”更新”ボタンを押す
IoT Coreに移動する
ペイロードの形式を確認するために”MQTTテストクライアント”メニューを選択する
”トピックをサブスクライブする” の ”トピックのフィルター”の欄に "lorawan/#" と入力して”サブスクライブ”ボタンを押す
該当するデバイス(デバイスIDで判断する)のペイロードが現れたらそのペイロードの構造を見て、必要なデータを特定する
別のタブを開き、IoT Coreのトップメニューから”メッセージのルーティング”から”ルール”を選択し、参考にするルールを選びそのSQLステートメントを表示させる
別のタブを開き、IoT Coreのトップメニューから”メッセージのルーティング”から”ルール”を選択し、”ルールを作成”ボタンを押す
”ルールのプロパティ”の作成画面が現れるので、適当なルール名(デバイス名など)を入力し、”次へ”ボタンを押す
SQLステートメントの欄に、サンプルコードをペーストして、必要な変更を加える(ペイロードの名前、DEV EIU)
ルールアクションの欄では、”IoT Analytics"を選択しチャンネル名には該当するチャンネル名(先ほど作成したものなど)を選択する。IAMロールは”新しいロールを作成”を押して、適当な名前(ルール名と同じ名前など)を入力する。この後、更新ボタンを2度ほど押してから、作成ボタンを押す
”確認と作成”画面で内容を確認し、”作成”ボタンを押すと新たなルールがリストに加わる
IoT Analyticsに再び戻る
正常にデータが格納されているか確認するために、データセットメニューの中から当該データセットを選択する
”コンテンツ”タブを選択して、データセットの名前を押して格納されたデータを確認する
STEP3:QuickSightの使い方
Quick Sightに移動する
”データセット”メニューに移動し、”新しいデータセット”のボタンを押して、”AWS IoT Analytics”のボタンを押すと、AWSに登録したデータリストが現れるので、そこから表示したいデータを選択する
次の画面では”データの編集/プレビュー”のボタンを押す
この状態だとタイムスタンプがLinux時間(1970/1/1からの累計秒で標準時)なので、それを西暦日本標準時に直すために、画面左上隅の”+追加”ボタンを押して、”計算フィールドを追加”を選択する
"date"など適当な名前をフィールドに”addDateTime(9, "HH", epochDate({timestamp}))”と入力して保存する
”発行して視覚化”ボタンを押すと、グラフなどを作成する画面に移行するので、グラフ形式やX軸、Y軸に表示するデータを選ぶなどして視覚化を行う
再び”データセット”メニューに戻り、”更新”のタブを押し、”新しいスケジュールの追加”ボタンを押して、頻度を”毎時”など選び、更新時間を毎時ちょうどなどのわかりやすい時間に設定して、保存する
参考資料