MQTT
リリースノート
メッセージキューテレメトリトランスポート (MQTT) は、M2M (マシンツーマシン) 通信のためのオープンメッセージプロトコルです。パーベイシブデバイスからのメッセージ形式のテレメトリタイルのデータを、高レイテンシまたは制約ネットワークでサーバーまたは小規模メッセージブローカーに転送できるようにします。パーベイシブデバイスとは、センサーからアクチュエータ、携帯電話、車両搭載システム、ラップトップ、フルスケールコンピュータまでのさまざまなデバイスを指します。
MQTT はパブリッシングおよび購読アーキテクチャで機能します。MQTT にはメッセージブローカーと通信デバイスが必要です。通信デバイスはクライアントとも呼ばれます。ブローカーとクライアントは、"Topic" というパラメータをパブリッシングして購読できます。MQTT を介した通信のセキュリティは SSL を使用して確保できます。
MQTT 拡張機能は、小型電子デバイスやセンサーに接続性を与え、ThingWorx との通信を可能にします。
MQTT には、組織の要件に応じて、任意の標準ブローカーを使用できます。ユーザー制御設定については、インストールするブローカーの製品ドキュメントを参照してください。
* 
Windows オペレーティングシステムでは、ブローカーは、インストール後、サービスとして実行されます。
MQTT のインポート
MQTT 拡張機能は、 support.ptc.com「ソフトウェアのダウンロード」 > 「ソフトウェアアップデートのご注文またはダウンロード」 > 「ThingWorx Foundation」 > 「Release <最新バージョン>」 > 「ThingWorx MQTT Extension」 > 「最新の製造コード」 > 「MQTT--<バージョン>-Extension」からダウンロードできます。 拡張機能のインポートを参照して、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 に設定されます。
4. 「追加」をクリックしてプロパティを追加します。
5. 次の画面が表示されます。
6. プロパティ名、ベースタイプ、およびその他の必要な詳細情報を入力します。
7. プロパティに関連する情報を保存します。
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
この値により、ブローカーとクライアントの間の通信の優先度レベルが設定されます。
AutoMapping コンフィギュレーションテーブルには、パブリッシングまたは購読のプロパティを自動的にマッピングするための設定があります。自動マッピングが有効になっている場合、Mappings のテーブルを指定する必要はありません。Thing で作成したプロパティは、プロパティに自動的にマッピングされます。トピック名は、次のように format によって決定されます。
AutoMapping
説明
format
プロパティに対応するトピック名のフォーマット。
トークン {s} はサーバー名、{t} は Thing 名、{p} はプロパティとして使用されます。
enabled
自動マッピング機能を選択できます。
9. 要件に従ってフィールドに値を入力し、Mappings 設定で「追加」をクリックします。
次の画面が表示されます。
10. 手順 6 で追加したプロパティ名とトピック名を入力し、「購読」「パブリッシュ」のいずれかまたは両方を選択します。このプロパティは、ここに入力したトピック名に対してパブリッシングまたは購読します。
11. 「追加」をクリックします。
12. Properties and Alerts ビューで、「値を設定」をクリックします。
13. 次の画面が表示されます。
プロパティ値をフィールドに入力し、保存します。
14. マシンにインストールされているブローカーに固有の実行コマンドに従い、Thing プロパティとブローカーの間で行われているパブリッシングおよび購読アクティビティをチェックします。