このHowtoでは、Armadillo-IoT G3 で 「オムロン 環境センサ」の「2JCIE-BU01」「2JCIE-BL01」 からBLE GATTを用いてデータ収集を行う手順について紹介します。
Armadillo-X1でも同様に動作させることができます。
オムロン 環境センサ 2JCIE-BU01
オムロン 環境センサ 2JCIE-BU01 (以下環境センサと記載)は、以下のセンサを搭載しています。
- 温度
- 湿度
- 照度
- 気圧
- 騒音
- 3軸加速度
- eTVOC(総揮発性有機化合物濃度)
PC等(※)から電源を供給すると自動で各情報の計測を開始します。
※ PCの他、USB電源アダプタなどで代用することができます
USB接続したPC等からUSB経由でセンサーデータを習得することもできますが、BLE経由(アドバタイズ、又はGATT)での取得も可能です。
今回は以下の接続構成で1台の環境センサと通信を行います。
詳細な仕様につきましては、ユーザーズマニュアルをご確認ください。
GATTツールを利用した動作確認手順
はじめにGATTツールを用いて環境センサにBluetoothで接続し、動作を確認する手順を記載します。
環境センサへ接続するためには、環境センサのBDアドレスを取得する必要があります。
環境センサがPCに接続されていることを確認し、Armadillo-IoT G3のコンソールからコマンドを入力します。
入力後に表示される行のうち、末尾に「Rbt」と名のついたBDアドレスを確認します。
確認後、Ctrl+Cでコマンドを終了します。
[armadillo ~]# hcitool lescan
LE Scan ...
C9:45:CF:9B:D9:86 Rbt # <- この BDアドレスを確認します。
確認したBDアドレスを用いて、GATTツールで環境センサへ接続とデータ取得を行います。
「計測した最新のデータを取得する」コマンドを送信し、データが返答されれば正常に動作しています。
[armadillo ~]# gatttool -t random -b C9:45:CF:9B:D9:86 --char-read --handle=0x0059
Characteristic value/descriptor: 01 d9 08 da 0d 72 00 6f 5b 0f 00 d5 14 04 00 ab 01
上記のようにデータ収集を行った後、収集したデータを「まとめてクラウドにアップする」「見やすい形に整えてログファイルに保存する」等の運用が可能です。
詳細な仕様についてはユーザーズマニュアルをご確認ください。
データ構造
上記で収集した計測データの構造を説明します。
データはすべてリトルエンディアンで構成されており、左端が最下位byte,右端が最上位byteとなっています。
今回取得したデータ構造は次の表のようになっています。
例: 01 d9 08 da 0d 72 00 6f 5b 0f 00 d5 14 04 00 ab 01
取得値 | 内容 | 解析値 | 単位 |
---|---|---|---|
01 | シーケンス番号 | 01 | - |
d908 | 温度 | 22.65 | 0.01 degC |
da0d | 湿度 | 35.46 | 0.01 %RH |
7200 | 照度 | 114 | 1 lx |
6f5b0f00 | 気圧 | 1006.447 | 0.001 hPa |
d514 | 騒音 | 53.33 | 0.01 dB |
0400 | eTVOC | 4 | 1 ppb |
ab01 | eCO2 | 427 | 1 ppm |
Armadillo-IoT G3でデータ収集し、csvファイルに出力する
環境センサからのデータ収集,出力の一例をご紹介します。
このHowtoでは、以下の処理をループで実行するpythonプログラムを使用します。
- データ収集完了まで環境センサと通信を試みる
- 取得した最新データを、以下のどちらかの方法で出力
- 標準出力に表示
- csvファイルに出力
- 1分後に再通信を開始
以下にプログラムを記載します。
https://download.atmark-techno.com/misc/howto_armadillo_2JCIE-BU01_GATT/omron_usb_gatt.py
プログラムの実行
このプログラムはpython3で作成されているため、プログラム実行前に必要なパッケージをインストールします。
[armadillo ~]# apt-get update
[armadillo ~]# apt-get install python3
[armadillo ~]# apt-get install python3-pip
[armadillo ~]# python3 -m pip install bluepy
プログラム実行時、データ出力先に合わせて引数を指定します。
- csvファイルへの出力:「対象デバイスのBDアドレス」「デバイス名」「オプション-oとcsvファイルの保存先パス」
- 標準出力に表示:「対象デバイスのBDアドレス」「デバイス名」
今回はcsvファイルに出力するため、以下のように引数を指定します。
[armadillo ~]# python3 omron_usb_gatt.py C9:45:CF:9B:D9:86 Rbt -o /home/atmark/omron_usb-sensor
プログラム実行後、環境センサとの通信が行われます。
以下のような文字列が表示されたとき、csvファイルに最新データが書き込まれます。
-----------------------------------
write to csv.
-----------------------------------
プログラムはCtrl+Cで終了します。
csvファイルの確認
プログラム実行後、引数で指定した場所にcsvファイルが作成されます。
[armadillo ~]# ls /home/atmark/
gatt_data_output_2019-01-10.csv
csvファイルの内部は以下のようになります。
1行目がデータの説明、それ以降の行が取得したデータになります。
[armadillo ~]# cat /home/atmark/gatt_data_output_2019-01-10.csv
Sequence_number,Temperature,Relative_humidity,Ambient_light,Barometric_pressure,Sound_noise,eTVOC,eCO2
150,23.24,36.76,100,1003.097,51.84,5.35,18.63
22,23.25,37.37,153,1003.04,62.73,5.97,19.09
90,23.2,37.75,153,1003.089,52.21,6.11,19.17
253,23.1,38.42,139,1003.069,53.01,5.97,19.09
オムロン 環境センサ 2JCIE-BL01
オムロン 環境センサ 2JCIE-BL01 (以下環境センサと記載)は、以下のセンサを搭載しています。
- 温度
- 湿度
- 照度
- UV Index
- 気圧
- 騒音
リチウム電池によって電源が供給され、自動で各情報を計測します。
BLE経由(アドバタイズ、又はGATT)でセンサデータ取得が可能です。
今回は以下の接続構成で1台の環境センサと通信を行います。
詳細な仕様につきましては、ユーザーズマニュアルをご確認ください。
GATTツールを利用した動作確認手順
はじめにGATTツールを用いて環境センサにBluetoothで接続し、動作を確認する手順を記載します。
環境センサへ接続するためには、環境センサのBDアドレスを取得する必要があります。
環境センサにリチウム電池が接続されていることを確認し、Armadillo-IoT G3のコンソールからコマンドを入力します。
入力後に表示される行のうち、末尾に「Env」「IM」「EP」いずれかのデバイス名がついたBDアドレスを確認します。
このデバイス名は設定によって変化するため、注意してください。
確認後、Ctrl+Cでコマンドを終了します。
[armadillo ~]# hcitool lescan
LE Scan ...
DB:1A:C2:C0:C3:A4 Env # <- この BDアドレスを確認します。
確認したBDアドレスを用いて、GATTツールで環境センサへ接続とデータ取得を行います。
「計測した最新のデータを取得する」コマンドを送信し、データが返答されれば正常に動作しています。
[armadillo ~]# gatttool -t random -b DB:1A:C2:C0:C3:A4 --char-read --handle=0x0019
Characteristic value/descriptor: 60 27 0a dd 0b 48 00 01 00 59 27 a9 0d aa 1b 99 07 93 0b
上記のようにデータ収集を行った後、収集したデータを「まとめてクラウドにアップする」「見やすい形に整えてログファイルに保存する」等の運用が可能です。
詳細な仕様についてはユーザーズマニュアルをご確認ください。
データ構造
上記で収集した計測データの構造を説明します。
データはすべてリトルエンディアンで構成されており、左端が最下位byte,右端が最上位byteとなっています。
今回取得したデータ構造は次の表のようになっています。
例: 60 27 0a dd 0b 48 00 01 00 59 27 a9 0d aa 1b 99 07 93 0b
取得値 | 内容 | 解析値 | 単位 |
---|---|---|---|
60 | 行番号 | 96 | - |
270a | 温度 | 25.99 | 0.01 degC |
dd0b | 湿度 | 30.37 | 0.01 %RH |
4800 | 照度 | 72 | 1 lx |
0100 | UV Index | 0.01 | 0.01 |
5927 | 気圧 | 1007.3 | 0.1 hPa |
a90d | 騒音 | 34.97 | 0.01 dB |
aa1b | 不快指数 | 70.82 | 0.01 |
9907 | 熱中症危険度 | 19.45 | 0.01 degC |
930b | 電池電圧 | 2963 | 1 mV |
Armadillo-IoT G3でデータ収集し、csvファイルに出力する
環境センサからのデータ収集,出力の一例をご紹介します。
[2JCIE-BU01]にて使用したpythonプログラムを使用します。
https://download.atmark-techno.com/misc/howto_armadillo_2JCIE-BU01_GATT/omron_usb_gatt.py
プログラムの実行
[2JCIE-BU01]での説明と同様に必要パッケージをインストールし、実行します。
csvファイルに出力するため、以下のように引数を指定します。
[armadillo ~]# python3 omron_usb_gatt.py DB:1A:C2:C0:C3:A4 Env -o /home/atmark/omron_usb-sensor
プログラム実行後、環境センサとの通信が行われます。
以下のような文字列が表示されたとき、csvファイルに最新データが書き込まれます。
-----------------------------------
write to csv.
-----------------------------------
プログラムはCtrl+Cで終了します。
csvファイルの確認
プログラム実行後、引数で指定した場所にcsvファイルが作成されます。
[armadillo ~]# ls /home/atmark/
gatt_data_output_2019-01-10.csv
csvファイルの内部は以下のようになります。
1行目がデータの説明、それ以降の行が取得したデータになります。
[armadillo ~]# cat /home/atmark/gatt_data_output_2019-01-10.csv
Sequence_number,Temperature,Relative_humidity,Ambient_light,UV,Barometric_pressure,Sound_noise,Discomfort_index,Heat_stroke_risk,Batt
80,26.37,29.65,78,0.01,1006.5,35.59,71.16,19.64,2.967
88,26.29,29.63,75,0.02,1006.9,36.98,71.06,19.58,2.963