Skip to content

EMQX Tables に MQTT データを取り込む

EMQX Tables は、EMQX Cloud に組み込まれたネイティブで完全管理された時系列データストレージサービスです。高スループットかつ低レイテンシでの MQTT データの取り込みと分析に最適化されており、IoT(Internet of Things)ユースケースに理想的です。

GreptimeDB を基盤とし、EMQX ブローカーとシームレスに統合され、InfluxDB Line Protocol をサポートすることで、テレメトリデータの効率的な保存、クエリ、および可視化を可能にします。

詳細は、EMQX Tables 概要 をご覧ください。

本ガイドでは、以下の手順で MQTT データを EMQX Tables に取り込む方法を説明します。

  • コネクターの作成
  • Line Protocol ライターを使用したルールの作成
  • データ取り込みのテストと結果のクエリ

前提条件

以下のデプロイメントを作成済みであること:

以下の内容に習熟していること:

ブローカーと Tables 間の接続

接続方法は、ブローカーのデプロイメントタイプおよびネットワーク構成によって異なります。

デプロイメントタイプ条件接続方法必要な対応
専用 / 専用 FlexTables と同じクラウドプラットフォーム、リージョン、ネットワークプライベート(セキュアかつ低レイテンシ)プロジェクトレベルネットワーク管理 によるネットワーク共有の設定
専用 / 専用 FlexTables と異なるリージョンまたはネットワークTLS 経由のパブリックインターネットブローカーのデプロイメントの「ネットワーク管理」設定で NAT Gateway を有効化
サーバレスTLS 経由のパブリックインターネット対応不要。ネットワーク関連の設定(Network Association や NAT Gateway)は不要

EMQX Tables コネクターの作成

データを書き込む前に、EMQX Tables へのコネクターを作成します。

新しい EMQX Tables のデプロイメントでは、デプロイメント詳細にデフォルトのユーザー名やパスワードが返されないため、コネクター設定前に EMQX Tables ユーザーを作成してください。ユーザー作成時に「Broker Integration」プリセットを選択すると、コネクター設定に必要な権限が付与されます。コネクター設定時に権限検証が失敗した場合は、エラーメッセージに従い EMQX Tables ユーザーの権限を更新してください。詳細は ユーザー管理 を参照してください。

  1. EMQX ブローカーのデプロイメントにアクセスし、左メニューから データ統合 をクリックします。

  2. 初めてコネクターを作成する場合は EMQX Tables を探します。既にコネクターを作成済みの場合は、+ 新規コネクター をクリックし、EMQX Tables を選択します。

  3. 新規コネクター ページで、コネクター名 は自動生成されます。以下の2つの設定モードから選択してください。

  4. テスト をクリックして接続を検証します。EMQX Tables サービスにアクセス可能で、ユーザー名とパスワードが有効、かつ選択したユーザーが必要な権限とデータベースアクセスを持っていれば、成功メッセージが表示されます。

  5. 新規作成 をクリックして作成を完了します。これで、このコネクターを使ったルール作成に進めます。

EMQX Tables へのデータ取り込み用ルールの作成

次に、書き込むデータを指定し、EMQX Tables に書き込むアクションをルールに追加します。

  1. ルール セクションで 新規ルール をクリックするか、コネクター横の アクション アイコンを使用します。

  2. SQL エディターで SQL ルールを定義します。この例では、クライアントが temp_hum/emqx トピックに温度と湿度のメッセージを送信した際にエンジンをトリガーすることを目的としています。以下のように SQL を設定します。

    sql
      SELECT
        timestamp,
        payload.location as location,
        payload.temp as temp,
        payload.hum as hum
      FROM "temp_hum/emqx"

    TIP

    初心者の方は Try It Out をクリックして SQL ルールの学習とテストを行うことができます。

  3. 次へ をクリックしてルールにアクションを追加します。

  4. コネクター ドロップダウンから先ほど作成したコネクターを選択します。

  5. 時間精度millisecond(デフォルト)に設定します。

  6. 書き込み構文 を設定し、EMQX Tables にデータをパースして書き込むための Line Protocol フォーマットを定義します。

    測定値、タグセット、フィールドセット、データポイントのタイムスタンプ、およびサポートされるプレースホルダーを指定するテキストベースのフォーマットです。詳細は InfluxDB 2.3 Line Protocol および InfluxDB 1.8 Line Protocol を参照してください。

    例:

     temp_hum,location=${location} temp=${temp},hum=${hum} ${timestamp}

    TIP

    • 符号付き整数型の値を書き込む場合は、プレースホルダーの後に i を付けます。例:${payload.int}i。詳細は InfluxDB 1.8 整数値の書き込み を参照してください。
    • 符号なし整数型の値を書き込む場合は、プレースホルダーの後に u を付けます。例:${payload.int}u。詳細は同上リンクを参照してください。
  7. 確認 をクリックしてルールを保存します。

  8. 新規ルール作成成功 のポップアップで ルールに戻る をクリックし、ルール作成を完了します。

emqx_tables_rule_action

ルールのテストとデータのクエリ

MQTTX などのクライアントツールを使って温度・湿度データの送信をシミュレーションすることを推奨します。簡単なデモとしては、ブローカーのデプロイメント内にある組み込みの診断ツールを使い、左メニューの オンラインテスト をクリックして実行できます。

  1. オンラインテストで、ユーザー名とパスワードまたは自動生成された認証情報を使ってデプロイメントに接続します。

  2. メッセージ欄で以下の内容を送信します:

    • トピックtemp_hum/emqx

    • ペイロード

      json
      {
        "temp": 27.5,
        "hum": 41.8,
        "location": "Prague"
      }

    emqx_tables_online_test

  3. EMQX Tables のデプロイメントに移動し、左メニューから データエクスプローラー をクリックします。

  4. 以下の SQL を実行して、public テーブルに取り込まれたデータをクエリします。

    sql
    select * from "temp_hum"

    クエリ結果 テーブルに1件のレコードが表示されるはずです。

    emqx_tables_query

  5. EMQX ブローカーのデプロイメントでルール統計を確認します。ルール一覧のルールIDをクリックすると、そのルールおよび関連アクションの統計情報が表示されます。

    emqx_tables_rule_statistics