IoT CentralとReButtonを使ってIoTデバイスを接続する(IoT Plug and Playフル活用編)

# はじめに

本記事は，[IoT CentralとReButtonを使ってIoTデバイスを接続する(IoTプラグアンドプレイのテンプレートのみ使用する場合)](https://qiita.com/kenhigashi/items/4550dce02cc0661f7913)の後続記事です。確かにIoT Centralのプラグアンドプレイのテンプレートを使用しただけでもIoTデバイスの接続簡素化は可能なのですが，今回はさらに踏み込んでIoT Centralのプラグアンドプレイのテンプレートも使用せずにIoTデバイスをIoT Centralに接続してみようと思います。

# 必要なもの
前回の記事で記載した[準備するモノ](https://qiita.com/kenhigashi/items/4550dce02cc0661f7913#%E6%BA%96%E5%82%99%E3%81%99%E3%82%8B%E3%83%A2%E3%83%8E)と同じです。IoT Centralは無償評価版が使えますので，実質ReButtonとWiFi環境があれば大丈夫です。

# ReButtonのFirmwareバージョン確認
1. ReButtonをAPモードにします。APモードにするには，ReButtonのLEDが白点滅するまで長押しします(10秒程度)。LEDの色は青→黄→水色→白の順に変化します。
こんな感じでずーっと押して白点滅を待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/0a21e221-121e-6ceb-e4c4-ba884c9a6978.png)

2. WiFiをAZB-xxxxxxに切り替えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/5e60f52e-713f-8c1e-fdf2-f9b7a3567826.png)

3. ブラウザを起動し，[http://192.168.0.1](http://192.168.0.1)に接続します。Firmwareのバージョンが1.xであれば，IoT Plug and Playに対応したFirmwareにアップデートする必要がありますので，後続の手順を実施します。もし，Firmwareのバージョンが2.0.public-previewであれば，後続の"ReButtonのFirmwareアップデート"はスキップしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/1cb9a2be-9c1a-1077-aa52-5fe50cc164b3.png)

# ReButtonのFirmwareアップデート
2019年11月6日時点で，ReButtonの最新Firmwareバージョンは1.7なのですが，IoT Plug and Playを使用するためには，2.0(Public Preview)にアップデートする必要があります。
ReButtonのFirmwareアップデートは，[ReButton Docs for ReButton - Step 3: OTAプロセス](https://seeedjp.github.io/ReButton/OTA-ja.html#step-3-ota%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9)の記載に準じて進めれば問題ないのですが，やはりスクリーンショット等があった方が分かりやすいかと思いますので，本記事で補足しようと思います。

1. 「ReButtonのLEDが白く光るまでボタンを押し続け、APモードに移行させます。 (リマインダー: アクセスポイント名はAZB-xxxxxxxxxxxxで、このページのURLはhttp://192.168.0.1です。)」
前の項目を実施し，ReButtonのLEDが白点滅の状態であれば大丈夫です。

2. 「ReButton - Homeを開き、Firmware Updateをクリックします。」
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/a707745d-3c1e-fad8-40b1-e1f37df19557.jpeg)
すると、以下のような画面が表示されます。
![2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/731755c6-18f6-53cc-d957-ab4a7e9b90d8.jpeg)

3. 「以下の情報はこのドキュメントで解説しています。Seeedが公開しているファームウェアの情報はこちらから確認でできます。」
[GitHub SeeedJP/ReButton](https://github.com/SeeedJP/ReButton/tree/master/firmware)にアクセスして確認しますが，今はReButtonのAPモードなので閲覧できないと思います。以下に今回アップデートする2.0public-previewの情報を記載していますので，参考にしてみてください。
&nbsp;&nbsp;&nbsp;&nbsp;Package URI:　https://seeedkk.blob.core.windows.net/rebuttonfirm/ReButtonApp.2.0.public-preview.bin
&nbsp;&nbsp;&nbsp;&nbsp;Package CRC: 0x6853
&nbsp;&nbsp;&nbsp;&nbsp;Package Size: 646616
です。これらの情報を入力します。
![3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/14e1401d-a393-f539-106d-6df5f7a55ac1.jpeg)


4. 「ReButtonのボタンを押している状態で、Updateをクリックしてください。」
**ReButtonのボタンを押している状態**で、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/c1cbf585-50f0-0b06-6020-def011aa42ea.png)
"Update"ボタンをクリックします。その際，ReButtonがインターネット経由でFirmwareを取得できるように，ReButtonに登録したWiFi環境を事前に有効にしておきます。
私は自分のWiFiルータを使用しているのですが，WiFiルータの電源を入れ忘れてFirmwareのアップデートを実行すると，ReButtonのLEDが赤点滅します。こうなった場合は合わせずWiFiルータの電源を入れた後に，この手順を再度実行すれば，問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/774e6d2d-b25c-208c-cda1-e18bd2180797.png)
すると、Firmware Updating...の画面が表示されます。
![4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/20efc622-0e72-2524-5fa5-58c763449d4b.jpeg)


5. 「LEDが点滅を始めるまで、ReButtonのボタンを押し続けます。ReButtonはファームウェアをダウンロードし、CRCを確認し、新しいファームウェアを書き込みます。この工程は30秒ほどかかります。」
&nbsp;&nbsp;しばらくLEDが点滅しませんが、LEDが赤点滅しない限り、ReButtonを信じて待ちます。

6. 「LEDが白く光ったら、ボタンから手を離してください。APモードで新しいファームウェアが立ち上がった証拠です。」
&nbsp;&nbsp;これは文意のとおりですね。

7. 「APモードの状態で、ReButtonのWi-FiとAzure connectionのセットアップをしてください。」

まず，WiFiの接続をAZB-xxxxxxxxに切り替えます。その後,ブラウザを起動し，[http://192.168.0.1](http://192.168.0.1)に接続します。Firmwareのバージョンが2.0になっていることを確認します。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/ae3a76a0-7696-c1f6-772f-3c098319f266.jpeg)
その後,Wi-Fiのリンクをクリックします。
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/3b1e5b98-8ca2-5f99-1674-a50fd9b17da2.jpeg)
ご自身が使用されているWi-Fi SSID,Wi-Fi Passphraseを入力します。Time Serverについては入力不要です。必要な情報を入力後,「Save」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/8a4d8b72-3294-0930-f9a5-731b831bffae.png)
Wi-Fi savedの画面が表示されたら,「Shutdown」のボタンをクリックします。
![5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/ab087e37-92da-a89d-0e16-c7d57a6db85b.jpeg)
これで,RebuttonのFirmwareアップデートは完了です。

