物联网平台能够将自定义属性分配给您的实体并管理这些属性。这些属性存储在数据库中,可用于数据可视化和数据处理。
属性被视为键值对。键值格式的灵活性和简单性允许与市场上几乎任何物联网设备轻松无缝集成。键始终是字符串,基本上是属性名称,而属性值可以是字符串、布尔值、双精度、整数或 JSON。例如

  1. {
  2. "firmwareVersion":"v2.3.1",
  3. "booleanParameter":true,
  4. "doubleParameter":42.0,
  5. "longParameter":73,
  6. "configuration": {
  7. "someNumber": 42,
  8. "someArray": [1,2,3],
  9. "someNestedObject": {"key": "value"}
  10. }
  11. }

租户和客户用户可在设备详情中查看设备属性
image.png

属性名称

建议采用英文驼峰命名。这样使得编写用于数据处理和可视化的自定义 JS 函数变得更加容易方便

属性类型

属性主要分为三种:

服务器端属性

由服务器管理和维护的属性,设备固件无法访问服务器端属性

  • 在物联网平台中使用Rules涉及某些机密数据对设备应用程序不可见。
  • 在物联网平台中使用Rules使用某些机密数据但设备不会使用。
  • 在物联网平台中任何实体都支持服务器端属性(如:Device,Asset,Customer,Tenant,Rules)。

    共享属性

    查看设备特定的属性
    此类属性仅适用于设备。类似于服务器端属性,区别在于设备固件/应用程序可以请求共享属性的值或订阅属性的更新。通过 MQTT 或其他双向通信协议进行通信的设备可以订阅属性更新并实时接收通知。通过 HTTP 或其他请求-响应通信协议进行通信的设备可以周期性地请求共享属性的值

    客户端属性

    查看设备特定的属性
    此类属性仅适用于设备。它用于将各种半静态数据从设备(客户端)上报到 物联网平台(服务器)。类似于共享属性,区别在于设备固件/应用程序可以将属性值从设备发送到平台。

设备属性api

睿珀物联网平为设备应用程序提供以下API:

  • 上传客户端属性至服务器。
  • 请求服务器中的客户端属性和共享属性。
  • 订阅共享属性的更新。

属性API仅支持特定的网络协议。你可以在相应的参考页面中查看API和示例:

MQTT API属性介绍

HTTP API属性介绍

遥测服务

遥测服务负责将属性数据持久保存到内部数据库中; 提供服务器端API来查询和订阅属性更新。

内部数据存储

物联网平台使用NoSQL数据库或SQL数据库来存储所有数据。
虽然你可以直接查询数据库但是物联网平台提供了一组RESTful和Websocket API可简化调用过程并应用某些安全策略:

  • Tenant管理员能够管理所拥有实体属性。
  • Customer用户只能管理Tenant分配的实体属性。

    数据查询API

    遥测服务提供以下REST API来获取实体数据:
    属性 - 图2
    注意:上图中的API可通过Swagger UI使用,如获取更多详细信息请查看REST API 。

属性keys API

你可以使用下面的GET请求地址获取指定entity类型和entity id的所有属性key列表

http(s)://host:port/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes

get-attributes-keys.sh

  1. curl -v -X GET http://localhost:8080/api/plugins/telemetry/DEVICE/ac8e6020-ae99-11e6-b9bd-2b15845ada4e/keys/attributes \
  2. --header "Content-Type:application/json" \
  3. --header "X-Authorization: $JWT_TOKEN"

结果

  1. get-attributes-keys-result.json

支持的实体类型为: TENANT, CUSTOMER, USER, RULE, DASHBOARD, ASSET, DEVICE, ALARM

属性values API

你可以使用下面的GET请求地址获取指定entity类型和entity id的所有属性value列表

  1. http(s)://host:port/api/plugins/telemetry/{entityType}/{entityId}/values/attributes?keys=key1,key2,key3

get-attributes-values.sh

  1. curl -v -X GET http://localhost:8080/api/plugins/telemetry/DEVICE/ac8e6020-ae99-11e6-b9bd-2b15845ada4e/values/attributes?keys=model,softwareVersion \
  2. --header "Content-Type:application/json" \
  3. --header "X-Authorization: $JWT_TOKEN"

结果

  1. [
  2. {
  3. "lastUpdateTs": 1479735871836,
  4. "key": "model",
  5. "value": "Model 42"
  6. },
  7. {
  8. "lastUpdateTs": 1479735871836,
  9. "key": "softwareVersion",
  10. "value": "1.0.0"
  11. }
  12. ]