WindowsのNode-REDに、「MQTT→SQL Serverへinsert」させる (全3回:第1回 Node-REDのサービス化)

製造業向けIoT担当です。

製造業界隈によくある環境(Windows&SQL Server)で、MQTTメッセージ→SQL Serverへinsertの動作確認ができるまでをセットアップしてみます。

これで、M2MのPoCが捗ると幸いです。

まとめ(手順サマリ)

第1回 Node-REDのサービス化(今回)

1.PackageManagementのインストール(パッケージ管理環境を整えます。その1)
2.Chocolateyのインストール(パッケージ管理環境を整えます。その2)
3.nssmのインストール(サービス化ツール)
4.Node-REDのインストール
5.nssmで、Node-REDのサービス化

第2回 MQTTメッセージブローカーの設定

1.Erlangのインストール(RabbitMQの動作用)
2.RabbitMQのインストール(メッセージミドルウェア)とMQTTブローカ追加

第3回 MQTTメッセージ→SQL Serverへinsertのフローを作成

1.Node-REDのパレットに、MSSQLノードを追加
2.フローを作成

 

1. PackageManagementのインストール

PackageManagementは、Windowsのパッケージ管理ツールです。
Windows10は、Powershell 5.0が標準装備のため、PackageManagementが標準装備されています。

今回は、Windows7を利用しているので、PackageManagementを導入します。

1.1. .Net Framework 4.5.2の確認

「コントロールパネル」→「プログラムと機能」で、
.Net Framework 4.5.2以上の.Net Framework があることを確認します。
ない場合、インストールをしてください。
nodered01-01

1.2. Windows Management Framework 5.1のインストール

https://docs.microsoft.com/ja-jp/powershell/wmf/5.1/install-configure
から、ダウンロードします。

環境に応じて、選択してください。

今回は、Windows7で64bitなので、「Win7AndW2K8R2-KB3191566-x64.zip」を選択します。

nodered01-02

1.3. Windows Management Framework 5.1のインストール実行

「Win7AndW2K8R2-KB3191566-x64.zip」を任意の場所へ展開します。

Install-Wmf5.1.ps1と実態ファイルがあることを確認して下さい。
nodered01-03

1.4. PowerShell でインストールスクリプトを実行

PowerShell を管理者で実行し、その ZIP ファイルの内容を含むフォルダーに移動します。

nodered01-04

nodered01-05

Install-Wmf5.1.ps1 スクリプトを実行(.\Install-WMF5.1.ps1)して、指示に従って続けます。
“[R]一度だけ~”を選択→「Enter」
nodered01-06

「はい」→「同意します」→「今すぐ再起動」
nodered01-07
nodered01-08 nodered01-09

1.5. PowerShell でインストールされたか確認

PowerShellを起動し、「Get-Command -Module PackageManagement」で、リストが出力されることを確認します。
nodered01-10

1.6. (必要に応じて)PowerShell 用のプロキシ設定

参考です。
プロキシがある場合、「C:\Users\[ユーザ名]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1」にファイルを作成し、以下を記述した上で、PowerShellを再起動(終了→起動)します。

 

2. Chocolateyのインストール

nodered01-11
https://blogs.msdn.microsoft.com/mvpawardprogram/2014/10/06/package-management-for-powershell-modules-with-powershellget/
より。
既存の NuGet や Chocolatey を 1 つの Provider として位置付け、PowerShell 上から共通インターフェースでそれらを扱える仕組みを構築します。

2.1. 実行ポリシーの確認

PowerShell で、「Get-ExecutionPolicy」で”RemoteSigned”であること。
nodered01-12a

 

2.2. PowerShell でChocolateyのインストール

