(注意)今更RaspberryPi2
を使うネタです。
7月ぐらいから仕事が微妙に忙しく体力的にも割とハードな感じだったので全くなにもできてませんでした。とはいえそろそろ何かやらないとという感じで再始動します。 (現在は営業的な業務の管理職なのでデイタイムには全くなにもできない状況…)
リハビリを兼ねて、少し前に教えてもらったNode-RED
をRaspberryPi
にインストールして、少し使ってみたいと思います。
とはいえ、家にある開発に使用している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現在)です。
基本、以下のサイトを見ながらインストールをしていくことになります。
あとで気がついたのですが、日本語訳もありました…涙
インストールとその後の設定
先程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
インストール後に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使用していた場合には注意が必要かもしれません。
質問されますが、内容を確認して問題なければy
キーを押下します。
インストールは時間が結構結構かかるので、その間は別の作業をするのがおすすめです。 以下のような表示になればインストール終了です。
インストール後の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
実行すると起動したコンソールが奪われてしまうので、RaspberryPi
の起動時にサービスとしてスタートさせるのがおすすめかもしれません。
といっても、Node-RED
はWebブラウザで使用するので操作するのでそのままでいいかもしれませんが。
サービスとしてスタートさせる場合には以下のように
$ 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
RaspbianのX経由のブラウザでアクセスする場合は、
http://localhost:1880
とします。
これで無事に作業を始めることができるようになりました。 以降はPCからのWEBブラウザ経由で操作をしてみようと思います。
Hello World
では、最初にHello World
を動かしてみます。
まずは左側のノード一覧の【入力】グループの中から【inject】ノードを
ワークスペースにドロップします。するとドロップされたノードは【タイムスタンプ】という表示に変わります。
続いては、左側のノード一覧の【出力】グループの中から【debug】ノードを
ワークスペースにドロップします。ドロップされたノードは【msg.payload】という表示に変わります。
上記のような表示になっていればOKです。ノードをワークスペースに配置したら、ノード間の端子をマウスでドラッグしてつなぎます
この操作が基本的な操作になります。
ではとりあえずここまでで一旦実行してみます。画面の左上にある【デプロイ】ボタンをクリックします。【デプロイ】ボタンはワークスペースに変更があると赤く表示が変わります。変更が反映されないときなどは確認をしておきましょう。(変更がないときにはグレーダウンしています)
【デプロイ】ボタンをクリックすると、結果が表示されます。エラーがなければ以下のようなに表示されます。
デプロイが成功したら、画面左にある【デバック(虫のアイコン)】ボタンを押します。
すると右側のタブがデバック表示に変更します。
これで準備ができました。ここまできたら【inject(タイムスタンプ)】ノードの左側のボタンをクリックしてみます。
クリックするとデバックタブに実行結果が表示されます。
デバックに表示されているのはタイムスタンプのNumber型での表示なのでよくわからない数値になっています。とりあえず今回はHelloWorld
という文字列を表示させたいので編集していきます。
ワークスペースの【inject(タイムスタンプ)】ノードのダブルクリックします。
するとワークスペースにノード編集画面が表示されます。
その中に【ペイロード】の値を【日時】から【文字列】に変更します。
変更後に入力ボックスに
HelloWorld
を入力します。終わったらノード編集の【完了】ボタンを押します。
ボタンを押すと以下のような画面になります。【inject(タイムスタンプ)】ノードが【inject(HelloWorld)】ノードに変わっています。
変更が確認できたら右上の【デプロイ】ボタンをクリックします。
デプロイが成功したら【inject(HelloWorld)】ノードの左側のボタンをクリックしてみます。
ようやく念願のHelloWorld
が表示されました。
おわりに
今回は長くなってきたのでここまでとなります。
割とノンコーディングでもできるっていうのはいいですね。とはいえ、始めるにはある程度、事前知識が必要になるので、準備も必要なんだろうなと感じました。
今後はWebサービスをやってみたりArduino
との連携やRaspberryPiのGPIOの使用をやってみたいと思います。
【Node-RED 関連エントリ-】