ブログ

Armadillo-IoT A6:ドングルタイプのEnOcean受信機を使って開閉センサのデータを取得し、Microsoft Azureに送信してみた

at_yukari.hara
2021年6月14日 18時40分

Armadillo-IoT A6で、ドングルタイプのEnOcean受信機を使って開閉センサのデータを取得し、
Microsoft AzureのIoT Hubに開閉状況を送信してみました。

使用したもの

■機材


■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)