RaspberryPiでNODE-RED MQTTサーバーを設置する
Raspberry Pi4またはPi5を使用します。
Pi5は動作は機敏ですが、欠点として電力消費が多いので電源の扱いが難しいとか、Wifiも不安定な事
が個人的にはあるのでPi4がお勧めかと思います。
サーバーなので接続が多くなると動作が重くなります。
メモリー量はなるべく多い物が良いと思います。
また長期安定を望むならOSはPCIe NVMe M.2 SSD 2280などのメディアにインストールするのが良いと思います。
最近は、Rasoberry Piでもドッカーでインストールすることが多くなりましたが、ドッカーで動作さ
せると現状「google cast」が音声を出してくれません。
なんかやり方はあるかも知れませんが、とりあえず面倒なので普通のインストールをお勧めします。
(1) NODE-REDのインストール仕方
Raspberry Pi Imagerを使ってまずSDカードに「Raspberry Pi OS (64bit)をインストー
ルします。

作業に入る前に、WindowsPC側からも操作出来るよう「RealVNC」を設定します。
Rasberry Piのターミナルを開き
sudo raspi-config
と打ち込んで設定メニューを表示させ、3 Interface Options->I3 VNC->はい で確定します。
次に6 Advanced Options->A7 Wayland->W1 x11->了解 で確定すると再起動が掛かります。
起動したら、左上にあるRaspiマーク->設定->Control Centerを開きます。
左のインターフェースをクリックしたあと右のSSHとVNSを有効側にスイッチをスライドさせます。
閉じるをクリックすると画面の右上に「RealVnc」のアイコンが表示されます。
WindowsPC側で「Real VNC Viewer」ソフトをダウンロードしてインストールします。
https://www.realvnc.com/en/connect/download/viewer/
Viewerを起動してRaspberry PiのIPアドレスを設定し、ユーザー名とパスワードを入力して起動し
ます、操作がWindows側で出来るようになるので便利です。
その他に入れておくと便利なツールとしては、「WinSCP」があります。
WIndowsPCとRaspberry Piと相互にファイル転送出来るソフトなので便利です。
https://winscp.net/eng/download.php
NODE-REDのインストールはRaspberry Piのターミナルに以下のコマンドを打ち込めば、途中で確認
が求められますが一発でインストールすることが出来ます。
とは言っても途中で英語で11問質問攻めに遭います。
面倒なので「Enter」を繰り返すというのは半分正解です。
面倒な方のために質問事項を列挙します。
1, Are you really sure you want to do this ? [y/N] ? y Enter
2, Would you like to install the Pi-specific nodes ? [y/N] ? y Enter
3, Node-RED は、新しいバージョンが利用可能になった際に通知を送信できます。
これにより、最新の機能と修正を常に把握できます。
この通知には、匿名化されたデータが Node-RED チームに送信される必要があります。
このデータには、フローやユーザーの詳細は含まれません。
収集される情報とその使用方法の詳細については、
https://nodered.org/docs/telemetry をご覧ください。
・はい、使用状況データを送信します。
・いいえ、使用状況データを送信しません。 ↑↓キーで選んでEnter
4, Node-RED は、新しいバージョンが利用可能になった際に通知を送信できます。
これにより、最新の機能と修正を常に把握できます。
この通知を受け取るには、匿名化されたデータを Node-RED チームに送信する必要があります。
このデータには、フローやユーザーの詳細は含まれません。
収集される情報とその使用方法の詳細については、https://nodered.org/docs/telemetry をご覧く
ださい。
・はい、使用状況データを送信します。
・いいえ、使用状況データを送信しません。 ↑↓キーで選んでEnter
5, ユーザーセキュリティーを設定しますか?
・はい
・いいえ ↑↓キーで選んでEnter
6, プロジェクト機能を使用すると、ローカル Git リポジトリを使用してフローのバージョン管理
を行うことができます,プロジェクト機能を有効にしますか?
・はい
・いいえ ↑↓キーで選んでEnter
7, フローファイルの名前を入力してください ? flows.json デフォルトがflows jsonなので良ければそ
のままEnter
8, 資格情報ファイルを暗号化するためのパスフレーズを入力してください?
ここは自分で決めたパスワードを入れる。
9, エディターのテーマを選択します。「default」以外のテーマを使用するには、Node-RED ユー
ザーディレクトリに @node-red-contrib-themes/theme-collection をインストールする必要が
あります。
defaultで良ければそのままEnter
10, Node-RED エディターで使用するテキストエディターコンポーネントを選択します
monaco (default) で良ければ、Enter
11, Functionノードが外部モジュールをロードできるようにしますか?
・はい
・いいえ ↑↓キーで選んでEnter
NODE-REDインストールコマンド
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)インストールが完了したらNODE-REDサーバーのサービスを登録し
サービスのスタート、そしてサービスのストップが下記のコマンドで出来るようになります。
これにより再起動してもNODE-REDは自動でスタートするようになります。
sudo systemctl enable nodered.service
sudo systemctl start nodered.service
sudo systemctl stop nodered.service
Windows PCのブラウザで 「192.168.1.200:1880」と入力すると利用開始出来ます。
(IここでのPアドレスは、自分のNODE-REDをインストールしたRaspberry PiのIPアドレス)
(2) MQTTサーバーのインストール
NODE-REDを立ち上げて右上にあるアイコンをクリックして「パレットの管理」を開きます。
「ノードの追加」タブをクリックして「ノードを検索」の欄に「node-red-contrib-aedes」と
タイプしてEnterを押します。
そうすると下にnode-red-contrib-aedesが表示されるので「ノードを追加」をクリックします。
次の画面で「追加」をクリックするとインストールされます。
同様に「node-red-contrib-cast」を追加します。
これでテストの準備は完了しましたので「閉じる」をクリックして「フロー1」の画面に戻ります。
右のパレットの中から「ネットワーク」->「aedes broker」を見つけてマウスで掴んで「フロー1
」上に置きます。
同様に「ネットワーク」から「mqtt in」、「機能」から「function」「Cast」、「共通」から「Inject」
「debug」のアイコンを掴んでフロー上に並べます。

