xs-devでRaspberry PiにNode-RED MCUの環境を構築する

はじめに

 今回はRaspberry PiにNode-RED MCUの環境を構築してみました。

 少し前に発売された書籍での方法とは違って、xs-devを使っています。構築が楽になるそうですが、コマンドラインには慣れないので苦戦しました...

 マイコンにプログラムを書き込んで動作確認はできたので、その手順を紹介します。

サポートページにて、バージョンアップデート後の環境構築について記載されています!

これから環境を構築する際はご確認ください。

はじめてのNode-RED MCU Edition ビジュアルプログラミングでマイコンを動かそう! (kohgakusha.co.jp)

※バージョンのアップデートに合わせて、補足書も出版されています。11月11日版は私も執筆させて頂きました。

https://techbookfest.org/product/b3T2EQ7Sw4BGzjwvv1ak1K?productVariantID=6KyS0CyiTvYmyBZDtLb4Uh

https://techbookfest.org/product/wwADMShyx2RuB9zjnrUaz0?productVariantID=6v5hDHmdjF9Qv0t8H2KgUj

▼書籍の紹介はこちら

書籍紹介:『はじめてのNode-RED』/『はじめてのNode-RED MCU Edition』

Node-REDとは  一言でいうと、Node-REDはプログラミングが簡単にできるツールです。ビジュアルプログラミングの一種で、視覚的にわかりやすくなっています。 ▼百聞は一見…

▼以前の記事はこちら

Node-RED MCUを使ってみる その1(Node-RED、M5Stack)

はじめに  今回はNode-RED MCUを使って、M5Stackにプログラムを書きこんでみました。以前の記事で少し紹介していたのですが、Makerが終わってからはNode-RED MCUばかり使…

Raspberry Pi 400について

 今回の環境構築には、Raspberry Pi 400を使いました。他のRaspberry Piと異なり、キーボードが一体型になっています。Raspberry Piの在庫が全然無かった時期に販売していたので購入しました。

 OSはSDカードでインストールするので、他のRaspberry Piでも同じように構築できると思います。家で起動しておいて、MQTTのサーバーにでもしようかなと思っています。

▼見た目が完全にキーボードですが、中にRaspberry Piが入っています。ちゃんとGPIOピンもついています。

▼起動時はこんな感じ。モニター周りがスッキリするかも?

環境構築をする

 プログラミングをする上で環境構築が第一の関門だと思っているのですが、今回も何かと行き詰りました。特にコマンドラインでインストールするのは苦手です....

 人によって環境が異なる可能性も十分にあるのでご注意ください。なおコマンドの入力にはRaspberry Piにすでに入っているLXTerminalを使っています。

Node.jsとnpmのインストール

 まずはNode.jsnpmをインストールします。

▼インストール用のコマンド

 sudo apt-get install -y nodejs

▼バージョンを確認するコマンド

 node -v

xs-devのインストール

▼xs-devをインストールするコマンドはこちら。npmを使います。

 npm install -g xs-dev

permission deniedというエラーが出る場合

 コマンドを実行した際に「権限が無い」という意味のエラーが出ました。そこで、Windowsと同じように管理者権限で実行できるのかな?と思い調べてみました。

▼こちらのページを参考にしました。

https://www.fabshop.jp/raspberrypi-administrator-01/

 sudo passwd root

でパスワードを設定し、

 su

で管理者権限で起動する必要があります。その状態でコマンドを入力するとインストールできました。

追記

 後でアドバイスを頂いたのですが、管理者権限で実行する際には、コマンドの先頭にsudoを付けると良いそうです。sudoを付けると解決するかもしれません。

 sudoとsuの違いについては、調べていると結構深そうですね。管理者権限で実行することから、安全性などについて考慮する必要がありそうです。

libudev.hが無い場合

 私の場合はlibudev.hについて、"No such file or directory"というエラーが出ました。これは環境によって異なるかもしれません。

▼こちらのコマンドでインストールしました。

 sudo apt-get install libudev-dev

xs-devのセットアップ

▼xs-devのセットアップコマンドはこちら

 xs-dev setup

 このコマンドだと、mcconfigでバイナリファイルを実行できないというエラーが発生しました。これはmsconfigがWindows用だからだと思います。

 もう一つセットアップ用のコマンドがあったのですが、そちらでは実行できました。

エラー文はこちら

background@raspberrypi:~ $ xs-dev setup
Setting up Linux tools!
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています… 完了
状態情報を読み取っています… 完了
⠋ Installing dependencies…bison はすでに最新バージョン (2:3.7.5+dfsg-1) です。
flex はすでに最新バージョン (2.6.4-8) です。
gcc はすでに最新バージョン (4:10.2.1-1+rpi1) です。
git はすでに最新バージョン (1:2.30.2-1+deb11u2) です。
gperf はすでに最新バージョン (3.1-1) です。
libncurses-dev はすでに最新バージョン (6.2+20201114-2+deb11u1) です。
make はすでに最新バージョン (4.3-4.1) です。
wget はすでに最新バージョン (1.21-1+deb11u1) です。
⠋ Installing dependencies…以下のパッケージが自動でインストールされましたが、もう必要とされていません:
ax25-node libax25 openbsd-inetd tcpd
これを削除するには 'sudo apt autoremove' を利用してください。
⠹ Installing dependencies…アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 228 個。
✔ Installing dependencies…
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています… 完了
状態情報を読み取っています… 完了
⠇ Installing GTK+ 3…libgtk-3-dev はすでに最新バージョン (3.24.24-4+rpt12+deb11u3) です。
⠏ Installing GTK+ 3…以下のパッケージが自動でインストールされましたが、もう必要とされていません:
ax25-node libax25 openbsd-inetd tcpd
これを削除するには 'sudo apt autoremove' を利用してください。
⠋ Installing GTK+ 3…アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 228 個。
✔ Installing GTK+ 3…
ℹ Downloading release tools
✔ Getting latest Moddable-OpenSource/moddable release
⠋ Installing simulator/usr/lib/node_modules/xs-dev/node_modules/gluegun/build/index.js:15
throw up;
^

