Skip to content

ElasticSearchを使用しRX65Nに接続されたセンサデータをAWSで可視化

kazuki.mochizuki edited this page Mar 27, 2020 · 1 revision

チュートリアルを完了する

  1. デバイスをAWS IoTに登録する
  2. Amazon FreeRTOSをダウンロードする
  3. Amazon FreeRTOSを設定する
  4. Amazon FreeRTOSを実行し、RX65NをAWS IoTに接続する

シャドウのサンプルプログラムの動作確認を完了する

  1. シャドウを使用しAWSからRX65Nを制御

センサデータアップロードのサンプルプログラムの動作確認を行う

  • センサデータアップロードのサンプルプログラムは Renesas RX65N Cloud Kit で動作確認を行います

  • Renesas RX65N Cloud Kit には以下の3種類のセンサが実装されているので、これらのセンサから取得したデータをAWSにアップロードします。

    • Light Sensor (ISL29035)
    • Environmental Sensor (BME680)
    • Inertial Sensor(BMI160)

動作させるサンプルプログラムの変更

  • e2 studio のプロジェクトエクスプローラーから、aws_demos -> application_code -> common_demos -> source -> aws_demo_runner.c を開く

  • aws_demo_runner.c の以下のソースコードを変更する
    • vStartRenesasSensorDataUploadDemoTask() を新規に作成する
// aws_demo_runner.c[変更前]
/* extern void vStartDeviceDefenderDemo( void ); */
/* extern void vStartGreenGrassDiscoveryTask( void ); */
/* extern void vStartMQTTEchoDemo( void ); */
/* extern void vStartOTAUpdateDemoTask( void ); */
extern void vStartShadowDemoTasks( void );
/* extern void vStartSimpleTCPServerTasks( void ); */
/* extern void vStartSubpubDemoTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SeparateTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SingleTasks( void ); */

/*-----------------------------------------------------------*/

/**
 * @brief Runs demos in the system.
 */
void DEMO_RUNNER_RunDemos( void )
{
    /* vStartDeviceDefenderDemo(); */
    /* vStartGreenGrassDiscoveryTask(); */
    /* vStartMQTTEchoDemo(); */
    /* vStartOTAUpdateDemoTask(); */
    vStartShadowDemoTasks();
    /* vStartSimpleTCPServerTasks(); */
    /* vStartSubpubDemoTasks(); */
    /* vStartTCPEchoClientTasks_SeparateTasks(); */
    /* vStartTCPEchoClientTasks_SingleTasks(); */
}
// aws_demo_runner.c[変更後]
/* extern void vStartDeviceDefenderDemo( void ); */
/* extern void vStartGreenGrassDiscoveryTask( void ); */
/* extern void vStartMQTTEchoDemo( void ); */
/* extern void vStartOTAUpdateDemoTask( void ); */
/* extern void vStartShadowDemoTasks( void ); */
/* extern void vStartSimpleTCPServerTasks( void ); */
/* extern void vStartSubpubDemoTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SeparateTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SingleTasks( void ); */
extern void vStartRenesasSensorDataUploadDemoTask( void );

/*-----------------------------------------------------------*/

/**
 * @brief Runs demos in the system.
 */
void DEMO_RUNNER_RunDemos( void )
{
    /* vStartDeviceDefenderDemo(); */
    /* vStartGreenGrassDiscoveryTask(); */
    /* vStartMQTTEchoDemo(); */
    /* vStartOTAUpdateDemoTask(); */
    /* vStartShadowDemoTasks(); */
    /* vStartSimpleTCPServerTasks(); */
    /* vStartSubpubDemoTasks(); */
    /* vStartTCPEchoClientTasks_SeparateTasks(); */
    /* vStartTCPEchoClientTasks_SingleTasks(); */
    vStartRenesasSensorDataUploadDemoTask();
}
  • 下記ファイルを解凍して ${base_folder}\demos\renesas\rx65n-cloud-kit-uart-sx-ulpgn\common\application_code に格納

rx65n_cloud_kit_sensor_upload_demo.zip

  • e2 studio 上でプロジェクトエクスプローラーの aws_demos を右クリックしてから、プロパティを開く

  • 表示される画面から、C/C++ビルド -> 設定 -> Compiler -> ソース を開く

  • インクルード・ファイルを検索するフォルダの追加ボタンを押す

  • 表示される画面で、ディレクトリーに "${workspace_loc:/${ProjName}/application_code}" を入力して OK をクリックし、Apply and Close をクリック

