Node-REDを使ってみる その1(execノード、Pythonプログラム実行)
はじめに
今回はNode-REDのexecノードを使ってみました。コマンドを実行できるノードです。
私はNode-RED MCUを先に使い始めたので、Node-RED自体はあまり使っていません。非常に便利なソフトウェアなので、使いこなしたいなと思っています。
なお、環境はRaspberry PiのNode-REDで実行しています。
▼Raspberry Pi 400を使っています。
▼先日、Node-RED Advent Calendar 2023にノードの作成について書きました。サーボモーター用のノードです。
https://qiita.com/background/items/9b820251aa9dda5a3167
▼今回はそのときのリポジトリを例として使います。
https://github.com/404background/node-red-mcu-servo
execノードを使ってみる
フォルダの作成
まずは動作確認のために、フォルダを作成してみました。基本的にはLX Terminalで実行する場合と同じなのですが、カレントディレクトリには注意する必要があります。
▼実行してみると分かるのですが、以下の2つのフローでは動作が異なります。
![](https://404background.com/wp-content/uploads/2023/12/20231217_19h28m09s_grim.png)
上のフローでは、Desktopに移動してからフォルダの作成が行われます。ちゃんとDesktopにexecフォルダが作成されていました。
しかし下のフローでは、/home/piディレクトリにexecフォルダが作成されていました。どうやらexecノード毎にホームディレクトリで実行するような挙動になっているようです。
ファイルのパスには要注意ですね。
gitコマンド
git cloneとgit pullを試してみました。
▼execノードは引数を指定することができます。clone先のURLを渡しています。
![](https://404background.com/wp-content/uploads/2023/12/20231225_21h34m27s_grim.png)
![](https://404background.com/wp-content/uploads/2023/12/20231225_21h57m32s_grim.png)
▼実行すると、リポジトリがcloneされました。
![](https://404background.com/wp-content/uploads/2023/12/20231225_21h34m34s_grim-1.png)
![](https://404background.com/wp-content/uploads/2023/12/20231225_21h34m16s_grim.png)
git pullも実行できました。
▼フローはこちら
![](https://404background.com/wp-content/uploads/2023/12/20231225_21h34m28s_grim.png)
▼Already up to dateと表示されています。
![](https://404background.com/wp-content/uploads/2023/12/20231225_21h34m34s_grim-2.png)
npmコマンド
まずはnpm initコマンドを実行して、package.jsonを作成してみました。
▼npmフォルダを作成してから、npm initを実行します。
![](https://404background.com/wp-content/uploads/2023/12/20231225_18h53m30s_grim.png)
▼デバッグノードに結果が表示されています。
![](https://404background.com/wp-content/uploads/2023/12/20231225_18h55m59s_grim.png)
▼package.jsonが作成されていました。
![](https://404background.com/wp-content/uploads/2023/12/20231225_18h53m11s_grim.png)
![](https://404background.com/wp-content/uploads/2023/12/20231225_18h53m07s_grim.png)
先程git cloneでインストールしたフォルダを、npmでインストールしてみました。
▼フローはこちら。こちらも引数にフォルダのパスを指定することで、injectノードからペイロードを送れば実行できます。
![](https://404background.com/wp-content/uploads/2023/12/20231225_18h55m58s_grim.png)
![](https://404background.com/wp-content/uploads/2023/12/20231225_21h39m54s_grim.png)
▼node_modulesフォルダと、package-lock.jsonが生成されています。npm installを実行すると用意されるものです。
![](https://404background.com/wp-content/uploads/2023/12/20231225_18h56m16s_grim.png)
![](https://404background.com/wp-content/uploads/2023/12/20231225_18h56m21s_grim.png)
Node-REDの再起動
私の環境ではNode-REDをサービスとして起動しています。ノードを更新したときによく使うコマンドです。
▼以下のフローで再起動できます。
![](https://404background.com/wp-content/uploads/2023/12/20231217_19h32m47s_grim.png)
Pythonのプログラムを実行する
今回はhelloと表示するだけの、hello.pyファイルを用意しました。
▼Pythonフォルダを/home/piディレクトリに作成しました。
![](https://404background.com/wp-content/uploads/2023/12/20231224_11h15m03s_grim.png)
▼print('hello')だけです。
![](https://404background.com/wp-content/uploads/2023/12/20231224_21h09m59s_grim.png)
▼コマンドで実行してみると、helloと表示されます。
![](https://404background.com/wp-content/uploads/2023/12/20231224_21h10m19s_grim.png)
Pythonディレクトリに移動してからhello.pyを実行します。ファイル名を引数として渡すことで、複数のファイルがあっても実行しやすいようにしてみました。
▼フローはこちら。ファイル名を引数として渡しています。
![](https://404background.com/wp-content/uploads/2023/12/20231224_21h11m46s_grim.png)
![](https://404background.com/wp-content/uploads/2023/12/20231224_21h11m33s_grim.png)
▼実行してみると、デバッグ欄にもhelloと表示されました。
![](https://404background.com/wp-content/uploads/2023/12/20231224_21h11m48s_grim.png)
最後に
普段使っているコマンドを実行できたので、便利に使えそうです。
いつもディレクトリごとにLX Terminalを開いていたので、タスクバーが混雑していました。execノードでよく使うコマンドを用意しておけば、入力の手間が省けそうですね。
これでNode-RED MCUの環境を用意するフローも作れるのでは?と思いつつ。
▼環境構築は大変なんですよね。そのおかげでコマンドに慣れてきたような気もしますが。
趣味的ロボット研究所をもっと見る
購読すると最新の投稿がメールで送信されます。