1. 自定义设备配置文件

自定义设备配置文件 学习卡片

任务说明

在 ThingsBoard 中,设备配置文件(Device Profile)用于定义设备的传输协议、告警规则及默认属性。本案例将创建一个名为“温湿度传感器”的新设备配置文件,并为其分配两个自定义属性(manufacturer 和 location),用于区分普通设备与温湿度传感器设备。完成后的配置文件可在设备创建时直接选用,实现设备类型的快速区分。

实现路径

本案例通过 ThingsBoard REST API 完成全部操作,无需编写额外代码。核心步骤为:先调用 POST /api/deviceProfile 创建设备配置文件,再调用 POST /api/deviceProfile/{profileId} 更新该配置文件的属性信息。整个流程可通过 curl 命令或 Postman 执行,操作结果可在 ThingsBoard 界面“设备配置”页面中直接查看验证。

操作步骤与代码

以下命令假设 ThingsBoard 运行在 http://localhost:8080,且已获取有效 JWT 令牌(YOUR_JWT_)。

1. 创建设备配置文件

curl -X POST "http://localhost:8080/api/deviceProfile" \
  -H "Content-Type: application/json" \
  -H "X-Authorization: Bearer YOUR_JWT_" \
  -d '{
    "name": "温湿度传感器",
    "description": "用于温湿度采集的设备类型",
    "transportType": "DEFAULT",
    "profileData": {
      "configuration": {
        "type": "DEFAULT"
      },
      "transportConfiguration": {
        "type": "DEFAULT"
      },
      "provisionConfiguration": {
        "type": "DISABLED"
      },
      "alarmRules": {}
    }
  }'

执行成功后,响应体中将返回包含 id 字段的 JSON 对象,该 id 即为新配置文件的 profileId,请记录备用。

2. 为配置文件分配自定义属性

curl -X POST "http://localhost:8080/api/deviceProfile/{profileId}" \
  -H "Content-Type: application/json" \
  -H "X-Authorization: Bearer YOUR_JWT_" \
  -d '{
    "id": {
      "id": "{profileId}",
      "entityType": "DEVICE_PROFILE"
    },
    "name": "温湿度传感器",
    "description": "用于温湿度采集的设备类型",
    "transportType": "DEFAULT",
    "profileData": {
      "configuration": {
        "type": "DEFAULT"
      },
      "transportConfiguration": {
        "type": "DEFAULT"
      },
      "provisionConfiguration": {
        "type": "DISABLED"
      },
      "alarmRules": {}
    },
    "additionalInfo": {
      "manufacturer": "Acme Corp",
      "location": "Room-101"
    }
  }'

将 {profileId} 替换为第 1 步中获取的真实 ID。此操作通过 additionalInfo 字段写入自定义属性,ThingsBoard 会将 additionalInfo 中的键值对作为配置文件的属性存储。

验证方法

完成上述两步后,可通过以下任一方式验证结果:

  • 界面验证:登录 ThingsBoard 界面,进入“实体”→“设备配置”页面,找到“温湿度传感器”条目。点击该条目打开详情,在“属性”或“附加信息”区域应能看到 manufacturer=Acme Corp 和 location=Room-101 两个键值对。
  • API 验证:执行以下命令,确认返回的 JSON 中 additionalInfo 字段包含上述两个属性:
curl -X GET "http://localhost:8080/api/deviceProfile/{profileId}" \
  -H "X-Authorization: Bearer YOUR_JWT_"

判定标准:若 GET 响应中的 additionalInfo 对象包含 "manufacturer": "Acme Corp" 与 "location": "Room-101",且配置文件名称显示为“温湿度传感器”,则本案例操作成功。此后在创建设备时,即可在“设备配置文件”下拉框中选择该配置,实现设备类型的区分。

设备配置文件创建与属性分配流程 步骤 1 POST /api/deviceProfile 请求体包含: name: "温湿度传感器" transportType: DEFAULT profileData: 默认配置 响应 200 OK 返回 JSON 包含 id.id: "profileId" name: "温湿度传感器" (记录 profileId) 步骤 2 POST /api/deviceProfile/{profileId} 请求体包含: id: {profileId} additionalInfo: { manufacturer: "Acme Corp" location: "Room-101" } 验证方法 ① 界面:设备配置 → 温湿度传感器 → 附加信息 ② API:GET /api/deviceProfile/{profileId} 判定:additionalInfo 包含 manufacturer 与 location 且 name = "温湿度传感器" → 成功