JavaScript
Node.js
RaspberryPi
IoT
node-red
Node-REDDay 12

ラズパイ用OSに標準インストールされたNode-REDを使ってみる

More than 1 year has passed since last update.

 ラズベリーパイ用のLinux OSであるRaspbianには、11月リリース版から標準でNode-REDがインストールされるようになりました。

先日ラズパイを入手したため、さっそくインストールして使ってみました。


今回試したラズパイキット

 使用したラズパイは、Raspberry Pi 2 Model Bです。Windows 10 IoT Coreもインストールできる優れものでう。ケースや無線LANアダプタ等がセットになっている下のキットを用いました。当初はケースかどんな物が分からず不安でしたが、機能面は洗練されていました。例えば、蓋を開けると部品を格納できる空間がある点や、GPIOから出るコードをケースから出すための隙間や穴がある点が挙げられます。デザインは、イメージ通りの黒いプラスチックの箱です。

Raspberry Pi 2 スターターキット(無線版)

http://www.amazon.co.jp/dp/B00UKQKAJK

 本キット付属のSDカードには、Raspbianがインストールされていますが、11月リリース版ではなかったため、標準でNode-REDは使えませんでした(といってもターミナルでsudo apt-get install noderedと入力するだけで使えるようになります)。折角なので11月版のRaspbianのインストールから行いました。


RaspbianインストーラをSDカードにインストール

 まず、Windows PCへマイクロSDカードを挿入し、エクスプローラ上でフォーマットします。フォーマット形式はFAT32を選択しました。

sdformat.png

 次に、Rasbian公式サイトからRasbianをダウンロードします。サイトには「NOOBSというインストーラ」と「イメージファイル」の2種類があります。今回はNOOBSの方を用いました。イメージファイルの方を用いると、容量の大きいSDカードでもファイルシステム容量が固定となります。そのため、そのままではSDカードの容量を活用しきれず、後からブラウザ等インストールするとすぐディスクフルになってしまうようです。ファイルシステムのサイズを後から変更するよりは、NOOBSのインストーラを用いた方がお手軽です。

 Rasbian公式サイトから、NOOBS Offline and network install Version:1.5.0 Release date:2015-11-21をダウンロードしました。

Raspbianダウンロードページ

https://www.raspberrypi.org/downloads/noobs/

 download.png

 次にダウンロードしたzipファイルの中身を、SDカードにコピーします。RaspbianはLinuxなのにFAT32のファイルシステムへ、単にファイルをコピーするだけで大丈夫?と思うところですが、大丈夫です。

copynoobs.png


Raspbianインストーラを起動

 ラズパイにSDカードを挿入し、USBキーボード、USBマウス、USB無線LANアダプタ、HDMI経由でディスプレイをつなぎます。次に、電源供給用のマイクロUSB端子に、電源をつなげばインストーラが起動します(電源ボタンはありません)。起動すると下のように、インストーラが起動します。「Raspbian [RECOMMENDED]」のチェックボックスをオンにして、「Install」ボタンをクリックします。

IMG_2937.JPG

 その後、インストールが開始されます。最後に、インストール完了のメッセージでOKをクリックすると再起動し、Raspbianが起動します。

IMG_2941.JPG


Raspbianを起動

 Raspbianが起動すると下のように、Linuxのデスクトップが表示されます。キット付属の無線LANアダプタも認識されました。

2015-12-12-131603_1776x952_scrot.png

 Menu->Programmingを参照すると、ちゃんとNode-REDのアイコンが存在しています。これからはRaspbianがインストールされているラズパイであれば、Node-REDが使えるわけです。

2015-12-12-131629_1776x952_scrot.png


ブラウザをインストール

 次にFirefox相当のブラウザであるiceweaselをインストールします。下記コマンドを入力すれば、インストールされます。

sudo apt-get update

