IBM i でNode-REDを動かす


IBM i上でNode-REDを動かしてみた時の備忘録です。

## 環境
IBM i Ver7.3

## 前提条件
以下のライセンスプログラムがインストールされていること

* 5770SS1 OPT33 PASE
* 5733SC1 IBM PORTABLE UTILITIES FOR I
* 5733OPS OPT10 Node Ver6

## nodeのバージョン確認
Node-RED が推奨環境としているnode v6になっているかを確認します。

QP2TERMでPASEセッションを開始して、バージョンを確認します。
`node -v`
`npm -v`

```shell-session

                            /QOpenSys/usr/bin/-sh
                                                 
  $                                              
> node -v                                        
  v6.9.1                                         
  $                                              
> npm -v                                         
  3.10.8                                         
```


## Node-REDのインストール

npmコマンドでNode-REDをインストールします。
Linuxなどと基本的には同じですね。

`npm install -g node-red`

## Node-REDの起動確認
`/QOpenSys/QIBM/ProdData/OPS/Node6/bin/node-red`

```shell-session

   $                                                                            
  /QOpenSys/QIBM/ProdData/OPS/Node6/bin/node-red                               
   23 Nov 07:40:11 - [info]                                                     
                                                                                
   Welcome to Node-RED                                                          
   ===================                                                          
                                                                                
   23 Nov 07:40:11 - [info] Node-RED version: v0.17.5                           
   23 Nov 07:40:11 - [info] Node.js  version: v6.9.1                            
   23 Nov 07:40:11 - [info] OS400 3 ppc BE                                      
   23 Nov 07:40:12 - [info] Loading palette nodes                               
   23 Nov 07:40:16 - [warn] ----------------------------------------------------
   --                                                                           
   23 Nov 07:40:16 - [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node
   23 Nov 07:40:16 - [warn] ------------------------------------------------------
   23 Nov 07:40:16 - [info] Settings file  : /home/demu/.node-red/settings.js   
   23 Nov 07:40:16 - [info] User directory : /home/demu/.node-red               
   23 Nov 07:40:16 - [info] Flows file     : /home/demu/.node-red/flows_xxxx.xxxx.json
   23 Nov 07:40:16 - [info] Starting flows                                      
   23 Nov 07:40:16 - [info] Started flows                                       
   23 Nov 07:40:16 - [info] Server now running at http://127.0.0.1:1880/        

```


Webブラウザーでポート1880にアクセスする。
http://(IBM iのIPアドレス):1880/
以下のようにNode-REDの画面が表示されればOKです。

![image](https://qiita-image-store.s3.amazonaws.com/0/213253/35e5a83e-3767-d8be-78d5-cdb4253c023b.png)

## DB2 for i 用nodeを追加する。
このままでもNode-REDは使用できますが、IBM iのデータベースにアクセスするのに便利なノードを追加してみます。
画面右上のツールボタンからパレットの管理をクリックします。

![image](https://qiita-image-store.s3.amazonaws.com/0/213253/aa03d90e-617b-dee2-8898-080100f5fca9.png)

次に「ノードの追加」タブの検索欄にnode-red-contrib-db2-for-iと入力しEnterキーを押すと、検索結果が表示されます。

![image](https://qiita-image-store.s3.amazonaws.com/0/213253/ad433f73-7089-8638-9c53-e4326827f9fc.png)

ノードを追加ボタンをクリックしてインストールを開始します。
パレットのストレージにDB2 for iのノードが追加されていればインストールは無事完了です。

![image](https://qiita-image-store.s3.amazonaws.com/0/213253/09978778-e2d8-0b26-dc53-3404a79a4086.png)

## DB2 for iのデータをSQLで照会してみる
簡単なサンプルとして以下のテーブルを照会してみました。
![image](https://qiita-image-store.s3.amazonaws.com/0/213253/c9232ada-3a6b-8ef8-dbd0-5f47fe41f863.png)

DB2 for iノードはmsg.payloadに渡されたSQL文を実行するので、injectノードにSELECT文を入力し、実行してみます。

![image](https://qiita-image-store.s3.amazonaws.com/0/213253/950d3875-0e36-638f-9955-30045b826aa3.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/213253/a52f0f43-7a60-f7cb-c626-e55a40bca808.png)

デプロイボタンをクリックしてデプロイし、injectノードをクリックすると、デバック欄にテーブルが表示されているのがわかる。
![image](https://qiita-image-store.s3.amazonaws.com/0/213253/9b78822c-18db-db9e-3dea-568e032b7091.png)

デフォルトの設定では1レコード毎に出力されるが、DB2 for iノードの「Single Array Result mode」にチェックを入れれば、配列として出力されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/213253/417e253d-afae-ba88-9068-d91e39e99f60.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/213253/1c2ccc26-3aa9-6e98-c61e-3f3bab043b95.png)

IBM iでもNode-REDを気軽に使えますね。