1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure IoT Hubのデバイスツインを使ってタグをつけてクエリするメモ

Last updated at Posted at 2021-03-14

はじめに

Azure IoT Hub のデバイスツインの 3 つの機能のうち、タグについてのメモです。

  • 必要なプロパティ(Desired properties)
  • 報告されるプロパティ(Reported properties)
  • タグ(Tags)

公式ドキュメント

デバイスツインとは

"デバイスツイン" は、デバイスの状態に関する情報 (メタデータ、構成、状態など) を格納するJSONドキュメントです。
Azure IoT Hub は、IoT Hubに接続する各デバイスにデバイスツインを保持します。

デバイスツインの実態は JSON ドキュメントです。
IoT Hub に接続(登録)しているデバイスごとに JSON ドキュメントが生成されます。

デバイスツインのタグとは

タグはバックエンド アプリケーションによって設定され、デバイスに送信されることはありません。
タグはデバイスの整理に使用します。

タグを使ってデバイスを整理できます。
どのデバイスをどこに設置したか、などの情報を付与しておくと便利です。

Azureポータルでデバイスツインを開く

IoT Hub > IoTデバイス > 対象のデバイス > デバイスツインから開けます。

Image from Gyazo
Image from Gyazo
Image from Gyazo

タグを設定する

タグは、デバイスツインの"tags"プロパティに設定します。
今回は試しに自宅のセンサーを整理するためのの 3 つのプロパティを設定してみます。

  • area:設置エリア
  • room:部屋
  • sensing-target:センサーの種類(温度・湿度 etc...)

先程開いたデバイスツインのページではそのまま JSON を編集できます。
トップレベルに以下のプロパティを追加します。

    "tags": {
        "location": {
          "area": "tokyo",
          "room": "living-room"
        },
        "sensingTarget": "temperature"
    },

(JSON 全量はこちら)

追加するとこんな感じです。保存を忘れずにクリックしましょう。
Image from Gyazo
ちなみに、タグのネストは 10 段階までいけます。大体のケースでは十分足りるでしょう。

タグをつけたデバイスを見つける

IoT Hub には、大量のデバイスの中から対象のデバイスを見つけるために、SQL に似たクエリ言語が用意されています。

デバイスをクエリする方法

IoTHub ポータル上でデバイスをクエリする方法は 2 つあります。

  1. クエリエクスプローラーを使う
  2. クエリビルダーを使う

今回は簡単に利用できるクエリビルダーを使ってみます。

クエリビルダーの使い方

クエリビルダーは、IoTHubポータル > IoTデバイスのページ上部に表示されています。
Image from Gyazo

使い方は以下のとおりです。

  • (1):クエリの条件を入力します(SQL でいうと WHERE 句に相当します)
  • (2):をクリックすると、AND 条件を追加できます。
  • (3):デバイスのクエリをクリックして、クエリを実行します。
  • ((4):クエリを直接記入できるクエリエディターに切り替えることもできます)
    Image from Gyazo

事前にデバイスを 3 台登録しておきました。
タグの内容はこんな感じ。

デバイスID location.area location.room sensingTarget
m5atom-lite-1 tokyo bed-room temperature
m5atom-lite-2 tokyo living-room temperature
m5atom-lite-3 tokyo bed-room humidity

クエリしてみる

東京にあるデバイスを表示してみましょう。

フィールド:tags.location.area
値:'tokyo'(※'も必要です!)。
Image from Gyazo
クエリを実行します。
location.areatokyoを登録したデバイスがすべて表示されました。
Image from Gyazo

続いて、気温を測るデバイスを表示してみましょう。

フィールド:tags.sensingTarget
値:'temperature'
Image from Gyazo
sensingTargettemperatureのデバイスのみ表示されました。

まとめ

デバイスツインのタグを利用して、デバイスの設置場所・用途を設定しました。
また、対象のデバイスを見つけるクエリビルダーの使い方を紹介しました。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?