こんにちは、よろず相談担当 すぎもん です。
今回は、Linuxゲートウェイ機器であるサン電子Rooster(NSX7000)にHULFT IoT EdgeStreamingのパッケージを作成してみました!
まずはやってみる
サン電子Rooster(NSX7000)は、サン電子株式会社のIoT/M2M向けルーターRoosterシリーズの機器です。
NSX7000は、マルチキャリア対応 LTE通信対応Linuxゲートウェイと位置づけられているそう。
[NSX7000機器情報] (https://www.sun-denshi.co.jp/sc/nsx7000/)
HULFT IoT EdgeStreamingをインストールするには、事前にパッケージ作成環境を準備する必要があるみたいなので、パッケージの作成をやってみました。
パッケージ作成環境の準備
-
HULFT IoT EdgeStreaming
-
製品本体が含まれる zip ファイルを指定のサイトからダウンロード
-
HULFT IoT EdgeStreaming に関する用語や操作については zip ファイル内の「FirstStepGuide_jpn.pdf」にあります。
-
-
NSX7000 パッケージ作成環境(※開発環境を別途準備します)
NSX7000マニュアル
上記リンクから、パッケージ作成環境の構築手順のマニュアルを参照しました。- Add-onアプリケーション開発-パッケージ作成マニュアル.pdf
- Add-onアプリケーション開発-環境構築マニュアル.pdf
これで事前準備完了です。
パッケージ化するモジュールの準備
HULFT IoT EdgeStreaming Studio を使って、ストリーム処理を実装しパッケージ作成環境にデプロイします。
ストリーム処理を実装方法やデプロイ方法については、製品ダウンロード時に取得したzip ファイル内の「FirstStepGuide_jpn.pdf」を参考にやってみます。
- FirstStepGuide_jpn.pdf
1. HULFT IoT EdgeStreaming Studio を起動し、ストリーム処理を表すスクリプトを作成
2. 開発したスクリプトを NSX7000 パッケージ作成環境上の任意のディレクトリにデプロイ
- 指定した任意のディレクトリには es-agent.tar.gz
がデプロイされました
3. デプロイしたファイルを以下のコマンドで展開
tar zxf es-agent.tar.gz
4. コマンドを実行すると、同一ディレクトリに以下のファイルが展開されました。
- es-agent
- es-agent.yaml
- script.bql
- (plugins)※プラグインモジュールを使用している場合
パッケージの作成
NSX7000 パッケージ作成環境で HULFT IoT EdgeStreaing runtime のパッケージを作成してみます。
各種ファイルのパラメータについては以下のマニュアルを参照しました。
- Add-onアプリケーション開発-パッケージ作成マニュアル.pdf
1. 規定のディレクトリを作成します
トップ・ディレクトリ/
|
+-- object/
| |
| +-- run-es-agent 起動スクリプト
+-- rpk/
| |
| +-- CONTROL/
| | |
| | +-- control ファイル
| |
| +-- appctl スクリプト
|
+-- EdgeStreaming-runtime
+-- Makefile
2. 以下のファイルを object ディレクトリにコピーしました。
- es-agent
- es-agent.yaml
- script.bql
- (plugins)※プラグインモジュールを使用している場合
3. 次に、control ファイルの作成してみます。
わたしは、以下の通り作成してみました。
Package: EdgeStreaming-runtime
Version: 2.0.0
Depends:
Runtime-Depends:
Maintainer: Company
Architecture: nsx7000
Provides:
Replaces:
Description:
4. appctl スクリプトを作成します
わたしは、以下の通り作成してみました。
#!/bin/sh
PACKAGE_NAME=EdgeStreaming-runtime
PACKAGE_DIR=/app/package
exec $PACKAGE_DIR/$PACKAGE_NAME/sbin/$PACKAGE_NAME $@
5. appctl スクリプトから実行される EdgeStreaming-runtime スクリプトを作成します。
#!/bin/sh /etc/rc.common
USE_PROCD=1
PACKAGE_NAME=EdgeStreaming-runtime
PACKAGE_DIR=/app/package
COMMAND=$PACKAGE_DIR/$PACKAGE_NAME/sbin/run-es-agent
start_service() {
procd_open_instance
procd_set_param command $COMMAND
procd_set_param respawn
procd_close_instance
}
stop_service() {
return 0
}
6. 起動スクリプト(run-es-agent)を作成します
わたしは、以下の通り作成してみました。
#!/bin/sh
PACKAGE_NAME=EdgeStreaming-runtime
PACKAGE_DIR=/app/package
LD_LIBRARY_PATH=${PACKAGE_DIR}/${PACKAGE_NAME}/lib
BIN_DIR=${PACKAGE_DIR}/${PACKAGE_NAME}/bin
COMMAND=${BIN_DIR}/es-agent
export LD_LIBRARY_PATH
cd $BIN_DIR
exec $COMMAND run -c es-agent.yaml
7. 起動スクリプト(run-es-agent)に実行権限を付与します。
chmod 755 run-es-agent
8. Makefile を作成します。
わたしは、以下の通り作成してみました。
ROOSTER_TOP_DIR ?= $(HOME)/RoosterOS-SDK
ADD_ON_PKG_NAME := EdgeStreaming-runtime
ADD_ON_PKG_VERSION := 2.0.0
ADD_ON_PKG_MAINTAINER := Company
ADD_ON_PKG_DESCRIPTION :=
OBJ_DIR=./object
include $(ROOSTER_TOP_DIR)/mk/add-on-package.mk
EdgeStreaming-runtime:
contents: $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR) EdgeStreaming-runtime
mkdir -p $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/bin
cp $(OBJ_DIR)/es-agent* $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/bin
cp $(OBJ_DIR)/script.bql $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/bin
cp -r $(OBJ_DIR)/plugins $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/bin
mkdir -p $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/sbin
cp $(OBJ_DIR)/run-es-agent $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/sbin
$(call replace_add_on_keyword,\
$(ADD_ON_PKG_NAME),\
$(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/sbin/$(ADD_ON_PKG_NAME))
chmod +x $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/sbin/$(ADD_ON_PKG_NAME)
touch $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_PREPARED)
$(eval $(DefaultTarget))
9. 以下のコマンドを実行してパッケージを作成します。
make rpk
10. コマンドを実行すると以下のファイルが作成されました。
- EdgeStreaming-runtime_2.0.0.rpk
後は、この作成したパッケージファイルをRooster上に持っていき、下記のマニュアルを参考にインストールすることで使用可能です。
- Add-onアプリケーション開発-環境構築マニュアル.pdf
最後に
今回は、HULFT IoT EdgeStreamingをLinuxゲートウェイ機器にインストールしてみましたが、いかがでしたでしょうか。
パッケージの作成をしてみましたが、マニュアルも充実しているので作業自体は思うより簡単にすることができました!
また今回は、とっかかりのパッケージ作成をまずしてみましたが、
別の機会で、HULFT IoT EdgeStreamingを具体的に使ってみたいなーと思ってます!
そこでもっと具体的なところをお話しできたらと思います!
このブログでは、今後も技術の「よろず相談窓口」で相談を受けた内容や、誕生したワザをご紹介していけたらな、と思っています。
これからも是非チェックいただき、宜しければフォローをお願いします。
それでは、また!