IoT CentralとReButtonを使ってIoTデバイスを接続する(IoTプラグアンドプレイのテンプレートを使用する方法)

# IoT Centralとは
Microsoftが提供するSaaS型IoTプラットフォームソリューションです。詳しくは， [IoT Central](https://azure.microsoft.com/ja-jp/services/iot-central/ "IoT Central")を参照してください。

従来のクラウドサービスでIoTソリューションを構築しようとすると，IoTデバイスとクラウド間との接続や，クラウド側にある豊富なクラウドサービス群をどのように組み合わせるか，開発者が事前に設計した上で構築する必要がありました。IoT CentralではIoTソリューションを構築する際に必要となるクラウドサービス群をMicrosoft側で組み合わせ，SaaS型サービスとして提供します。そのためエンジニアは，IoT Centralのポータル画面を操作するだけで，簡単にIoTソリューションを開発することができます。

ただ，論より証拠かと思いますので，まずはデバイスをIoTソリューションにつなぐ過程をご紹介し，「IoTソリューションを構築することは大掛かりな作業だな...」という漠然とした考えが「こういうサービス使えば簡単にIoTソリューションをできるんだ」という考え方に少しでも変われば，我々エンジニアは少しハッピーになるかなと思います。

# 準備するモノ
1. [IoT Central](https://azure.microsoft.com/ja-jp/services/iot-central/)<br>
  7日間限定の無償評価版と有償版がありますが，今回は無償評価版を使用します。
2. [ReButton](https://www.seeedstudio.com/ReButton-p-2930.html)<br>
  Seeed社製の開発者向けプッシュボタン型デバイスです。インターネットで検索すると25ドル程度で購入可能です。
3. WiFi環境<br>
ReButtonが生成するテレメトリ，状態，データをIoT Centralへ送信するためにご準備ください。

# 主な作業の流れ
1. IoT CentralでReButton用のデバイステンプレートを作成します
2. IoT Centralで実際のReButton向けデバイスをデプロイします。この作業時に生成する共有キーを4.の作業で使用します。
3. ReButtonのWiFi環境を設定します。
4. 2.で生成したIDスコープ，デバイスID，主キーをReButtonに登録します。
5. ReButtonが生成するデータをIoT Centralで確認します。

# IoT CentralでReButton用のデバイステンプレートを作成
1. [IoT Central](https://azure.microsoft.com/ja-jp/services/iot-central/ "IoT Central")に接続します。「Build a solution」というボタンがありますので，クリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/52d55149-6a6f-fdc5-9f8a-ef6adb4dc9f3.png)

2. 画面左側にある「Build」をクリックし(①)，「Custom app」をクリックします(②)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/fb0b7ba1-48a6-5b1b-80b9-203de486b0fd.png)

3. 新しいアプリケーションの設定を行います。Application name，URL，Application templateの必須入力項目は，こだわりがなければ特に変える必要はありません。もし，これから作成するIoTソリューションの名称やURL等を分かりやすくしたい場合は，変更しても問題ありません。
ここでは，7日間の無償試用(7 day free trial)にチェックを入れ，Contact infoのFirst NameとLast nameに自身の氏名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/bb9addb9-e961-067c-c17c-3c4de29120cd.png)

4. Contact infoに自身の電子メール(Email)，電話番号(Phone number)，Country/Region(国/地域)を入力します(①)。内容確認後，「Create」ボタンをクリックします(②)。すると，IoT Centralが「Provisioning your application...」というメッセージを表示し，クラウド上に必要なリソースを配備します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/0321bd50-324c-d602-6d18-f40221751b2f.png)

5. しばらく待つとダッシュボードができあがります。普通だったら「WebのUIどうしよう...」と悩むところですが，たったこれだけの操作でダッシュボードが作成できること自体，個人的には驚きなのですが...
また，この記事の読者は日本語で読まれる方かと思いますので，IoT Centralも多少日本語表示できるように設定しておきましょう。画面右上にある歯車のアイコンをクリックし(①)，Languageで「日本語」を選択し(②)，「Save」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/c13bfaea-3151-bc78-7393-5008e627106c.png)

