Node-REDで温度などの時系列データをCSVファイルに保存する

Node-REDで温度などの時系列データをCSVファイルに保存する

はじめに

今回はTibbo-Piを使用して、温度や照度を取得します。
Node-REDを使い、そのデータを時系列でCSVファイルに保存していきます。

例えば、そのローカルに保存したCSVファイルをクラウド(Dropboxなど)へアップすると、
遠隔やスマホからデータを確認したり、ユーザと共有したりすることができます。
記事参考:Node-REDでCSVファイルをDropboxで共有する

 

温度情報をCSVファイルに保存する

まずはTibbo-Piから温度の情報を取得し、時系列にCSVファイルを保存します。
Tibbo-Piに温度センサー(#29)を設置します。

Node-REDで温度情報が取れるか、まずは確認してみましょう。
以下のようにデバッグタブに温度を出力するようにしてみます。

injectノードをクリックすると、デバッグタブに温度が表示されます。

この情報をCSV出力してみます。
CSVノードを配置します。

設定はそのままにします。

次にfileノードを使用します。

設定は以下のようにしました。
ファイル名は可変でも指定はできますが、ここでは固定で設定しました。(後述)
また、「メッセージの入力のたびに改行を追加」のチェックを外します。

フロー全体は以下のような感じです。
functionノードも使用し、CSVのデータに日付を追加します。

CSVデータ作成というfunctionノードの中身は以下になります。
現在日付を追加しているだけです。

これで完成です。実行してみましょう。
以下のファイルが作成され、中身は「日付」「温度」のようになっていることを確認してください。
クリックするたびにデータが追記されていきます。

/home/pi/csv_sample/20180901.csv

 

複数のセンサー情報を取得する方法

今度は、温度と照度、湿度のデータを同時に3つ取得し、時系列にCSVに出力します。
まずはTibbo-Piに、#28 照度センサ、#29 温度センサ、#30 温度/湿度センサを配置します。

Node-REDで、3つのデータが揃ったら、1行のCSVを出力します。
Node-REDのノードはこのように配置します。

詳しくは、最後にフローをjsonで公開していますので、読み込んで確認してください。
各センサーのデータを取得し、すべてのデータが揃った場合に、CSVデータ作成へ進みます。

フラグセット

センサーデータ取得

CSVデータ作成

実行すると、先程同様にCSVデータが出力されます。
出力されたCSVファイルをエクセルで開いてみました。
左から順に、日付、温度、湿度、照度の順で出力されています。

CSVファイル名を動的に変えたい場合は、functionノードを使用しましょう。

以下のように指定します。もちろん、日付をファイル名にすることも可能かと思います。
(fileノードで設定した「ファイル名」は空白にします)

フロー

補足

injectノードの繰り返しの設定を行うと定期的に出力することができます。