2016-09-23 5 views
0

イベント処理機能を使用して派生測定を作成したいと考えています。リアルタイム処理 - 管理オブジェクトフラグメントを読み取る

私たちのデバイスは、デバイスごとに管理オブジェクトフラグメントに格納される目標値を持つ測定値を報告します。私は、測定とターゲットの違いであるデバイス測定を作成したいと考えています.RTP/CELの実装には理想的です。

私はreal time processingのガイドを見てきましたが、管理対象オブジェクトからフラグメントを読み取る方法を理解することはできません。

編集。私は自分のコードを更新しましたが、私はそこにいるので、私は自分のフラグメントデータを取得する場所として測定から入ってくるdeviceIdをどのように使うのかを考え出すことができません。

create variable ManagedObject device = findManagedObjectById(m.measurement.source.value); 
create variable BigDecimal setpoint = getNumber(device, "uty_Setpoint.value"); 

insert into CreateMeasurement 
select 
    m.measurement.time as time, 
    m.measurement.source.value as source, 
    "uty_Pressure_delta" as type, 
    {"uty_Pressure_delta.T.value", getNumber(m, "uty_Pressure.pressure.value") - setpoint, 
    "uty_Pressure_delta.T.unit", "percent" } as fragments 
from MeasurementCreated m 
where getNumber(m, "uty_Pressure.pressure.value") is not null 
+1

外部の変数ではなく、ステートメント内で直接行う必要があります。したがって、setpointをgetNumber(findManagedObjectById(m.measurement.source.value)、 "uty_Setpoint.value")に置き換えてください。 Edit:バックグラウンドというのは、ステートメントのデプロイ時にあなたが宣言したような変数が解決されているからです。 .measurement.source.valueを解決することはできません) – TyrManuZ

+0

それはなぜそれが私がそれを再展開したときに一度働いたか説明します!ありがとう。 –

答えて

1

最初のステップは、また、デバイスオブジェクトからいくつかのパラメータを読み込み、ジオフェンスの例を見てみることができ、測定のソース

findManagedObjectById(measurement.source.value) 

に基づいてオブジェクトを照会することです。その後

http://cumulocity.com/guides/event-language/geofence/

あなたは、これらの機能をフラグメントにアクセスすることができます、あなたははgetNumber機能を使用することができますので、

getNumber(deviceObject, "myFragmentInDevice.value") 

getString(deviceObject, "myFragmentInDevice.value") 

私は、目標値を数値ではなく文字列として格納されていることを保証するであろうBigDecimalを返します。

http://cumulocity.com/guides/event-language/functions/#utility-functions

関連する問題