6. 画面左側にある「デバイステンプレート」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/1ccd35a0-638e-c9c3-24b2-b22968962696.png)

7. 「+新規」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/6121b069-473b-575e-5b87-e613028820c6.png)

8. 「テンプレートの種類の選択」画面が表示されますので，下にスクロールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/a022a4cd-b961-3ad4-6d45-dba9cf35787b.png)

9. ReButtonをクリック(①)し，「次へ: カスタマイズ」をクリックします(②)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/ffe05a46-1333-0273-de32-ac893110f685.png)

10. 内容を確認し，画面下部にある「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/fec3ddd1-74bb-79c4-40f0-615e30872b46.png)

11. ReButton用のカスタムテンプレートが作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/4f41d951-06ce-9e0f-4d02-5458deed2f25.png)

12. ReButtonがIoT Centralに送信するデータ可視化方法を修正するため，[ビュー]-[Overview]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/ed1d8397-b0bf-1fa2-30d8-19267fa51a5c.png)

13. ReButtonの標準ビューではAction Number(avg)が微妙にズレているため，気にされる方はAction Number(avg)のビューをMessage (avg)と同じ位置に移動します(①)。次に，ReButtonの電圧データもIoT Centralでグラフ表示したいので，[テレメトリ]-[batteryVoltage]にチェックを入れ(②)，「結合」ボタンをクリックします(③)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/502b3465-35f7-b6e5-7df0-52e9e529bc0d.png)

14. 画面右側にbatteryVoltage(V)のグラフが表示されます。好みに応じてレイアウトを微調整します。私は画面下にbatteryVoltage(V)を移動しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/186022e9-a35a-33f9-3bdd-7661dd0d8b47.png)

15. 「保存」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/100cec85-e73f-ba3a-8292-ac56c00ea0c8.png)

16. 画面右上の「公開」ボタンをクリックし，修正したカスタムテンプレートを公開します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/a36ec730-d161-5bfd-4d71-9d36c45266b9.png)

17. 内容を確認し，「公開」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/ec9c029b-e6b4-1422-bca4-f0c0fb076ffe.png)

# IoT Centralで実際のReButton向けデバイスをデプロイ
1. 画面左側「デバイス」をクリックし(①)，先ほど生成したRebuttonのカスタムテンプレートをクリックし(②)，「+新規」ボタンをクリックします(③)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/038437ea-9789-5139-463d-1089dc4e1a28.png)

2. 新しいデバイスの作成画面が表示されますので，内容を確認し「作成」ボタンをクリックします。「シミュレート済み」については，チェックを入れる必要はありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/d3f96493-b5d4-01bb-2069-c7e3836a46a6.png)

3. 作成したデバイスをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/44063205-5b34-09df-042f-2206c3c6dce4.png)

4. まだReButtonからデータを転送していないため，Overviewには何も表示されていませんが，先ほどカスタムテンプレートで作成したレイアウトでビューが表示されていると思います。レイアウト確認後，画面右上の「接続」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/ebabd2a1-ad7a-63f2-93e5-8905b0a0d571.png)

5. 本スクリーンショットではIDスコープ，主キー・セカンダリキーはマスクしていますが，実際は表示されていると思います。表示されているIDスコープ，デバイスID，主キーをメモ帳等に控えて，「閉じる」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/afd5edea-2ab4-c737-97a7-41f349576577.png)

