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
}
}
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
}
ステータスレスポンス形式:
{
"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
}
}
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"
}
}
システム状態-システム状態
{
"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
}
}
システム状態-セルラー
{
"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"
}
}
}
システム状態-イーサネット
{
"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
}
}
}
システム状態-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
}
}
シリアルポート DTU データ
{
"data": "xxxxxxx",
}
Modbus クライアント データ
{
"Channel1": "0603020010", //Channel1 is Modbus channel name
}
GPSデータ
$GPRMC,,V,,,,,,,,,,N*53
$GPGGA,,,,,,0,,,,,,,,*66
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
—-以上—-
関連記事
ルーターの使用
Ubuntuを使用したDMVPNのインストールと設定例DMVPNサーバーのインストール方法、およびMilesightルーターをサーバーに接続する手順を説明します。
ネットワークの常時接続機能を実現する方法Ursalink 産業用セルラールーターは、リンクフェイルオーバー機能によりネットワークをスムーズに稼働させます
MilesightルーターでシリアルDTUトランスペアレントモードを使用する方法Milesight ルーターでシリアル DTU 透過モードを使用する方法について簡単に説明します
Milesight ルーターで Modbus RTU を Modbus TCP に設定する方法最もよく使用されるのは、Modbus RTU(リモートターミナルユニット)、シリアル(RS-232またはRS-485)プロトコル、またはModbus(TCP/IP)伝送制御プロトコルとインターネットプロトコルです。
Milesight ルーターでのModbus マスター機能の使用方法Milesightルーターは、Modbus RTU/TCPマスター(クライアント)として機能し、Modbusスレーブユニットデバイス(サーバー)からデータを要求できます
Python アプリケーションを使用して SNMP サーバーに DI/DO ステータスを書き込む方法Milesight ルーター上の Python アプリケーションを使用して、DI/DO ステータスを SNMP サーバーに書き込む方法について説明します。
Milesight ルーターを GenieACS システムに TR-069 経由で統合する方法TR-069(Technical Report 069)は、正式名称を「CPE WAN Management Protocol」といい、ブロードバンド・フォーラムによって開発された業界標準プロトコルです
Milesightルーターのセルラー周波数帯域選択セルラーネットワークに登録する特定のセルラー周波数帯域を選択する方法について説明します
Milesight UR75&UF51ルーターでDOをコントロールする方法DOの原理とDOの制御方法について説明します
Milesight UR3x&UR41ルーターでDOをコントロールする方法DOの原理とDOの制御方法について説明します
MilesightルーターをOpenVPN CloudConnexaに接続する方法CloudConnexaを例に、MilesightルーターとCPEでOpenVPNクライアントを構成する方法を説明します。
Milesight ルーターで「pip install」を実行する方法Milesight セルラー ルーターには、Python での二次開発用に組み込みコンポーネントが搭載されています。
Milesightルータ間でIPsec VPNを確立する方法Milesight ルーター間で IPsec VPN を設定する方法について説明します。
MilesightルーターでACLを設定する方法アクセス制御リスト(ACL)の設定について詳細に説明します
MilesightルーターでのDIの使い方DI の使用方法と DI ステータスの確認方法について説明します
システム時刻の設定方法とNTPサーバーのセットアップNTP サーバーとの同期を例に、システム時刻の設定方法と、ルーターを NTP サーバーとして使用する方法を説明します。
SMSの送受信と遠隔操作の方法この手順により、電話グループ1のSIM1番号のみがこのルーターを制御するためのメッセージを送信できるようになります。
Milesightルーター間のWi-Fiによるローカルネットワーク通信Milesight ルーター間でWi-Fi経由のローカルネットワーク通信を設定する方法について説明します。
Milesightルーターを経由してiOSをIPsec VPNに接続する方法説明 インターネットプロトコルセキュリティ(IPsec)は、インターネットプロトコルネットワーク上で […]
MilesightルーターでOpenVPNサーバーをセットアップする方法は?ルーター上でOpenVPNサーバーを構成する方法を説明します。