1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

サン電子のゲートウェイRoosterにHULFT IoT(Agent)を入れてみた

Posted at

こんにちは、よろず相談担当 すぎもん :yum: です。

前回は、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をインストールするには、事前にパッケージ作成環境を準備する必要があります。実際にパッケージの作成をやってみました。
image.png

事前準備

以下を準備してください。

  • 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 アドレスとポート番号を : (コロン) 区切りで指定します
  • proxy
    • プロキシサーバ名、または IP アドレスとポート番号を : (コロン) 区切りで指定します
    • Agent がプロキシ環境下にいる場合に指定します
  • 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パッケージの作成を実施してみました。手順は多くありますが、マニュアルに従って、着実に対応するとしっかり最後までやり切れました!

このブログでは、今後も技術の「よろず相談窓口」で相談を受けた内容や、誕生したワザをご紹介していけたらな、と思っています。

これからも是非チェックいただき、宜しければフォローをお願いします。

それでは、また!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?