Skip to content

设备属性、动作与事件

通过物模型描述设备的功能定义,将设备功能抽象为属性、动作与事件。

属性上报

设备发送消息

设备主动向云端上报设备属性值。

Topic:things/up/${tenantId}/${productKey}/${deviceKey}/property/post

HTTP POST:/device/v1/property/post?accessToken=xxx&tenantId=xxx&productKey=xxx&deviceKey=xxx

json
{
	"msgId":"45lkj3551234***",
  	"time":1626197189638,
	"sys" :{
		"ack": 1
	}
	"data":{
    	"color":{
        	"value":"red",
          	"time": 1626197189638  
        }, 
        "brightness":{
            "value":80,
            "time": 1626197189638
        }
	}
}

支持不带时间戳,默认使用设备上报时间。

json
{
	"msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
    	"color":"red",
        "brightness":80
	}
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID属性上报的来源设备所属产品 Key。
${deviceKey}string设备 ID属性上报的来源设备 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
sysobject系统参数控制消息的系统行为。
sys.acknumber属性上报应答行为默认情况下设备属性上报后云端不会返回应答消息,但可以通过 ack 参数改变这一默认行为。
0:不做应答,默认值。
1:处理之后返回应答消息。
dataobject上报的属性值集合key 为属性 Key,value 为对象(属性值和属性变更时间戳)或属性值。
data.${key}object属性上报对象key 为属性 Key。
data.${key}.timenumber属性变更时间戳Unix 时间戳,10 位秒级或 13 位毫秒级。
data.${key}.valueobject属性上报值具体的属性值。

设备接收消息

云端处理上报后,默认不对属性上报消息进行响应,除非设备端在上报时显式指定 ack 为 1。

Topic:things/down/${tenantId}/${productKey}/${deviceKey}/property/post_reply

