Node-REDのインストール他のメモ
Node-REDをインストールや、フローを作成する際の手順のメモ。
鶏頭で忘れっぽいのでメモ。
自動起動とかやらないなら、Node.js は nodenv とか使っても良い気がするが、 念のためシステムに直接インストールしておく。
apt install
だと古いバージョンになってしまうので、
nコマンド をインストールし、
nコマンドで安定版をインストールする。
その後、apt
でインストールしたNode.jsは削除。
# インストール
sudo apt install nodejs-legacy npm
# バージョン確認
node -v
# nコマンドのインストール
sudo npm install -g n
# 安定版のインストール
sudo n stable
# aptでインストールしたnode.jsをアンインストール
sudo apt purge -y nodejs-legacy npm
# バージョン確認
node -v
sudo npm install -g --unsafe-perm node-red node-red-admin
どうも、ノードの追加とかすると、npmのキャッシュをアクセスするときにpermission deniedと言われてしまうみたいなので、
以下のコマンドで .npm ディレクトリ以下の所有権を自分にしておく。
(キャッシュだから削除しても良い気がするが)
sudo chown -R `whoami`:`whoami` ~/.npm
node-red
ブラウザで http://対象IPアドレス:1880 に接続
CTRL-Cで停止する。
https://qiita.com/seibe/items/36cef7df85fe2cefa3ea
https://nodered.jp/docs/getting-started/local
node -v
を実行して、v10.16.3
と表示されることを確認します。
次にnpmのアップデートを行います。以下のコマンドを実行してください。( 2019/09/16現在、6.11.3 でした)npm install -g npm
npm install -g --unsafe-perm node-red
node-red
なお、初めてNode-REDを起動したとき、 『このアプリの機能のいくつかがWindows Defender ファイアウォールでブロックされています』 と警告が表示されることがある。
この場合、 「通信を許可するネットワーク」を選択して「アクセスを許可する」をクリック すれば良い。
(ぜんぜんヒトコトじゃないけど。。。)
Node-REDを起動したPCからのアクセス(ブラウザ接続など)は成功するのに、 外部PCやRaspberryPi(もちろん、同一サブネット上の)からのアクセス(ブラウザやWebsocket接続)が失敗する場合がある。
考えられる原因は色々あるが、最も多そうな原因のひとつにファイアウォールでのブロックが考えられる。
上の警告ダイアログでアクセス許可した際に、プライベートネットワークのみに通信を許可していて、
かつ、現在接続されているネットワークがパブリックネットワークである場合である。
ファイアウォールでのブロックされているかはNode-REDを起動した状態で以下のコマンドで確認できる。
以下のコマンドを実行
nc -zv 《IPアドレス》 《ポート番号》
例えば、こんな感じ。
nc -zv 192.168.1.2 1880
ブロックされていれば、コマンドが終了しないので、CTRL+Cで終了する。
ブロックされていなければ(正常であれば)、Connection to 《IPアドレス》 《ポート番号》port [tcp/*] succeeded!
と表示される。
Windows Poewrshellで(コマンドプロンプトでは不可)以下のコマンドを実行
Test-NetConnection 《IPアドレス》 -port 《ポート番号》
例えば、こんな感じ。
Test-NetConnection 192.168.1.2 -port 1880
ブロックされていれば、TcpTestSucceeded : False
と表示される。
ブロックされていなければ(正常であれば)、TcpTestSucceeded : True
と表示される。
これを解決するには、Node-REDを実行しているWindows PCで
「コントロールパネル」→「Windows Defender ファイアウォール」を開き、
左側のリストから「Windows Defender ファイアウォールを介したアプリまたは機能を許可」をクリック
「設定の変更」をクリック
下のリストから「Node.js: Server-side JavaScript」の右側 パブリックのチェックボックスにチェックを入れる
「OK」をクリック
この状態で再度RaspberryPi または PCからファイアウォールでのブロックの確認を実行し、ブロックされていないことを確認してください。
インストールスクリプトを実行すればイッパツで解決。
# インストールスクリプトの取得
wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered
# 必要なら中身確認してね
# インストールスクリプトの実行
bash update-nodejs-and-nodered
node-red-start
CTRL-Cでログ表示のみ止まる(Node-RED自体は動作したまま)
ブラウザで http://対象IPアドレス:1880 に接続
Node-RED で console.log などを実行したときは、ログに表示される。
node-red-start
したままなら表示されるが、CTRL-Cでログ表示を止めていた場合は
以下のコマンドでログ表示を再開できる。
node-red-log
Node-RED自体を停止する。
node-red-stop
https://qiita.com/utaani/items/7155c62d6c5e96822afb
https://nodered.jp/docs/getting-started/local
作成したフローは保存することができます。
しばらく使わないフローを削除したり、別の環境にコピーする場合に保存しておくと良いでしょう。
保存したフローは読み込んで使用することができます(当然か)
使用しなくなったフローをいつまでも残しておくとトラブルの元ですから、削除しましょう。
(念のため保存しておくのを忘れずに)
後で使うから削除したくはないけど、今デバッグしてる作業の邪魔になる、というような場合、 作成したフローを削除せずに一時的に停止することができます。
再開する場合は上記手順と同じで、状態を「有効」にする。
色々フローを作成したけど、一回チャラにしてやりなおしたいときは、 一旦Node-REDを停止(ブラウザ切断だけじゃなく、サーバプログラムを停止)して 以下の2つのファイルを削除する
もちろん、念のためバックアップ取っておくのが好ましい。
バックアップから復元すれば元通りになるはず。
その後、Node-Redを起動すると、フローが綺麗さっぱり消えているハズ。
「フローの例」に書かれたJSONコードはテスト用に作成したフローをエクスポート(書き出し)したものです。
このコードの表示部分にマウスを乗せると、右上に「Copy」ボタンが表示されますので、このボタンをクリックしてください。JSONコードがクリップボードにコピーされます(マウスをドラッグしての選択は不要)。
この状態で、上記フローを読み込む(インポート)に示した方法でフローをインポートするとフローがコピーされます。
[!NOTE] 複数のフローをインポートした場合、既に存在するノードと同名のノードは別のノードとして生成されます。このとき、名前に「(_1)」などの別ノードを識別できるような記号は付きません。
特に、WebsocketのノードやDashboardのタブ/グループはシステムの動作や見た目に影響しますので、注意してください。
自動でよしなにする方法はありませんので、手動でチマチマと修正してください。
サイドバー(右側のペイン)の「▼」ボタンをクリックし、ノードの設定を表示でノードの設定を表示し、
各ノードの右側の数字をクリックすると、そのノードを参照しているノードの一覧が表示されます。
さらにそのノード一覧の各ノードをダブルクリックすると、そのノードが点滅表示されるので、そのノードのプロパティで参照先を変更すれば良いでしょう。