PowerShell で、「iex ((new-object net.webclient).DownloadString(‘https://chocolatey.org/install.ps1’))」と入力/
実行後、「choco list -lo」で、「Chocolatey v0.10.11」と出力されれば、完了です。

nodered01-13
・・・・
nodered01-14

2.3. ChocolateyをPackageSourceに加える。

「Get-PackageProvider Chocolatey -ForceBootstrap」で、パッケージプロバイダとして追加します。
nodered01-15

3. nssmのインストール

Windowsで、 exeでも bat(バッチ)スクリプトでも、サービス化できるツールです。
引き続き、PowerShell で作業を行います。

3.1. PowerShellコンソールで、nssmがパッケージ管理されていることを確認

「Find-Package -Name nssm」

3.2. nssmのインストール

chocoから、インストールします。「choco install nssm」
(「Install-Package NSSM」で実施してみたのですが、インストールできていないので、「choco install nssm」でインストールしています。)

4. Node-REDのインストール

ハードウェアデバイスAPIおよびオンラインサービスを接続するためのツールです。

4.1. nvm-windowsのインストール

Node-REDは、Node.js LTS(8.x.)が必要です。
PackageManagement導入前に、Node.jsを導入していたため、nvm-windowsの導入を記載します。
nvmを初めて導入される方は、「Find-Package -Name nvm」で、パッケージ管理されているので、PackageManagementで導入ください。

下記より、「nvm-setup.zip」をダウンロードします。
https://github.com/coreybutler/nvm-windows/releases
展開後、「nvm-setup.exe」でインストールできます。
!注意!一番上は、「Pre-release」となっているので、「Latest release」から選択ください。

4.2. Node.js LTS(8.x.)のインストール

コマンドプロンプトで、以下を実行ください。
nvm list available (Node.jsのリスト)
nvm list (Node.jsのインストールバージョン確認)
nvm install 8.11.2 (Node.jsの最新をインストール)
nvm use 8.11.2 (最新に切り替え)

4.3. node-REDのインストール

コマンドプロンプトで、以下を実行ください。
npm install -g node-red

4.4. node-REDの動作確認

コマンドプロンプトで、以下を実行ください。
node-red  (起動までに、約3分かかります)
「Server now running at http://127.0.0.1:1880/」の行が表示されたら、
ブラウザで「http://127.0.0.1:1880/」を入力すると、Node-REDが表示されます。

nodered01-19
画面が表示されたら、コマンドプロンプトのプロセスを終了させてください。

よくあるエラー
●5分以上待って、「Server now running at http://127.0.0.1:1880/」の行がコマンドプロンプトに表示されない場合、他のプロセスがポートを使っている可能性が高いです。
その場合、「C:\Users\<ユーザ名>\.node-red\settings.js」の「uiPort: process.env.PORT || 1880,」を検索して、1880を他のプロセスが利用していないポートに変更ください。
●ブラウザで「http://127.0.0.1:1880/」を入力しても、画面が表示されない場合は、ファイアウォールで、ポートを塞いでいると思います。

5. nssmで、Node-REDのサービス化

5.1. nssmの起動とNode-REDのサービス設定

コマンドプロンプトで、「nssm install」とすると、GUIが立ち上がります。
以下の要領で、設定ください。
Applicationタブ
Path:<nvmのインストールディレクトリ>\v8.11.2\node-red.cmd
Start directory:C:\Users\<ユーザ>\.node-red
Arguments:–settings “C:\Users\<ユーザ>\.node-red\settings.js”
Service name:node-red
nodered01-20
Log onタブ
インストールしたユーザを設定しておきます。
nodered01-21
I/Oタブ(初期状態では、右に隠れています。)

Output C:\Users\<ユーザ>\.node-red\stdout.log
Error C:\Users\<ユーザ>\.node-red\stderr.log
Timestampにチェック

nodered01-22
File rotation(I/Oタブの右隣りにあります。)
「Replace existing~」にチェック
! 常時運用する場合、「Rotate files」以降を定義ください。
nodered01-23
編集後、「Edit service」で、完了です。

5.2. node-redサービス開始

サービスを確認すると、Service nameに入力した名前で追加されています。
再編集する場合は、コマンドプロンプトで、「nssm edit node-red」で編集できます。
node-redサービスを開始すると、ブラウザで「http://127.0.0.1:1880/」にアクセスできます。

nodered01-24

【参考】
第1回 Node-REDのサービス化
第2回 MQTTメッセージブローカーの設定
第3回 MQTTメッセージ→SQL Serverへinsertのフローを作成

ホームページ http://www.ois-yokohama.co.jp

facebook   https://www.facebook.com/orientalinformationservice/