Error: Command failed with exit code 126: mcconfig -m -p x-lin /home/background/.local/share/moddable/tools/xsbug/manifest.json
/home/background/.local/share/moddable/build/bin/lin/release/mcconfig: 行 3: /home/background/.local/share/moddable/build/bin/lin/release/tools: バイナリファイルを実行できません: 実行形式エラー
at makeError (/usr/lib/node_modules/xs-dev/node_modules/execa/lib/error.js:60:11)
at handlePromise (/usr/lib/node_modules/xs-dev/node_modules/execa/index.js:118:26)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
shortMessage: 'Command failed with exit code 126: mcconfig -m -p x-lin /home/background/.local/share/moddable/tools/xsbug/manifest.json',
command: 'mcconfig -m -p x-lin /home/background/.local/share/moddable/tools/xsbug/manifest.json',
escapedCommand: 'mcconfig -m -p x-lin "/home/background/.local/share/moddable/tools/xsbug/manifest.json"',
exitCode: 126,
signal: undefined,
signalDescription: undefined,
stdout: '',
stderr: '/home/background/.local/share/moddable/build/bin/lin/release/mcconfig: 行 3: /home/background/.local/share/moddable/build/bin/lin/release/tools: バイナリファイルを実行できません: 実行形式エラー',
failed: true,
timedOut: false,
isCanceled: false,
killed: false
}

▼こちらからだと問題なく実行できました。

 xs-dev setup --target-branch public

▼セットアップができたことを確認するコマンドです。xsbugが起動して、実行ボタンを押してHello, worldが表示されたらOKです。

 xs-dev run --example helloworld

▼xsbugの画面はこちら。左上に実行ボタンがあります。

デバイスのセットアップ

 xs-devのセットアップが完了した時点でNode-REDを起動して、Node-RED MCUのプラグインをインストールしてみたのですが、反映されていませんでした。

 xs-devのページで紹介されている、デバイスのセットアップを先に済ませる必要があるのかもしれません。変更が反映されていなかっただけかもしれないのですが、ひと通りインストールが終了したら一度再起動したほうが良いと思います。

▼コマンドはこちら

 xs-dev setup --device esp32

▼こちらのコマンドで、デバイスのリストを確認できます。

xs-dev setup --list-devices

▼デバイスのリストはこんな感じ。

Node-REDの設定

 ここまで来たら、Node-REDでの操作になると思ったら、さっそく躓きました。

 普段ならターミナルにnode-redと入力すればNode-REDを起動できるのですが、エラーが起きて、すでにアドレスが使われているとのことでした。他のターミナルでは起動していなかったのですが...

 この場合、再起動したら解決しました。Node-REDを起動した状態で、他のターミナルで実行しようとすると、同じようなエラーが出ていました。

▼このログが出ていると、他のターミナルで起動しているかもしれません。

 Error: listen EADDRINUSE: address already in use 0.0.0:1880

 あとは必要なパレットを追加すれば完了です。以前の記事で少し紹介していましたが、node-red-mcu-pluginをインストールします。

▼パレットの管理から追加できます。

Raspberry Piの起動時にNode-REDを起動する

 Node-RED MCUの書籍に書いていたことですが、以下のコマンドでRaspberry Piを起動した際に、Node-REDも起動します。

 試しにコマンドを入力して再起動したのですが、すぐには起動しません。電源を入れてから少し経って起動しました。普段使っているパソコンよりもスペックは劣るので、起動が遅いのに慣れないですね...

▼起動時にNode-REDを起動するコマンド

 sudo systemctl enable nodered.service

▼やっぱり起動させないようにしたいときのコマンド

 sudo systemctl disable nodered.service

追記

 Raspberry Piが起動した際にNode-REDも起動できるようにしたところ、Node-RED MCUのタブだけ開けないことがありました。

 今後のアップデートで改善されるかもしれませんが、自動起動をオフにしてコマンドで起動すると、開くことができました。

最後に

 xs-devを使って構築してきましたが、後で書籍を読み返すと、確かにコマンドは少なくなっているようです。Moddable SDK、ESP-IDFのインストールは特に簡略化されています。

 ただコマンドラインに慣れていない方には、まず書籍の手順通りに構築することをお勧めします。エラーが出たときの対処が大変です。再起動したら解消することもあります。

 また、今後のアップデートによっては、今回の構築手順が通用しない可能性は十分にあります。ご注意ください。

コメントを残す

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