Node-REDでCSVファイルをDropboxで共有する

Node-REDでCSVファイルをDropboxで共有する

はじめに

ラズパイなどのローカルに保存したCSVファイルを、Dropboxへ共有します。
温度などの情報を、時系列にCSVファイルに保存する例は、以下の記事を参考にしてください。
記事参考:Node-REDで温度などの時系列データをCSVファイルに保存する

これにより、Tibbo-Piで温度などの情報を取得し、その情報を遠隔だったり、スマホから取得することができます。

本記事は、Tibbo-Piをもとに行いましたが、ラズパイなどの標準のNode-REDでも同様の手順で実現できるかと思います。
(特にTibbo-Piに特化した手順はありません)

 

事前準備

Dropboxのアカウントを作成してください。

無料プランでも十分に使えます。
2018.08時点:無料プランでも2GBまで利用可能
https://www.dropbox.com/individual

 

Node-REDにDropboxノードをインストール

Node-REDにDropboxのノードをインストールします。

ノードの追加をクリックし、「dropbox」と検索し、ノードを追加します。
今回は、以下を使用します。
・node-red-node-dropbox
https://flows.nodered.org/node/node-red-node-dropbox

警告が表示されますが、追加をクリックします。

Node-REDにdropboxノードがインストールされました。

 

Dropboxノードの設定

今回はCSVファイルをDropboxへアップロードしたいので、以下のノードを使用します。

Dropboxのノードの設定を開きます。
まずは、自分のDropboxアカウトとの連携を設定します。
以下の赤枠をクリックします。

大まかな手順が書いてありますので、これに従って進めます。

上記のリンクをクリックし、Dropboxのページへ遷移します。
未ログインの場合は、作成したアカウントでログインしてください。
以下のページが開きます。

以下のような感じで入力し、「create app」ボタンをクリックします。

次に開かれる画面で、「access token」を取得します。
Generateボタンをクリックすると、アクセストークンが表示されます。
この情報は他人へ知られないようにしてください。

Node-REDへ戻り、ノードの設定の「Access Token」へ先程取得した文字をコピーします。
追加ボタンをクリックします。

ローカルのファイルパスは、融通が利くように
ペイロードで動的に指定するので、何もせず設定を完了します。

ラズパイ上にCSVファイルを用意します。
そのフルパスを確認します。
今回は以下の場所にCSVファイルを置きました。

/home/pi/csv_sample/20180901.csv

以下のようにフローを配置しました。
injectノードとfunctionノードを使用します。

functionノードの中身は以下のようにしました。

Node-REDのデプロイを行い、準備ができました。
indectノードをクリックし、実行してみましょう。
一瞬「uploading」の文字が表示され、完了後に消えます。

dropboxの方で、正常にファイルが同期されていることを確認してください。

 

まとめ

Dropboxはクラウド上にデータを保持していますので、
WindowsやiPhoneなどにアプリを入れると、簡単にファイルが閲覧できます。

以下は、iPhoneアプリでCSVデータを表示しています。

injectノードの繰り返し設定を行うと、定期的にアップできます。

 

おまけ

その他のDropboxノードも試してみましょう。

更新通知取得

Dropboxのフォルダの更新情報を取得できます。

設定は、先程追加したDropboxの設定を選択するだけです。

ファイルをアップロードなどすると、デバッグタブに更新されたファイル名が表示されます。

 

Dropboxからラズパイへファイルのダウンロード

以下のようにノードを配置します。
ノードの設定を開き、これまで同様にDropboxの設定を選択します。

functionノードは以下のようにしました。
毎日ファイル名が変わるCSVファイルの場合は、リテラルの部分を変えて取得できそうですね。

実行すると、デバッグタブにファイルの中身が表示されます。
この文字列をファイルに保存すると良いと思います。