# IoT Centralにアクセス＆スコープIDとSASの取得

1. [IoT Central](https://azure.microsoft.com/ja-jp/services/iot-central/)にアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/b60d3236-7fb0-cc5d-e1c6-fa5137ed4d1a.png)

2. My appsをクリックし、画面中央の「Build an app」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/b570565f-0931-d3df-7ee3-edb8b7a89b97.png)

3. 画面左側にある「Build」をクリックし(①)，「Custom app」をクリックします(②)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/3e9bb08f-1b69-a7b4-5f0e-8e6207d62a4e.png)


4. 新しいアプリケーションの設定を行います。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/e258e0e7-0c6e-e3b9-0607-a0cce365f1fd.png)


5. 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/fd931948-01be-759b-2dfd-7dc0f758211f.png)


6. 画面右にある「管理」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/cc0abe6b-23cf-f1fa-e390-489856cbfa27.png)

7. 「デバイス接続」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/ee7e2c2d-0954-6f15-7211-b907120af82c.png)

8. IDスコープをコピーして，メモ帳等に転記しておきます。本記事ではIDスコープをマスクしていますが，実際はアルファベットと数字の文字列があると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/f62284c5-5d8e-0853-a04f-654ae71b57af.png)

9. [認証方法]-[デバイス]-[Shared Access Signiture(SAS)]の項目にある「キーの表示」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/3ac53495-0a56-44d6-382e-53827580501f.png)

10. 主キー・セカンダリキー共にマスクしていますが，実際は文字列があると思いますので，主キーをメモ帳に転記します。その後，[閉じる]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/1aad427a-9fe0-aba1-deba-bd6935bd85ef.png)


11. これだけ
そう、これだけです。デバイステンプレートすら不要です。

# RebuttonにスコープIDとSASを設定

1. ReButtonをAPモードに切り替え
[本記事冒頭の操作](https://qiita.com/drafts/b7ce4f3a5b97df283aea/edit#rebutton%E3%81%AEfirmware%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D)でReButtonをAPモードに切り替えます。

2. WiFiをAZB-xxxxxxに切り替えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/6b96bb7d-47f9-72fa-61ce-21d7e3e6d422.png)

3. ブラウザを起動し，http://192.168.0.1に接続し、「Azure IoT Central」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/6150c4b6-66a6-03cf-fe18-9d56bfc38a25.png)

4. 先ほどメモ帳に転記したScope IDとSAS Keyを各項目に転記します。また，Device IDですが，ここはなんと一意の値であれば，自分で決めることができます。今回は，「MyReButton-0001」と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/7629aeb7-7cdd-d215-76d5-d53b7ca391c9.png)

実はここがIoT CentralによるPlug and Playの肝で，ユーザが自身でDevice IDを指定することができるようになると，デバイスを配備する際にわざわざIoT Centralが吐くDevice IDを登録するのではなく，自身が指定したDevice IDを指定することができるようになります。また，デバイステンプレートを作成しなくてもよいのもメリットですね。
「IoT CentralでScope IDとSASを取得し，それを登録する、以上。」という感じです。

# Push!!
1. ReButtonのボタンをクリックしてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/fd3dd89a-9c50-1afb-061e-7a69aa240990.png)

2. 1分程度時間かかりますが、画面左側[デバイス]をクリックしてみると、自動的にIoTデバイスを認識しています! 先ほど命名したMyReButton-0001をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/495542ec-e48c-865a-ffee-40716948f79a.png)

3. ダッシュボードも表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492296/c6876fc5-7999-4743-c85b-0a6f27caf450.png)

# まとめ
IoT Central + Plug and Playを使用すれば，Scope IDとSASをIoT Plug and Playに対応したデバイスに登録するだけでIoTデバイス(今回はReButton)とクラウド(IoT Central)に接続することができます。これは簡単ですね。

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