はじめに
Web IoT MakersというIoTの演習+ハッカソンイベントでCHIRIMENというJavaScriptでRPiを動かせるフレームワークを学びました。
Web系のエンジニアの方はJavaScriptですいすいコーディングできるのだと思うのですが、すこしでも楽をしたいのでNode-RED環境も作って併用する環境を作ってみます。
少々回りくどいですが、CHIRIMENのコア部分はWeb I2C APIとWeb GPIO APIです。htmlでUIを使ってJSのAPIでセンサやGPIO制御してMQTTでデータをNode-REDに投げてごにょごにょするイメージです。
CHIRIMEN用のマイクロSDを作る
CHIRIMENの基本的な情報は次のサイトを参考にしてください。
https://chirimen.org/
https://tutorial.chirimen.org/pizero/#chirimen--1
https://chirimen.org/chirimen/gc/top/examples/
起動用のmicro SDカードの作り方はこちらです。
https://tutorial.chirimen.org/raspi/sdcard
基本的な流れは次の通り
①OSイメージファイルをダウンロード
②イメージファイルを解凍
③balena Etcherで書き込み
Node-REDをインストール
先ほど作ったmicroSDでRaspberry Piを立ち上げ、Node-REDをインストールします。
インストール方法はNode-RED公式の通り、terminalから次のコマンドを実行します。
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
途中で2回ほど[y/N]を聞かれるのでどちらも[y]。
インストールには数分かかります。
Node-REDを起動する
Node-REDを起動するコマンドは次の通り。terminalから実行します。
node-red-pi --max-old-space-size=256
シェルスクリプトを使って自動起動
sudo vim $home/Workspace/node-red-start.sh
スクリプトの中身
node-red-pi --max-old-space-size=256
crontabにコマンド追加
crontab -e
初めて起動するときはエディタに何を使うか聞いてくるのでお好みで。
よくわからない人はnanoを選んでおくとよいかな。
設定ファイルの一番最後に一行追加して保存
@reboot /home/airpocket/Workspace/node-red-start.sh
airpocketのところは自分のuser名を。
Node-REDを自動起動する
毎回起動コマンドを入力するのはめんどくさいので、自動実行させておきましょう。
sudo systemctl enable nodered.service
自動実行をやめるのは次のコマンドです。
sudo systemctl disable nodered.service
Node-REDにアクセスする
Node-REDはブラウザでアクセスして、フロー(プログラム)を編集します。
Raspberry Piのブラウザでアクセスする場合は、ブラウザを立ち上げて「http://localhost:1880」を読み込みましょう。初めてアクセスするとチュートリアルが表示されます。消してOK。
Raspberry Piと同じLANに接続しているPCからもブラウザで簡単にアクセスできます。
アクセス先のアドレスは「http://...:1880」です。***にはRaspberry PiのIPアドレスを指定します。
Node-REDの使い方をちょっとだけ
パレットには、様々な昨日を持った「ノード」がならんでいます。試しに「inject」と「debug」 ノードをワークスペースにドラッグしてみましょう。
「inject」が「タイムスタンプ」、「debug」が「msg.payload」に変化します。①から④の操作を続けてください。
画面右のサイドバーの虫のマークのアイコンをクリックして、デバックタブを表示すると、タイムスタンプノードで取得した現在時刻のデータがmsg.payloadノードからデバッグウィンドウに出力されています。数字はUNIX時間で表示されていますがデバッグウィンドウ内の▶をクリックすると表示フォーマットを変更できます。
次に、時刻データではなく、テキストメッセージを出力してみます。下図の通り、「inject」ノードのプロパティを変更すると時刻ではなく、テキストが表示されるようになります。
Node-REDは、ノードをつなげるて、msg.payroadなどのデータを次のノードに送りながら様々な処理を行うフロー形式のプログラミングツールであることがなんとなくイメージできたでしょうか。
まとめ
CHIRIMENにNode-RED環境をインストールしました。
2022年10月現在、CHRIMENはDebian Busterベース、インストールされているNode.jsはVer14ですがNode-REDのインストールは可能でした。