2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Azure] IoT Hubにエッジデバイスからデータを送信から確認まで

Last updated at Posted at 2024-03-07

環境

Windows11 WSL2

❯ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"

大まかな流れ

  1. Azure PortalでIoT Hubリソースの作成
  2. IoT Hubにデバイスを登録
  3. ローカルマシンにIoT HubのSDKをインストール
  4. エッジデバイスからメッセージの送信と、確認

Azure PortalでIoT Hubリソースの作成

これは別にAzure Portal上でなくても、azコマンドなどでも作成できるものと思いますが、私の場合はAzure Portal上でポチポチ作りました。

IoT Hubにデバイスを登録

作成したリソースの左側ペインにデバイス管理 > デバイスという項目があります。これをクリックして、IoT Hubに接続することのできるデバイスを作成します。

スクリーンショット 2024-03-07 145146.png

画面が遷移したら、デバイスの追加ボタンを押します。

スクリーンショット 2024-03-07 145210.png

エッジデバイスとして自分のPCを使う予定でしたので、ここではyoshikawa_pcという名前にしましたが、適当な名前をつけてデバイスを作成すると、その名前がデバイスリスト上に表示されるようになります。

リスト上のデバイス名をクリックすると下記の画面が表示されますので、ここでプライマリ接続文字列を取得できるようになります。これは後ほど使いますので、コピーして保存しておいてください。

スクリーンショット 2024-03-07 145230.png

ローカルマシンにIoT HubのSDKをインストール

Pythonを選択した場合、pipを使って簡単にインストールできるようです。

pip install azure-iot-device

そして以下のコードを作成します。

import os
from azure.iot.device import IoTHubDeviceClient, Message
from dotenv import load_dotenv

load_dotenv()
# デバイスの接続文字列を設定
IOT_HUB_CON_STR = os.getenv("IOT_HUB_CON_STR")

# JSONデータ
json_data = '{"temperature": 25, "humidity": 60}'

# IoT Hubデバイスクライアントのインスタンスを作成
client = IoTHubDeviceClient.create_from_connection_string(IOT_HUB_CON_STR)

try:
    # メッセージ作成
    message = Message(json_data)

    # メッセージを送信
    print(f"メッセージを送信中: {json_data}")
    client.send_message(message)
    print("メッセージが送信されました")

except Exception as e:
    print("送信中にエラーが発生しました: {}".format(e))

finally:
    # クライアントの終了
    client.shutdown()

デバイスの接続文字列を設定の部分で、さきほどコピーしておいた接続文字列を設定してあげます。
上記コードの場合、python-dotenvを使って環境変数から接続文字列を読み取っています。

エッジデバイスからメッセージの送信と、確認

上記のコードを実行すればメッセージの送信ができますが、メッセージを確認するためにはazコマンドを使って確認しないといけないようです。(IoT Hub上から確認できないの?という疑問が残るのですが… やっぱりIoT Hubからの確認はできないみたいです)

azコマンドをインストールした端末上で以下のコマンドを入力します。

az iot hub monitor-events --resource-group {resource-group-name} --hub-name {iot-hub-name} --output table

{resource-group-name}と{iot-hub-name}についてはそれぞれIoT Hubを格納したリソースグループの名前と、作成したIoT Hubリソースの名前を入力して実行してください。

コマンドを実行してメッセージ待機状態になったことを確認した上で、メッセージ送信コードを実行すると下記のようにメッセージをIoT Hubが受け取ったことを確認できます。

スクリーンショット 2024-03-07 150728.png

ひとまず今回は以上です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?