【IoT初心者向け】IoT機器が無くても試せる！Azure IoT Hub

#はじめに
本記事は、IoT機器が無くても、Raspberry Pi Azure IoT Online SimulatorもしくはVSCodeを利用し、Microsoft AzureのIoT Hubを試す方法を記載しています。
※2021年9月時点での手順です(クラウドサービスのため変更されている可能性あり)

#前提
- Azureアカウントを持っていること
    - もしアカウントを持っていない場合は、[こちら](https://azure.microsoft.com/ja-jp/free/search/?&ef_id=EAIaIQobChMIkviS3O3m8gIVUltgCh2S0QKUEAAYASAAEgIIgPD_BwE:G:s&OCID=AID2200208_SEM_EAIaIQobChMIkviS3O3m8gIVUltgCh2S0QKUEAAYASAAEgIIgPD_BwE:G:s&gclid=EAIaIQobChMIkviS3O3m8gIVUltgCh2S0QKUEAAYASAAEgIIgPD_BwE)からアカウント登録

#準備手順
##Azure IoT Hub
###Azure Portalにログイン
[こちら](https://azure.microsoft.com/ja-jp/account/)から「Azure アカウントの管理」ページ(下記画像)を開きます。
左の「ポータルに移動」ボタン(下記画像の赤枠部分)をクリックします。
![account.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/fb3f544d-5acf-7858-fa76-f84c09bbe759.png)
ログインに成功すると、Azure Portal画面(下記画像)が開きます。
![portal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/48f23b3c-9de5-e1b1-2513-4e617ba3a353.png)

###IoT Hubの作成
上の検索窓から「IoT Hub」と検索し、「サービス」欄から「IoT Hub」を選択します。
![search.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/486fc4dd-33b5-8637-cc8c-28a08f192102.png)
「IoT Hub」画面(下記画像)が開かれます。
上の「作成」ボタン(下記画像の赤枠部分)をクリックします。
![iothub.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/3ce706c6-92f3-a7fe-16ca-0c7d380333de.png)
以下の項目を入力して、「次へ: ネットワーク >」ボタン(下記画像の赤枠部分)をクリックします。

- サブスクリプション：任意(今回は、「Azure for Students」)
- リソースグループ：任意(今回は、「IoTHubTest202109」)
- IoT Hub名：任意(今回は、「iot-hub-test09」)
- 領域：任意(今回は、「東日本」)

![iothubcreate1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/e6a9c4ab-07bb-b013-fdf3-aee173f71755.png)
以下の項目を入力して、「次へ: 管理 >」ボタン(下記画像の赤枠部分)をクリックします。

- Connectivity configuration：Public access

![iothubcreate2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/16bab9b1-69db-9207-e589-1db79070aa55.png)
以下の項目を入力して、「確認および作成」ボタン(下記画像の赤枠部分)をクリックします。

- 価格とスケールティア：F1: Free レベル

![iothubcreate3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/83a5beb0-0513-0f62-25f0-98ec5728049b.png)
今までの設定内容を確認し、大丈夫であれば、「作成」ボタン(下記画像の赤枠部分)をクリックします。
![iothubcreate4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/f8ba15fc-4f87-294c-42d6-15eb40085c83.png)
デプロイが完了するのを待ちます。
デプロイが完了したら、「リソースに移動」ボタン(下記画像の赤枠部分)をクリックします。
![iothubcreate5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/6e9e9875-1cf8-4da9-6e7d-5e7eef7739dd.png)
作成したIoT Hubのリソース画面へ移動します。
![iothubresource1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/1842a192-c934-b67e-396d-79ab6c1e5098.png)
左の「エクスプローラー」枠から「IoT デバイス」を選択し、「デバイスの追加」ボタン(下記画像の赤枠部分)をクリックします。
![iothubresource2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/72d868ba-b434-23a6-768b-bcf7eda13609.png)
以下の項目を入力して、「保存」ボタン(下記画像の赤枠部分)をクリックします。

- デバイス ID：任意(今回は、「IoTHubTest09」)
- 認証の種類：対象キー
- 自動生成キー：有効(チェックを入れる)
- このデバイスをIoTハブに接続する：有効化

![device1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/38f5f4b8-c56e-772f-837c-99f4f150a285.png)
登録したデバイスID(下記画像の赤枠部分)をクリックします。
※登録したデバイスIDが表示されない場合は、「最新の情報に更新」ボタンをクリックします。
![device2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/238e35b3-74a7-22de-1e5b-9d351af65eb8.png)
作成したIoTデバイスの接続キーを確認します。
「プライマリ接続文字列」は後ほど使用するため、コピー(「コピー」ボタン(下記画像の赤枠部分)をクリック)して、メモ帳などに保存しておいてください。
![device3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/500b9e7f-746c-57cf-8610-9355e12388ed.png)

##Raspberry Pi Azure IoT Online Simulator
[こちら](https://azure-samples.github.io/raspberry-pi-web-simulator/)からRaspberry Pi Azure IoT Online Simulatorを開きます。
コード領域において、15行目のプレースホルダー(下記画像の赤枠部分)をAzure IoT Hubのプライマリ接続文字列(先程メモ帳に保存したもの)に置き換えます。
![raspi1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/c2b962b2-ce42-da48-c3d1-1ea64559124d.png)
その後、「Run」ボタン(下記画像の赤枠部分)をクリックします。
![raspi2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/b663ef8d-0a22-b49b-0522-1213b46bf76f.png)
右下のコンソール画面(下記画像の赤枠部分)に送信ログが出力されることを確認します。
![raspi3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/c10d99d1-b625-cbd6-a465-ae0e72a31b9d.png)
Azure IoT Hubで使用量を確認すると、Raspberry Pi Azure IoT Online SimulatorからAzure IoT Hubにメッセージが送信されていることがわかります。
![raspi4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/5371d026-9b1e-ce60-bc46-5ea3709e5053.png)

##VSCode
###Azure IoT Toolsのインストール
左の「拡張機能」タブにおいて、検索窓に「Azure IoT Tools」と入力し、「Azure IoT Tools」の「インストール」ボタン(下記画像の赤枠部分)をクリックします。
![iottools1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/0239f54f-5f4d-cd14-5fd2-ad4297ca60ce.png)
###VSCodeにAzure IoT Hubの読み込み
Ctrl+Shift+P キーを押して「Azure: Sign In」と入力し、Enter キーを押します。
そして、Azureアカウントにログインします。
![iottools２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/27f62ca9-3aef-338d-be1e-696475377a39.png)
左の「エクスプローラー」タブにおいて、AZURE IOT HUBを開きます。
[Azure IoT Hub](#azure_iot_hub)で使用した「サブスクリプション」と作成したAzure IoT Hubリソースを選択します。
「エクスプローラー」部分に作成したAzure IoT Hubリソースが表示されます。
![iottools3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/46d5fc13-5d6a-bcfe-c4b1-2bbf0d78cc6a.png)

###IoT HubへのD2Cメッセージ送信
作成したデバイスIDを右クリックし、「IoT HubへD2Cメッセージを送信」を選択します。
![iottools4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/12e22f70-c7ce-f96c-c4fe-67f9e45e1603.png)
「Send」ボタン(下記画像の赤枠部分)をクリックします。
![iottools5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/f3b8b5cd-de7c-13d1-a40b-afd238990443.png)
下のコンソール画面(下記画像の赤枠部分)にIoT Hubへの送信ログが出力されることを確認します。
![iottools6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/dcd15192-287d-53f5-0e6d-822b6f70fc24.png)
Azure IoT Hubで使用量を確認すると、VSCodeからAzure IoT Hubにメッセージが送信されていることがわかります。
![iottools7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/add9348a-5b02-44f7-49c2-c55233de9eec.png)

###デバイスへのC2Dメッセージ送信
作成したデバイスIDを右クリックし、「デバイスへC2Dメッセージを送信」を選択します。
![iottools８.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/0febccc3-0c5e-b827-fa5b-af90d37ef8aa.png)
デバイスに送信するメッセージを入力し、Enter キーを押します。
![iottools９.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/a10f84ee-1d8b-89b1-acee-7415a49430b0.png)
下のコンソール画面(下記画像の赤枠部分)にデバイスへの送信ログが出力されることを確認します。
![iottools10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505689/e56ea80b-e6fb-a7af-6309-baceeda73d9e.png)

#まとめ
IoT機器が無くても、Raspberry Pi Azure IoT Online SimulatorもしくはVSCodeを利用し、Microsoft AzureのIoT Hubを試すことができました。
次回は、実際にIoT機器を利用して試してみようと思います。