Armadillo-IoT A6E の オムロン 形2JCIE-BU 環境センサ(USB型) を使用するためにゲートウェイコンテナのカスタマイズ方法について説明します。既存のゲートウェイコンテナの動作確認が未確認の場合は、 Armadillo-IoT ゲートウェイ A6E製品マニュアル v1.0.1 「9.3. アプリケーション開発パターン」をご確認ください。また記載しているコンテナイメージのバージョンについては記載日現在 2022/11/15 段階のものです。
本 Howto の構成は以下です。
ゲートウェイコンテナのカスタマイズ手順について
Armadillo-IoT A6E のゲートウェイコンテナのカスタマイズ手順について説明します。デフォルトのゲートウェイコンテナをカスタマイズするには、カスタマイズ済ゲートウェイコンテナアプリケーションへの変更と対応するゲートウェイコンテナを用意する必要があります。
1. カスタマイズ済ゲートウェイコンテナアプリケーションを Armadillo-IoT A6E に配置
通常はゲートウェイコンテナに含まれる既存のゲートウェイコンテナアプリケーションが起動しますが、カスタマイズ済のゲートウェイコンテナアプリケーションが起動されるように変更します。今回はオムロン 形2JCIE-BU 環境センサ(USB型) (以下環境センサと記載)からデータを取得するカスタマイズ済ゲートウェイコンテナアプリケーションを配置します。カスタマイズ済のゲートウェイコンテナアプリケーションは "/var/app/rollback/volumes/gw_container/src/customize" に配置します。 以下のリンクまたは URL からカスタマイズ済のゲートウェイコンテナアプリケーションを取得・展開して配置してください。
[armadillo ~]# curl -O https://download.atmark-techno.com/sample/armadillo_iotg_a6e-gw-container-customize-for-env-sensor-howto/customize.tar [armadillo ~]# tar -xvf customize.tar -C /var/app/rollback/volumes/gw_container/src/
"/var/app/rollback/volumes/gw_container/src/customize" に "main.py" と "app" が配置されていることを確認します。
[armadillo ~]# ls /var/app/rollback/volumes/gw_container/src/customize app main.py
また、カスタマイズ済ゲートウェイコンテナアプリケーション対応のために設定ファイルを更新する必要があります。設定ファイルは "/var/app/rollback/volumes/gw_container/config/sensing_mgr.conf" です。設定ファイルを以下のコマンドを実行して更新してください。
[armadillo ~]# curl -O https://download.atmark-techno.com/sample/armadillo_iotg_a6e-gw-container-customize-for-env-sensor-howto/sensing_mgr.conf [armadillo ~]# cp sensing_mgr.conf /var/app/rollback/volumes/gw_container/config/sensing_mgr.conf
追記した内容は以下です。
[ENV_sensor] ; polling_interval[sec] polling_interval=1
上記設定内容についての詳細は以下です。
項目 | 概要 | 設定値 | 内容 |
---|---|---|---|
polling_interval | データ取得間隔[sec] | 1~3600 | この値に従って、環境センサの値を読み出します |
設定ファイルに上記の内容が記載されていることを確認して保存します。また、デフォルトの場合はクラウド接続せず、定期的に環境センサのデータを取得するようになっています。必要に応じて設定ファイルを書き換えてください。設定ファイルの書き換え方法については Armadillo-IoT ゲートウェイ A6E製品マニュアル v1.0.1 「10.1.4. コンフィグ設定」をご確認ください。
2. コンテナの作成
ゲートウェイコンテナからカスタマイズ済ゲートウェイコンテナアプリケーションを動作させるために、必要なパッケージをゲートウェイコンテナにインストールする必要があります。必要なパッケージをインストールするためのスクリプトファイルを以下のコマンドを実行して取得するか、以下の内容のスクリプトファイルを作成してください。
[armadillo ~]# curl -O https://download.atmark-techno.com/sample/armadillo_iotg_a6e-gw-container-customize-for-env-sensor-howto/container_package_install.sh
スクリプトファイルの内容は以下です。
#!/bin/sh apk add py3-virtualenv cd /root/gw_container/ virtualenv venv ./venv/bin/pip install crcmod
最後の行で必要なパッケージをインストールしています。必要に応じて書き換えてください。次に、ゲートウェイコンテナで必要なパッケージをインストールするためのスクリプトファイルを実行します。 すでにコンテナが起動している場合は以下コマンドを実行してコンテナを停止します。
[armadillo ~]# podman stop a6e-gw-container
また、通常ゲートウェイコンテナはゲートウェイコンテナアプリケーションを起動するようになっていますが、ゲートウェイコンテナアプリケーションを起動しない設定にする必要があります。そのため、ゲートウェイコンテナの設定ファイルを編集します。ゲートウェイコンテナの設定ファイルは "/etc/atmark/containers/a6e-gw-container.conf" です。設定ファイルの最後の行は以下のように "set_command sleep infinity" がコメントアウトされていると思います。
set_command sh /usr/bin/gw-app.sh #set_command sleep infinity
これを以下のように "set_command sh /usr/bin/gw-app.sh" がコメントアウトされるように変更して保存します。
#set_command sh /usr/bin/gw-app.sh set_command sleep infinity
以下のコマンドを実行してゲートウェイコンテナを起動させてください。
[armadillo ~]# podman_start a6e-gw-container
以下のコマンドを実行してゲートウェイコンテナ内でスクリプトファイルを実行します。
[armadillo ~]# podman cp container_package_install.sh a6e-gw-container:/root/. [armadillo ~]# podman exec a6e-gw-container sh /root/container_package_install.sh
"/var/app/rollback/volumes/gw_container/src/" に "venv" が配置されていることを確認します。
[armadillo ~]# ls /var/app/rollback/volumes/gw_container/src/ customize default venv
確認出来たら以下のコマンドを実行してゲートウェイコンテナを停止してください。
[armadillo ~]# podman stop a6e-gw-container
3. コンテナの設定ファイルの変更
ゲートウェイコンテナがオムロンの環境センサにアクセスできる必要があります。そのためゲートウェイコンテナの設定ファイルを再度変更します。先ほど変更した設定ファイル "/etc/atmark/containers/a6e-gw-container.conf" ですが、以下のコマンドを実行して更新します。
[armadillo ~]# curl -O https://download.atmark-techno.com/sample/armadillo_iotg_a6e-gw-container-customize-for-env-sensor-howto/a6e-gw-container.conf [armadillo ~]# cp a6e-gw-container.conf /etc/atmark/containers/a6e-gw-container.conf
設定ファイルの変更点は以下です。ゲートウェイコンテナから環境センサがアクセスできるようにしています。
# add envsensor echo 0590 00d4 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id sleep 1 for serial in /dev/serial/by-id/usb-OMRON_2JCIE-BU01*; do if [ -e "$serial" ]; then envsensor=$(readlink -f $serial) add_devices $envsensor break fi done
また、最後の行はゲートウェイコンテナアプリケーションを実行するように戻っています。
set_command sh /usr/bin/gw-app.sh #set_command sleep infinity
設定ファイルに上記の内容が記載されていることを確認して保存します。
4. コンテナアプリケーションの起動確認
ゲートウェイコンテナを起動します。起動前に必ず、環境センサが Armadillo-IoT A6E に接続されていることを確認してください。環境センサが接続されていない場合接続に失敗してエラーします。確認後、以下のコマンドを実行してコンテナを起動します。
[armadillo ~]# podman_start a6e-gw-container
カスタマイズ済ゲートウェイコンテナアプリケーションの動作確認にはゲートウェイコンテナのログを確認するか、以下のコマンドを実行してください。
[armadillo ~]# podman logs a6e-gw-container
以下のような内容が表示されていたら、環境センサの情報取得に成功しているためカスタマイズ済ゲートウェイコンテナアプリケーションの動作確認は終了です。
2022-11-09 15:21:17,438 : Send data: {'ENV_sensor': {'temperature': 27.59, 'humidity': 40.78, 'illuminance': 677, 'air_pressure': 1016.485, 'sound_noise': 53.13, 'e_tvoc': 192, 'e_co2': 1530, 'discomfort_index': 73.95, 'heat_stroke_alarmness': 22.16, 'vibr_info': 0}, 'timestamp': 1667974873}
また、ゲートウェイコンテナの設定ファイルですが Armadillo-IoT A6E の電源を落とすと変更が消えてしまうため保存する必要があります。以下のコマンドを実行して設定ファイルを保存してください。
[armadillo ~]# persist_file -rv /etc/atmark/containers/a6e-gw-container.conf
これで再起動しても設定ファイルが保存されたままになるため、間欠動作と組み合わせることが可能です。間欠動作については Armadillo-IoT ゲートウェイ A6E製品マニュアル v1.0.1 「省電力・間欠動作機能」をご確認ください。
5. [応用]クラウドからのコンテナアプリケーションのデータ設定
ゲートウェイコンテナに接続先の クラウド 情報の設定を行った場合はクラウドにデータ送信することができます。また、ゲートウェイコンテナの設定ファイルを書き換えてデータ設定を有効にすることで、クラウドからデータ設定を行うことが可能です。記載日現在 2022/11/15 は AWS IoT Core のデバイスシャドウを更新することでゲートウェイコンテナアプリケーションのデータ設定が可能です。詳細は Armadillo-IoT ゲートウェイ A6E製品マニュアル v1.0.1 「10.1.3. 接続先の クラウド 環境を構築 (AWS) 」をご確認ください。現在環境センサには取得時間を設定する "polling_interval" があります。こちらを AWS IoT Core のデバイスシャドウの更新から変更してみます。デバイスシャドウの更新は以下のフォーマットを使用します。
{ "state": { "desired": { "ENV_sensor_config" : { "polling_interval" : 読み出し間隔> } } } }
以下は読み出し間隔を20秒に設定する場合の設定例です。
{ "state": { "desired": { "ENV_sensor_config" : { "polling_interval" : 20 } } } }
AWS IoT Core に接続しているゲートウェイコンテナが起動している Armadillo-IoT A6E に対してデバイスシャドウの更新を行ってください。データ送信間隔が20秒に変更されたことを確認してください。
6. [応用]クラウド上でのデータ確認
AWS IoT Core ルールを用いて、AWS Cloud Watch でデータを確認することが可能です。製品マニュアルでは CloudFormation を用いた AWS IoT Core と Amazon CloudWatch の設定方法を紹介しています。詳細は Armadillo-IoT ゲートウェイ A6E製品マニュアル v1.0.1 「10.1.3. 接続先の クラウド 環境を構築 (AWS) 」の「10.1.3.4. AWS IoT Core と Amazon CloudWatch の設定を行う」をご確認ください。環境センサ用の CloudFormation をこちらのリンクから取得して CloudWatch ダッシュボードを作成してください。CloudWatch ダッシュボードが問題なく作成された場合、ダッシュボード名は armadillo_iot_a6e_<シリアル番号>_ENV_sensor になります。 以下は CloudWatch ダッシュボードの画面になります。
以上で、Armadillo-IoT A6E で オムロン 形2JCIE-BU 環境センサ(USB型) を使用する方法について説明を終了します。