Armadilloフォーラム

Node-red でcsvファイルがどこに出力されているか?について

h1rohiromat

2024年12月10日 17時57分

==========
製品型番:Armadillo-IoT A6E
Debian/ABOSバージョン:3.20.3-at.4
カーネルバージョン:5.10.228-0-at #1-Alpin
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
大変お世話になっております。
WindowsPCにATDEの開発環境を構築、さらにその上にNode-Redをインストール、
Armadillo本体にModbus機器(電力計)を接続して、データ取得を試みております。
添付写真の構成にて、Node-Red上でデータ自体は取得できているのですが、これをcsvファイルとして
出力する部分で行き詰っております。

ブログ:Armadillo-640:Node-REDを使ってModbus通信でデータを収集しグラフ化する
https://armadillo.atmark-techno.com/blog/10899/12179
の手順に従って、各種設定していますが、Write Fileノードのなかの出力先のパス
(/root/data.csv)がどこにあるのか?(どうやってファイルの場所に辿り着けるのか?)
が理解できておらず、投稿させて頂いた次第です。

ちなみに、
1)ATDEのrootディレクトリ、Armadilloのrootディレクトリにcsvファイルが出力されていないこと
2)同ディレクトリに予め、”data.csv”というファイルを準備して、動作させても、ファイルの中に
 取得データが反映されないこと
3)ディレクトリ名を”HOME”などに変更し、1)、2)を試してもNGであること
までは確認しております。
素人の質問で恐れ入りますが、ご教授のほど、よろしくお願い申し上げます。

ファイル ファイルの説明
IMG_8619.jpg
コメント

at_reika.yamazaki

2024年12月10日 20時31分

お世話になっております。山崎です。

>WindowsPCにATDEの開発環境を構築、さらにその上にNode-Redをインストール、
このことから Node-RED はブログで紹介されている、set_node_red_serial.sh スクリプトを用いて、ATDE 上で動いていることと思います。
認識が間違っている場合はご指摘ください。

1)
write file ノードでは、「ファイル名」はフルパスで指定された場合はフルパスでアクセスします。そうではない場合は Node-RED プロセスの実行ディレクトリからの相対パスになります。

一点確認です。
添付いただいた画像には debugノードが接続されていますが、デバッグメッセージには何か表示されているでしょうか?
例えば ATDE 上で実行した場合は atmark ユーザで実行しているはずなので、Node-RED に権限がなく、以下のようなメッセージが表示されると思います。
"ファイルの追記処理が失敗しました: Error: EACCES: permission denied, open '/root/data.csv'"
上記が表示されている場合は、ファイルにアクセスできない状態だと思います。

2)
data.csv を予め用意する必要はありません。ファイルがない場合は作成します。
存在する場合は追記します。

3)
"/home/atmark/data.csv" で試してみてください。

以上、どうぞよろしくお願いいたします。

山崎様

大変お世話になっております。
早々にご回答ありがとうございました。
> このことから Node-RED はブログで紹介されている、set_node_red_serial.sh スクリプトを用いて、ATDE 上で動いていることと思います。
> 認識が間違っている場合はご指摘ください。
->上記のスクリプトは使用せずに、貴社マニュアル「armadillo-iotg-a6e_node-red-guide」のなかのp.33「3.7. Node-RED に接続する」
 に記載してある、パソコンの Web ブラウザから、http://:1880/ にアクセスして使用しております。

> 一点確認です。
> 添付いただいた画像には debugノードが接続されていますが、デバッグメッセージには何か表示されているでしょうか?
> 例えば ATDE 上で実行した場合は atmark ユーザで実行しているはずなので、Node-RED に権限がなく、以下のようなメッセージが表示されると思います。
> "ファイルの追記処理が失敗しました: Error: EACCES: permission denied, open '/root/data.csv'"
> 上記が表示されている場合は、ファイルにアクセスできない状態だと思います。
->こちらについては、デバックメッセージとして、modbus機器から取得したデータが一定時間ごとに表示されるのみで、失敗しました、といった
 エラーメッセージは特段表示されていないかったと思います。

> 2)
> data.csv を予め用意する必要はありません。ファイルがない場合は作成します。
> 存在する場合は追記します。
->承知しました。

> 3)
> "/home/atmark/data.csv" で試してみてください。
->確認ですが、ATDE上でset_node_red_serial.sh スクリプトを起動し、上記コマンドでファイルを開くという手順という意ですか?

以上、よろしくお願い申し上げます。 

at_reika.yamazaki

2024年12月11日 10時11分

お世話になっております。山崎です。

>->上記のスクリプトは使用せずに、貴社マニュアル「armadillo-iotg-a6e_node-red-guide」のなかのp.33「3.7. Node-RED に接続する」
> に記載してある、パソコンの Web ブラウザから、http://:1880/ にアクセスして使用しております。

「Node-RED 開発ガイド」をご使用いただいているのですね。ありがとうございます。

>> 3)
>> "/home/atmark/data.csv" で試してみてください。
>->確認ですが、ATDE上でset_node_red_serial.sh スクリプトを起動し、上記コマンドでファイルを開くという手順という意ですか?

こちらについては「Node-RED 開発ガイド」の手順を行っている場合は不要です。
追加で2点確認です。

1点目、
「Node-RED 開発ガイド」では 「3.2. インストールディスクを使用してセットアップを行う」という章で、A6E に Node-RED コンテナをインストールして使用しているのですが、こちらの手順は実行されましたか?

2点目、
「3.2. インストールディスクを使用してセットアップを行う」を実行している場合は、A6E 上で Node-RED が起動しています。
A6E 内のパス "/var/app/rollback/volumes/node-red/root/" というパスがあるか、またそのパスに data.csv が出来ているかをお確かめいただけますでしょうか?

以上、どうぞよろしくお願いいたします。

山崎様
> 追加で2点確認です。
> 1点目、
> 「Node-RED 開発ガイド」では 「3.2. インストールディスクを使用してセットアップを行う」という章で、A6E に Node-RED コンテナをインストールして使用しているのですが、こちらの手順は実行されましたか?
->はい、その手順でセットアップしました。
> 2点目、
> 「3.2. インストールディスクを使用してセットアップを行う」を実行している場合は、A6E 上で Node-RED が起動しています。
> A6E 内のパス "/var/app/rollback/volumes/node-red/root/" というパスがあるか、またそのパスに data.csv が出来ているかをお確かめいただけますでしょうか?
-> 該当ファイルがありました。こちらのパスに入るようになっているのですね。
 テキストエディタ(vi)で開いてみましたが、データも反映されているようです。

お忙しい中、ご教示、ありがとうございました。

at_reika.yamazaki

2024年12月11日 14時09分

お世話になっております。山崎です。

>該当ファイルがありました。こちらのパスに入るようになっているのですね。
> テキストエディタ(vi)で開いてみましたが、データも反映されているようです。

無事にファイルが確認できたということで良かったです。

こちらのファイルパスについて補足します。
Node-RED コンテナを起動させるための、コンテナ設定ファイルが A6E の "/etc/atmark/containers/node-red.conf" にあります。
このファイルの中に以下の記述があると思います。

add_volumes /var/app/rollback/volumes/node-red/root:/root

これは A6E 内の "/var/app/rollback/volumes/node-red/root" を Node-RED コンテナ内の "/root" として見えるようにボリュームマウントする記述になります。
この記述により、"/root/data.csv" に書いたファイルが、A6E 上の "/var/app/rollback/volumes/node-red/root/data.csv" に現れたという流れになります。

以上、どうぞよろしくお願いいたします。