続いて各アイコンの右端にある小さな○同士をマウスでクリックした状態でドラッグして繋いでゆきます。

「mqtt」「function 1」「cast」アイコンについては、順番にダブルクリックして開き、必要な情報
を順番に記述して行きます。
「mqtt」の記述

「トピック」に「sky_pat」と記述します。
これは「空模様告知システム」(Raspberry Pi)から送信してくるトピックになります。
「サーバー」の項目の右端の「+」マークをクリックします。

「サーバー」の項目にこのNODE-REDが動いているRaspberry PiのIPアドレスを記入します。
「function 1」の記述
下記のようにスクリプトを書き込みます。

「Cast」の記述
「language」に日本語の意味の「ja」を「IP」のところにお手元の「Google HOME」のIPアドレス
を記述します。
アドレスが不明な場合には、フリーソフト「Advances IP Scanner」などをWindowsPCにインストー
て検索して下さい。(見つかればIPアドレスとGoogleが表示されます)
https://forest.watch.impress.co.jp/library/software/advipscanner/

最後の「デプロイ」操作して終了です。
右上にある「デプロイ」ボタンをクリックします。

以上で「空模様告知システム」(Raspberry Pi)側から送信が飛べば家のGoogle HOMEから音声で天気
を知らせてくれます。
今はテストなので、「Inject」をダブルクリックして以下のように記述してから再度「デプロイ」し
て下さい、そうすることでRasberry Piからの送信が無くても作動するかテスト確認が出来ます。
「msg.payload」の右で▼をクリックしてアルファベット入力モードを選び「1」か「2」か「3」を
記入して「完了をクリックします。最後に「デプロイ」して終了です。

「Inject」の左端の部分をクリックして「Google HOME」から音声が出ればOKです。
左端の虫アイコンをクリックしておけばログも表示できます。
