MQTT
メッセージキューテレメトリトランスポート (MQTT) は、M2M (マシンツーマシン) 通信のためのオープンメッセージプロトコルです。パーベイシブデバイスからのメッセージ形式のテレメトリタイルのデータを、高レイテンシまたは制約ネットワークでサーバーまたは小規模メッセージブローカーに転送できるようにします。パーベイシブデバイスとは、センサーからアクチュエータ、携帯電話、車両搭載システム、ラップトップ、フルスケールコンピュータまでのさまざまなデバイスを指します。
MQTT はパブリッシングおよび購読アーキテクチャで機能します。MQTT にはメッセージブローカーと通信デバイスが必要です。通信デバイスはクライアントとも呼ばれます。ブローカーとクライアントは、"Topic" というパラメータをパブリッシュして購読できます。MQTT を介した通信のセキュリティは SSL を使用して確保できます。
MQTT 拡張機能は、小型電子デバイスやセンサーに接続性を与え、ThingWorx との通信を可能にします。
MQTT には、組織の要件に応じて、任意の標準ブローカーを使用できます。ユーザー制御設定については、インストールするブローカーの製品ドキュメントを参照してください。
* 
Windows オペレーティングシステムでは、ブローカーは、インストール後、サービスとして実行されます。
MQTT のインポート
* 
ThingWorx 拡張機能のサポートモデルが最近変更されました。ほとんどの拡張機能はダウンロードページに表示されなくなりました。詳細については、このアーティクルを参照してください。
拡張機能のインポートを参照して、MQTT_Extension.zip を ThingWorx にインポートします。拡張機能がインストールされると、「Thing Template」リストに以下が表示されます。
MQTTConnection
MQTTSubscriber Thing の共有接続が可能。
MQTTSubscriber
MQTT サーバーでの 1 つまたは複数のトピックの購読が可能。「コンフィギュレーション」 > 「プロパティ」で、MQTT プロパティマッピングセクションにプロパティを追加。
MQTTSubscriber Thing の編集中、関連付けられている MQTTConnection を再起動して再表示。
MQTT
1 つの Thing で上記のコンフィギュレーションのすべてが可能。
MQTT の設定
次のセクションでは、ThingWorx に拡張機能をインストールした後に、ブローカーとの接続を確立する場合に、MQTT でパラメータを設定する方法について説明します。
1. マシンにインストールしたブローカーを実行します。
2. ThingWorx で、新規「Thing」を作成し、「Thing Template」として「MQTT」を選択して、「保存」をクリックします。
3. 「プロパティおよびアラート」ビューをクリックすると、次の画面が表示されます。
上の図の 1 と 2 のコールアウトは以下を示しています。
コールアウト
説明
1
緑色のアイコンは、作成した Thing がブローカーに接続されていることを示しています。接続が切断されると、赤色で表示されます。
2
Thing とブローカーの間の接続が確立されると、isConnected プロパティの「値」フィールドが TRUE に設定されます。接続が切断されると、「値」フィールドは FALSE に設定されます。
ThingWorx HA 環境のシングルトンノードにブローカーとの接続の問題がある場合、このプロパティは false に設定されます。ただし、このプロパティが false の場合でも、ほかのノードは引き続きメッセージをパブリッシュします。
4. 「追加」をクリックしてプロパティを追加します。
5. 次の画面が表示されます。
6. プロパティ名、ベースタイプ、およびその他の必要な詳細情報を入力します。
7. プロパティに関連する情報を保存します。
* 
データ変更イベントが正常に実行されるためには、システムユーザーに次のアクセス許可があることを確認してください。
Thing、ThingTemplate、ThingShape などのコレクションレベルに対する Service Execute および Event Subscribe アクセス許可。
8. 「コンフィギュレーション」ビューをクリックすると、次の画面が表示されます。
次の表は、「コンフィギュレーション」ビューに表示される各種パラメータの説明を示しています。
JDBC Settings
説明
clientIdFormat
MQTT ブローカーに登録されているクライアントの名前。
* 
これは、1 つの MQTT ブローカーで一意でなければなりません。
トークン {s} は、ThingWorx Platform のサーバー名として使用されます。これは、サーバー名のフェデレーションサブシステムコンフィギュレーションで指定されている値をとります。
トークン {t} は、現在の Thing 名として使用されます。複数の異なるプラットフォームを 1 つのブローカーに接続し、同じ名前の Thing が複数ある場合は、フェデレーションサブシステムでサーバー名を指定することをお勧めします。
useSSL
ブローカーがセキュア接続をサポートしている場合は、これを選択します。
serverName
MQTT ブローカーが実行されているホスト名。
* 
ブローカーが ThingWorx Platform と同じマシンで実行されている場合は、このフィールドを空のままにしておきます。
serverPort
MQTT ブローカーのポート。デフォルト値は 1883 です。
userId
ブローカーに接続するユーザー名。
Password
ユーザー ID のパスワード。
Timeout
パブリッシングリクエストが成功するまで待つ時間 (ミリ秒)。デフォルト値は 5000 ミリ秒です。
ConnectTimeout
ThingWorx Platform と MQTT ブローカーの間の接続が確立されるまで待つ時間 (ミリ秒)。
retryInterval
MQTT ブローカーへの接続が切断された場合に接続を再試行する時間間隔 (ミリ秒)。
再試行メカニズムが機能するのは、接続が一度は確立されたものの、後で切断された場合のみです。
retryAttempts
接続の再試行が行われる回数。
たとえば、確立された接続がネットワーク障害またはその他の問題によって切断された場合に、接続のリセットが試行される回数は、このフィールドに入力した値によって決定されます。再試行は、上記の retryInterval の間隔で行われます。
pingInterval
ThingWorx Platform と MQTT ブローカーの間の接続ステータスの定期チェックを行う時間 (ミリ秒)。
デフォルト値は 45 秒です。45 秒ごとに、ping メッセージが MQTT ブローカーに送信され、応答があるかどうかをチェックします。ブローカーから応答があれば、接続は有効であることを意味します。
connectionIdleTimeout
接続のアイドル時間 (ミリ秒)。
設定した時間を超えて接続がアイドル状態になっている場合、それはチャンネルでメッセージ通信が行われていなかったことを示し、その Thing は切断されているものとしてマークされます。
プロパティがパブリッシュまたは購読されていない場合、pingInterval は Thing が切断されないように最後にアクティブであった時刻を継続的に更新します。
qos
この値により、ブローカーとクライアントの間の通信の優先度レベルが設定されます。
maxInFlight
maxinflight を設定します。トラフィックが多い環境では、この値を大きくします。
AutoMapping コンフィギュレーションテーブルには、パブリッシングまたは購読のプロパティを自動的にマッピングするための設定があります。自動マッピングが有効になっている場合、Mappings のテーブルを指定する必要はありません。Thing で作成したプロパティは、トピックに自動的にマッピングされます。トピック名は、次のように format によって決定されます。
AutoMapping
説明
format
プロパティに対応するトピック名のフォーマット。
トークン {s} はサーバー名、{t} は Thing 名、{p} はプロパティとして使用されます。
enabled
自動マッピング機能を選択できます。
9. Thing プロパティを MQTT トピックに手動でマッピングするには、Mappings セクションの下の「追加」をクリックします。
次の画面が表示されます。
次の表に、各マッピングで使用可能なコンフィギュレーションオプションをリストします。
Subscribe
プロパティを購読して、MQTT ブローカーから指定したトピックに対してパブリッシュされた変更を受信します。
Publish
指定したトピックを使用してプロパティ値の変更を MQTT ブローカーにパブリッシュします。
Retain
MQTT ブローカーで最後にパブリッシュされたプロパティ値を保持します。メッセージが保持されているトピックを新しいデバイスまたはクライアントが購読すると、ブローカーは最後にパブリッシュされた値を含むメッセージを自動的に送信します。メッセージの値が保持されていると、クライアントが初期値を必要とする場合に役立ちます。プレースホルダーの初期値を設定して次のメッセージを待機する代わりに、保持されている値が送信されます。
名前
MQTT ブローカーのマッピング先となる Thing プロパティの名前。
トピック
MQTT ブローカーでパブリッシュまたは購読するトピックの名前。
10. 手順 6 で追加したプロパティ名とトピック名を入力し、「購読」「パブリッシュ」「維持」のいずれかを選択します。このプロパティは、入力した名前のトピックをパブリッシュまたは購読します。
11. 「追加」をクリックします。
12. Properties and Alerts ビューで、「値を設定」をクリックします。
13. 次の画面が表示されます。
プロパティ値をフィールドに入力し、保存します。
14. マシンにインストールされているブローカーに固有の実行コマンドに従い、Thing プロパティとブローカーの間で行われているパブリッシングおよび購読アクティビティをチェックします。
これは役に立ちましたか?