PR

スマートホーム:Raspberry PiへNode-REDのインストール

スマートホーム

こんにちは、はな夫(@logicalifer)です。

Raspberry PiへNode-REDをインストールします。

Raspberry Piは下記でセットアップしたRaspberry Pi 3 Model B+です。

Node-REDのインストール

参考にするのは、下記の公式サイトにある、Raspberry Piへのインストール方法です。

sshでRaspberry Piにログインします。

ssh pi@raspberrypi@local

ログイン後、公式ページにある、下記のコマンドを実行します。

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

関連するライブラリなどが一通りインストールされます。

インストールが完了したら、下記を実行し、自動起動させるようにします。その他コマンドは公式ページを参照してください。

sudo systemctl enable nodered.service

再起動して、サービスが自動で立ち上がるか確認します。

sudo shutdown -r now

再起動したのを見計らって、他のPCのブラウザからアクセスします。

http://raspberrypi.local:1880/

Node-REDの画面が開けばインストール成功です。

Node-REDとAlexaの連携

下記のページを参考に設定していきます。

設定PCからブラウザでNode-REDにアクセスします。

http://raspberrypi.local/1880

Alexaから認識されるためのNodeを追加します。右上のハンバーガーアイコンからパレットの管理をクリックします。

ノードの追加をクリックします。

検索欄に「node-red-contrib-amazon-echo」を検索し、ノードを追加をクリックします。

注意ダイアログが出てきますが、続行していけば、左のノード一覧にamazon echo hubとamazon echo deviceというノードが追加されます。

ノードをドラッグしてフローに追加していきます。

  • Amazon echo hub: echoからraspberry piをecho hubと認識させるために必要
  • Amazon device:echoから認識させるデバイス名を設定
  • exe:Raspberry Piで実行したい処理を設定

Amazon echo hubノード

2020年10月現在は、echoがデバイスを検索するポート80が他サービスと競合するため、ポートのリダイレクトが必要とのこと。下記のサイトを参考に設定をします。

Node-REDでは、amazon-echo-hubのノードをダブルクリックし、プロパティのPortを8111に変更します。

Amazon deviceノード

amazon deviceの名称を変更します。この例ではプロジェクタのON/OFFで利用するので、プロジェクタという名称にしています。

exeノード

execノードを設置し、プロパティでコマンドを設定します。この例では、pythonのスクリプトを実行するためのコマンドを設定しています。

Raspberry Piのネットワーク設定

Node-REDにてポート8111を使用するように設定したため、そのリダイレクトする情報をRaspberry Pi側に設定します。参考にしたURLと無線か有線かオプションが異なるので、読み替えて設定しています。

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
sudo iptables -A PREROUTING -t nat -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 8111

一度再起動します。

sudo apt-get install iptables-persistent

もし、iptablesを誤ってしまっていた場合は、下記のコマンドで現在の内容を確認します。(このコマンドだけなら、表示されるだけ)

sudo iptable-save

テーブルの実体は/etc/iptables/rules.v4にいる。そのままでは上書きできないので、一度上書き権限を取得してから、上書きし、元に戻す。

cd /etc/iptables
sudo chmod 777 rules.v4
sudo iptables-save > rules.v4
sudo chmod 644 rules.v4

Alexaからのアクセス

スマホのAlexaアプリでデバイスの検出>HUB>その他で検出を実施し。node-REDはPhilipsのスマートライトとして検出されます。先程設定したデバイスの名前で検出できていれば成功です。

echoに指示してraspberry piが認識できます。例では、echoに「プロジェクタをつけて」といって、pythonのスクリプトが実行されます。

ここまでで、echoに言葉をかけると、Raspberry piのpythonプログラムが実行できるようになりました。次はpythonのスクリプトを編集します。

コメント

タイトルとURLをコピーしました