RIIC FITモジュールのインストール

  • e2 studio のプロジェクトエクスプローラーから、aws_demos.scfg をダブルクリック

  • スマートコンフィグレータの画面下部から、コンポーネントを選択

  • コンポーネントの追加をクリック

  • 他のソフトウェアコンポーネントをダウンロードするをクリック

  • すべて選択をクリックして、ダウンロードをクリックするこにより、最新版のRDPをダウンロード

  • r_riic_rx を選択して終了をクリック

  • コンポーネントで r_riic_rx を選択してから、右のプロパティで RIIC0 にチェックを入れてから、SCL0端子とSDA0端子にチェックを入れる

  • 端子タブをクリック

  • ハードウェアリソースで RIIC0 をクリックしてから、右の端子機能で SCL0 に P12、SDA0 に P13が割り当てられていることを確認

  • 右上のコードの生成をクリック

  • src -> smc_gen 以下に r_riic_rx が生成されていることを確認

標準ライブラリの追加

  • e2 studio 上でプロジェクトエクスプローラーの aws_demos を右クリックしてから、プロパティを開く
  • 表示される画面から、C/C++ビルド -> 設定 -> Library Generator -> 構成 を開いて、math.h にチェックを入れて Apply and Close をクリック

プロジェクトのビルド

  • プロジェクト -> すべてをビルド -> 0 errors を確認

Amazon Elasticsearch Service のドメインを作成する

  • AWS マネジメントコンソールから、すべてのサービス -> 分析 -> Elasticsearch Service をクリック

  • 新しいドメインの作成をクリック

  • 開発およびテストにチェックを入れて、Elasticsearch のバージョンを 7.1 に設定する。その後、次へをクリック

  • Elasticsearch ドメイン名を入力してから、インスタンスタイプを t2.small.elasticsearch に変更して下へスクロール

  • 次へをクリック

  • パブリックアクセスを選択してから、下へスクロール

  • ドメインアクセスポリシーをカスタムアクセスポリシーに設定、IPv4アドレスを選択、自身のPCのグローバルIPアドレスを入力してから、許可に設定する(グローバルIPアドレスはインターネットで「グローバルIPアドレス 確認方法」でサーチして確認する)

  • 次へをクリック

  • 確認画面で内容を確認してから、確認をクリック

  • Elasticsearch のドメインが作成されます。ドメインのステータスがアクティブになるまで10分程度かかります。

Kibana を設定する

  • ドメインのステータスがアクティブになったら、Kibana のURLにアクセス

  • 以下のような画面が表示されたら、Explore on my own をクリック

  • 左側のメニューから、Dev Tools をクリック

  • Get to work をクリック

  • 左側のコンソールに以下のコードを入力
PUT /sensor?include_type_name=true
{
  "mappings": {
    "sensor": {
      "properties": {
        "timestamp": {
          "type": "long",
          "copy_to": "datetime"
        },
        "datetime": {
          "type": "date",
          "store": true
        },
        "temperature": {
          "type": "long"
        },
        "light": {
          "type": "long"
        },
        "humidity": {
          "type": "long"
        },
        "pressure": {
          "type": "long"
        },
        "accel": {
          "properties": {
            "x": {
              "type": "long"
            },
            "y": {
              "type": "long"
            },
            "z": {
              "type": "long"
            }
          }
        },
        "gyro": {
          "properties": {
            "x": {
              "type": "long"
            },
            "y": {
              "type": "long"
            },
            "z": {
              "type": "long"
            }
          }
        }
      }
    }
  }
}
  • コンソール右上の click to send request をクリック

  • 以下のレスポンスが返却されることを確認
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "sensor"
}

IoT Rule を設定する

  • IoT Core コントロールパネルに移動して、ACT -> ルール -> ルールの作成 をクリック

  • ルールの名前を入力してから、ルールクエリステートメントに以下のコードを入力

SELECT *, timestamp() as timestamp FROM 'freertos/demos/sensor'
  • アクションの追加をクリック

  • Amazon Elasticsearch Service にメッセージを送信するを選択してアクションの設定をクリック

  • ドメイン名に Amazon Elasticsearch Service で作成したドメイン名を入力して、ID に${newuuid()}、索引にsensor、タイプにsensorを入力する

  • ロールの作成をクリックしてから、ロールの名前を入力してロールの作成をクリックする

  • 作成したロールが選択されていることを確認してから、アクションの追加をクリック

  • アクションが追加されたことを確認してから、ルールの作成をクリック