json
{
	"msgId":"45lkj3551234***",
    "time":1626197189640,
	"code":0,
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID属性上报的来源设备所属产品 Key。
${deviceKey}string设备 ID属性上报的来源设备 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID与对应的上报消息的 msgId 保持一致,通过 msgId 来标识应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
codenumber响应状态码0 代表成功,默认值。非 0 代表失败。

状态码说明

状态码说明
0默认状态,代表成功。
1003数据格式错误。
1004设备不存在。
2002设备关联的模型未定义。
2003设备关联的属性未定义。
2006数据校验失败。

属性下发

设备接收消息

设备接收云端发送的属性设置消息。

Topic:things/down/${tenantId}/${productKey}/${deviceKey}/property/set

json
{
	"msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
    	"color":"green", 
        "brightness":50
	}
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID属性下发的目标设备所属产品 Key。
${deviceKey}string设备 ID属性下发的目标设备 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
sysobject系统参数控制消息的系统行为。
sys.acknumber属性下发应答行为默认情况下设备属性下发后设备不会返回应答消息,但可以通过 ack 参数改变这一默认行为。
0:不做应答,默认值。
1:处理之后返回应答消息。
dataobject下发的属性值集合下发属性值的集合,key 为属性 code,value 为属性值。

设备发送消息

设备在处理属性设置之后,默认不对属性设置消息进行响应,除非云端在设置消息中显式指定 ack 为 1。

Topic:things/down/${tenantId}/${productKey}/${deviceKey}/function/set_reply

json
{
	"msgId":"45lkj3551234***",
    "time":1626197189640,
	"code":0
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID属性下发的目标设备所属产品 Key。
${deviceKey}string设备 ID属性下发的目标设备 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID与对应的属性设置消息的 msgId 保持一致,通过 msgId 来标识应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
codenumber响应状态码0 代表成功,默认值。非 0 代表失败。

动作执行

设备接收消息

设备接收云端发送的动作执行消息。

Topic:things/down/${tenantId}/${productKey}/${deviceKey}/function/set

json
{
	"msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
      	"key": "testAction",
      	"input": {
          "inputParam1":"value1", 
          "inputParam2":"value2"
    	}
	}
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID动作执行目标设备的所属产品 Key。
${deviceKey}string设备 ID动作执行目标设备的 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
dataobject动作执行参数动作执行参数。
data.keystring动作 code动作的模型定义 code。
data.inputobject动作输入参数动作执行的输入参数,key 为模型Key,value 为模型值。

设备发送消息

设备在处理动作执行之后,总是会对动作执行消息进行响应。

Topic:things/up/${tenantId}/${productKey}/${deviceKey}/function/set_reply

json
{
	"msgId":"45lkj3551234***",
    "time":1626197189640,
	"code":0,
  	"data":{
      	"key": "testAction",
      	"output": {
          "outputParam1":"value1", 
          "outputParam2":"value2"
    	}
    }
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID动作执行目标设备的所属产品 Key。
${deviceKey}string设备 ID动作执行目标设备的 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID与对应的动作执行消息的 msgId 保持一致,通过 msgId 来标识应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
codenumber响应状态码0 代表成功,默认值。非 0 代表失败。
dataobject动作执行结果动作执行的结果
data.keystring动作 key动作的模型定义 key。
data.outputobject动作输出参数动作执行的输出参数,key 为参数 Key,value 为参数值。

事件上报

设备发送消息

设备主动向云端上报设备事件触发的消息。

Topic:things/up/${tenantId}/${productKey}/${deviceKey}/event/post

HTTP POST:/device/v1/event/post?accessToken=xxx&tenantId=xxx&productKey=xxx&deviceKey=xxx

json
{
	"msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
      	"key":"testEvent",
      	"time":1626197189630,   //10 位秒级或 13 位毫秒级事件发生时间戳
      	"value": 123
	}
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID事件上报的目标设备的所属产品 Key。
${deviceKey}string设备 ID事件上报的目标设备的 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
dataobject事件上报参数事件上报参数。
data.keystring事件 key事件的模型定义 key。
data.timenumber事件发生时间事件发生时间的 Unix 时间戳,10 位秒级或 13 位毫秒级。
data.valueobject事件模型值事件模型的值。

设备接收消息

云端接收事件消息之后,默认不对消息进行响应,除非设备在上报消息中显式指定 ack 为 1。

Topic:things/down/${tenantId}/${productKey}/${deviceKey}/event/post_reply

json
{
	"msgId":"45lkj3551234***",
    "time":1626197189640,
	"code":0
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID事件上报的目标设备的所属产品 Key。
${deviceKey}string设备 ID事件上报的目标设备的 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID与对应的事件触发消息的 msgId 保持一致,通过 msgId 来标识应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
codenumber响应状态码0 代表成功,默认值。非 0 代表失败。

状态码说明

状态码说明
0默认状态,代表成功。
1003数据格式错误。
2121批量上报部分数据处理失败。
2122批量上报完全处理失败。
2123批量上报子设备个数超过限制,目前子设备个数上限不能超过 20 个。

批量上报

批量上报是指网关设备一次请求中可以同时上报多个事件和属性,包含子设备的事件和属性。

设备发送消息

设备主动向云端上报多个事件和属性,包含子设备的事件和属性。

Topic:things/up/${tenantId}/${productKey}/${deviceKey}/batch/post

json
{
	"msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
      "properties":{
    	"color":{
        	"value":"red",
          	"time": 1626197189638 
        }
      },
      "events":{
		"event1":{
					"value": "",
					"time":1626197189001
				},
		"event2":{
					"value": "value1",
					"time":1626197189001
				}
      },
      "subDevices":[
		{
			"product":"th453452***", 
			"device":"asd453452***", 
			"properties":{
				"color":{
					"value":"red",
					"time": 1626197189638 
				}, 
				"brightness":{
						"value":80,
						"time": 1626197189638
				}
			},
			"events":{
				"event1":{
					"value": "",
					"time":1626197189001
				}
			}
		}
	  ]
	}
  	
}

参数说明

参数类型说明必选备注
${productKey}string设备 ID属性上报的来源设备所属产品 Key。
${deviceKey}string设备 ID属性上报的来源设备 Key。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
sysobject系统参数控制消息的系统行为。
sys.acknumber批量上报应答行为默认情况下设备批量上报后云端不会返回应答消息,但可以通过 ack 参数改变这一默认行为。
0:不做应答,默认值。
1:处理之后返回应答消息。
dataobject上报的数据集合包含设备自身的批量上报数据和子设备的上报数据。
data.propertiesobject批量上报的属性集合key 为属性 code,value 为属性值和属性变更时间戳。
data.properties.$object属性上报对象key 为属性的 code。
data.properties.${key}.timenumber属性变更时间戳Unix 时间戳,10 位秒级或 13 位毫秒级。
data.properties.${key}.valueobject属性上报值具体的属性值。
data.eventsobject批量上报的事件集合key 为事件 code,value 为事件参数和发生时间。
data.events.$object事件上报对象code 为事件的 code。
data.events.${key}.timenumber事件发生时间Unix 时间戳,10 位秒级或 13 位毫秒级。
data.events.${key}.valueobject事件输出参数事件输出的参数集合。
data.subDevicesarray子设备上报数据列表子设备个数上限不能超过 20 个。
data.subDevices[]object子设备上报数据每个元素代表一个子设备的数据。
data.subDevices[].productstring子设备所属产品 Key上报的子设备所属产品 Key。
data.subDevices[].devicestring子设备 Key上报的子设备 Key。
data.subDevices[].propertiesobject子设备批量上报的属性集合结构定义与 data.properties 类似。
data.subDevices[].eventsobject子设备批量上报的事件集合结构定义与 data.events 类似。

设备接收消息

云端接收批量上报消息之后,默认不对消息进行响应,除非设备在上报消息中显式指定 ack 为 1。

Topic:things/down/${tenantId}/${productKey}/${deviceKey}/batch/post_reply

json
{
	"msgId":"45lkj3551234***",
	"time":1626197189640,
	"code":0
}

参数说明

参数类型说明必选备注
$string设备 ID批量上报的来源设备 ID。
versionstring协议版本默认 1.0,且仅有 1.0。
msgIdstring消息 ID与对应的批量上报消息的 msgId 保持一致,通过 msgId 来标识应答关系。
timenumber消息时间戳消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
codenumber响应状态码0 代表成功,默认值;非 0 代表失败。