MilesightルーターのMQTTメッセージング機能

説明

MQTT (Message Queue Telemetry Transport) は、軽量なパブリッシュ/サブスクライブベースのメッセージングプロトコルです。IoT など、リモートロケーションとの接続において「小さなコードフットプリント」が要求される場合やネットワーク帯域幅が制限されている場合に設計されています。

この記事では、MQTT クライアントとしてデータをパブリッシュするための MQTT 設定の構成方法、およびルーター情報とデータの取得方法について説明します。

要件

Milesight ルーター: UR3x (ファームウェアバージョン 3x.3.0.7 以降)、UR41 (ファームウェアバージョン 41.0.0.3 以降)

MQTT サーバー/ブローカー

MQTT クライアントツール: MQTT Explorer を例として使用します

設定

ステップ1. ルーターを MQTT ブローカーに接続します。

1. デバイスがネットワークに接続されていることを確認します。

2. Service > MQTT ページに移動し、MQTT接続を追加します。

MQTTブローカー情報を入力し、Saveをクリックします。

項目 説明
一般
Name 接続のユニークな名前をカスタマイズします。保存後は変更できません。
Enable このMQTT接続を有効または無効にします。
Broker Address データを受信するMQTTブローカーのIPアドレスまたはドメイン名。
Broker Port MQTTブローカーがデータを受信するための通信ポート。
Client ID クライアントIDは、サーバーに対するクライアントのユニークな識別子です。同じサーバーに接続されているすべてのクライアントで一意である必要があります。
Connection Timeout/s 接続タイムアウト後にクライアントが応答を受け取らない場合、接続は切断されたものとみなされます。範囲:1-65535。
Keep Alive Interval/s クライアントがサーバーに接続後、定期的にハートビートパケットを送信して接続を維持します。範囲:1~65535。
Auto Reconnect 接続が切断された場合、自動的にサーバーに再接続を試行します。
Reconnect Period 接続が切断された場合、サーバーに再接続するまでの間隔(秒)。
Clean Session 有効にすると、接続は一時的なセッションを作成し、クライアントがブローカーから切断されるとすべての情報が失われます。無効にすると、接続は永続的なセッションを作成し、セッションがタイムアウトするまでオフラインメッセージを保存します。
ユーザー資格情報
Enable 必要に応じてユーザー資格情報を有効にします。
Username MQTTブローカーに接続するためのユーザー名。
Password MQTTブローカーに接続する際に使用するパスワード。
TLS
Enable 必要に応じてMQTT通信でTLS暗号化を有効にします。
Mode 必要に応じてMQTT通信でTLS暗号化を有効にします。

CA signed server certificate:  デバイスに事前インストールされた証明書発行機関(CA)が発行した証明書で検証します。

Self signed certificates: 検証用にカスタムCA証明書、クライアント
証明書、および秘密鍵をアップロードします。

注意: MQTTブローカーがHiveMQの場合、TLSを有効化し、オプションを CA署名付きサーバー証明書に設定してください。

MQTT設定が完了したら、接続状態を確認できます:

ステップ2. MQTTクライアントをMQTTブローカーに接続する。

MQTT Explorerは総合的なMQTTクライアントであり、他の種類のMQTTクライアントツール(MQTT.fx、MQTTXなど)と置き換えることができます。

MQTT Explorerソフトウェアを開き、MQTTサーバー情報を入力し、クライアントをMilesightルーターと同じようにMQTTブローカーに接続します。このクライアントはルーターの情報とデータを取得するために使用されます。

ステップ3. ルーターデータをサブスクライブするためのトピックをカスタマイズします。

Milesightルーターは、MQTTクライアントとして機能し、データをMQTTブローカーに転送する2つの方法に対応しています:

1. Active Report: ルーターがデータを積極的に自動的に送信します。

 

2. Passive Report: ルーターにリクエストを送信し、ルーター情報を問い合わせます。

 

アクティブレポート

1. アクティブレポートのMQTTトピックと、MQTTブローカーにデータを送信/報告する間隔をカスタマイズします。ルーターは、データをJSON形式でMQTTブローカーに送信します:

json format:

{
  "code": "1",   //1: Active report, 2: Passive report
  "id": "6218A3414659",  //Device SN
  "time": "2024-04-15T07:32:17Z",  //UTC report time
  "status": "systeminfo",   //Report type
  "data": { 
      ......//See Appendix
  }
}
JavaScript

Milesight ルーターは、以下の種類のアクティブレポートをサポートしています:

  • System Status: システム情報、システム状態、セルラー、イーサネット、GPS(GPSモデルのみ)
  • Serial port DTU data
  • Modbus Client data: シリアルモードが Modbus クライアントの場合、Modbus チャネルを作成し、Modbus RTU/TCP 読み取りコマンドを送信してデータを取得し、MQTT ブローカーに転送します。
  • GPS data: 必要に応じて GPS の詳細情報を転送します。これは GPS モデルでのみ機能します。

2. MQTT Explorer ソフトウェアでトピックをサブスクライブして、ルーター情報とデータを取得します:

ルーターはデータを JSON 形式で送信します。

パッシブレポート

1. ステータスリクエストトピックをカスタマイズしてMQTTリクエストを送信し、ステータスレスポンストピックを受信します。

2. MQTT Explorerソフトウェアでステータスリクエストとステータスレスポンスの両方のトピックをサブスクライブします:

