SmartWorks IoTを使用したAltair ActivateとiPhoneの連携


SmartWorks IoTを使用して、iPhoneの加速度センサ情報をAltair Activateに取り込む手順を紹介します。

SmartWorks IoTのMQTTブローカを使用し、iPhoneの加速度をMQTTに送信し、Activate側で受信します。

事前に「SmartWorks IoTとAltair Activateの連携」でMQTTの使用方法を習得してください。

https://community.altair.com/community/?id=kb_article_view&sysparm_article=KB0117641


MQTTブローカのセットアップ

SmartWorks IoTのAnythingDBにてThingsを二つ作成します。

1つ目はiPhoneデータの受信用で「iPhone_full」としました。加速度を含むすべての情報を格納するために使用します。

2つ目はActivateへの送信用で「iPhone_acc」としました。今回Activateで受信したい加速度情報のみを格納するために使用します。


iPhoneからの情報送信

iPhoneでMQTT送信可能なアプリを使用します。今回は「Cedalo MQTT Connect」というソフトを使用します。

https://apps.apple.com/jp/app/cedalo-mqtt-connect/id1462295012

SettingsにてAnythingDBのThings「iPhone_full」に対応した情報を入力してください。

送信間隔はデフォルトで200msとなっています。

ConnectをクリックするとSmartWorks IoTに接続され、右上のボタンをオンにすると各種情報が送信されます。

SmartWorks IoTのRaw Historyで確認すると、Rotation, Acceleration, GPSなどいろいろな情報が受信できていることがわかります。


データの演算・加工

iPhoneから送信された情報はIDなどの文字列情報も含まれており、そのままではActivateでは受信できません。そこでSmartWorks IoT上で必要なデータのみ抽出します。今回は加速度3成分のみ抽出します。

データの演算・加工はSmartWorks IoTのStream Processingを使うと簡単です。

まず、Data Sourcesを2つ作成してください。

1つ目はiPhoneデータの受信用で「iPhone_full」としました。加速度を含むすべての情報を格納するために使用します。コネクターとしてInputのMQTTを選択してください。

2つ目はActivateへの送信用で「iPhone_acc」としました。今回Activateで受信したい加速度情報のみを格納するために使用します。コネクターとしてOutputのMQTTを選択してください。

受信データの設定

Real Time VisualizationのData Sourcesと同じ機能です。iPhone_fullの設定を開き、AnythingDBのThings「iPhone_full」に対応した情報を入力し、iPhoneから情報を送信した状態で列作成をクリックすると、JSON文字列を解読してデータ列が作成されます。

今回必要なAcceleration.LinearX,Y,Z以外の有効化チェックを外します。これで受信データの準備は完了です。

送信データの設定

続いて、iPhone_accの設定を開き、AnythingDBのThings「iPhone_acc」に対応した情報を入力します。

データの演算・加工の設定

データの演算・加工はStream ProcessingのApplicationsで行います。新規アプリケーションを作成してください。

右上の+ボタンから入力と出力を追加します。

入力ブロックにてデータソースを先に作成したiphone_fullに設定します。加速度3成分のみ有効化したので、入力ブロックから加速度3成分が出力されます。

出力ブロックにて入力をinput1、データコンシューマーを先に作成したiphone_accに設定します。これで、データソースiphone_accに加速度3成分がそのまま格納されます。様々なブロックが用意されていますので、inputとoutputの間に挿入して様々なデータ演算・加工を行うことも可能です。

右上のアプリ起動をクリックすると、データ処理が開始され、編集不可の状態になります。

送信データの設定追加

Stream ProcessingのData Sourcesに戻り、iphone_accの設定を開きます。

テンプレートの作成にて、作成したApplication「iphone_acc」のoutput1ブロックを選択すると、JSONのテンプレートが作成されます。

AnythingDBの「iphone_acc」にてRaw Historyで確認すると、加速度3成分の情報のみが受信できていることがわかります。


Altair Activateでの加速度受信

サンプルファイルはこちらです。

MQTTSUBブロックでデータを受信できます。加速度3成分を受信しますので、Number of outputsを3としてください。

AnythingDBのThings「iPhone_acc」に対応した情報を入力します。

MessageにてJSON文字列を定義します。

SmartWorks IoTで設定されたペイロードテンプレートを参考に、

{
  "Acceleration_LinearX": "{Acceleration_LinearX}",
  "Acceleration_LinearY": "{Acceleration_LinearY}",
  "Acceleration_LinearZ": "{Acceleration_LinearZ}"
}

{Acceleration_LinearX}を%%1のように置き換えてください。

{
  "Acceleration_LinearX": "%%1",
  "Acceleration_LinearY": "%%2",
  "Acceleration_LinearZ": "%%3"
}

あとは、Activateを実行して、iPhoneを動かすと3軸の加速度がActivateに取り込まれます。

横がX、縦がY、画面面直がZのようです。

CSVファイルにも保存できました。

iPhoneのセンサ情報を例に、SmartWorks IoTのMQTTを経由してAltair Activateにセンサ情報を取り込む手順を紹介しました。

SmartWorks IoTのMQTTを利用すれば、様々なデバイスからセンサ情報を収集できそうです。