この記事は Node-RED Advent Calendar 2017 2日目です。
昨日は、nakachon さんの 【動画あり】ScratchからNode-RED経由でDALI-APIでLEDを点灯させてみた 記事でした!Scratch+Node-REDのビジュアルプログラミング同士のタッグでDALI照明へのとっつきやすさが増す楽しい記事でした。
さて、RaspberryPi Zero WでのNode-REDをアップグレードするときにハマったのでメモを残してきます。
本来
まず、Raspberry Pi 3 では、Raspbian Jessie を使っている場合であれば、 Node-RED日本ユーザ会 : Running on Raspberry Piにあるとおりで、
update-nodejs-and-nodered
というコマンドを実行すれば素直にアップデートされます。
このような画面です。要は、既存のNode.jsをアップデートして、Node-RED自体も入れ直して、その他リビルドしたりショートカットつくったり設定するという仕組み。
RaspberryPi Zero Wでの問題
しかし、RaspberryPi Zero WだとNode.jsのインストールでエラーが起きます。
## Installing the NodeSource Node.js v4.x LTS Argon repo... ## You appear to be running on ARMv6 hardware. Unfortunately this is not currently supported by the NodeSource Linux distributions. Please use the 'linux-armv6l' binary tarballs available directly from nodejs.org for Node.js v4 and later.
Raspberry Pi 3 ではARMv7で動作するようにできているのに、RaspberryPi Zero WがARMv6なのでコケてしまう様子。
どうすればいいんだ・・・。
結論:マニュアルインストールする
上記のキーワードを併用しながら調べていたところ、そのままの記事を発見しました。
Install Node-RED on Raspbian Jessie Lite on a Raspberry Pi Zero W • DIY Projects
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
こちらを実行すると良いようで、よく見ると、Node-RED日本ユーザ会 : Running on Raspberry Piのマニュアルインストール部分でも紹介されていました。
ただ、RaspberryPi Zero Wとしてこうして。と書かれていなかったので、気づけなかったんですね。なるほど。
実行してみる
ということで実行してみます。RaspberryPi Zero Wなのでかなり時間がかかるので注意しましょう。たしか30分程度かかりました。
私の場合、途中で
/dev/fd/63: line 168: warning: command substitution: ignored null byte in input
といったエラーが出たり、
のような warning が出ていましたが気長に待っていたら、無事インストールされました。
node-red-start で実行した様子です。
node-red-start でなぜ実行するか
Raspberry Pi 3 だとメモリをあまり気にしないので普通に node-red 実行してしまうのですが、RaspberryPi Zero Wでnode-redコマンドで実行してしまうと、かなり重くなってしまう印象で困りました。
Node-RED日本ユーザ会 : Running on Raspberry Pi
Note: node-red-startコマンドを使うRaspbian上のNode-REDのプリインストールバージョンもデフォルトで256MBに設定されています。 これを変更したい場合は、編集する必要のあるファイル(sudoとして)は /lib/systemd/system/nodered.service です。 手動でインストールされたバージョンにこれを追加する方法については、以下を参照してください。
こちらにあるように、node-red-startコマンドだと、使えるメモリを制限して使えるようで、RaspberryPi Zero Wのような、コンパクトだけど非力なデバイスにはありがたいものとなっています。(実際、長時間利用しても、かなり安定していました。)
まとめ
ということで、RaspberryPi Zero WでのNode-REDをアップグレードするメモをお伝えしました。
RaspberryPi Zero WをNode-RED絡めて今ちゃんと使おうとしていて、今回やってみたのですが、いいですね。フリスクサイズのコンパクトなデバイスなので場所を取りませんし、さり気なさが良いです。
RaspberryPi Zeroと違い、USBに追加デバイス無しで、Wi-Fiでちゃんとつながります。これにより、より手軽にネットワーク連携もできNode-REDを立てることで挙動が作りやすくなります。
明日は
sakazuki さんのNode-REDをAWS API Gateway + lambda + S3で動かす方法の記事です!