Twin Activateを使用したMQTTブローカーへの接続

Tutorial Level: Intermediate MQTT(Message Queuing Telemetry Transport)プロトコルを使用して、クライアントからIoTプラットフォーム(外部ブローカー)にパブリッシュおよびサブスクライブします。

重要: Available only with Twin Activate commercial edition.

このチュートリアルの前提条件

このチュートリアルには以下のソフトウェアとアカウントが必要です:

このチュートリアルのファイル

MQTT Pub IoT Studio.scmMQTT Sub IoT Studio.scm

チュートリアルで構築するモデルの完成版と、チュートリアルを完了するために必要なすべてのファイルは、次の場所にあります:<installation_directory>/Tutorial Models/Integration and Collaboration/IoT Studio.

概要

Twin Activateの通信プロトコルのオプションの1つは、IoT(モノのインターネット)で使用される有名な通信プロトコルであるMQTTです。ローカル、外部を問わず、あらゆるMQTTブローカーへのパブリッシュとサブスクライブの両方を、迅速かつ軽快に行うことができます。

トピックにメッセージを発行する際、Twin Activateはソフトウェアからブローカーにデータを送信します。トピックにサブスクライブすると、ブローカーからソフトウェアにデータを受信します。

このチュートリアルでは、外部MQTTブローカーは、Altair SmartWorks上にあります。これは、スマート製品やコネクテッド製品の開発に必要な技術をすべて網羅したエンドツーエンド Altair IoTプラットフォームです。SmartWorksでは、実世界でのエンティティを表すThingsを作成することができます。アセット、部屋、建物のような実世界のオブジェクトや、タスクやプロセスのような概念に関する情報を格納します。これらのThingsは、Twin Activateがパブリッシングしている場合はデータを受信し、Twin ActivateがMQTTトピックにサブスクライブしている場合はデータを送信します。IoTプラットフォーム上のデータを使って、ダッシュボードを作成することができます:https://help.altair.com/smartworks/topics/mqtt_dashboard.htm?hl=mqtt

IoT Studio-IoTプラットフォームでの一般的なセットアップ

IoT Studioでアカウントを作成したら、IoTプロジェクトを構築するためのSpaceを1つ作成します。Thingは、Twin Activateからデータを送受信するために作成されます。Spaces、Things、およびMQTT認証情報に関する名前はすべて、ユーザーごとに異なる必要があります。
  1. IoT StudioCreate New Space > AnythingDB > Things > New Thing > Createを選択します。

    Thingが作成されると、Twin Activateからデータを受け取り、IoT Studioに保存されるプロパティが作成されます。

  2. Properties (+) > Createを選択します。
  3. このオブジェクトに帰属するPropertiesを作成します:
  4. IoT StudioでMQTT認証情報を設定するには、Interfaces > MQTT Create Credentials > Set Username and Password > Saveを選択します。

IoT StudioのMQTTトピックへのパブリッシュ

このチュートリアルでは、標準的なTwin Activateデモを使用しますが、他のどのダイアグラムでも同じように処理できます。データは MQTT PUB ブロックを使用してTwin ActivateからIoTプラットフォームに送信され、MQTTを使用してデータをブローカーにパブリッシュします。
  1. Twin Activate環境で、パレットブラウザ > 通信 > MQTT PUBを選択します。
  2. ブロックConnectionタブで、HostnameCredentials、および Topicエンドポイントを、Space名、Thing ID、およびこの場合はプロパティ (必須ではありません) で、構造に従って設定します:
    'spaces/<space-name>/things/<thing-id>/properties'
    注: メイントピックの構成はURL hrefで確認できます。
  3. ブロックパラメータータブに、 入力数(この場合、振幅と時間の2つ出力数)と Messageがあることを確認してください。IoT Studioにデータを送信するには、JavaScript Object Notation(JSON)形式を使用する必要があります:
    {
    	"obj1":{
    		"amplitude": "%%1",
    		"time": "%%2"
    	}
    }
  4. MQTT PUBブロックのセットアップを行った後、Signal Generatorsブロックのいくつかを入力に接続し、SampleClockを接続してブロックをアクティブにします:
  5. シミュレーション > 設定 > リアルタイムスケーリングを1に設定します。シミュレーションはにリアルタイムでデータをIoT Studioに送信します。
  6. 実行をクリックします。
    MQTTプロトコルを使用して、Twin Activateから送信されたデータがMQTTプロトコルを使用してIoT Studioで受信されます。

IoT StudioのMQTTトピックへのサブスクライブ

このチュートリアルでは、標準的なTwin Activateデモを使用しますが、他のどのダイアグラムでも同じように処理できます。この場合、データはIoTプラットフォームからTwin Activateに送信されます。MQTTを使用してブローカーにサブスクライブする MQTT SUB ブロックを使用してデータを受信します。
  1. Twin Activate環境で、パレットブラウザ > 通信 > MQTT PUBを選択します。
  2. ブロックConnectionタブで、HostnameCredentials、および Topicエンドポイントを、Space名、Thing ID、およびこの場合はプロパティ (必須ではありません) で、構造に従って設定します:
    'spaces/<space-name>/things/<thing-id>/properties/<property-name>'
  3. ブロックパラメータータブに、 出力数(この場合、振幅と時間の2つ出力数)と Messageがあることを確認してください。IoT Studioから受信するため、JSON形式を選択し、1つのオブジェクトからメッセージを受信するため、各属性を受信するために以下のフォーマットに準拠する必要があります。
  4. MQTT SUBブロックのセットアップを行った後、Signal Viewersブロックのいくつかを出力に接続し、SampleClockを接続してブロックをアクティブにします:
  5. シミュレーション > 設定 > リアルタイムスケーリングを1に設定します。シミュレーションはにリアルタイムでデータをIoT Studioに送信します。
  6. 実行をクリックします。
    MQTTトピックにサブスクライブすると、トピックに送信されたメッセージはTwin Activateで受信されます。たとえば、あるデバイスが作成したオブジェクトの属性に関するメッセージをIoT Studioに送信した場合、Twin ActivateIoT Studioに接続されていることを考慮すると、これらのメッセージはソフトウェアに表示されます:

    MQTTプロトコルを使用して、IoT Studioから送信されたデータがMQTTプロトコルを使用してTwin Activateで受信されます。