Node-REDは以前からIoTネタで使わせていただいておったのです。しかし必要に応じて(泥縄式)使ってきたので、よく理解せず使っているところも大有り。この際「広く浅く」全貌をとらえるべしと思い立ち、『ブロックを積みながら』(Node-REDは「積まない」スタイルだけど)で勉強してみることにいたしました。まずは今回ソフトウエアのアップデートから。
※「ブロックを積みながら」投稿順 index はこちら
Node-REDは「フローベースドプログラミングツール」ということで、前回までのMakeCodeエディタとは異なる系統の「ビジュアル」な環境です。ぶっちゃけ「ブロックを積む」のではなく、「ブロック(ノード)をつないだパイプの中をパケットが流れる」というべきか。本『ブロックを積みながら』は、細かいところにとやかく言いません。フローベースドも含めていいよね、OK!というノリです。でも、共通点が無いわけでもありません。どちらもビジュアルな画面の裏側にはJavaScriptがいます。
ここまでのところNode-REDを以下の構成で運用してきました。
-
- ハードウエアは Raspberry Pi 3 + HDD 機
- OSは Raspberry Pi OS (32bit) buster
- 同じハード上でMosqutto MQTTブローカが走っている
- MQTTへの「繋ぎ」は同じハード上で実行されているPythonスクリプト
- 「IoT」の末端マイコン達は、WiFiまたはBLE経由でPythonスクリプトと情報をやりとり
末端マイコンのそれぞれに対応するNode-RED Dashboard上の「タブ」を用意してあります。そこで送られてきたデータを確認したり、指令を送ったりできるようになっています。また、末端マイコンから送られてきたデータの蓄積にはSQLiteに接続するためのノードを使わせていただいております。
まずはNode-REDの更新
今回から、Node-REDのパレットに並ぶ各種の「ノード」を端から使ってみて「しみじみと体験」する決意(?)です。その前にNode-REDのバージョンを最新版に更新することにいたしました。Node-REDの手元のバージョンはこんな感じ。v1.2.7でした。古いんでないかい。
現在では既に v2.0 がリリースされているようです。勉強するなら、更新してからにしたいです。しかし、Node-REDの更新ってどうやるの?こういうときに心強いのが、充実した日本語ドキュメントの Node-RED User Group Japan さんです。Node-REDのアップデートの方法についても情報があります。下記にURL貼り付けたページから1文引用させていただきます。
上述のインストールスクリプトを利用することを強く推奨します。
そう言われると拒む理由はありませんな。それにインストールのときに使用したスクリプト(実際にはcurlで都度スクリプトの本体をダウンロードして使うダウンロードのための1行)をそのまま使用でアップデートもできるみたいです。ユーザーグループさんのRaspberry Pi でのNode-REDのインストールと更新についてのページが以下です。
インストールしたときの「1行スクリプト」、Diskに残ってました。一撃だね。とはいいつつちょっと嫌な予感がしたので、Node-REDを動かす前提となる node.jsのバージョンを確認しておきました。
$ node -v v14.15.4
上記のページに掲載されているインストールスクリプトを起動。出だしはこんな感じ。
着々と緑のチェックマークが付いていきます。しかし、途中からWARNINGがボロボロ出ますな。しかし、最後まで処理は完遂したようです。
Node-RED自体は、v2.0.5 に更新完了していました。WARNING出てたけど、更新自体は出来たのね。
マシンを再起動し、PC上のブラウザからRaspberry Pi 3上で走っているNode-REDに接続してみます。あれれエラーだよ。実際のエラー出力の様子はアイキャッチ画像をご参照ください。メッセージは以下です。
不明なノードが存在するため、フローを停止しました。
-
- sqlitedb
- sqlite
SQLite動かないと末端の奴らから上がってくるデータを保存できませぬな。たしか「SQLiteに接続するためのノード」はNode-REDのインストール時のデフォルトでは入っていなくて、パレット管理から個別にインストールしたような記憶です。幸い「フロー」は停止していてもNode-RED本体は元気に動いているみたいなので、とりあえずパレット管理を見てみます。
やっぱりMODULE_NOT_FOUNDという警告でています。また、1.0.0へ更新というボタンも表示されています。「更新」したらNOT FOUNDでなくなるかしら?ボタンを押してみました。そうは問屋が卸さない、エラーでした。そのエラーログを見れば、
node.js とその管理ツールである npm のバージョンの問題である
ことがようやく理解できました。まとめると
-
- Node-REDの更新前のnode.jsのバージョンは v14.15.4 だった
- 更新後のnode.jsのバージョンは v10.24.0 と先祖返りしていた
- 更新前の npmのバージョンは不明、更新後の状態では 5.8.0
Raspbian OSなので、普通に apt でソフトウエアの更新が可能です。aptでやってみると、node.js、npmのバージョンは最新だと言われてしまいました。よくあることとは言えメンドイ。
とりあえず元のv14系に戻すことを考え以下のページを調べました。
NodeSource Node.js Binary Distributions
上記のページには、各バージョンをバイナリでインストールするスクリプトが並んでいます。最新版はv16ですが、コンサバにv14の “Ubuntu” 用のスクリプト(これまた2行です)をコピペして走らせました。結果のバージョンがこちら。
$ node -v v14.17.6 $ npm -v 6.14.15
更新されたね。さて、Node-REDは動くのか? 念のため再起動後、PCからNode-REDに接続してみるとエラーは消えてます。そして消えていたSQLiteのノードが復活してました。
毎度インストールとかアップデートとか、トラブルなあ。こないだはWindowsの更新も途中で止まって解決するまで大分時間かかったし。。。