累积实时最新测量结果


c8yMeasurements.latest(filter, realtime)
  .then(function (latestMeasurement) {
    vm.text = latestMeasurement.c8y_TemperatureMeasurement.T.value;
    console.log(vm.text);
  });

我试图使用该文档从某个设备中获取最新测量值:>

但是,我不太确定realtime事情实际上是如何工作的。我将realtime设置为true,但是每次代理更改值时,vm.text的值并未更新。

要处理它,我在JS中使用了setInterval方法(这很讨厌T t(。然后在我的自定义应用程序中正常工作。

但是,在i c8y build:plugin hello(hello是我的插件的名称(并将zip文件上传到驾驶舱后,该值无法获取。

请帮助:(谢谢。

为了使其实时工作,您需要将结果包裹到一个函数中,以便在更新模型时可以将其调用。这里一个示例

function getLatestMeasurementForDatapoint({ fragment, series, __target }) {
  return c8yMeasurements.latest({
      fragment,
      series,
      device: _.get(__target, 'id')
    }, true)
      .then(
        (rtLatestMeasurement) => {
          return {
            value: () => _.get(rtLatestMeasurement, [fragment, series, 'value'])
          };
        }
      );
}

在您的控制器中您可以调用此功能,该功能将返回包含键值

的对象
getLatestMeasurementForDatapoint(vm.datapoint)
  .then((latestMeasurement) => { vm.latestMeasurement = latestMeasurement; });

最终在您的模型中,您可以参考该结果。请注意,值是一个函数,因此您需要称其为函数。

{{vm.latestMeasurement.value()}}

最新更新