RaspberryPi+Alexa連携模索(Node-Redインストール編)

最近、Nature Remo mini 2を導入した

  • Alexaと連携して声でテレビをコントロールできるように!
  • 時刻や温度をトリガにした寝室のエアコンの制御が可能に!

ところが問題があって

  • 寝室と居間、両方はカバーできない
  • かといって、寝室のエアコンを消したら居間に移動するとかは本末転倒

というわけで、
以前からやりたかった[RaspberryPiでの学習リモコン]と連携して居間をカバーできないか、というのが今回の動機

用意したもの

初代RaspberryPi

長いこと引き出しで眠っていたが、最近稼働を再開

  • CPU: ARM1コア
  • メモリ: 512MB

Node-Red

GUIでのワイヤー接続とプロパティ設定でコーディングなしでいろいろできるやつ。定番?
他の検討サービスは下に挙げているがひとまずこれをいじってみようとしたのだが、

問題発生

  • RaspberryPiのCPUアーキテクチャARMv6lに対して、Node.jsがオフィシャルにサポートしているのはv11まで
  • Node-RedのインストールにNode.js v12以降が必要

解決策?

調べていたらNodeのUnofficialなビルドがあるとわかりそれを利用してみることに
ARMv6のRaspberry Pi(Gen1, Zero)でも最新版のNode.jsが使いたい! ~nを使って入れてみる~
ラズパイにNode.jsをインストールするときは「n」を使うな

Node-Redインストール手順

  1. 既存のNode(v10)をアンインストール
  2. Nodeのアンオフィシャルビルド(v12)をインストール
  3. Node-Redをインストール

まずNodeのインストールを以下のページの手順に従いUnofficialビルドで進めていく
ARMv6機のRaspbian(Stretch)にnpmコマンドをインストール - Qiita
使用したUnofficialイメージはここから

最初に既存のNodeをアンインストール

sudo apt remove nodejs

アンインストールの表示を見ていたらNode-Redが一緒に削除されていて、あれ~?だったが、 Node-Redのページではaptのパッケージでのインストールは非推奨とあったので気にせずそのまま継続。 (本当はすごく気になっているので余裕があれば確認したい)

Unofficialなビルドをダウンロード・展開

cd /usr/src/
VERSION=v12.22.3
DISTRO=linux-armv6l
sudo wget https://unofficial-builds.nodejs.org/download/release/v12.22.3/node-${VERSION}-${DISTRO}.tar.xz
sudo mkdir -p /usr/local/lib/nodejs
sudo tar xf node-v12.22.3-linux-armv6l.tar.xz -C /usr/local/lib/nodejs
vim ~/.profile
. ~/.profile

.profileには以下を追記

# Nodejs
VERSION=v12.22.3
DISTRO=linux-armv6l
export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH

続いてリンク作成・確認

sudo ln -s /usr/local/lib/nodejs/node-v12.22.3-linux-armv6l/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/nodejs/node-v12.22.3-linux-armv6l/bin/npm /usr/bin/npm
sudo ln -s /usr/local/lib/nodejs/node-v12.22.3-linux-armv6l/bin/npx /usr/bin/npx
node -v
npm -v
npx -v

Node-Redは公式の通り
Raspberry Piで実行する : Node-RED日本ユーザ会

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

30分くらいかかりインストール完了
node-red-pi --max-old-space-size=256 または node-redで起動確認

node-red-start はなぜかうまくいかない

今回はインストールまで

その他検討サービス・アカウント作成メモ

IFTTT

定番のサービスをつなぐやつ

ngrok

一時的にグローバルのアドレスを持てる。初めて知った
ngrokが便利すぎる - Qiita

Slack

Discord

参考メモ