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を利用すれば、様々なデバイスからセンサ情報を収集できそうです。