MQTT統合
概要
MQTTブリッジは、ブリッジ/転送機能により、ドックのMQTT情報をFlightHub 2オンプレミス版経由でサードパーティシステムへ転送します。産業用途におけるサードパーティシステムとFlightHub 2オンプレミス版の連携タスクを実現します。
システムトポロジー

開始前の準備
- FlightHub 2オンプレミス版を展開するには、DJI FlightHub 2オンプレミス版展開マニュアルを参照してください。
- サードパーティシステムのMQTTブローカーをホストするネットワークは、FlightHub 2のオンプレミス版をホストするネットワークに接続されている必要があります。MQTTブローカーはEMQXタイプをサポートしています。EMQX以外のMQTTブローカーを使用する場合、ユーザーは互換性と機能性を確保するために独自のテストを実施する必要があります。
- サードパーティシステムは、MQTTサーバーとWebhook URLの両方のポートが開いていることを確認する必要があります。詳細については、「
ブリッジの設定」セクションを参照してください。
設定手順
ブリッジの設定
ターミナルでcurlコマンドを入力して、MQTTブリッジアドレスを設定し、デバイスのオンライン/オフライン状態を監視するためのWebhookを構成します。
例:
curl -X POST "http://10.94.98.15:38080/bridges/v1/resources" -H "Content-Type: application/json" -d '{
"mqtt": {
"id": "mqttbridge2",
"config": {
"username": "admin",
"proto_ver": "mqttv4",
"password": "",
"address": "10.94.98.17:1883",
"clientid": "fh2-bridge2"
}
},
"webhook": {
"config": {
"url": "http://10.94.98.17:8080",
"method": "POST",
"path": "/",
"body_template": "{ \"username\": \"${username}\", \"timestamp\": ${timestamp}, \"reason\": \"${reason}\", \"action\": \"${event}\", \"clientid\": \"${clientid}\" }"
},
"id": "webhook1"
}
}'
パラメーターの説明:
mqtt:
- "http://10.94.98.15:38080":FlightHub 2オンプレミス版が稼働しているアドレスとポートに置き換える必要があります。
- id:ブリッジの一意の識別子。カスタマイズ可能で、英数字のみである必要があります。
- username:サードパーティのMQTTへの接続が許可されているユーザー名。
- password:サードパーティのMQTTへの接続用パスワード。空にはできません。
- proto_ver:MQTTのプロトコルバージョン番号。現在、mqttv4のみ対応しています。デフォルトはmqttv4です。
- address:サードパーティMQTTのアクセスアドレス。
- clientid:MQTTクライアント識別子。カスタマイズ可能で、英数字のみである必要があります。
webhook:
- url:サードパーティデバイスのオンラインおよびオフラインイベントを追跡するインターフェースのURL。
- method:サードパーティデバイスのオンラインおよびオフラインイベントを追跡するインターフェースのメソッド。
- path:サードパーティデバイスのオンラインおよびオフラインイベントを追跡するインターフェースのパス。
- body_template:デバイスのオンラインおよびオフラインイベントに関してサードパーティインターフェースに送信されるコンテンツの文字列テンプレート。ご自身のインターフェースの特定の要件に合わせてキーを変更できます。
設定の確認:以下の情報は、設定が成功したことを示しています。失敗が返された場合は、アドレスとポートが正しく設定されているか、およびネットワークが接続されているかを確認してください。
{"result":{"code":0,"message":"success"},"data":null}
ブリッジの照会
ターミナルでcurlコマンドを入力して、MQTTブリッジのステータスを照会します。
例:
curl -X GET "http://10.94.98.15:38080/bridges/v1/resources"
ブリッジの変更
ターミナルでcurlコマンドを入力して、MQTTブリッジのステータスを照会します。変更する際は、MQTTのIDとWebhookのIDは変更できないことを確認してください。その他のパラメーターの説明については、設定ブリッジコマンドのパラメーター説明を参照してください。
例:
curl -X PUT "http://10.94.98.15:38080/bridges/v1/resources" -H "Content-Type: application/json" -d '
{
"mqtt": {
"id": "mqttbridge2",
"config": {
"username": "admin",
"proto_ver": "mqttv4",
"password": "",
"address": "10.94.98.17:1883",
"clientid": "fh2-bridge2"
}
},
"webhook": {
"config": {
"url": "http://10.94.98.17:8080",
"method": "POST",
"path": "/",
"body_template": "{ \"username\": \"${username}\", \"timestamp\": ${timestamp}, \"reason\": \"${reason}\", \"event\": \"${event}\", \"clientid\": \"${clientid}\" }"
},
"id": "webhook1"
}
}
'
ブリッジの有効化または無効化
ターミナルでcurlコマンドを入力して、ブリッジ機能を有効または無効にします。無効にすると、MQTTメッセージはサードパーティプラットフォームのMQTTブローカーに転送できなくなります。
例:
curl -X PUT "http://10.94.98.15:38080/bridges/v1/resources/switch" -H "Content-Type: application/json" -d '{
"enabled": true
}
'
ドックをサードパーティシステムに紐付ける
ドックをサードパーティシステムに紐付けるには、Access to the Cloud Serverチュートリアルを参照してください。
FlightHub 2へのドックの紐付け
FlightHubの組織にドックを紐付けるには、「FlightHub 2 ユーザーマニュアル」>「組織管理」>「端末管理」> ドック管理セクションを参照してください。
ブリッジの検証
Mosquittoの検証:
- 2つのターミナルを開き、FlightHub 2とサードパーティのMQTTブローカーの両方で「thing/product/+/osd」を登録します。
mosquitto_sub -h <FlightHub 2 Broker IP> -p <FlightHub 2 Broker Port> -t "thing/product/+/osd"
mosquitto_sub -h <Third-Party Broker IP> -p <Third-Party Broker Port> -t "thing/product/+/osd"
- 3つ目のターミナルで、トピックに「test」というメッセージを公開します。両方の登録ターミナルに「test」が表示された場合、ブリッジのセットアップは成功です。
mosquitto_pub -h <FlightHub 2 Broker IP> -p <FlightHub 2 Broker Port> -t "thing/product/sn1/osd" -m "test"
FlightHub 2の検証: サードパーティ製ブローカーが受信したMQTTデータがFlightHub 2のオンプレミスインターフェースデータと一致する場合、ブリッジは成功です。
注意事項
1. サードパーティシステムとFlightHub 2でのライブストリーム機能の利用戦略
サードパーティシステムが優先されます。サードパーティシステムが起動した後、FlightHub 2からのライブストリームを引き継ぐことができます。サードパーティシステムが配信を開始すると、FlightHub 2はライブストリームを開始できません。FlightHub 2でライブストリームを有効にするには、以下のコマンドを使用してサードパーティシステムのライブストリームを無効にします。
curl -X POST http://10.94.98.15:38081/thing-access-service/inner/tas/bridges/live/release -H 'Content-Type: application/json' -d '{
"sn": "6QCDL870020196"
}'
注記:snはドックのシリアル番号を指します。
2. MQTTブリッジ機能を有効にすると、ドックは機体からのメディアファイルをサードパーティシステムに直接自動転送します。
サードパーティシステムのバケットアドレスを設定するには、Media Managementチュートリアルを参照してください。