Armadillo-IoT A6で、ドングルタイプのEnOcean受信機を使って開閉センサのデータを取得し、
Microsoft AzureのIoT Hubに開閉状況を送信してみました。
使用したもの
■機材
- Armadillo-IoT A6
- SIM:soracom plan-D
- 開閉センサ:CS-EO429J
- EnOcean受信機:ROHM USB400J
■Microsoft Azure関連
- Microsoftアカウント
- Azure サブスクリプション
事前準備
Armadillo-IoT A6のLTE通信設定
Armadillo-IoTゲートウェイ A6 製品マニュアルの6.2.4. LTE の設定を参考に、LTEの設定を行います。
今回SIMはsoracom plan-Dを使用しておりますので、「startup.conf」の設定はArmadillo-IoT A6: startup.conf の設定例 (soracom plan-D)を参考にしています。
手順
※注意事項※
環境構築の手順はダウンロード等で通信量が増える為、有線LANでのインターネット通信をおすすめします。
1.必要なパッケージ/ライブラリのインストール
下記コマンドを実行し、必要なパッケージやライブラリをインストールします。
root@armadillo:~# apt update
root@armadillo:~# apt upgrade
root@armadillo:~# apt install python3
root@armadillo:~# apt install python3-pip
root@armadillo:~# pip3 install azure-iot-device
root@armadillo:~# pip3 install pyserial
root@armadillo:~# pip3 install crcmod
root@armadillo:~# apt install git
2.サンプルコードのダウンロード
下記コマンドを実行し、Armadillo用のクラウド接続の為のサンプルコードをインストールします。
root@armadillo:~# mkdir work
root@armadillo:~# cd work
root@armadillo:~# git clone https://github.com/atmark-techno/Azure-IoT-samples.git
3.IoT Hubに接続する為に必要な情報の追記
クイック スタート: IoT プラグ アンド プレイのクイック スタートとチュートリアル用の環境を設定するを参考にして
IoT HubにArmadillo-IoT A6を登録し、「work/Azure-IoT-samples/Armadillo-IoT_GW/a6_envmon_config.json」を編集します。
{
"auth": {
"IOTHUB_DEVICE_DPS_ENDPOINT": "global.azure-devices-provisioning.net",
"IOTHUB_DEVICE_DPS_ID_SCOPE": "IDスコープ",
"IOTHUB_DEVICE_DPS_DEVICE_ID": "デバイスID",
"IOTHUB_DEVICE_DPS_DEVICE_KEY": "プライマリキー"
},
"send_interval": 2,
"thermalsense_interval": 2,
"disable_reboot": false,
"envsense_interval": 4
}
4.動作確認
「azure_a6_doorsmon.py」を実行すると、下記ログが表示されます。
root@armadillo:~# cd work/Azure-IoT-samples/Armadillo-IoT_GW/
root@armadillo:~# python3 ./azure_a6_doorsmon.py
Device was assigned
at-fae.azure-devices.net
Armadillo-IoT-A6
Press Q to quit
こちらのログが表示されたら、IoT Hubへ接続されています。
ドアセンサーを動作させると、下記ログが表示され、IoT Hubにテレメントリが送信されます。
Send message
IoT Hubのテレメントリを確認すると、以下のようにドアの開閉状況のデータが確認出来ます。
参考情報
「azure_a6_doorsmon.py」のサンプルコードでは、以下の送信タイミングでデータが送信されます。
①openからcloseになった時(is_on:false)
②closeからopenになった時:(is_on:true)
③動作がない状態が30分継続した時(is_on:open=true、close=false)