ブログ

  • 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です。
    左端の虫アイコンをクリックしておけばログも表示できます。