OneNET物联网MQTT协议之发送命令
请求方式:POST
URL:http://api.heclouds.com/cmds
URL参数
参数名称 | 格式 | 是否必须 | 说明 |
---|---|---|---|
device_id | string | 是 | 接收该数据的设备ID |
qos | int | 否 | 是否需要设备应答,默认为0。 0:最多发送一次,不关心设备是否响应 1:至少发送一次,如果设备收到命令后没有应答,则会在下一次设备登录时若命令在有效期内(有效期定义参见timeout参数)则会重发该命令 |
timeout | int | 否 | 命令有效时间,默认0。 0:在线命令,若设备在线,下发给设备,若设备离线,直接丢弃 >0: 离线命令,若设备在线,下发给设备,若设备离线,在当前时间加timeout时间内为有效期,有效期内,若设备上线,则下发给设备 单位:秒 有效范围:0~2678400 |
http body内容
用户自定义数据:json、string、二进制数据(小于64K)
http请求返回参数
参数名称 | 格式 | 说明 |
---|---|---|
errno | int | 调用错误码,为0表示调用成功 |
error | string | 错误描述,为"succ"表示调用成功 |
data | json | 接口调用成功之后返回的设备相关信息,见data描述表 |
data描述表
参数名称 | 格式 | 说明 |
---|---|---|
cmd_uuid | string | 命令id,平台范围内唯一 |
请求示例1
POST http://api.heclouds.com/cmds?device_id=8029377 HTTP/1.1
<this is a command>
返回示例1:成功创建命令
{
"errno": 0,
"error": "succ",
"data": {
"cmd_uuid": "81572aae-fc34-5deb-8f06-ab45d73cb12b"
}
}
返回示例2:设备不在线
{
"errno": 10,
"error": "device not online: 8029377"
}
请求示例2:发送离线命令且需要设备应答
POST http://api.heclouds.com/cmds?device_id=8029377&qos=1&timeout=3600 HTTP/1.1
<this is a command>
返回示例
{
"errno": 0,
"error": "succ",
"data": {
"cmd_uuid": "81572aae-fc34-5deb-8f06-ab45d73cb12b"
}
}
Python示例
设备下发命名内容 (字符串下发)

下发命令是自己设备端自定义的命令规则
{
"func":"sethrkeyval",
"key": "S_SET_MUTE", # 消音
# "key": "S_RUN_RESET", # 复位
"value":1
}
代码示例
import json
import requests
device_id = ******
url = "http://api.heclouds.com/cmds?device_id={}".format(device_id)
payload = {
"func":"sethrkeyval",
"key": "S_SET_MUTE", # 消音
# "key": "S_RUN_RESET", # 复位
"value":1
}
headers = {
'api-key': 'mopTrQSq********=',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload))
print(response.text)
运行结果
{"errno":0,"data":{"cmd_uuid":"75e76821-e80c-5e22-8ff0-9c46f0452c9e"},"error":"succ"}
网友评论