RX65N に Amazon FreeRTOS をダウンロード

  • e2 studio 画面右上の虫アイコンを押す

  • パースペクティブの切り替えの確認は「はい」を選択

  • PowerON_Reset_PC の下側に緑色の帯(プログラムカウンタの現在位置)が表示されることを確認

RX65N で Amazon FreeRTOS を実行

  • Restart ボタンを押す

  • main() にブレークすることを確認する

  • Restart ボタンを押す

Kibana でセンサデータを可視化

  • Kibana に移動して、左のメニューから Management をクリックする

  • Index Patterns をクリックしてから、Index pattern に sensor と入力して、> Next step をクリックする

  • Time Filter field name に datetime を選択してから、Create index pattern をクリックする

  • 左のメニューから Visualize をクリックする

  • Create a visualization をクリックする

  • Line をクリックする

  • sensor* をクリックする

  • 右上のカレンダーマークから、Refresh every を 5 seconds に設定して Start をクリックする

  • Metrics で Y-Axis の Aggregation を Average、Field を light に設定する

  • Buckets で X-Axis の Aggregation を Date Histogram、Field を datetime、Interval を Second に設定する

  • Apply changes をクリックする

  • センサデータのグラフを確認する。Renesas RX65N Cloud Kit に手をかざすことで光センサの値が小さくなることを確認する

Amazon Elasticsearch Service について

  • Amazon Elasticsearch Service は起動していると課金されるので、使用しない場合は忘れずに削除してください

ホーム

  1. Home

開発環境

  1. 開発環境を揃える
  2. 開発環境を使う
  3. CS+を使う

チュートリアル

  1. デバイスをAWS IoTに登録する
  2. Amazon FreeRTOSをダウンロードする
  3. Amazon FreeRTOSを設定する
  4. Amazon FreeRTOSを実行し、RX65NをAWS IoTに接続する

AWSの各種サービスを使用する

  1. シャドウを使用しAWSからRX65Nを制御
  2. ElasticSearchを使用しRX65Nに接続されたセンサデータをAWSで可視化
  3. Lambdaを使用しAWS経由でRX65N間のM2M通信

Tracealyzerの活用

  1. Tracealyzerの活用

OTAの活用

  1. OTAの活用

Amazon FreeRTOSのシステムに関する考察

  1. ソフトウェアアーキテクチャ
  2. 機能ブロックとAPIプロトタイプ
  3. RXマイコンにおける実装(システムタイマとソフトウェア割り込み)
  4. スリープ機能
  5. タスク切り替えと割り込み発生時のレイテンシ
  6. ネットワークインタフェースとデバイスドライバの結合
  7. Amazon FreeRTOS Qualification Program
  8. Amazon FreeRTOS ROM/RAM容量考察
  9. Amazon FreeRTOS でFreeRTOS+TCPのみ使う方法
  10. シミュレータで動作させる
  11. 乱数生成

Amazon FreeRTOSの通信性能に関する考察

  1. TCP/IP層の通信性能評価
  2. RX65N内蔵セキュリティIPを活用したSSL/TLS層の通信性能評価
  3. Tracealyzerを用いた通信中のCPU負荷率評価

セキュリティに関する考察

  1. RX65N内蔵セキュリティIP Trusted Secure IP
  2. モノの証明書に紐づく秘密鍵等の重要データをTrusted Secure IPで秘匿する方法
  3. SSL/TLS通信のマスターシークレットをTrusted Secure IPで秘匿する方法
  4. セキュアブート/セキュアアップデートの実現方法
  5. NIST FIPS140-2 CMVPとTrusted Secure IP
  6. Trusted Secure IP と Arm TrustZone
  7. EEMBC SecureMark
  8. Trusted Secure IPの暗号処理性能評価

無線モジュールに関する考察

  1. ESP32

Amazon FreeRTOS 関連外部リンク集

  1. Amazon FreeRTOS
  2. Amazon FreeRTOS の使用開始
  3. Amazon FreeRTOS ドキュメント
    1. Amazon FreeRTOS ユーザーガイド
    2. Amazon FreeRTOS API リファレンス
    3. FreeRTOS カーネルリファレンスマニュアル
    4. FreeRTOS カーネル開発者ガイド
Clone this wiki locally