如何从thingsboard服务器端访问属性

时间:2018-04-20 22:31:36

标签: attributes thingsboard

我知道如何从客户端访问属性,但我想从thingsboard服务器端访问设备的属性。因此,在开发新的小部件时,我可以显示所有属性的列表,并在必要时更改它们。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

我们必须非常清楚服务器端客户端。 实际上,Thingsboard小部件在浏览器的客户端上运行。

据我了解,我们在窗口小部件中有两个用于属性访问的选项。

  1. 在小部件的数据源中定义属性访问权限,或
  2. 使用HTTP-Api访问属性

Thingsboard提供了使用HTTP-Api的便捷“服务”,我们可以像这样使用:

var entityId, attributeKey, myAttribute, attributeService;

entityId         = ... // entity id from the widgets datasource.
attributeKey     = 'MyAttribute';
myAttribute      = {
    key: attributeKey,
    value: 'MyAttributeValue';
};

attributeService = self.ctx.$scope.$injector.get('attributeService');

// Access attributes.
attributeService.getEntityAttributesValues('DEVICE', entityId, 'SERVER_SCOPE', attributeKey)
    .then(function success(attributes) {
        // Use the attribute value.
    });

// Write attributes.
attributeService.saveEntityAttributes(
        'DEVICE', entityId, 'SERVER_SCOPE', [myAttribute]);

Http-Api有更多选项,甚至该服务都提供了更多方便的功能。查看sources of the service at thingsboard/ui/src/app/api/attribute.service.js