Thing プロパティ
Thing プロパティは Thing に関連するデータポイントの定義に使用されます。たとえば、顧客には名前プロパティと住所プロパティがあります。トラックにはドライバー、積載能力、場所のプロパティがあります。
プロパティはある Thing の現在の状態を把握するための簡単かつ便利な手段です。プロパティには静的なのもの (製造メーカー、型番など) と動的なもの (温度など) があります。アセットの構造、ビジネスプロセス、提供するソリューションに基づいてプロパティを設定します。
プロパティを作成する際には、以下のいずれかの種類のバインドを選択できます。
My Property
ローカル Thing のプロパティ。これはデフォルトの設定です。
Local Bound
ThingWorx サーバー上で別の Thing に定義されているプロパティにプロパティをリンクします。このプロパティを読み取り専用に設定しても、サーバー上の別のプロパティから値を受信できます。リモートにバインドされているプロパティへのローカルバインドを作成する場合を除き、これはリモートデバイスには使用されません。
Remote
リモートデバイスが初めて ThingWorx サーバーに接続するとき、サーバーはリモートデバイスを対応する Thing にバインドします。リモートデバイスがバインドされた後、そのリモートデバイスで定義されている各プロパティと ThingWorx でデバイスを表す Remote Thing の間にリモートバインドを作成しなければなりません。ThingWorx は、このバインドを使用して、アクティブな WebSocket 接続を介してリモートデバイスとの間で各プロパティ値の更新を送受信します。
* 
ローカル Thing と Remote Thing が同じ名前のプロパティを持つ場合に、リモートプロパティの設定に別のプロパティがバインドされると、そのリモートプロパティはローカルプロパティの値も設定します。
* 
プロパティのバインドのセットアップ (ローカルおよびリモート) については、 プロパティバインドを管理を参照してください。
プロパティごとに、名前、説明、および ThingWorx データ型 (ThingWorx ではベースタイプと呼ばれている) があります。ベースタイプに応じて、追加のフィールドが有効になる場合があります。数値や文字列などの単純なスカラー型の場合、デフォルト値などの基本フィールドが追加されます。さらに複雑なベースタイプではさらにオプションが追加されます。たとえば、ベースタイプが「INFOTABLE」の場合、インフォテーブルのデータ構造体を説明するデータシェイプを定義できます。詳細については、 下記のベースタイプの表を参照してください。
Thing プロパティ値は、値、タイムスタンプ、および品質 (VTQ) の 3 つの特性で構成されます。 VTQ 値は、指定することも自動的に設定することもでき、許容される品質のステータスは QualityStatus クラスにあります。プロパティが設定または更新されるたびに、その VTQ のすべての特性が更新されます。
通常、プロパティは Composer で me.PropertyName = value を設定することによって更新でき、タイムスタンプはサーバーの現在のタイムスタンプを反映させます。バッチ履歴更新には、特定の値、タイムスタンプ、および品質を渡すことができる UpdatePropertyValues サービスを使用できます。プロパティ値を Null に設定することはできません。
* 
カスタムサービスを作成する際に、特定のエンティティの同じプロパティを同時に修正する可能性があるコードを生成しないようにしてください。たとえば、予期しないプロパティ値が発生する可能性があるので、プロパティ値を同時に増減しないでください。同様に、購読内でカウンタのような働きをするプロパティを増分することはよくある誤用であり、結果が不正確になります。
ThingWorx 8.3.13、8.4.9、8.5.5 以降では、履歴プロパティ値が設定されたときに HistoricalDataLogged イベントが発生します。たとえば、エンティティの VTQ プロパティの現在の設定されているタイムスタンプが 2020-02-04 20:16:20 であり、そのエンティティの新規バージョンをインポートすることで、2019-12-24 19:00:45 などの古い VTQ プロパティが設定されるとします。この設定により、そのプロパティで HistoricalDataLogged イベントが発生し、プロパティでそのイベントに対するすべての購読が使用されます。
アラート
アラートの詳細については、 アラートを参照してください。
プロパティの追加情報
プロパティには以下の追加情報を設定できます。
「永続」
選択した場合 (true に設定した場合)、変化した各値がデータベースに永続化されます。
デッドロックを回避するため、データベースへの永続プロパティの書き込みは非同期で行われます。プロパティ値はただちに設定されますが、データベースへの書き込みは後から非同期で行われます。永続プロパティの値がデータベースに書き込まれる前に以下の検証が行われます。
その Thing がまだ存在しなければならない。
その Thing に ID がなければならない。
その Thing の ID と保留中の書き込みの ID が一致しなければならない。
その Thing が保留中の書き込みと同じ名前のプロパティで定義されていなければならない。
定義済みのプロパティがまだ永続化されていなければならない。
更新と再起動はキューの処理に影響しません。
「読み取り専用」
選択した場合 (true に設定した場合)、データは静的であり、ランタイムで書き込むことはできません。値を変更する唯一の方法としては、デフォルト値を変更します。これは静的コンフィギュレーションデータの場合に役立ちます。
「ログ記録」
選択した場合 (true に設定した場合)、データが変化すると、(データ変更タイプに基づいて) プロパティの値が値ストリームに自動的に記録されます。
* 
特定の状況でデータ変更イベントが発生しなかった場合、値ストリームのエントリはログに記録されない可能性がありますが、プロパティ値セットは維持されます。エンティティに対してプロパティを設定することは可能ですが、これらの書き込みを含むキーがいっぱいになり、データベースを空にできないことが原因で、対応する値ストリームの書き込みが削除されることがあります。これは、キューを空にするように設定されている速度よりも受信書き込みの量が多くなった場合に発生することがあります。これは永続化プロバイダごとに platform-settings.json で調整できます。ThingWorx からデータベースへの接続が失われると、キューがバックアップされ、パフォーマンスの高い方法で空にならない場合もあります。
データ変更情報
「データ変更タイプ」
この設定では、プロパティ値の変化によってデータ変更イベントがいつトリガされるかを指定します。プロパティの値に基づいてその他のプロセスを開始しなければならない場合にこれを使用します。各購読ユーザーには、新旧のプロパティ値を含むインフォテーブルとともに変更通知が送信されます。たとえば、DeliverySchedule プロパティに対する変更の購読を設定できます。スケジュールが変わった場合、SMS を介してドライバーに通知できます。
「データ変更タイプ」のオプションは以下のとおりです。
「常時」 - プロパティの値が変化した場合に購読ユーザーに対してイベントを発生させます。
「なし」 - 変更イベントを発生させません。
「オン」 - ほとんどの値で、変化が生じるとイベントがトリガされます。インフォテーブルなどのさらに複雑なベースタイプでは、イベント規則が異なる場合があります。
「オフ」 - 新しい値の評価結果がブール型 false である場合にイベントを発生させます。
「値」 - 数値では、新しい値がしきい値を超えて変化した場合、変更イベントが発生します。しきい値は、dataChangeThreshold アスペクト (NUMBER) で指定します。数値以外では、この設定は「常時」と同じ動作になります。
リモートバインド情報
次の表に、「バインド」オプションが「リモートバインド」に設定されている場合に使用できるオプションを示します。
オプション
説明
「リモートプロパティ名」
Edge に存在しているプロパティの名前。
* 
このプロパティ名とバインドする Edge Thing のプロパティ名は、同じである必要はありません。
「キャッシュメソッド」
キャッシュメソッドには、バインドする Edge プロパティ値を読み取るために、次の方法が提示されます。
「サーバーキャッシュから読み取り」では、サーバーが Edge プロパティ値をリクエストすることが禁止されます。サーバーから値を取得するだけになります。サーバーにキャッシュされた Edge プロパティ値への更新は、Edge プロパティの「データ変更タイプ」と「スキャン率」(Edge プロパティ値のプッシュ定義) によって決まります。Edge プロパティに正しい設定が行われていない場合、サーバーが Edge プロパティ値を持たず、サーバープロパティのデフォルト値を返してしまう可能性もあります。バインド先の Edge プロパティの「データ変更タイプ」が ALWAYS または VALUE と等しい場合、キャッシュタイプはこの設定がデフォルトになります。
「読み取りのたびにリモートからフェッチ」では、リクエストのたびに Edge から Edge プロパティ値を取得します。このオプションではキャッシュは行われません。バインド先の Edge プロパティの「データ変更タイプ」が NEVER と等しい場合、キャッシュタイプはこの設定がデフォルトになります。
「特定の時間のキャッシュ」は、Edge プロパティへのリクエストの頻度を制御します。最初のリクエストの後、サーバーはその値の Edge プロパティにアクセスし、定義されている秒数にわたって別の Edge プロパティへのリクエストを行いません。その間に Edge プロパティがサーバーの値を (プッシュを介して) 更新する可能性があることに注意してください。
「キャッシュ間隔」
リクエストによって Edge プロパティ値を Edge から取得する前に、サーバーが Edge プロパティ値をキャッシュしておく時間の長さ (秒数)。この値は、常に最初のリクエスト時に Edge から取得されます。
「開始タイプ」
リモートバインドされているプロパティの Thing の起動時または再起動時に、そのプロパティの初期化に使用する値を指定します。この初期化された値は、プロパティの変更イベントをトリガーしません。
「デフォルト値を使用」 - Edge 側の値にかかわらず、プロパティの初期値を指定されたデフォルト値に設定します。プロパティが永続化されている場合、初期値は、データベースに永続された最後の値に設定されます。
「Edge の値を読み取り」 - サーバー上で Thing が再起動された場合でも、サーバーの値と Edge の値が常に同期するように、Edge に対して現在の値をクエリーします。
「プッシュタイプ」
「プッシュタイプ」は強化された Edge Thing プロパティにのみ適用されます。これらのコンポーネントは、その値の変更をサーバーにプッシュできます。この機能は、サーバープロパティのバインドを使用して設定できます。
「値の変更に基づいてプッシュ」: 値の変更しきい値を設定できます。この設定を使用する場合は、「プッシュのしきい値」も設定できます。このしきい値は、Edge からサーバーに新しい値をプッシュするために超える必要があるデッドバンドです。
「プッシュしない」
「常時プッシュ」
「プッシュのしきい値」
このオプションは、「プッシュタイプ」「値の変更に基づいてプッシュ」に設定されている場合に使用できます。プロパティ値のプッシュが発生するための、Edge プロパティ値の変更範囲 (プラスまたはマイナス) を指定します。プロパティ値が指定した値を超えて変更される必要があります。
「切断時」
Remote Thing への接続が一時的に失われた場合の、リモートのプロパティ値バインドの処理方法を指定します。
変更される値を無視する: 切断中。
「すべての変更を 1 つの最終変更値に折り込む」 - 接続が回復したら、最後の変更値を送信します。
「タイムアウト」
プロパティの読み取りまたは書き込みの実行中に Remote Thing への呼び出しに使用されるタイムアウト。
「システムデフォルトを使用」 - デフォルトは 30 秒です。
「カスタムタイムアウト」「タイムアウト間隔 (秒)」に追加します。
プロパティのベースタイプ
定義済みのベースタイプは、プロパティに格納されるデータの周囲のコンテキストを提供します。次の表は、すべての Thing エンティティで使用できるベースタイプを示しています。
ベースタイプ
説明
BASETYPENAME
有効なベースタイプの名前。
BLOB
バイナリラージオブジェクト。
BOOLEAN
値 true または false。
DASHBOARDNAME
ダッシュボードの名前。
DATASHAPENAME
モデル内のデータシェイプへの参照。特別な処理を使用します。
DATETIME
書式設定に従った日付と時刻。
GUID
グローバル一意識別子。GUID プロパティが作成されると、デフォルト値または値がユーザーによって設定されていない場合、GUID が自動的に作成されます。以下の動作は永続および非永続 GUID プロパティに適用され、これはフェデレーションのシナリオでも当てはまります。
プロパティが永続または非永続として設定され、デフォルト値または値がユーザーによって設定されていない場合、Thing が初期化されるたびに新しい GUID 値が生成されます。システムまたは Thing が再起動した場合、新しい値が生成されます。
プロパティが永続でデフォルト値または値がユーザーによって設定されている場合、Thing またはシステムが再起動したときに新しい値は生成されません。
GROUPNAME
ユーザーグループの名前。
HTML
HTML コンテンツ。
HYPERLINK
標準 URL (www.ptc.com など)。
IMAGE
イメージとしてレンダー可能なバイナリデータ。
IMAGELINK
イメージへの URL リンク。
INFOTABLE
ThingWorx におけるデータの標準的な表現。SQL 結果セットとほぼ同じです。インフォテーブルの構築、消費、解析用に多数の組み込みサービスが用意されています。
INTEGER
小数部なしで書き込み可能な数値。
JSON
JavaScript Object Notation (JSON) オブジェクト。
LOCATION
標準世界測地系 (WGS) 84 座標。[緯度, 経度], 標高として表されます。
LONG
必要な範囲が、INTEGER ベースタイプによって指定される範囲より長い場合は、LONG タイプを使用する必要があります。
MASHUPNAME
ThingWorx マッシュアップへの参照。特別な処理を使用します。
MENUNAME
メニューの名前。
NUMBER
数値。
* 
指数値を使用できます。例: 123e45
PASSWORD
マスクされたパスワードの値。
* 
詳細については、 パスワードを参照してください。
QUERY
フィルタの配列を含む JSON オブジェクト。各フィルタに valuetypefieldname が含まれている必要があります。
SCHEDULE
Schedule Editor を使用して設定される cron ベースのスケジュール。
STRING
任意の数の英数字。
TAGS
ThingWorx タグの値。
TEXT
任意の数の英数字。STRING との違いとして、TEXT にはインデックスが付きます。
THINGCODE
ドメイン ID とインスタンス ID を含む Thing の数値表現。たとえば、2:1。
THINGNAME
モデル内の Thing への参照。特別な処理を使用します。
THINGSHAPENAME
モデル内の Thing Shape への参照。特別な処理を使用します。
THINGTEMPLATENAME
Thing Template の名前。
USERNAME
ThingWorx ユーザーへの参照。
VEC2
2 つの数値の集合。たとえば、2D 座標 x と y。
VEC3
3 つの数値の集合。たとえば、3D 座標 x、y、z。
VEC4
4 つの数値の集合。たとえば、4D 座標 x、y、z、w。
XML
XML スニペットまたは XML ドキュメント。
* 
「最小値」フィールドと「最大値」フィールドに入力される値は情報目的のみです。実際の値は、指定された値より小さいまたは大きい場合も受け入れられます。
関連リンク