概要

今までの計測値機能は同時に5つまでしか登録できませんでした。
データロガーなどの機器で出力されたCSVを計測値としてFlashAir IoT Hubに登録するには、LuaスクリプトでCSVファイルを読み込んでから登録する必要がありました。
直接CSVを計測値として登録できたら便利ですよね!

このチュートリアルではFlashAir上のCSVファイルの値を計測値の値としてIoT Hubにアップロードする手順について説明します。


  1. 事前に ご利用の流れを参考にFlashAirからFlashAir IoT Hubに接続出来る様に準備してください。
  2. FlashAirのルートフォルダ直下に upload_csv.luaがあることを確認してください。ない場合はIoT Hubサイト上部の「スクリプト」から最新スクリプトをダウンロードしてください。
  3. CONFIGに LUA_SD_EVENT=/upload_csv.luaを追記または書き換えます。
  4. FlashAirを抜き挿しするなどして、再起動します。
  1. アップロードするCSVを用意します。
    test.csv

    • 第1カラムは時刻情報に固定されており、名前に規定はありません。
    • 第2カラム以降で指定した名前はサーバで記憶され、累計で最大100種類のユニークなカラム名を指定できます。

  2. FlashAir上にCSVファイルをコピーして書き込みます。
  3. 表示するラベルをプルダウンから選択する。
  4. IoT Hubサイトの計測値(CSV)のグラフに値が表示されます。
    計測値
計測値(CSV)
  1. 追加/削除ボタン

    グラフを複数縦に並べて表示可能で、表示するグラフをボタンで追加/削除出来ます。グラフは最大10個まで追加可能です。

  2. ラベル

    CSVアップロードでは1行目2列目以降の値をラベル(グラフ上の凡例名)として自動的に登録しプルダウンに表示します。その際、ラベルの異なるCSVファイルをそれぞれアップロードすると、両方のラベルが登録されます。

    例: CSVの1行目が time,label001,label002time,label001,label003のCSVを登録した場合、ラベルとして label001,label002,label003の合計3個が登録される。

    ただし、ラベルは最大100個までなので、CSVアップロードによってそれを超える場合、登録ができません。

  3. ラベルリセット

    CSVファイルのラベルが全て登録されない=ラベル登録が失敗した場合、登録されたラベルをリセットします。ラベルリセット後、再度CSVファイルを修正し登録しなおしてください。

CSVダウンロード

今後追加予定です!

CSVの時刻フォーマットには以下のフォーマットがあります。

絶対時刻(RFC3339準拠の時刻を表す文字列)

CSVの例(JST(協定世界時+9時間)の場合)
time,label001,label002,label003,label004,label005
2018-06-12T08:40:00+09:00,10,20,2,15,26
2018-06-12T08:41:00+09:00,10,20,3,16,27
2018-06-12T08:42:00+09:00,10,20,4,17,28

相対時刻(CSV最終行の時刻をAPI実行時の時刻とし、そこからの相対時間(ミリ秒単位)を記録する)

CSVの例
time,label001,label002,label003,label004,label005
0,10,20,2,15,16
60000,10,20,3,16,17
120000,10,20,4,17,18

上記の例を9:00:00にアップロードした場合、上から 08:58:00, 08:59:00, 09:00:00の時刻として登録されます。

デフォルトは絶対時刻での登録となります。但し、組み込みボードや古いFlashAirのLuaなどで現在時刻を取得出来ず、CSVに埋め込めない場合は、サーバー側で時刻を補完する相対時刻を使用して登録します。

注意 相対時刻での登録を行う場合、ラベルリセット後過去時刻のデータが書き込めない場合があります。

CSVのアップロード(相対時刻)

相対時刻を用いてファイルアップロードしてみましょう。

  1. CSVを用意します。
    test_relative.csv

  2. Luaスクリプト upload_csv.luaを以下のように編集します。

    upload_csv.lua

    print("HTTP/1.1 200 Internal OK\n\n")
    local last_fname = ""
    local last_fpath = ""
    local last_modif = 0
    local last_moddir = 0
    local last_dirname = "/"
    local fpath = "/"
    local timestamp_type = "relative"
    • 8行目
      • "absolute"から "relative"に変更する。
  3. FlashAir上にCSVファイルをコピーして書き込みます。
  4. FlashAirを抜き挿しするなどして、再起動します。
  5. プルダウンから表示するグラフを選択すると、計測値(CSV)のグラフに値が表示されます。
    計測値