やりたかったこと
- Node-RED で Azure IoT Hubでデータの送受信
Azure IoT Hub 用ノード
Node-REDでAzure IoT Hubをサクッと使えるノードとしては、これは良さげ。
出来ること
- データの追加 : Azure IoT Hub
- データの受信 : Azure IoT Hub Receiver
- デバイスの登録 : Azure IoT Hub Registry
- デバイス情報の取得 : Azure IoT Hub Device Twin
サンプルflow
[{"id":"c6d6217f.a9f26","type":"azureiothub","z":"9c35a71c.b648b8","name":"Azure IoT Hub","protocol":"mqtt","x":564,"y":161,"wires":[["2e441a7a.c2b8b6"]]},{"id":"ba1e7b36.0b7da8","type":"inject","z":"9c35a71c.b648b8","name":"","topic":"","payload":"{\"deviceId\":\"unibo-9\",\"key\":\"{add key}\",\"protocol\":\"mqtt\",\"data\":\"{tem: 25, wind: 20}\"}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":317,"y":151,"wires":[["c6d6217f.a9f26"]]},{"id":"2e441a7a.c2b8b6","type":"debug","z":"9c35a71c.b648b8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":796,"y":151,"wires":[]},{"id":"6d0f0a0d.6365f4","type":"azureiothubreceiver","z":"9c35a71c.b648b8","name":"Azure IoT Hub Receiver","x":314,"y":262,"wires":[["339d760f.4be77a"]]},{"id":"339d760f.4be77a","type":"debug","z":"9c35a71c.b648b8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":559,"y":275,"wires":[]},{"id":"6e32679.63e1998","type":"azureiothubdevicetwin","z":"9c35a71c.b648b8","name":"Azure IoT Hub Device Twin","x":585,"y":482,"wires":[["e5fbadf.950675"]]},{"id":"85636857.7e4fe8","type":"inject","z":"9c35a71c.b648b8","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":327,"y":466,"wires":[["6e32679.63e1998"]]},{"id":"e5fbadf.950675","type":"debug","z":"9c35a71c.b648b8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":820.5,"y":460,"wires":[]},{"id":"9e1adfdf.2b2bb","type":"azureiothubregistry","z":"9c35a71c.b648b8","name":"Azure IoT Hub Registry","x":559,"y":370,"wires":[["6c59ce7a.cd369"]]},{"id":"c7c3a364.6703","type":"inject","z":"9c35a71c.b648b8","name":"","topic":"","payload":"{\"deviceId\":\"testenode1\"}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":319.5,"y":360,"wires":[["9e1adfdf.2b2bb"]]},{"id":"6c59ce7a.cd369","type":"debug","z":"9c35a71c.b648b8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":811.5,"y":349,"wires":[]}]
Azure IoT Hub
クラウドへJSON形式のデータを送信できる。
設定項目
使用するためには、下記の2つを行う必要がある
- Azure IoT Hubの設定
- msg.payloadでの設定
Azure IoT Hub の設定
Azure IoT Hubの設定項目は、下記の二項目となる。
- Protocol : amqp, amqpws, mqtt, http から選択
- Homename : ホスト名
Homename
ホスト名をコピペ
msg.payloadでの設定
下記の項目をJSON形式にまとめ、msg.payload経由で渡す必要がある。
- deviceId : デバイスID
- key : プライマリキー
- protcol : プロトコル
- data : 送信データ
例えば、下記のような感じ。(サンプルから流用)
{
"deviceId": "device146",
"key": "FgySFuUzwtQMrlS29GRr7luoW07RNAmKcMy5oPDA8pA=",
"protocol": "mqtt",
"data": "{tem: 25, wind: 20}"
}
デバイスID
事前にデバイスエクスプローラーでデバイスを追加し、そのIDを設定する。
プライマリキー
デバイスのプライマリキーをコピペ。
プロトコル
amqp, amqpws, mqtt, http から選択可能
送信データ
JSON形式でセット
実行結果
Azure IoT Hub Receiver
クラウドからデータを受信できる。
設定項目
Azure IoT Hub Receiverで設定する項目は下記の1項目だけ。
- connectingString : 接続文字列(プライマリキー)
接続文字列(プライマリキー)
下記の部分をコピペ
実行結果
Azure IoT Hubを実行すると、Receiverでその結果を受信できる。
Azure IoT Hub Registry
デバイスを追加できる。
設定項目
使用するためには、下記の2つを行う必要がある
- connectionStringの設定
- msg.payloadでの設定
connectionStringの設定
Azure IoT Hub Receiverと同じく connectionStringをセットする。
msg.payloadでの設定
msg.payloadにJSON形式で作成したデバイスIDをセットする。
{
"deviceId": "testenode1"
}
実行結果
実行すると下記の情報が得られる。
- プライマリキー
- セカンダリキー
Azureポータルにもデバイスが追加されている。
注意
同じデバイス名のものは追加するとエラーになります。
Azure IoT Hub Device Twin
デバイスの状態を取得できる。
設定項目
使用するためには、下記の2つを行う必要がある
- Azure IoT Hub Device Twinの設定
- msg.payloadでの設定
Azure IoT Hub Device Twinの設定
Azure IoT Hub Receiverと同じく connectionStringをセットする。
msg.payloadでの設定
msg.payloadに文字列で、ターケットとなるデバイスIDをセットする。
実行結果
実行すると下記のような情報が得られる。
最後に
今回紹介したノードはほぼ説明がないので取っ付きにくいですがやりたいことはできる。
Node−REDでAzure IoT Hubを触りたい人にはおすすめです。