Thing の存在
ThingWorx Platform に接続するデバイスの幅広い範囲に対応するために、「接続」の概念は「WebSocket を使用して現在バインドされている」から「正常な接続」へと変化しており、これは Thing の存在と呼ばれます。Thing の存在は、デバイスの予測される動作に基づいて、Thing の接続が "正常" であることを示します。
ThingWorx AlwaysOn デバイス (ThingWorx Edge SDK ベースのアプリケーションまたは ThingWorx Edge MicroServer) が WebSocket をバインドします。一定の時間にわたってオフラインになるように設定されていない場合は、常に ThingWorx Platform からメッセージを受信できます。これに対し、Axeda eMessage エージェントデバイスは、プラットフォームを定期的にポーリングし ("ping")、接続およびバインドされている場合にのみプラットフォームからメッセージを受信できます。これら両方の主要タイプのデバイスは、Thing の存在によってサポートされます。
Thing の存在は、デバイスの異なるカテゴリ間で比較可能であり、すべての ThingWorx インタフェースによってサポートされます。たとえば、サービス組織は、サービス呼び出しに利用可能なすべてのデバイスや、予期せずオフラインになったすべてのデバイスを示すダッシュボードを作成することがあります。ThingWorx SCM Extension は Thing の存在を使用して、(isReporting という名前のプロパティをチェックすることで) デバイスが "正常に" 接続されているかどうかを判別し、パッケージを選択してデバイスに展開できるようにします。
Thing の存在はデバイスの状態全体の診断を試みないことを理解しておくことが重要です。Thing の存在は単一のブールプロパティとして示されるので、ThingWorx は各種アセット間で統一されたエクスペリエンスを提供できます。
機能
最も一般的な意味では、RemoteThing として定義されているデバイスは以下の新規属性を持ちます
タイプ
名前
説明
プロパティ
isReporting
適用されている "レポートストラテジー" に基づいて、"正常な" 通信にデバイスを利用可能かどうかを示します。
プロパティ
reportingLastChange
isReporting の値が最後にいつ変更されたかを示します。
プロパティ
reportingLastEvaluation
isReporting の最後の評価がいつ行われたかを示します。
コンフィギュレーション
reportingStrategy
デバイスがレポートしているかどうかを判別するためのアルゴリズムを定義する Thing。
サービス
EvaluateReporting
デバイスがレポートしているかどうかを評価し、isReporting プロパティを適宜設定します。
サービス
SetReportingStrategy
デバイスがレポートしているかどうかの評価に使用されるストラテジーを設定します。
サービス
GetReportingStrategy
デバイスがレポートしているかどうかの評価に現在使用されているストラテジーを取得します。
デバイスがレポートしているかどうかを判別するための正確なアルゴリズムは、個々の ReportingStrategy Thing によって異なります。ただし、一般プロセスは以下のようになります。
1. EvaluateReporting サービスが何らかのイベントによってトリガーされます
2. その後、EvaluateReporting がストラテジー Thing に対して ReportingAlgorithm サービスを呼び出します。
3. ReportingAlgorithm が特定のアルゴリズムに基づいてブール値を返します。
4. ReportingAlgorithm サービスの結果に基づいて isReporting プロパティが設定されます。
EvaluateReporting サービス
EvaluateReporting サービスは以下のパラメータをとります。
eventName - レポート状態の再評価の原因となったイベントの名前。
eventTime - このイベントが発生した時刻。
source - このイベントを生成した Thing の名前。
sourceProperty - このイベントのソースプロパティ。
eventData - このイベントのデータ。
EvaluateReporting() のすべてのパラメータが ReportingStrategy.ReportingAlgorithm() に直接渡されます。
このサービスが Thing のバインドまたはバインド解除中に実行されている場合:
eventNameBindingEvent です。
isBound キーの下に 1 つの値がある 1 つの行が eventData に表示されます。これは、Thing がバインドされたかバインド解除されたかを示します (バインドの場合は true、バインド解除の場合は false)。
このサービス中に問題が発生した場合 (ReportingAlgorithm 内を含む)、Thing は "レポートしていない" に更新され、アプリケーションログにメッセージが追加されます。
これは役に立ちましたか?