y.shimizu
2025年6月3日 19時57分
==========
製品型番:AG9130-C03Z
Debian/ABOSバージョン:3.21.3-at.5
カーネルバージョン:5.10.235-1-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
お世話になっております。
node-redで、BLEの信号を受け取りたいと考えております。
BLE信号を受け取るために、BLE beacon scannerを使用したいと考えております。
必要なパッケージのインストールは行ったのですが、Node-red上で使用できず、BLE beacon Scannerのインストールの手順を教えていただけないでしょうか。
# 以下のリンクから、node-redのコンテナをインストールし、USBディスクを用いてA9E内にアップデートを行いました。 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-a9e/node-red-container podman exec -it node-red /bin/bash [コンテナ内]apt-get update && apt-get install -y bluetooth bluez libbluetooth-dev [コンテナ内]npm install --unsafe-perm node-red-contrib-noble
よろしくお願いいたします。
コメント
y.shimizu
podman commit node-red localhost/node-red:1.2.1 podman_start node-red
を実施しましたが、インストールしたnode-red上でインストールしたnodeが使用できませんでした。
追記の手順として、以下のような、confファイルを作成しました。
node-redのコンテナ内では、Bluetoothctlを実行できる状態になっております。
node-redのweb画面で、パレットの管理-ノードの追加から、BLE beacon Scannerを追加しましたが、スクリーンショット 2025-06-04 205117.pngのようになってしまいます。
対応策をご教示いただけますでしょうか。
また、A6Eのときにございました、https://armadillo.atmark-techno.com/resources/software/armadillo-iot-a6…
のような参考になるコンテナイメージファイルをいただけないでしょうか。
よろしくお願いいたします。
image="node-red:1.2.1" set_image "$image" set_network host add_devices /dev/gpiochip* add_devices /dev/i2c-* add_devices /dev/ttyrpmsg* add_hotplugs input ttyUSB video4linux set_command sleep infinity add_volumes /sys/class/leds/:/sys/class/leds/ add_volumes /sys/devices/platform/leds/leds:/sys/devices/platform/leds/leds/ add_volumes /sys/class/thermal/thermal_zone0/:/sys/class/thermal/thermal_zone0/ add_volumes /sys/bus/iio/devices/:/sys/bus/iio/devices/ add_volumes /etc/localtime:/etc/localtime:ro add_volumes /var/app/rollback/volumes/node-red/root:/root add_volumes /var/app/rollback/volumes/node-red/log:/log add_volumes /var/app/rollback/volumes/node-red/cert:/cert add_volumes /dev/shm:/dev/shm add_args --env=AT_SERIAL_NUMBER=$(device-info -s) add_args --env=EX_SSS_BOOT_SSS_PORT=/dev/i2c-6:0x48 add_args --env=OPENSSL_CONF=/etc/plug-and-trust/openssl11_sss_se050.cnf add_args --cap-add=NET_ADMIN add_ports 1880:1880 set_command node /usr/lib/node_modules/node-red/red.js
ファイル | ファイルの説明 |
---|---|
スクリーンショット 2025-06-04 205117.png |
at_reika.yamazaki
お世話になっております。山崎です。
node-red-contrib-blebeacon-scanner の詳細を確認したところ、以下のパッケージが必要とありました。
apt install -y make g++ libbluetooth-dev libudev-dev npm install @abandonware/noble
こちらの環境では上記のパッケージをインストールした後に、Node-RED の GUI から node-red-contrib-blebeacon-scanner を追加したところ、使用できることを確認しました。
インストール後にコンテナの更新、再起動後に、 node-red-contrib-blebeacon-scanner を追加して問題なく使用できるか試してみていただけますでしょうか?
以上、どうぞよろしくお願いいたします。
y.shimizu
教えていただいた方法で、Node-RED の GUI から node-red-contrib-blebeacon-scanner を追加することができました。
module not foundはでなくなりました。
ありがとうございます。
A9E周辺のBLEのメッセージを受信できることを期待し、
BLE Beacon Scannerにdebugのノード(debug2)を接続しました。
添付のスクリーンショットのようなフローを作成しましたが、debug2のログに表示がありませんでした。
ノードにauthrize erorがでていて、hci0がマウントされていないと思い起動ファイルにadd_volumesを書き加えました。
しかし、コンテナ内の/devを参照したところ、hci0のデバイスファイルが存在していませんでした。
マウントできていないのでしょうか。
想定される原因と解決方法を教えてください。
以下、node-red.conf
... add_devices /dev/gpiochip* add_devices /dev/i2c-* add_devices /dev/ttyrpmsg* add_hotplugs input ttyUSB video4linux set_command sleep infinity add_volumes /sys/class/leds/:/sys/class/leds/ add_volumes /sys/devices/platform/leds/leds:/sys/devices/platform/leds/leds/ add_volumes /sys/class/bluetooth/hci0:/sys/class/bluetooth/hci0 #ここ追加 add_volumes /sys/class/thermal/thermal_zone0/:/sys/class/thermal/thermal_zone0/ add_volumes /sys/bus/iio/devices/:/sys/bus/iio/devices/ add_volumes /etc/localtime:/etc/localtime:ro ...
ファイル | ファイルの説明 |
---|---|
スクリーンショット 2025-06-05 162443.png | node-redのフロー |
20250603_node-red.log | node-redコンテナのログ |
at_reika.yamazaki
y.shimizu
rootユーザでの実行とは、node-redの起動をrootユーザで実行するということでしょうか。
それとも、node-redコンテナの起動をrootユーザで実行するということでしょうか。
コンテナ内でhciconfig hci0 upを実行したときのコンテナのCLIを添付いたします。
root@a9e-test:~# hciconfig hci0 up root@a9e-test:~# hciconfig hci0 hci0: Type: Primary Bus: UART BD Address: FC:84:A7:51:FA:A9 ACL MTU: 1021:7 SCO MTU: 120:6 UP RUNNING RX bytes:285533 acl:0 sco:0 events:5065 errors:0 TX bytes:3656 acl:0 sco:0 commands:190 errors:0
koga
アットマークテクノの古賀(休日モード)です。
y.shimizuさん:
>コンテナ内でhciconfig hci0 upを実行したときのコンテナのCLIを添付いたします。
root@a9e-test:~# hciconfig hci0 up root@a9e-test:~# hciconfig hci0 hci0: Type: Primary Bus: UART BD Address: FC:84:A7:51:FA:A9 ACL MTU: 1021:7 SCO MTU: 120:6 UP RUNNING RX bytes:285533 acl:0 sco:0 events:5065 errors:0 TX bytes:3656 acl:0 sco:0 commands:190 errors:0
次のようにするとどうなるか、試してみていただけますか?
(1) コンテナ内で、次のコマンドを実行する
# hciconfig hci0 down # hciconfig hci0 up
(2) Node-RED エディタで、お使いのフローをデプロイし直す
もし、これで受信できるようになれば、別のお客様から相談を頂いて調査中の問題と同じ要因だと思われます。
ひとまず、切り分けのために上記を確認してみて頂けますと幸いです。
以上、お手数をかけまして恐縮ですが、どうぞ宜しくお願いします。
y.shimizu
node-red.conf内にadd_args --cap-add=NET_RAWを追記したところ、Node-red上で受け取ることができました。
Node-redコンテナを削除し、またコンテナを入れなおし改めて手順通り行いましたが受け取ることができなくなりました。
また、(1)(2)を行いましたが、Node-RED上のBLE beacon Scannerで反応がありません。
Node-RED上では添付の写真のように起動しているのように思えますが、接続しているデバックノードでは、何も表示がなされません。
また、Podman logs node-redでログを確認しましたが、問題なさそうに思えます。
a9e-test:~# podman logs node-red 1 Jan 00:00:17 - [info] Welcome to Node-RED =================== 1 Jan 00:00:17 - [info] Node-RED version: v4.0.2 1 Jan 00:00:17 - [info] Node.js version: v20.19.0 1 Jan 00:00:17 - [info] Linux 5.10.235-1-at arm64 LE 1 Jan 00:00:19 - [info] Loading palette nodes 9 Jun 02:03:16 - [info] Dashboard version 3.6.5 started at /ui 9 Jun 02:03:18 - [info] Settings file : /root/.node-red/settings.js 9 Jun 02:03:18 - [info] HTTP Static : /log > / 9 Jun 02:03:18 - [info] Context store : 'default' [module=memory] 9 Jun 02:03:18 - [info] User directory : /root/.node-red 9 Jun 02:03:18 - [warn] Projects disabled : editorTheme.projects.enabled=false 9 Jun 02:03:18 - [info] Flows file : /root/.node-red/flows.json 9 Jun 02:03:18 - [warn] --------------------------------------------------------------------- Your flow credentials file is encrypted using a system-generated key. If the system-generated key is lost for any reason, your credentials file will not be recoverable, you will have to delete it and re-enter your credentials. You should set your own key using the 'credentialSecret' option in your settings file. Node-RED will then re-encrypt your credentials file using your chosen key the next time you deploy a change. --------------------------------------------------------------------- 9 Jun 02:03:18 - [warn] Encrypted credentials not found 9 Jun 02:03:18 - [info] Server now running at http://127.0.0.1:1880/ 9 Jun 02:03:18 - [info] Starting flows 9 Jun 02:03:18 - [info] Started flows 9 Jun 03:36:45 - [info] Stopping flows 9 Jun 03:36:45 - [info] Stopped flows 9 Jun 03:36:45 - [info] Updated flows 9 Jun 03:36:45 - [info] Starting flows 9 Jun 03:36:45 - [info] Started flows
ファイル | ファイルの説明 |
---|---|
スクリーンショット 2025-06-09 124038.png |
y.shimizu
取得できました。
BLE Beacon Scannerのgithub(https://github.com/joeldavidw/node-red-contrib-beacon-scanner?tab=readm…)を参照したところ、
setcap cap_net_raw+eip $(eval readlink -f `which node`)の記述がありました。
これを実行し、コンテナの再起動を行い、以下の手順を行ったところNode-red内でBLEのメッセージの受信が行えました。
# コンテナ内 apt update apt install libcap2-bin setcap cap_net_raw+eip $(eval readlink -f `which node`) exit podman commit node-red localhost/node-red:1.2.1 podman podman_start node-red podman exec -it node-red /bin/bash hciconfig hci0 down hciconfig hci0 up rm /run/dbus/pid dbus-daemon --system /usr/libexec/bluetooth/bluetoothd & bluetoothctl [bluetooth]power on [bluetooth]scan on
ありがとうございました。
at_reika.yamazaki
お世話になっております。山崎です。
>setcap cap_net_raw+eip $(eval readlink -f `which node`)の記述がありました。
これを実行し、コンテナの再起動を行い、以下の手順を行ったところNode-red内でBLEのメッセージの受信が行えました。
報告ありがとうございます。無事に受信できたということで了解です。
一点確認ですが、こちらご使用の conf ファイルには、add_args --cap-add=NET_RAW
は追加済みという認識で相違ないでしょうか?
また、無事に動作したということで不要かもしれないですが、A9E 用の漏水監視システムコンテナを用意する予定です。
もし、リリースしましたら改めてご連絡致します。
以上、どうぞよろしくお願いいたします。
y.shimizu
はい。
confファイルに追加済みです。
以下、confファイルになります。
a9e-test:~# cat /etc/atmark/containers/node-red.conf image="node-red:1.2.1" set_image "$image" add_devices /dev/gpiochip* add_devices /dev/i2c-* add_devices /dev/ttyrpmsg* add_hotplugs input ttyUSB video4linux add_volumes /sys/class/leds/:/sys/class/leds/ add_volumes /sys/devices/platform/leds/leds:/sys/devices/platform/leds/leds/ add_volumes /sys/class/thermal/thermal_zone0/:/sys/class/thermal/thermal_zone0/ add_volumes /sys/bus/iio/devices/:/sys/bus/iio/devices/ add_volumes /etc/localtime:/etc/localtime:ro add_volumes /sys/class/bluetooth/hci0:/sys/class/bluetooth/hci0 #ここ追加 add_volumes /var/app/rollback/volumes/node-red/root:/root add_volumes /var/app/rollback/volumes/node-red/log:/log add_volumes /var/app/rollback/volumes/node-red/cert:/cert add_volumes /dev/shm:/dev/shm add_args --env=AT_SERIAL_NUMBER=$(device-info -s) add_args --env=EX_SSS_BOOT_SSS_PORT=/dev/i2c-6:0x48 add_args --env=OPENSSL_CONF=/etc/plug-and-trust/openssl11_sss_se050.cnf set_network host #ここ追加 add_args --cap-add=NET_ADMIN #ここ追加 add_args --cap-add=NET_RAW #ここ追加 add_ports 1880:1880 set_command node /usr/lib/node_modules/node-red/red.js
A9E 用の漏水監視システムコンテナを用意する予定とのこと、ありがとうございます。
ご連絡お待ちしております。
よろしくお願いいたします。
at_reika.yamazaki
y.shimizu
お世話になっております。
助言をいただきたいです。
現状の手順だと、Node-red上でBLE beacon scannerでBLEのメッセージを受け取るには、コンテナ内でbluetootnctlを起動しなければなりません。
これをスクリプトとして実行しているのですが、うまくいきません。
具体的には、node-red上のexecノードにてパスを設定しています。
injectノード ---- execノード
スクリプトの起動自体はできておりますが、node-redでBLE beacon scannerを使用するためには、node-redのフローを起動するたびにデプロイしないといけません。
node-REDのフローを毎回デプロイせずにble-beacon-scannerを起動させるためのアドバイスをいただけませんでしょうか。
このスクリプトは、node-red.confにadd_volumes /var/app/rollback/volumes/node-red/blescan.sh:/etc/blescan.shとして追加しております。
# blescan.sh #!/bin/bash echo "[blescan.sh] hci0 down" hciconfig hci0 down echo "[blescan.sh] hci0 up" hciconfig hci0 up echo "[blescan.sh] rm pid" rm /run/dbus/* echo "[blescan.sh] dbus start" dbus-daemon --system & sleep 5 echo "[blescan.sh] bluetooth start" /usr/libexec/bluetooth/bluetoothd & echo "[blescan.sh] sleep" sleep 10 echo "[blescan.sh]bluetoothctl off " bluetoothctl power off echo "[blescan.sh] power on" bluetoothctl power on echo "[blescan.sh] scan on" bluetoothctl scan on
at_shinya.koga
アットマークテクノの古賀です。取り急ぎ、一点確認させてください。
y.shimizuさん:
>助言をいただきたいです。
>
>現状の手順だと、Node-red上でBLE beacon scannerでBLEのメッセージを受け取るには、コンテナ内でbluetootnctlを起動しなければなりません。
>これをスクリプトとして実行しているのですが、うまくいきません。
>具体的には、node-red上のexecノードにてパスを設定しています。
>injectノード ---- execノード
…
>このスクリプトは、node-red.confにadd_volumes /var/app/rollback/volumes/node-red/blescan.sh:/etc/blescan.shとして追加しております。
このスクリプト(blescan.sh)を exec ノードで実行していらっしゃる、ということですね。
確認ですが、上記の exec ノードの前段にある inject ノードは、プロパティの「Node-RED起動の [] 秒後、以下を行う」を設定して、フローの起動時に自動実行されるように設定していらっしゃるでしょうか?
>スクリプトの起動自体はできておりますが、node-redでBLE beacon scannerを使用するためには、node-redのフローを起動するたびにデプロイしないといけません。
>node-REDのフローを毎回デプロイせずにble-beacon-scannerを起動させるためのアドバイスをいただけませんでしょうか。
フローの起動時に、inject ノード + exec ノードの組み合わせで blescan.sh が自動実行されるようにしていらっしゃるにも関わらず、フローをデプロイし直さないと BLE 受信できない、ということであれば、六つ前のコメントで書いた、他のお客様から相談を頂いて調査中の問題と同じ要因だと思われます:
https://armadillo.atmark-techno.com/forum/armadillo/25815#comment-20056
もし、同じ問題なのであれば、こちらで調査して解決出来次第、お知らせします。
お手数を掛けまして申し訳ありませんが、どうぞ宜しくお願いします。
y.shimizu
>このスクリプト(blescan.sh)を exec ノードで実行していらっしゃる、ということですね。
>確認ですが、上記の exec ノードの前段にある inject ノードは、プロパティの「Node-RED起動の [] 秒後、以下を行う」を設定して、フローの起動時に自動実行されるように設定していらっしゃるでしょうか?
はい。前段にinjectノードを設定し、プロパティの「Node-RED起動の [0.1] 秒後、以下を行う」フローの起動時に自動実行するように設定しております。
>フローの起動時に、inject ノード + exec ノードの組み合わせで blescan.sh が自動実行されるようにしていらっしゃるにも関わらず、フローをデプロイし直さないと BLE 受信できない、ということであれば、六つ前のコメントで書いた、他のお客様から相談を頂いて調査中の問題と同じ要因だと思われます
理解不足で申し訳ありません。
調査のほどよろしくお願いいたします。
at_reika.yamazaki
お世話になっております。山崎です。
一点試してみていただきたいことがあります。
作成していただいた blescan.sh ですが、コンテナの設定ファイル(node-red.conf)から直接実行するとどうなるか試していただけますと助かります。
以下手順です。
1. Node-RED 上から blescan.sh を実行するノードを無効にする
2以降の手順が有効か判断するため、一時的に無効にして、デプロイしてください。
2. blescan.sh の修正を以下のように修正
★が変更点です。
# blescan.sh #!/bin/bash echo "[blescan.sh] hci0 down" hciconfig hci0 down echo "[blescan.sh] hci0 up" hciconfig hci0 up echo "[blescan.sh] rm pid" rm /run/dbus/* echo "[blescan.sh] dbus start" dbus-daemon --system & sleep 5 echo "[blescan.sh] bluetooth start" /usr/libexec/bluetooth/bluetoothd & echo "[blescan.sh] sleep" sleep 10 echo "[blescan.sh]bluetoothctl off " bluetoothctl power off echo "[blescan.sh] power on" bluetoothctl power on #echo "[blescan.sh] scan on"★ #bluetoothctl scan on★ node /usr/lib/node_modules/node-red/red.js★ コンテナ設定ファイルで行っている set_command の内容を実行
3. コンテナの設定ファイル(node-red.conf)の set_command で /etc/blescan.sh を呼び出すように修正
#set_command node /usr/lib/node_modules/node-red/red.js★ set_command /etc/blescan.sh★
4. Node-RED コンテナの再起動
podman_start node-red
お手数をおかけして大変申し訳ありません。
これで、BLEのメッセージが受け取れるか試してみていただけますと幸いです。
以上、どうぞよろしくお願いいたします
y.shimizu
at_reika.yamazaki
お世話になっております。山崎です。
>ご提示いただいた手順を実行しましたが、BLEのメッセージは受信できませんでした。
了解です。ご確認ありがとうございます。
blescan.sh の修正ですが、念のため、以下のように変えても変化がないかご確認いただけますと助かります。
# blescan.sh #!/bin/bash echo "[blescan.sh] hci0 down" hciconfig hci0 down echo "[blescan.sh] hci0 up" hciconfig hci0 up echo "[blescan.sh] rm pid" rm /run/dbus/* echo "[blescan.sh] dbus start" dbus-daemon --system & sleep 5 echo "[blescan.sh] bluetooth start" /usr/libexec/bluetooth/bluetoothd & echo "[blescan.sh] sleep" sleep 10 #echo "[blescan.sh]bluetoothctl off " ★コメントアウト #bluetoothctl power off ★コメントアウト echo "[blescan.sh] power on" bluetoothctl power on #echo "[blescan.sh] scan on"★コメントアウト #bluetoothctl scan on★コメントアウト node /usr/lib/node_modules/node-red/red.js★ コンテナ設定ファイルで行っている set_command の内容を実行
他の手順については先にコメントした通りで大丈夫です。
お手数をおかけして申し訳ありませんが、どうぞよろしくお願いいたします。
y.shimizu
at_reika.yamazaki
y.shimizu
at_reika.yamazaki
2025年6月3日 20時16分
お世話になっております。山崎です。
実行コマンドをみたところ、パッケージのインストール後にコンテナイメージの更新がされていないため、コンテナを起動したときにインストール時のコンテナイメージが起動しているのではと思われます。
コンテナ内にパッケージをインストール後、コンテナから exit して、以下を参考にコンテナイメージの更新を試してください。
使用中のコンテナイメージのバージョンは、最新の場合は 1.2.1 になります。
更新後、コンテナを再起動して Node-RED 上でインストールした node が使用できるか確認してください。
再起動のコマンドは以下です。
以上、どうぞよろしくお願いいたします。