sudo apt-get install iceweasel

 Raspbianには、Node-RED公式サイトで推奨されているEpiphanyというブラウザが標準で入っています。しかし、私が確認したところ、EpiphanyではNode-REDのfunctionノードやtemplateノードのテキスト入力ができませんでした。そのため、代替手段としてiceweaselをインストールしました。


Node-REDを起動

 Node-REDのアイコンをクリックし起動すると、ターミナルが立ち上がりNode-REDが起動されます。記載されている内容から、ブラウザから自身のポート1880にアクセスすれば良いことが分かります。

2015-12-12-131743_1776x952_scrot.png

 個人的にはここで、Node-REDのアイコンをクリックすると、ブラウザが立ち上がりNode-REDの開発環境(もしくは開発環境に飛べるNode-RED設定GUI)を開いてほしいと思いました。Node-REDを知らないユーザが起動し、ターミナルを見ると何のソフトウェアか分からず閉じてしまいそうです。

 ブラウザiceweaselから自身のポート1880にアクセスすると、いつもの(?)Node-REDの開発環境が利用できます。

2015-12-12-132025_1776x952_scrot.png


ラズパイ専用ノード

 Node-REDの開発環境には、ローカルPCにNode-REDをインストールした場合とほぼ同じノードが用意されています。異なる点は、下の様なラズパイ専用ノードが存在する点です。

2015-12-12-132058_1776x952_scrot.png

 rpi-mouseノードはすぐ使い方が分かりましたので解説します。

2015-12-12-133854_1776x952_scrot.png

 rpi-mouseノードは、マウスのクリックを契機に、処理を開始するノードです。上の図のプロパティの様に、イベントとして左クリック、右クリック、ホイールクリック、全ての4種類を指定できます。debugノードと接続すると、クリック時にmsg.paylod=1を、リリース時にmsg.paylod=0が出力されることを確認できました。rpi-mouseノードは、物理的なスイッチをGPIOに繋ぐ方法の代替として、マウスボタンを用いることができるノードと思います。もちろんGUIを有効にしておくと、Linuxのデスクトップ画面上の意図しない所をクリックしていまい誤動作を招くおそれがあります。そのため、rpi-mouseノードを用いる時は、Ctrl+Alt+F1等を入力してGUIを無効化しておくと良いです。

 その他、rpi-gpioノード等は、ラズパイのGPIO端子にLED等をつないでみないと確認できないノードであるため、今回はプロパティ画面のみを貼り付けます。プロパティには接続した端子の名前を指定するようです。これらのノードは、今後リレーやLEDをつなげて活用方法を見つけたいと思います。

2015-12-12-134041_1776x952_scrot.png


最後に

 ブラウザをインストールする必要があるなど、少しだけ遠回りしましたが、RaspbianでNode-REDが使えるようになりました。キット付属のSDカードには、今後11月版以降のRaspbianが入ると思いますので、半年後位にはOSインストール作業なく、Node-REDが使えそうです。また、今後Node-REDとブラウザ互換性が解決されれば、Raspbian標準のブラウザでもNode-REDが使えるようになると思います。

 ラズパイ上でNode-REDが使える利点は、2つあると思います。まず第一に誰もが考えるのは、ラズパイの制御をNode-REDで簡単に行えるようになる点です。ラズパイというと玄人向けのハードウェアという考えている方も多いと思いますが、Node-REDが使えるのであればプログラミング初心者でも簡単に使えるようになります。第二は、BluemixのようなNode-REDが使えるクラウド側の環境と連携ができる点です。もしラズパイ上で動くDBの容量や性能が足りなくなったら、クラウド上に引っ越すことが容易です。クライアントサイドとサーバサイドが同じ開発方法であり、かつ処理の切り離しもノード単位で行えます。つまり、どこからをどこまでの処理をクラウド側で動かした方が効率が良いか、試行錯誤を繰り返しながら、最適ポイントを見つけることができます。

 今後、ラズパイ上のDBから、Bluemix上のDBへデータをマイグレーションしてみて、どれだけ有用かを確認してみようと思います。