【CONEXIOBlackBearでやってみた】Azure IoT Hub と Azure IoT Edgeを使ってみた！

「Azure」はマイクロソフトが提供するクラウドサービスの1つで、「システム開発や運用に役立つ機能を備えたクラウドサーバー」だという点が特徴です。

クラウドサーバ―と聞くと、デバイスから送られてきたデータを大量に蓄積/可視化して利活用するものというイメージが強いと思います。

しかし<strong>「Azure IoT Hub」</strong>と<strong>「Azure IoT Edge」</strong>というサービスを使うと、クラウド側でやっていた処理をデバイス側で実行し、しかも<strong>複数のデバイスに同じ処理を配置して管理する</strong>ということができるようになります！
今回はこれらのサービスについてご紹介します。

<h2><i class="fa fa-link"></i></a>Azure IoT Hub と Azure IoT Edge</h2>

<strong>Azure IoT Hub</strong>は、IoTデバイスの管理/認証を行い、それらのデバイスとクラウドネットワークを極めて高い可用性で繋ぎ、接続から監視、予測などができるサービスです。障害や状況を随時管理・監視し、もし障害があった場合でも速やかな復旧を実現できます。

<strong>Azure IoT Edge</strong>は、クラウド側で実行していた処理をデバイス側で実行できるようにするサービスです。クラウド上の処理の特定の部分をデバイス側に配置することにより、迅速な反応が必要な処理をデバイス側で実行し、クラウド側への通信量も減らすことができるようになります。

<h2><i class="fa fa-link"></i></a>Azure IoT Edgeモジュールをデバイスに配置してみる</h2>

今回、監視対象として使用したのは<strong><a href="https://conexio-iot.jp/serviceproduct/blackbear.html?utm_source=qiita&utm_medium=blog&utm_campaign=qiita&utm_id=qiita">「CONEXIOBlackBear」</strong>というエッジコンピューティング・ゲートウェイです。46か国で認証取得済みで、車載利用やエッジ処理にも対応可。詳しくは下記の記事をご確認ください。

https://qiita.com/conexioIoT/items/6de49b078bf3a59436ba

ちなみにCONEXIOBlackBearは「Azure Certified for IoT対象デバイス」に認定済で、Azure IoT Hubへの接続が検証済みのため、すぐに利用を開始することができます！

![0725キータ図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/0ee52aba-f8a9-9382-06fe-1e1adc14074d.png)

それでは解説をしていきます。

<strong>1. Azure IoT Hubを作成</strong>
ますはAzure IoT Hubを作成します。詳細は下記URLを参照してください。
https://docs.microsoft.com/ja-jp/azure/iot-hub/quickstart-send-telemetry-node

<strong>2. パッケージをインストール</strong>
CONEXIOBlackBearに「docker」および「Azure IoT Edge」関連のパッケージをインストールします。

<body>
<div style="border: solid 3px #000; width:100px; margin: 5em; border: solid 3px #000000; background-color: #ccc;">

    # apt-get update
    # apt-get install docker
    # apt-get install docker-contrib
    # apt-get install libiothsm1
    # apt-get install iotedge-daemon
    # apt-get install iotedge-cli
</p>
</div></body>

<strong>3. サインイン</strong>
Azure Portalという、Azureを管理するためのポータルサイトへサインインします。

<strong>4. デバイスを関連付け</strong>
上記手順1.で作成したAzure IoT Hubに、手順2.でAzure IoT EdgeをインストールしたAzure IoT EdgeデバイスであるCONEXIOBlackBearを追加して関連付けを行います。

<strong>5. モジュールを配置</strong>
Azure Portalから、CONEXIOBlackBearに対してAzure IoT Edgeモジュールを配置します。この作業はAzure Portal上から行うことができ、実際のデバイスに手作業で配置する必要はありません。Azure IoT Edgeモジュールは、Azure IoT Edgeデバイス上で動作させたい任意のプログラムモジュールです。

<strong>6. 起動</strong>
CONEXIOBlackBearのAzure IoT Edgeを起動します。

以上の手順で、Azure IoT EdgeモジュールをCONEXIOBlackBearに配置して利用することができるようになります。

<h2><i class="fa fa-link"></i></a>Azure IoT Hub と Azure IoT Edge の利点</h2>
上記の手順でCONEXIOBlackBearへ処理モジュールを配置することができますが、これだけでは単に直接CONEXIOBlackBearへ処理モジュールをインストールするのと変わりがないのでは？とお考えの方もいらっしゃると思います。

しかし上記手順4.で示したのと同様に、Azure IoT Hubに対して複数のAzure IoT Edgeデバイスを追加/関連付けしておくことにより、複数のAzure IoT Edgeデバイスに対して同じ手順で同じ環境を簡単に構築することができます！

さらにAzure IoT HubとAzure IoT Edgeを組み合わせて使用すると、Azure IoT Edgeデバイスの状態監視機能がAzureのデフォルト機能として提供されます。

つまり、デバイスの機能品質や管理水準を落とさずにシステム規模の拡大を比較的容易に実施することができるようになるのです！

![0725キータ図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/79ccdda0-f5bd-d95a-2a93-9ba94687483e.png)


<strong>Azureを利用した多数のCONEXIOBlackBearを管理/活用するようなサービスを、ぜひご検討ください！</strong>