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ノードの中身は以下のようにしました。
1 2 |
msg.localFilename = "/home/pi/csv_sample/20180901.csv"; return msg; |
Node-REDのデプロイを行い、準備ができました。
indectノードをクリックし、実行してみましょう。
一瞬「uploading」の文字が表示され、完了後に消えます。
dropboxの方で、正常にファイルが同期されていることを確認してください。
まとめ
Dropboxはクラウド上にデータを保持していますので、
WindowsやiPhoneなどにアプリを入れると、簡単にファイルが閲覧できます。
以下は、iPhoneアプリでCSVデータを表示しています。
injectノードの繰り返し設定を行うと、定期的にアップできます。
おまけ
その他のDropboxノードも試してみましょう。
更新通知取得
Dropboxのフォルダの更新情報を取得できます。
設定は、先程追加したDropboxの設定を選択するだけです。
ファイルをアップロードなどすると、デバッグタブに更新されたファイル名が表示されます。
Dropboxからラズパイへファイルのダウンロード
以下のようにノードを配置します。
ノードの設定を開き、これまで同様にDropboxの設定を選択します。
functionノードは以下のようにしました。
毎日ファイル名が変わるCSVファイルの場合は、リテラルの部分を変えて取得できそうですね。
1 2 |
msg.filename = "/20180901.csv"; return msg; |
実行すると、デバッグタブにファイルの中身が表示されます。
この文字列をファイルに保存すると良いと思います。