实时处理 - 读取托管对象片段
Real Time Processing - read a managed object fragment
我想使用事件处理功能来创建派生测量。
我们的设备报告了一个测量值,该测量值具有我们在每个设备上存储在托管对象片段中的目标值。我想创建一个设备测量,它是测量与目标之间的差异,它似乎是 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
第一步是根据测量的来源查询对象
findManagedObjectById(measurement.source.value)
您还可以查看地理围栏示例,它也从设备对象中读取一些参数。
http://cumulocity.com/guides/event-language/geofence/
之后您可以使用这些函数访问该片段:
getNumber(deviceObject, "myFragmentInDevice.value")
getString(deviceObject, "myFragmentInDevice.value")
我会确保目标值存储为数字而不是字符串,因为这样您就可以使用 getNumber 函数,该函数将 return 一个 BigDecimal。
http://cumulocity.com/guides/event-language/functions/#utility-functions
我想使用事件处理功能来创建派生测量。
我们的设备报告了一个测量值,该测量值具有我们在每个设备上存储在托管对象片段中的目标值。我想创建一个设备测量,它是测量与目标之间的差异,它似乎是 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
第一步是根据测量的来源查询对象
findManagedObjectById(measurement.source.value)
您还可以查看地理围栏示例,它也从设备对象中读取一些参数。
http://cumulocity.com/guides/event-language/geofence/
之后您可以使用这些函数访问该片段:
getNumber(deviceObject, "myFragmentInDevice.value")
getString(deviceObject, "myFragmentInDevice.value")
我会确保目标值存储为数字而不是字符串,因为这样您就可以使用 getNumber 函数,该函数将 return 一个 BigDecimal。
http://cumulocity.com/guides/event-language/functions/#utility-functions