通过调用设备服务,可设置设备属性或获取设备属性。

注意 应用程序若要调用设备服务,则需要先订阅响应Topic,再向请求Topic发送请求。因此请先完成设备数据订阅中的操作,再调用设备服务。

请求Topic

  • 设置设备属性Topic:{srcApp}/request/thing/$Your_ProductKey/$Your_DeviceName/set
  • 获取设备属性值Topic:{srcApp}/request/thing/$Your_ProductKey/$Your_DeviceName/get
  • 调用设备服务Topic:{srcApp}/request/thing/$Your_ProductKey/$Your_DeviceName/${tsl.service.identifier}

其中,$Your_ProductKey表示设备所属产品的ProductKey,$Your_DeviceName表示设备的名称,${tsl.service.identifier}表示设备所属产品物模型(TSL)中的服务标识符。

请求Payload

#示例-设置设备属性
Topic:testApp/request/thing/$Your_ProductKey/$Your_DeviceName/set
Payload:
{
    "requestId":"0bc458b5-47f6-472f-bd88-3624696e****", #[Required]
    "timeout":5,
    "params":{                                          #设备请求方法调用的参数[Required]
        "key1":"value1",
        "key2":"value2"
    }
}

#示例-获取设备属性
Topic:testApp/request/thing/$Your_ProductKey/$Your_DeviceName/get
Payload:
{
    "requestId":"ff8db62b-4d75-46c8-bf6a-1600d326****", #[Required]
    "params":[                                          #设备请求方法调用的参数[Required]
        "key"
    ]
}

其中,通用参数说明请参见Payload通用参数说明,其他参数说明如下所示。

表 1. 参数说明
参数 类型 是否必选 说明
params List 设备属性参数。设置设备属性(set)时需要输入属性名key和属性值value;获取设备属性(get)时输入属性名key即可。
key String 设备属性名。

响应Topic

  • 设置设备属性响应Topic:thing/response/{srcApp}/$Your_ProductKey/$Your_DeviceName/set
  • 获取设备属性响应Topic:thing/response/{srcApp}/$Your_ProductKey/$Your_DeviceName/get
  • 调用设备自定义方法响应Topic:thing/response/{srcApp}/$Your_ProductKey/$Your_DeviceName/${tsl.event.identifier}

其中,$Your_ProductKey表示设备所属产品的ProductKey,$Your_DeviceName表示设备的名称,${tsl.event.identifier}表示设备所属产品物模型(TSL)中的事件名称。

响应Payload

#示例-设置设备属性响应数据
Topic:thing/response/{srcApp}/$Your_ProductKey/$Your_DeviceName/set
Payload:
{
    "requestId":"0bc458b5-47f6-472f-bd88-3624696e****",
    "code":0,
    "message":"success",
    "params":{
        "key":"value"
    }
}

#示例-获取设备属性响应数据
Topic:thing/response/{srcApp}/$Your_ProductKey/$Your_DeviceName/get
Payload:
{
    "requestId":"ff8db62b-4d75-46c8-bf6a-1600d326****",
    "code":0,
    "message":"success",
    "params":{
        "key":"value"
    }
}

完整示例

/* 1.先订阅响应Topic,用户接收设备响应数据 */
#./mosquitto_sub -u <your_username> -P <your_password> -p 8883 -t thing/response/testApp/+/+/+ -v &
/* 2.发送设备请求方法调用get请求 */
#./mosquitto_pub -u <your_username> -P <your_password> -p 8883 -t testApp/request/thing/a1Mtx4p****/LightSensor/get -m "{\"params\":[\"MeasuredIlluminance\"],\"requestId\":\"ff8db62b-4d75-46c8-bf6a-1600d326****\"}"
/* 3.mosquitto_sub输出设备响应信息 */
thing/response/testApp/a1Mtx4p****/LightSensor/get {"code":0,"message":"success","params":{"MeasuredIlluminance":1000},"requestId":"ff8db62b-4d75-46c8-bf6a-1600d326****"}
说明 其中:
  • mosquitto_submosquitto_pub是用来订阅和发送MQTT消息的命令行工具,详细信息请参见官方文档
  • <your_username>:替换为云端开启MQTT API中设置的访问边缘Open API的用户名。
  • <your_password>:替换为云端开启MQTT API中设置的访问边缘Open API的密码。