【Node-Red】 初期セットアップ

Raspberry Pi

Node-Redをインストールする

Node-Redとはという話は、以下のサイトを参考にしてほしい。

概要 : Node-RED日本ユーザ会

ざっくりいうならば、Webサイト上でビジュアルエディターで簡単なシーケンスを描くことができる。

さらにRaspberryPiのGPIOのPINなどの制御にも対応しているうえ、Slack、Twitterなどと連携してデータのInputやトリガーとすることができる。

そのため、RaspberryPiを通して、単純な動作をさせるにはちょうどいいツールだと思っている。

Node-Redの前準備

ここからNode-Redを準備する。以下のサイトを参考にしている。

上記記事にあるようにNode-Redを最新バージョンにする。

ただし、初期セットアップでは推奨されているコマンドがありそれを実行するのだが、実行中、Warningとして、npmとNode.jsのバージョンが古いだのサポート外だのコメントが付いていたので、一旦はnpnとNode.jsをバージョンアップからになった。

以下の記事を参照した。

Node.jsとnpmをアップデートする方法
いつも忘れてしまうので書き留めておきます。macOS Monterey(12.4)で確認をして内容を更新しました。この記事で紹介しているツール「n」もv8.2.0になりました! Node.jsのアップデート n という便

どうやら「n」と呼ばれるNode.jsのバージョン管理ツールがあるのでこれを用いた。注意事項は上記記事に書いてあるので、ここではやったことのみ記載する。

「n」のインストール/Node.jsのバージョンアップ

以下のコマンドで、nをインストール

$ npm install -g n

Node.jsのLatestのインストール

$ n latest

npmのアップデート

以下のコマンドでアップデートできます。

$ npm update -g npm

Node-Redを使用できるようにする

Node-Redのインストール

上記記事からも行けるが、念のため参考サイトの参考サイトも備忘録として載せておく。基本的なコマンドは以下に見れる。

Raspberry Piで実行する : Node-RED日本ユーザ会

推奨のコマンド、再度以下を実施。

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

Node-RedをRaspberryPiの起動時に自動起動する/今すぐ起動させる

Raspberry Piの電源がついたとき、またはブート時にNode-REDを起動させたいので以下のコマンド。

$ sudo systemctl enable nodered.service

そして、すぐに試したいので、Node-Redを起動させる。

$ node-red-start

しばらく待って、RaspberryPiのブラウザで「http://<ローカルIP>:1880」へアクセスすると以下のような画面になるので、Node-Redは準備完了。

セキュリティを気にする場合は・・・(やりたい人のみ)

今更なんちゃってセキュリティのため必要性はないのだが、Node-Redにログイン画面を表示させることとした。

参考サイトは以下。

セキュリティ : Node-RED日本ユーザ会

ただ言葉で説明されても設定ファイルがどこやねんとなった・・・

私の環境では、[node-red start]時点で以下のような表示が出てきたので、その場所に行って、setting.jsをいじることに。

さらにパスワードはMD5ハッシュ値での指定なので、生成しなくてはならない。

適したパスワードのハッシュ値を生成するためには、node-red-adminツールを利用する。

$ sudo node-red-admin hash-pw

さらにパスワード生成のためのコマンドはbcryptのインストール先なのでそこにディレクトリ移動する必要がある。以下の場所にインストールされたので、cdコマンドで移動の上、以下を実行。

$ cd /usr/loacl/lib/node_modules/node-red-admin/node_modules/bcrypt 
$ node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" your-password-here

実行後MD5ハッシュ値が出てくるので、setting.jsのadminAuthのパスワード欄に記載。

$ vim /home/pi/.node-red/settings.js

settings.jsの中身

## 省略 ##

adminAuth: {
    type: "credentials",
    users: [
        {
            username: "test", #適度に変更
            password: " <パスワードのMD5ハッシュを記載> ",
            permissions: "*"
        },
    ]
}

## 省略 ##

Node-Redをリスタート後ようやくログイン画面が出るようになった。

$ node-red-restart

結論;余計なことをした!

Node-Redのプラグインを入れる

ブラウザのUI操作可能にする ~Node-RED Dashboard~

Node-RED上で簡単なUIを作ることができるPlugin。
ダッシュボード用のチャートやグラフだけでなくボタンやフォームも配置できるので、今回はこのボタンを使用してリモコン画面を作っていきます。

  1. http://[ラズパイのIP]:1880にアクセス
  2. 右上メニュー→「パレットの管理」→「ノードを追加」からnode-red-dashboardを検索しノードを追加する
image.png
  1. 左側にDashboardのノードが出てきたらOK

これでDashboardの初期の準備は終了。

Alexa と連携するPlugin <Node-RED Alexa Home Skill Bridge>

以下のサイトを参考にしてAmazon EchoのAlexaと連携した。

NodeRedでAlexa連携

以下をコンソールで実行することで、Node-Redにノードが出てくる。

$ cd ~/.node-red
$ npm install node-red-contrib-alexa-home-skill

ただこれだけでは全く機能しないので、連携用のサイトに登録の上、名称と機能を付与する。以下の連携サイトで登録をする。

Node-RED Alexa Home Skill Bridge

Loginしたら、上メニューのDeviceタブを選択、Add Deviceでデバイス名とActionを設定する。

上記設定をしたら、以下のサイトからアプリを有効化する。

Node-RED
Node-RED

そして、以下のサイトから、「デバイス」の管理から連携サイトで登録したNameのデバイス名が出てくることを確認しておく

You've received an Alexa Link

これで、一旦連携はOK

Slackとの連携用Plugin <準備中>

今後記載することにする。

コメント

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