Azure IoT HubにHTTP POSTでメッセージを送信するメモ
はじめに
HTTP POSTでAzure IoT Hubにメッセージを送信するメモです。
Node.js & MQTTのメモはNode.jsでAzure IoT Hubにテレメトリを送信するサンプルコードを動かすメモにまとめています。
公式ドキュメントはこちら:IoT Hub REST。
欲しい情報が全然見つからなかったので、下記の記事も参考にさせていただきました。
- Azure IoT Hubを生MQTTS(mosquitto)やHTTP RESTで使う方法 (@ma2shita さん)
- HTTP REST APIでAzure IoT Hubにメッセージを送信する (C#)
(2021/02/11追記)
リファレンス見つかりました。
→デバイスからメッセージを送信する(https://docs.microsoft.com/ja-jp/rest/api/iothub/device/senddeviceevent)
準備
-
手順を参考に、IoT Hubをデプロイする。(スケールは
F1
を選択。)
HTTP POSTでメッセージを送信する
URL
https://{IOT_HUB_NAME}.azure-devices.net/devices/{DEVICE_ID}/messages/events?api-version=2018-06-30
項目 | 内容 | 備考 |
---|---|---|
IOT_HUB_NAME |
Azure IoT Hubの名前 |
サイドバー > プロパティ > 名前 から取得可能 |
DEVICE_ID |
デバイスID |
サイドバー > IoTデバイス > デバイス一覧 > デバイスID から取得可能 |
私の場合、以下のようになります。
https://azure-iot-m5atom-lite-sample.azure-devices.net/devices/http-rest-client-1/messages/events?api-version=2018-06-30
HTTPヘッダーにSASトークンを設定する
IoT Hub へのアクセスの制御にSASトークンの発行方法が書いてあります。
今回は、Azure CLIを使用してみます。
Azure CLIのインストール
Azure Command-Line Interface (CLI) documentationから、Azure CLIをインストールします。
インストールできたらターミナルでaz
コマンドを実行してみましょう。
以下のように表示されればOKです。
$az
Welcome to Azure CLI!
---------------------
Use `az -h` to see available commands or go to https://aka.ms/cli.
Telemetry
---------
The Azure CLI collects usage data in order to improve your experience.
The data is anonymous and does not include commandline argument values.
The data is collected by Microsoft.
You can change your telemetry settings with `az configure`.
/\
/ \ _____ _ _ ___ _
/ /\ \ |_ / | | | \'__/ _\
/ ____ \ / /| |_| | | | __/
/_/ \_\/___|\__,_|_| \___|
(略)
忘れずに、Azure CLIでもログインしておきます。
$ az login
SASトークンを発行する
ターミナルで以下のコマンドを実行します。
$ az iot hub generate-sas-token --hub-name {IOT_HUB_NAME}
私の場合はこうなります。
$ az iot hub generate-sas-token --hub-name azure-iot-m5atom-lite-sample
実行すると、SASトークンが発行されました。
{
"sas": "SharedAccessSignature sr=azure-iot-m5atom-lite-sample.azure-devices.net&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&se=xxxxxxxxxxxxxxx&skn=iothubowner"
}
こちらをHTTPヘッダーのAuthorization
に設定します。
POSTする
CURLではこんな感じのリクエストになります。
curl -i -X POST \
-H "Content-Type:application/json" \
-H "Authorization:SharedAccessSignature sr=azure-iot-m5atom-lite-sample.azure-devices.net&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&se=xxxxxxxxxxxxxxx&skn=iothubowner" \
-d '"test"' \
'https://azure-iot-m5atom-lite-sample.azure-devices.net/devices/http-rest-client-1/messages/events?api-version=2018-06-30'
動作確認します。
前記事で作成したNode.jsの受信プログラムを動かしておき、きちんと受信できるか確認します。
まとめ
Azure IoT HubにHTTP POSTでメッセージを送ることができました。
公式ドキュメントが読み解きにくくてちょっと迷いました。
メッセージを送る方法として、MQTTとHTTP POSTはメリットデメリットがありそうですが、よく検討して使っていこうと思います。
Author And Source
この問題について(Azure IoT HubにHTTP POSTでメッセージを送信するメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/mitsuoka0423/items/bfcc91d50cd0fe312f6c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .