ブログ

Armadillo IoT ゲートウェイ G3: Node-REDを自動起動させるルートファイルシステムを構築する

at_do.phanngoc
2020年1月29日 18時30分

1. 概要

x1-debian-builder を使用してルートファイルシステムを構築し、
Armadillo IoT ゲートウェイ G3上でNode-REDを自動起動させる手順を紹介します。

Node-REDの使用方法などは以下のブログを参照してください。

https://users.atmark-techno.com/blog/53/3986

2. ルートファイルシステムに構築手順

x1-debian-builderをATED7上にダウンロードします。
以下の場所からx1-debian-builderを取得してください。

https://download.atmark-techno.com/armadillo-x1/x1-debian-builder/

wget https://download.atmark-techno.com/armadillo-x1/x1-debian-builder/x1-debian-builder-[version].tar.gz

ダウンロードしたx1-debian-builder-[version].tar.gzを展開します。

tar zxvf x1-debian-builder-[version].tar.gz

展開したファイルは以下の構成となっています。
5つのモデルのリソースと、ビルドスクリプトが存在します。

x1-debian-builder-[version]/
|
|--- aiotg3_resouces
|--- aiotg3l_resources
|--- ax1_resource
|--- a600_resources
|--- degugw_resources
|--- build.sh

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

今回はArmadillo IoT ゲートウェイ G3での実行方法を紹介しますが、他の機種でも実行できます。

aiotg3_resources/resourcesに移動し、
fixupの最後に以下の行を追加してください。

atmark@atde7:~/x1-debian-builder-v2.1.1/aiotg3_resources/resources$ vi fixup

<省略>

#deploy node-red upon root file system
curl -sL https://deb.nodesource.com/setup_13.x | sudo bash - #Adding Nodesource apt repository
apt-get install -y nodejs                                    #Install nodejs from added source
node --version                                               #Display node version
npm install -g --unsafe-perm node-red                        #Install node-red by npm

Node-REDを自動起動させる

Armadillo IoT ゲートウェイ G3で、systemdの設定を行うことでNode-REDを自動起動できます。
詳細は以下のブログを参照してください。

https://users.atmark-techno.com/blog/6938/2865

ですが今回は、Node.jsのPM2を用いてNode-REDを起動する手段を使います。
先程と同じく、fixupに以下の行を追加してください。

atmark@atde7:~/x1-debian-builder-v2.1.1/aiotg3_resources/resources$ vi fixup

<省略>

#start up node-red at boot
npm install pm2 -g                                            #Install PM2 by npm
pm2 start /usr/lib/node_modules/node-red/red.js -- -v         #Add node-red to PM2 development environment
pm2 list                                                      #Check node list adding to PM2
pm2 save                                                      #Add PM2 run at boot
pm2 startup

ルートファイルシステムにNode-REDのデプロイ情報を設定

Webサーバーで、Node-REDをデプロイする際のnodeのフローを書いてから "Deploy"をクリックすると
jsonファイルとしてArmadilloにデータが書き込まれます。

書き込まれたデーターは/root/.node-red/に存在します。

/root/.node-red/
|--- flows_armadillo.json
|--- lib
|--- node_modules
|--- package-lock.json
|--- package.json
|--- settings.js

量産する時やバックアップする時はnode_modules以外のファイルとディレクトリを保持すれば、
Node-REDを再起動する時に、データがロードされます。

以下の3つ手順でルートファイルシステムを構築する際に、上記ファイルを入れ込むことで
複数のArmadilloに同じNode-RED設定を反映することが出来ます。

  • /root/.node-red/flows_armadillo.json, lib, package-lock.json, package.json, settings.js
    node-red.tar.gz(ファイル名は任意)に圧縮します。
root@armadillo:~# cd /root/.node-red/
root@armadillo:~/.node-red# tar zcvf node-red.tar.gz flows_armadillo.json lib package-lock.json package.json settings.js
root@armadillo:~/.node-red# ls node-red.tar.gz
node-red.tar.gz
  • node-red.tar.gzをATDE上のx1-debian-builder-[version]/[model]_resources/resourcesにコピーします。

  • fixupに以下の行を追加してください。

atmark@atde7:~/x1-debian-builder-v2.1.1/aiotg3_resources/resources$ vi fixup

<省略>

#migrate database
tar zxvf /resources/node-red.tar.gz -C /root/.node-red/      #Migrate database
cd /root/.node-red                                           #Locate to project directory
npm install                                                  #Install necessary palette

ビルドする前にfixupを保存し、編集した内容を確認してください。

ビルドする

./build.sh [model]でモデルを指定出来ますがデフォルトはaiotg3となっています。
ビルド完了まで少々時間がかかります。

atmark@atde7:~/x1-debian-builder-[version]$sudo ./build.sh

ビルドが完了すると以下のファイルが出来上がります。

debian-stretch-armhf_aiotg3_[日付].tar.gz

このファイルを用いてArmadilloに展開すれば、
Node-REDが自動起動し、設定したNode-REDのデータをロードし動作するようになります。

展開方法は、「 ルートファイルシステムの書き換え」を参照してください。

関連ページ

Debian GNU/Linux ルートファイルシステムをビルドする