Armadilloフォーラム

Node-Red開発で接点出力初期値を1に変更したい

new_bee

2025年6月20日 9時15分

==========
製品型番:AG6221-C01Z
Debian/ABOSバージョン:3.19.1-at.3.20240527
カーネルバージョン:5.10.237-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
アットマークテクノ様
いつもお世話になっております。

現在NodeRedを使用して接点を使用した間欠を作成しております。
指定された時間のみカメラを起動したく考えているのですが、
DO1の初期値が0の為デプロイ後に指定時間外なのにカメラの電源が入ってしまっています。
初期値は1で通電せずに、処理を開始したいと考えております。
もし設定ファイル等で対応できるのであれば解決方法をご教授いただけると助かります。
初歩的質問で申し訳ありませんがよろしくお願い致します。

コメント

at_reika.yamazaki

2025年6月20日 9時33分

お世話になっております。山崎です。
こちら、DO1 の出力制御に使用しているノードは何になりますか?
使用するノードによっては初期出力を設定可能なものもあるのではと思います。
まずは使用しているノードが初期出力の値を設定可能かどうかご確認いただけますと幸いです。
以上、どうぞよろしくお願いいたします。

山崎様

いつもお世話になっております。
返信が遅くなり申し訳ありません。

inject ノードを使用して定期実行 ファンクションノードで時間判定を行いGPIOoutにてDO1A,B接点出力の間欠動作の構築しておりました。

初回起動時に判定を行い出力を非導通に変更するように修正しましたが
接点出力が0の為一瞬電源が入るのが気になったため対応できないかと考えております。

inject ノード以外を使用する方法などがありますのでしょうか?

初歩的質問で大変恐縮ですがよろしくお願い致します。

at_reika.yamazaki

2025年7月1日 10時49分

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

GPIO out ノードを使用しているということで了解です。
Node-RED 起動時に DO1 を 1 に設定するノードを追加するとどうなるでしょうか?
以下、設定方法です。

1. inject ノードを作成
「Node-RED起動の0.1秒後、以下を行う」にチェックして完了

2. exec ノードを作成
コマンドに「gpioset gpiochip5 2=1」を入力して完了
1 で作成した inject ノードの右側につなげる

こちらをデプロイしてお試しいただけますと幸いです。
以上、どうぞよろしくお願いいたします。

山崎様

いつもお世話になっております。

コンテナにgpioset をインストール後にデプロイしたところ以下が発生しました。

injectノードにつなげ右はデバッグにつないだのみです。
gpioset: error setting the GPIO line values: Device or resource busy

時間判定後にGPIO out ノードを使用しているのが原因でしょうか? 

ご確認の程宜しくお願い致します。

at_reika.yamazaki

2025年7月1日 17時13分

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

>コンテナにgpioset をインストール
すみません、node-red コンテナだと gpio ノードから操作するため、デフォルトで gpioset/gpioget コマンドは利用できなかったですね。インストールありがとうございます。
またパッケージですが、 apt install gpiod でインストールしたという認識ですが相違ないでしょうか?

つぎに、「resource busy」のエラーについてですが、すでに gpio out が動いているため、そちらがデバイスを掴んでしまいコマンドが届かない状態だと思います。
すみませんが、一度実行している「フローを無効化」→「デプロイ」をした後に、コンテナ内で gpioset gpiochip5 2=1が実行できるか確認していただけますか?

また、パッケージをインストールした場合は node-red の再起動でパッケージがインストール前のイメージに戻ってしまうため、以下のコマンドを参考にイメージを保存・更新してご使用ください。

podman commit node-red localhost/node-red:<使用している node-red コンテナイメージの version>

まずは上記ご確認いただけますと幸いです。
以上、どうぞよろしくお願いいたします。