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つのフローでは動作が異なります。

 上のフローでは、Desktopに移動してからフォルダの作成が行われます。ちゃんとDesktopにexecフォルダが作成されていました。

 しかし下のフローでは、/home/piディレクトリにexecフォルダが作成されていました。どうやらexecノード毎にホームディレクトリで実行するような挙動になっているようです。

 ファイルのパスには要注意ですね。

gitコマンド

 git cloneとgit pullを試してみました。

▼execノードは引数を指定することができます。clone先のURLを渡しています。

▼実行すると、リポジトリがcloneされました。

 git pullも実行できました。

▼フローはこちら

▼Already up to dateと表示されています。

npmコマンド

 まずはnpm initコマンドを実行して、package.jsonを作成してみました。

▼npmフォルダを作成してから、npm initを実行します。

▼デバッグノードに結果が表示されています。

▼package.jsonが作成されていました。

 先程git cloneでインストールしたフォルダを、npmでインストールしてみました。

▼フローはこちら。こちらも引数にフォルダのパスを指定することで、injectノードからペイロードを送れば実行できます。

▼node_modulesフォルダと、package-lock.jsonが生成されています。npm installを実行すると用意されるものです。

Node-REDの再起動

 私の環境ではNode-REDをサービスとして起動しています。ノードを更新したときによく使うコマンドです。

▼以下のフローで再起動できます。

Pythonのプログラムを実行する

 今回はhelloと表示するだけの、hello.pyファイルを用意しました。

▼Pythonフォルダを/home/piディレクトリに作成しました。

▼print('hello')だけです。

▼コマンドで実行してみると、helloと表示されます。

 Pythonディレクトリに移動してからhello.pyを実行します。ファイル名を引数として渡すことで、複数のファイルがあっても実行しやすいようにしてみました。

▼フローはこちら。ファイル名を引数として渡しています。

▼実行してみると、デバッグ欄にもhelloと表示されました。

最後に

 普段使っているコマンドを実行できたので、便利に使えそうです。

 いつもディレクトリごとにLX Terminalを開いていたので、タスクバーが混雑していました。execノードでよく使うコマンドを用意しておけば、入力の手間が省けそうですね。

 これでNode-RED MCUの環境を用意するフローも作れるのでは?と思いつつ。

▼環境構築は大変なんですよね。そのおかげでコマンドに慣れてきたような気もしますが。

Node-RED MCUの環境を構築する(ESP-IDF v5.1.1対応版、Raspberry Pi)

はじめに  Moddable SDKがv4.2にアップデートされたことにより、Node-RED MCUの環境が大きく変化しています。特にESP-IDF v5に対応したことで、ESP-IDF v4のままだとエラ…

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です