RaspberryPi2にNode-REDをインストールして使ってみる

(注意)今更RaspberryPi2を使うネタです。

7月ぐらいから仕事が微妙に忙しく体力的にも割とハードな感じだったので全くなにもできてませんでした。とはいえそろそろ何かやらないとという感じで再始動します。 (現在は営業的な業務の管理職なのでデイタイムには全くなにもできない状況…)

リハビリを兼ねて、少し前に教えてもらったNode-REDRaspberryPiにインストールして、少し使ってみたいと思います。

とはいえ、家にある開発に使用しているRaspberryPi3を使うのは環境が変わってしまう可能性があるので、家に転がっていたRaspberryPi2を使用して見ようと思います。 2も3も多分作業的には変わらないかなと思います。さすがにZeroだと違うとは思いますが…


RaspberryPi2にNode-REDをインストールしてみる

家に余っていたRaspberryPi2を使うのですが、いつも通りRaspbianをダウンロードしてもうまくいきません。WiFiのUSBドングルのドライバの対応がうまく行っていないのだと思います。

最近のRaspbianイメージはBusterベースなのですが、RaspberryPi2BではWiFiのUSBドングルのドライバがうまく認識できないので少し古いイメージを使用します。 今回使用したイメージは一つ古い2019-04-08-raspbian-stretch.img(2019/08現在)です。

基本、以下のサイトを見ながらインストールをしていくことになります。

nodered.org

あとで気がついたのですが、日本語訳もありました…涙

nodered.jp

インストールとその後の設定

先程Raspbianのイメージのインストールを行い、ネットワークの設定を行った後からの設定になります。

インストール後のRaspbianのバージョンは以下のようになっていると思います。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.9 (stretch)
Release:        9.9
Codename:       stretch

f:id:ueponx:20190817203416p:plain

インストール後にaptコマンドを使用してパッケージ関連のアップデートを行っておきます。

$ sudo apt update
$ sudo apt upgrade

Node-REDのインストールコマンドは以下となります。

$ bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

このコマンドを実行すると過去にNode-REDがインストールされていた場合でもアンイストール後に最新版のインストールを行ってくれます。 その際、Node.jsのバージョンがLTSバージョンに変わるので古いバージョンのNode.js使用していた場合には注意が必要かもしれません。

f:id:ueponx:20190817204154p:plain

質問されますが、内容を確認して問題なければyキーを押下します。

f:id:ueponx:20190817204441p:plain

インストールは時間が結構結構かかるので、その間は別の作業をするのがおすすめです。 以下のような表示になればインストール終了です。

f:id:ueponx:20190817205522p:plain

インストール後のNode.jsバージョンの確認

Node-REDと同時にインストールされたNode.jsのバージョンも確認しておきましょう。

$ node -v
v10.16.3
$ npm -v
6.10.3

Node.jsはうまくインストールできているようです。

Node-REDの起動

コマンドラインでNode-REDを開始する場合にはnode-redコマンドを起動します。

$ node-red

f:id:ueponx:20190817210423p:plain

実行すると起動したコンソールが奪われてしまうので、RaspberryPiの起動時にサービスとしてスタートさせるのがおすすめかもしれません。 といっても、Node-REDWebブラウザで使用するので操作するのでそのままでいいかもしれませんが。

サービスとしてスタートさせる場合には以下のように

$ sudo systemctl enable nodered.service

サービスを停止するのであれば以下のコマンドを実行します。

$ sudo systemctl disable nodered.service

エディタへのアクセス

Node-Redが無事に起動したら、Webブラウザから以下のアドレスでアクセスをします。

http://<ip-address>:1880

http://<hostname>:1880

IPアドレスでもホストネームでも問題ありません。 Raspbianがデフォルト状態でmDNSが使用できるようであれば以下のようなアクセスも可能です。

http://raspberrypi.local:1880

f:id:ueponx:20190817213240p:plain

RaspbianのX経由のブラウザでアクセスする場合は、

http://localhost:1880

とします。

f:id:ueponx:20190817214932p:plain

これで無事に作業を始めることができるようになりました。 以降はPCからのWEBブラウザ経由で操作をしてみようと思います。

Hello World

では、最初にHello Worldを動かしてみます。

まずは左側のノード一覧の【入力】グループの中から【inject】ノードを

f:id:ueponx:20190901162645p:plain

ワークスペースにドロップします。するとドロップされたノードは【タイムスタンプ】という表示に変わります。

f:id:ueponx:20190901162653p:plain

続いては、左側のノード一覧の【出力】グループの中から【debug】ノードを

f:id:ueponx:20190901162701p:plain

ワークスペースにドロップします。ドロップされたノードは【msg.payload】という表示に変わります。

f:id:ueponx:20190901162711p:plain

上記のような表示になっていればOKです。ノードをワークスペースに配置したら、ノード間の端子をマウスでドラッグしてつなぎます

f:id:ueponx:20190901170727p:plain

f:id:ueponx:20190901170847p:plain

この操作が基本的な操作になります。

ではとりあえずここまでで一旦実行してみます。画面の左上にある【デプロイ】ボタンをクリックします。【デプロイ】ボタンはワークスペースに変更があると赤く表示が変わります。変更が反映されないときなどは確認をしておきましょう。(変更がないときにはグレーダウンしています)

f:id:ueponx:20190901171249p:plain

【デプロイ】ボタンをクリックすると、結果が表示されます。エラーがなければ以下のようなに表示されます。

f:id:ueponx:20190901171552p:plain

デプロイが成功したら、画面左にある【デバック(虫のアイコン)】ボタンを押します。

f:id:ueponx:20190901172050p:plain

すると右側のタブがデバック表示に変更します。

f:id:ueponx:20190901172433p:plain

これで準備ができました。ここまできたら【inject(タイムスタンプ)】ノードの左側のボタンをクリックしてみます。

f:id:ueponx:20190901172749p:plain

クリックするとデバックタブに実行結果が表示されます。

f:id:ueponx:20190901174320p:plain

デバックに表示されているのはタイムスタンプのNumber型での表示なのでよくわからない数値になっています。とりあえず今回はHelloWorldという文字列を表示させたいので編集していきます。

ワークスペースの【inject(タイムスタンプ)】ノードのダブルクリックします。

f:id:ueponx:20190901174527p:plain

するとワークスペースにノード編集画面が表示されます。

f:id:ueponx:20190901174848p:plain

その中に【ペイロード】の値を【日時】から【文字列】に変更します。

f:id:ueponx:20190901175208p:plain

変更後に入力ボックスに

f:id:ueponx:20190901175458p:plain

HelloWorldを入力します。終わったらノード編集の【完了】ボタンを押します。

f:id:ueponx:20190901175811p:plain

ボタンを押すと以下のような画面になります。【inject(タイムスタンプ)】ノードが【inject(HelloWorld)】ノードに変わっています。

f:id:ueponx:20190901180335p:plain

変更が確認できたら右上の【デプロイ】ボタンをクリックします。

f:id:ueponx:20190901181705p:plain

デプロイが成功したら【inject(HelloWorld)】ノードの左側のボタンをクリックしてみます。

f:id:ueponx:20190901182013p:plain

ようやく念願のHelloWorldが表示されました。

f:id:ueponx:20190901182704p:plain

おわりに

今回は長くなってきたのでここまでとなります。

割とノンコーディングでもできるっていうのはいいですね。とはいえ、始めるにはある程度、事前知識が必要になるので、準備も必要なんだろうなと感じました。

今後はWebサービスをやってみたりArduinoとの連携やRaspberryPiのGPIOの使用をやってみたいと思います。

【Node-RED 関連エントリ-】

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com