こんにちは、よろず相談担当 すぎもん です。
前回は、Linuxゲートウェイ機器であるサン電子Rooster(NSX7000)にHULFT IoT EdgeStreamingのパッケージを作成してみました。(前記事)
今回は、第2弾として、HULFT IoT Agentのパッケージ作成についてもブログにまとめてみました。
皆さまの課題を解決する糸口があるかもしれませんので、是非ご一読いただければ、と思います。
NSX7000 への HULFT IoT Agent パッケージ作成手順
はじめに
サン電子Rooster(NSX7000)とは、サン電子株式会社のIoT/M2M向けルーターRoosterシリーズの機器となります。NSX7000は、マルチキャリア対応 LTE通信対応Linuxゲートウェイと位置づけられております。
- NSX7000機器情報
機器の詳細については、下記リンクをご参照ください。
[NSX7000機器情報] (https://www.sun-denshi.co.jp/sc/nsx7000/)
- 作業の流れ
HULFT IoT Agentをインストールするには、事前にパッケージ作成環境を準備する必要があります。実際にパッケージの作成をやってみました。
事前準備
以下を準備してください。
-
HULFT IoT
-
製品本体が含まれる zip ファイルを指定のサイトからダウンロードし、展開します
-
xxxは製品のバージョンです
-
HULFT IoT に関する用語や操作などについては zip ファイルに含まれる「readme.html」かオンラインマニュアルを参照してください
hulftiot_vxxx/ +-- Agent/ | | | +-- HULFT IoT Agent のインストールモジュール | +-- Agent UpdateModule/ | | | +-- HULFT IoT Agent のアップデートモジュール | +-- License/ | | | +-- ライセンスファイル | +-- Manager/ | | | +-- HULFT IoT Manager のインストールモジュール | +-- Manual/ | | | +-- HULFT IoT のマニュアル | +-- readme.html
-
-
NSX7000 パッケージ作成環境(※開発環境を別途準備します)
NSX7000マニュアル
パッケージ作成環境の構築手順については以下のマニュアルを参照します- Add-onアプリケーション開発-パッケージ作成マニュアル.pdf
- Add-onアプリケーション開発-環境構築マニュアル.pdf
Manager 環境の構築
HULFT IoTマニュアル
HULFT IoT のマニュアルに従い、Manager 環境の構築を行います
パッケージ化するモジュールの準備
注意:以降の手順はrootユーザで実行します
1. NSX7000 パッケージ作成環境の任意のディレクトリに以下のファイルをコピーします
- hulftiot_vxxx/Agent/HULFT_IoT_Agent_Linux_AArch32_Vxxx.tar.gz
2. コピーしたファイルを展開します
tar zxf HULFT_IoT_Agent_Linux_AArch32_Vxxx.tar.gz
3. コマンドを実行すると、以下のファイルが展開されます
iot_agent/
+-- modules/
| +-- huliotcore
| +-- huliotinfo
| +-- huliotsend
| +-- huliotservice
|
+-- defaultsettings.ini
|
+-- huliotsetup
|
+-- huliotsetup.ini
設定ファイルの編集
HULFT IoT Agent の設定ファイルを編集します。
1. agent.conf の作成
以下のテキストをコピーして、agent.conf というファイル名で任意のディレクトリに保存します
devicename =
server_hostname =
proxy =
proxy_user =
protocol = 0
cert_verification = 0
activation_key =
first_conn_retry_interval = 3600
remarks_file =
2. 作成した agent.conf の以下の項目を設定します
- devicename
- Manager にアクティベートした際に表示されるAgentの名前を指定します
- 省略時はホスト名を採用します
- server_hostname
- Manager のサーバ名、または IP アドレスとポート番号を
: (コロン)
区切りで指定します
- Manager のサーバ名、または IP アドレスとポート番号を
- proxy
- プロキシサーバ名、または IP アドレスとポート番号を
: (コロン)
区切りで指定します - Agent がプロキシ環境下にいる場合に指定します
- プロキシサーバ名、または IP アドレスとポート番号を
- proxy_user
- プロキシ認証が通るユーザ名とパスワードを
: (コロン)
区切りで指定します
- プロキシ認証が通るユーザ名とパスワードを
- activation_key
- 構築した Manager からアクティベーションキーを取得して設定します
※その他の項目の説明については、マニュアルを参照してください。
devicename = nsx7000
server_hostname = server:8765
proxy =
proxy_user =
protocol = 0
cert_verification = 0
activation_key = 11e1400a-0989-4699-9703-88f85c653c35
first_conn_retry_interval = 3600
remarks_file =
パッケージの作成
NSX7000 パッケージ作成環境で HULFT IoT Agent のパッケージを作成します。
各種ファイルのパラメータについては以下のマニュアルを参照します。
- Add-onアプリケーション開発-パッケージ作成マニュアル.pdf
1. 規定のディレクトリを作成します
トップ・ディレクトリ/
|
+-- object/
+-- rpk/
| |
| +-- CONTROL/
| | |
| | +-- control ファイル
| | +-- postrm スクリプト
| |
| +-- appctl スクリプト
|
+-- Makefile
2. 以下のファイルを object ディレクトリにコピーします
- agent.conf
- iot_agent/modules/huliotcore
- iot_agent/modules/huliotinfo
- iot_agent/modules/huliotsend
- iot_agent/modules/huliotservice
- iot_agent/defaultsettings.ini
3. control ファイルの作成します
わたしは、以下の通り作成してみました。
Package: hulftiot-agent
Version: 2.0.0
Depends:
Runtime-Depends:
Maintainer: Company
Architecture: nsx7000
Provides:
Replaces:
Description:
4. postrm スクリプトを作成します
# !/bin/sh
PATH=/usr/sbin:/sbin:$PATH
export PATH
: ${ROOSTER_OS_LOG_STDERR:=yes}
: ${ROOSTER_OS_LOG_FACILITY:=user}
. /lib/functions.sh
include /lib/functions/rooster-os/base
include /lib/functions/rooster-os/rpkg
PACKAGE_NAME=hulftiot-agent
on_remove() {
rm -rf /app/var/${PACKAGE_NAME}
return 0
}
case "$1" in
*)
if [ $PKG_ROOT = "/" ]; then
on_remove
fi
;;
esac
exit 0
5. appctl スクリプトを作成します
わたしは、以下の通り作成してみました。
#!/bin/bash
PACKAGE_NAME=hulftiot-agent
PACKAGE_DIR=/app/package
EXEC_DIR=/app/var/${PACKAGE_NAME}
WORK_DIR=${EXEC_DIR}/work
LOG_DIR=${EXEC_DIR}/log
HASH_CMD=sha1sum
HASH_FILE=huliot.sha1
IOT_FILE=("huliotcore" "huliotinfo" "huliotsend" "huliotservice")
make_hash() {
if [ -e ${EXEC_DIR}/${HASH_FILE} ]; then
rm -f ${EXEC_DIR}/${HASH_FILE}
fi
for ((i = 0; i < ${#IOT_FILE[@]}; i++)) {
${HASH_CMD} ${PACKAGE_DIR}/${PACKAGE_NAME}/bin/${IOT_FILE[i]} >> ${EXEC_DIR}/${HASH_FILE}
}
}
start_app() {
if [ ! -d ${EXEC_DIR} ]; then
mkdir -p ${EXEC_DIR}
mkdir -p ${WORK_DIR}
mkdir -p ${LOG_DIR}
cp -p ${PACKAGE_DIR}/${PACKAGE_NAME}/bin/* ${EXEC_DIR}
echo "workfile_path = ${WORK_DIR}" >> ${EXEC_DIR}/agent.conf
echo "logfile_path = ${LOG_DIR}" >> ${EXEC_DIR}/agent.conf
make_hash
else
${HASH_CMD} -c ${EXEC_DIR}/${HASH_FILE} > /dev/null 2>&1
if [ $? -ne 0 ]; then
cp -pf ${PACKAGE_DIR}/${PACKAGE_NAME}/bin/huliot* ${EXEC_DIR}
make_hash
fi
fi
${EXEC_DIR}/huliotservice
}
stop_app() {
${EXEC_DIR}/huliotservice --stop
}
case "$1" in
start)
start_app
;;
stop)
stop_app
;;
restart)
stop_app
start_app
;;
*)
;;
esac
exit 0
6. Makefile を作成します
わたしは、以下の通り作成してみました。
ROOSTER_TOP_DIR ?= $(HOME)/RoosterOS-SDK
ADD_ON_PKG_NAME := hulftiot-agent
ADD_ON_PKG_VERSION := 2.0.0
ADD_ON_PKG_MAINTAINER := Company
ADD_ON_PKG_DESCRIPTION :=
include $(ROOSTER_TOP_DIR)/mk/add-on-package.mk
OBJ_DIR=./object
hulftiot-agent:
contents: $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR) hulftiot-agent
mkdir -p $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/bin
cp $(OBJ_DIR)/huliot* $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/bin
cp $(OBJ_DIR)/agent.conf $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_DIR)/bin
touch $(ROOSTER_PACKAGE_ADD_ON_CONTENTS_PREPARED)
$(eval $(DefaultTarget))
7. 以下のコマンドを実行してパッケージを作成します
make rpk
8. コマンドを実行すると以下のファイルが作成されます
- hulftiot-agent_2.0.0.rpk
後は、この作成したパッケージファイルをRooster上に持っていき、下記のマニュアルを参考にインストールすることで使用可能です。
- Add-onアプリケーション開発-環境構築マニュアル.pdf
まとめ
いかがでしたでしょうか。
今回は、HULFT IoT Agentパッケージの作成を実施してみました。手順は多くありますが、マニュアルに従って、着実に対応するとしっかり最後までやり切れました!
このブログでは、今後も技術の「よろず相談窓口」で相談を受けた内容や、誕生したワザをご紹介していけたらな、と思っています。
これからも是非チェックいただき、宜しければフォローをお願いします。
それでは、また!