3. ステータスリクエストトピックにリクエストを送信します。リクエスト形式はJSON形式です。

ステータスリクエスト形式:

{
  "id": "1",  //Random value
  "status": "systeminfo"   //Report type
}
JavaScript

ステータスレスポンス形式:

{
  "id": "1",  //The same as request
  "code": "2",   //1: Active report, 2: Passive report
  "time": "2024-04-15T07:32:17Z",  //UTC report time
  "status": "systeminfo",   //Report type
  "data": { 
      ......//See Appendix
  }
}
JavaScript

Milesight ルーターは5種類のパッシブレポートをサポートしています: systeminfo、systemstatus、cellular、ethernet、gps。

4. 送信後、ステータス応答トピックの下で返信を確認してください。

 

付録 – MQTT レポート内容

アクティブレポート形式を例に、レポートの内容を示します。

システムステータス-システム情報

{
  "code": "1",   
  "id": "6218A3414659", 
  "time": "2024-04-15T07:32:17Z",
  "status": "systeminfo",
  "data": {
    "model": "UR32-L00E-P-W",
    "sn": "6218A3414659",
    "firmware_ver": "32.3.0.7-r3",
    "hardware_ver": "V2.1"
  }
}
JavaScript

システム状態-システム状態

{
  "code": "1",
  "id": "6218A3414659",
  "time": "2024-04-15T07:27:19Z",
  "status": "systemstatus",
  "data": {
    "uptime": 115956,
    "cpu_load": "44%",
    "cpu_temp": 62,  //Unit: °C
    "memory_total": 128,   //Unit: MB
    "memory_free": 25,
    "flash_total": 128,
    "flash_free": 80,
    "tfcard_state": 0,
    "tfcard_total": 0,
    "tfcard_free": 0
  }
}
JavaScript

システム状態-セルラー

{
  "code": "1",
  "id": "6218A3414659",
  "time": "2024-04-15T07:27:19Z",
  "status": "cellular",
  "data": {
    "modem": {
      "modem_status": "No SIM Card",
      "model": "EC25",
      "version": "EC25ECGAR06A06M1G",
      "cur_sim": "SIM1",
      "signal": "0asu (-113dBm)",
      "register": "Not registered",
      "imsi": "",
      "iccid": "",
      "net_provider": "",
      "net_type": "",
      "plmnid": "",
      "lac": "0",
      "cellid": "0",
      "imei": "860425048159956"
    },
    "network": {
      "status": "Disconnected",
      "ip": "0.0.0.0",
      "netmask": "0.0.0.0",
      "gate": "0.0.0.0",
      "dns": "0.0.0.0",
      "time": "0 days, 00:00:00",
      "ipv6": "::",
      "gatev6": "::",
      "dnsv6": "::"
    },
    "statistics": {
      "sim1": "RX: 0.0 MiB   TX: 0.0 MiB   ALL: 0.0 MiB",
      "sim2": "RX: 0.0 MiB   TX: 0.0 MiB   ALL: 0.0 MiB"
    }
  }
}
JavaScript

システム状態-イーサネット

{
  "code": "1",
  "id": "6218A3414659",
  "time": "2024-04-15T07:27:21Z",
  "status": "ethernet",
  "data": {
    "wan": {
      "status": 1,   //1: up, 0: down
      "mac": "24:e1:24:f0:ef:81",
      "ip": "192.168.45.194/24",
      "ipv6": "fe80::26e1:24ff:fef0:ef7f/64",
      "time": "0 days, 13:38:58"
    },
    "lan": {
      "ip": "192.168.2.1/24",
      "ipv6": "fe80::7c94:81ff:fe8d:ca4c/64",
      "connected": 0
    }
  }
}
JavaScript

システム状態-GPS

{
  "code": "1",
  "id": "6218A3414659",
  "time": "2024-04-15T07:27:21Z",
  "status": "gps",
  "data": {
    "status": 53, //51: GPS is disabled, 52: Weak signal, 53: Normal report
//Below information only reports when status id is 53
    "time": "2024-04-15T07:27:21Z",
    "sats": 8,  //Satellites in Use
    "sativ": 12,   //Satellites in View
    "latitude": "24.44344 N",
    "longitude": "118.10360 E",
    "height": 5.8m,   //The unit changes depends on real location
    "speed": 10.101206 km/h
  }
}
JavaScript

シリアルポート DTU データ

{
  "data": "xxxxxxx",
}
JavaScript

Modbus クライアント データ

{
  "Channel1": "0603020010",   //Channel1 is Modbus channel name
}
JavaScript

GPSデータ

$GPRMC,,V,,,,,,,,,,N*53
$GPGGA,,,,,,0,,,,,,,,*66
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
JavaScript

—-以上—-

関連記事

ルーターの使用

ソリューション / IoT サポート


    Milesight製品

    ウェーブクレスト株式会社が運営するMilesight製品特設サイトです

    居住者の健康を確保

    お知らせ

    1. 2025-4-3

      ピープル・センシング 駆動型スマートビルディング

      People Sensing Insights を通じてビルインテリジェンスに革命をもたらします。…
    2. 2023-7-21

      LoRaWANの説明: 理論から実践へのガイド

      この包括的なビデオでは、LoRaWANを深く掘り下げ、その仕組み、利点、アプリケーションについて説明…
    3. 2023-4-6

      センシング・インサイト Milesight リブランディングのお知らせ

      https://youtu.be/r40DK40DjIY …
    ページ上部へ戻る