物联网平台能够将自定义属性分配给您的实体并管理这些属性。这些属性存储在数据库中,可用于数据可视化和数据处理。
属性被视为键值对。键值格式的灵活性和简单性允许与市场上几乎任何物联网设备轻松无缝集成。键始终是字符串,基本上是属性名称,而属性值可以是字符串、布尔值、双精度、整数或 JSON。例如
{
"firmwareVersion":"v2.3.1",
"booleanParameter":true,
"doubleParameter":42.0,
"longParameter":73,
"configuration": {
"someNumber": 42,
"someArray": [1,2,3],
"someNestedObject": {"key": "value"}
}
}
属性名称
建议采用英文驼峰命名。这样使得编写用于数据处理和可视化的自定义 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来获取实体数据:
注意:上图中的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
curl -v -X GET http://localhost:8080/api/plugins/telemetry/DEVICE/ac8e6020-ae99-11e6-b9bd-2b15845ada4e/keys/attributes \
--header "Content-Type:application/json" \
--header "X-Authorization: $JWT_TOKEN"
结果
get-attributes-keys-result.json
支持的实体类型为: TENANT, CUSTOMER, USER, RULE, DASHBOARD, ASSET, DEVICE, ALARM
属性values API
你可以使用下面的GET请求地址获取指定entity类型和entity id的所有属性value列表
http(s)://host:port/api/plugins/telemetry/{entityType}/{entityId}/values/attributes?keys=key1,key2,key3
get-attributes-values.sh
curl -v -X GET http://localhost:8080/api/plugins/telemetry/DEVICE/ac8e6020-ae99-11e6-b9bd-2b15845ada4e/values/attributes?keys=model,softwareVersion \
--header "Content-Type:application/json" \
--header "X-Authorization: $JWT_TOKEN"
结果
[
{
"lastUpdateTs": 1479735871836,
"key": "model",
"value": "Model 42"
},
{
"lastUpdateTs": 1479735871836,
"key": "softwareVersion",
"value": "1.0.0"
}
]