ElasticSearchを使用しRX65Nに接続されたセンサデータをAWSで可視化 - renesas-rx/amazon-freertos GitHub Wiki

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

  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 は起動していると課金されるので、使用しない場合は忘れずに削除してください