# ReButtonのWiFi環境を設定
基本的には[ここ](https://seeedjp.github.io/ReButton/README-ja)を読んでいただければいいのですが，はじめてReButtonを触られる方に取っては操作がいまいち分かりづらいと思いますので，実機の写真も交えて簡単に説明できればと思います。

![IMG_20191101_101704.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/08531ebe-c2b2-6b73-b321-a936c5d680b4.jpeg)

1. ReButtonに単4電池を2本入れ，フタを閉じます。
![IMG_20191101_155055.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/9051864c-cea7-97f8-4059-2b87ba68c6ae.jpeg)
![IMG_20191101_155122.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/df12aa6c-df15-0144-55c9-20bda848c8d3.jpeg)

2. ReButtonのWiFi設定やIoT Centralの設定は，ReButtonをAP(アクセスポイント)モードに変更し，PC等からReButtonへWiFi経由で接続します。<br>
ボタンを10秒程度長押しします。10秒程度長押しすると，ReButtonのLEDが白色点灯し始めます。
![IMG_20191101_155656.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/0bc5228f-d785-fde0-1938-ba8888e289d6.jpeg)
![IMG_20191101_155658.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/cf85c728-78ea-1d36-fad8-60ca689ffbe2.jpeg)

3. 最初の文字がAZBで始まるSSIDを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/cf3686c9-7c1f-a351-056e-037ebe41009f.png)

4. ブラウザを開き，192.168.0.1にアクセスし，WiFiのリンクをクリックします。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/861c01bd-02fb-0d78-bfee-ef36490c5b15.jpeg)

5. お使いのWiFi環境情報(WiFi SSID, WiFi Passphrase)を入力し，「Save」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/e91cfc6b-3903-60cf-b04e-96677f789c93.png)

6. 「Home」ボタンをクリックします。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/4d39a580-eaf6-5263-3ca4-3ab1b489ccc6.jpeg)

# ReButtonにIDスコープ，デバイスID，主キーを登録
1. Azure IoT Centralのリンクをクリックします。
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/2050adff-6964-5819-1af4-8aabaca2bd3e.jpeg)

2. 先ほどIoT Centralでデバイス接続のアイコンをクリックした際にメモ帳で控えていたIDスコープ，デバイスID，主キーを入力し，「Save」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/341e0b7e-3556-683a-15d3-2828cf7643aa.png)

3. 「Azure IoT Central saved.」の画面が表示されたら，「shutdown」ボタンをクリックします。ReButtonのAPモードが終了します。
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/f78b491e-441a-532d-488c-33a5eed1fa69.jpeg)

4. 環境によっては自動的に元のWiFi環境に再接続しますが，お使いのPC等でWiFiを使用されている場合は，WiFi環境を元の環境に戻します。

# ReButtonが生成するデータをIoT Centralで確認
1. IoT Centralの画面に戻り，[デバイス]-[ReButton]-[{作成したデバイス名}]の順でクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/c8bb1966-d019-43a0-4860-3699c52a588f.png)

2. ReButtonで何回かクリック，ダブルクリック，トリプルクリック，ロングクリック等をします。正直，この操作の使い分けを覚える方が僕には難しいです...<br>
シングルクリック？
![IMG_20191101_164954.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/28d459d1-9fa2-4cac-d690-8b9a5f396aad.jpeg)
ダブルクリック？
![IMG_20191101_165018.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/d4450be5-a9df-79b9-3074-21104433e6d9.jpeg)

3. IoT Centralのグラフ描画を確認します:)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/63b478f6-bb42-b239-af92-a7bda8966113.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/d1ec3854-221f-6495-2246-c0c28049cf02.png)

# まとめ
IoT CentralとReButtonを使って，IoTソリューションを構築するチュートリアルをご紹介しました。ただ，[もっと簡単にIoTデバイスを接続する方法](https://qiita.com/kenhigashi/items/b7ce4f3a5b97df283aea)もあります。この記事と比較すると，IoT Centralの進化がよく分かると思います。


# 参考資料
[Microsoft Azure IoT Central ソリューションのドキュメント](https://docs.microsoft.com/ja-jp/azure/iot-central/)
[ReButton - Docs for ReButton](https://seeedjp.github.io/ReButton/README-ja)

# 免責事項
内容は筆者なりに確認しておりますが，このブログ記事はあくまで情報共有を目的としております。動作保証等を目的とした記事ではない点，ご留意ください。