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)