| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import requests
- import json
- import base64
- # 因为设备名是唯一的,加上 token 中有产品ID,因此很容易仅通过设备名就可以查询设备信息
- DEVICE_NAME = "emq_online"
- TOKEN = "version=2018-10-31&res=products%2F522417&et=1685551369&method=sha1&sign=9l9gkFQx7A%2B7B3fu8uU%2F089azps%3D"
- # 以产品为对象构建类
- class Api_OneNet():
- def __init__(self, api_addr="https://api.heclouds.com", token=TOKEN) -> None:
- self.api_addr = api_addr
- self.token = token
-
- def get_device_info(self, device_name):
- url = self.api_addr + f"/mqtt/v1/devices/{device_name}"
- headers = {
- 'Authorization': self.token,
- }
- print("GET url:", url)
- print("GET headers:", headers)
- response = requests.request("GET", url, headers=headers)
- print(type(response))
- device_info = json.dumps(response.json(), indent=2, ensure_ascii=False)
- print(device_info)
- return device_info
- def register_device(self, device_name):
- url = self.api_addr + f'/mqtt/v1/devices/reg'
- # TODO
-
- def device_cmd(self, device_id, dat):
- url = self.api_addr + f'/v1/synccmds?device_id={device_id}&timeout=30'
- headers = {
- 'Authorization': self.token,
- }
- print("POST url:", url)
- print("POST headers:", headers)
- # 返回一个对象, response.content 得到其内容,数据类型为 bytes
- response = requests.post(url, headers=headers, data=dat)
- print(type(response.json()), "\n", response.json())
- # response.json() 类型是字典
- res = response.json()
- # 命令发送消息成功,设备有应答
- if res["errno"] == 0:
- # 收到设备回复的信息内容格式是base64,需要解码
- res["data"]["cmd_resp"] = base64.b64decode(res["data"]["cmd_resp"])
- # 设备没有应答
- else:
- print("error")
- print("res:\n", res)
- return res
-
- if __name__ == '__main__':
- api = Api_OneNet()
- api.device_cmd('951045379', 'open')
-
- '''
- <class 'requests.models.Response'>
- {
- "request_id": "7477d03e-815f-4973-9426-6e88d6699522",
- "code": "onenet_common_success",
- "code_no": "000000",
- "message": null,
- "data": {
- "device_id": "952659214",
- "name": "emq_online",
- "pid": 522417,
- "key": "bXgU8U0W1DAlyWcD22xrQNK/DXkwr6kFD7bLKQ2390w="
- }
- }
- '''
|