简体中文
简体中文
English
联系我们
注册
登录
语言
简体中文
简体中文
English
联系我们
登录
注册
返回主站
layout空间导航

开发设备控制和消息订阅服务( Python SDK - To C)

更新时间:2021-08-25 11:40:38下载pdf

本文介绍如何基于涂鸦云开发平台开放的能力和 SDK,开发一个控制 Powered By Tuya 的智能设备的程序。

前提条件

操作步骤

第一步:克隆 Tuya-iot-python-sdk

本步骤基于 Tuya-iot-python-sdk。Tuya-iot-python-sdk 集成了开发者在涂鸦云云对接(OpenAPI 或者消息订阅)项目过程中的云端连接和处理过程,可以让开发者如同本地开发一样,聚焦于自身的业务逻辑。克隆步骤如下:

  1. Tuya-iot-python-sdk 获取 SDK 地址。

    开发设备控制和消息订阅服务( Python SDK - To C)

  2. Projects > Get from VCS > URL,输入 SDK 地址,单击 Clone
    开发设备控制和消息订阅服务( Python SDK - To C)

第二步:编辑配置文件

开发前您需要在 env.py 文件配置环境变量,各参数说明如下:

开发设备控制和消息订阅服务( Python SDK - To C)

  • ACCESS_ID 和 ACCESS_KEY:云应用密钥 Access ID 和 Access Key,获取方法参见 查询项目信息
  • USERNAME 和 PASSWORD:创建云项目时候配置的初始账号和密码。
  • ENDPOINT:云开发项目的接入地址,填写方法参见 接入地址
  • ASSET_ID:资产 ID,资产 界面查看。详情参见 管理资产
  • DEVICE_ID:关联设备的 ID,查看方法参见 查看设备
ACCESS_ID = "fsxg5c9jasdrolc****"
ACCESS_KEY = "d064654cd2714286a3823f16a223****"
USERNAME = "*********"
PASSWORD = "*********"
ASSET_ID = "141998818184296****"
DEVICE_ID = "vdevo16274430851****"
ENDPOINT = "https://openapi.tuyacn.com"

第三步:控制设备

完成环境编辑配置后,您可以开始代码开发。最常见的功能类型为设备控制。以下为在键盘上输入任意 Enter 后切换灯带开关功能的代码示例,供您参考。

本程序控制的设备为一个灯带,控制其开关的标准指令集为 switch_led。如果您是其它设备,需要查询标准指令集后修改代码。

开发设备控制和消息订阅服务( Python SDK - To C)

from env import ENDPOINT, ACCESS_ID, ACCESS_KEY, USERNAME, PASSWORD, DEVICE_ID

from tuya_iot import TuyaOpenAPI, tuya_logger

# Initialization of tuya openapi
openapi = TuyaOpenAPI(ENDPOINT, ACCESS_ID, ACCESS_KEY)
openapi.login(USERNAME, PASSWORD)

# # Uncomment the following lines to see logs.
import logging

tuya_logger.setLevel(logging.DEBUG)

flag = True
while True:
    input('Hit Enter to toggle light switch.')
    flag = not flag
    commands = {'commands': [{'code': 'switch_led', 'value': flag}]}
    openapi.post('/v1.0/iot-03/devices/{}/commands'.format(DEVICE_ID), commands)
	

返回结果示例:

[2021-07-28 16:52:51,784] [tuya-openapi] Request: method = POST, url = https://openapi.tuyacn.com/v1.0/iot-03/devices/vdevo16274430851****/commands, params = None, body = {'commands': [{'code': 'switch_led', 'value': True}]}, headers = {'client_id': 'fsxg5c9jasdrolcz****', 'sign': '95ECEB80EC21C990A7D84935722C99CBDD80EECBE07418A3E72D9E01F2C7****', 'sign_method': 'HMAC-SHA256', 'access_token': '1bd0e0bbf6a73a09c4094ece5b9****', 't': '1627462371784', 'lang': 'en'}
[2021-07-28 16:52:51,900] [tuya-openapi] Response: {
  "result": true,
  "success": true,
  "t": 1627462372040
}
Hit Enter to toggle light switch.

第四步:监听设备状态

本代码实现了监听一个用户下设备事件的信息,包含了设备在线、离线、状态上报等。设备状态通知服务以 MQTT 消息形式,将设备状态的变更、设备告警消息等内容实时主动通知到终端应用程序,无需终端应用频繁查询设备状态。

该功能需要开通 设备状态通知 云服务,开通方式参见 开通云服务

开发设备控制和消息订阅服务( Python SDK - To C)

from env import ENDPOINT, ACCESS_ID, ACCESS_KEY, USERNAME, PASSWORD
from tuya_iot import TuyaOpenAPI, TuyaOpenMQ, tuya_logger
	
# Uncomment the following lines to see logs.
import logging
tuya_logger.setLevel(logging.DEBUG)
	
# Initialization of tuya openapi
openapi = TuyaOpenAPI(ENDPOINT, ACCESS_ID, ACCESS_KEY)
openapi.login(USERNAME, PASSWORD)
	
# Receive device message
def on_message(msg):
    print("on_message: %s" % msg)
	
openmq = TuyaOpenMQ(openapi)
openmq.start()
openmq.add_message_listener(on_message)

返回结果示例:

[2021-07-27 10:37:28,087] [tuya-openmq] payload-> b'{"data":"AAAADN2q/ueLzZE78ubHsQ9Nk+iUBd7QOfPyB78P2Fspm2rMMHYymWYVnZL1m*****/kpPaGVDXsAIlrIIaM6k6wWWAezW7SJLF6gER*****/GQ24QYahT3UvadDx4v45sWuyssg33sX1uC0PFP9kvghc8o9Q1QELGFgmc7JPb0FQ4HDxW98DJPCeIgYTWmmz+BHoaDbH6iOV0SEcsi6vlFGtYQ*****/t/O/g0bTT9RdnmLbGxllJjedwBA2c6XPKNv7HHrouF7LfTDmXwFHml5q6*****","protocol":4,"pv":"2.0","sign":"65f7dcb596587db3f7d9374e93484e7eb44d938f287fae4dcb3eaf721*****","t":1627353446615}'
[2021-07-27 10:37:28,091] [tuya-openmq] on_message: {'data': {'dataId': '356c93f2-3929-4a8f-ae28-ae5607efc7ad', 'devId': '***1626937310799', 'productKey': 'yju2******ujr5zx', 'status': [{'code': 'switch_led', 't': '1627353446615', 'value': False, '20': False}]}, 'protocol': 4, 'pv': '2.0', 'sign': '65f7dcb59************74e93484e7************fae4dcb3e******fbee66', 't': 1627353446615}

小结

本文介绍了如何使用 Python SDK 基于涂鸦云开发平台,调用设备相关 API 控制一个智能设备和监听设备信息。基于 Powered By Tuya 设备体系严格的统一性,您可以将这个控制方式拓展到所有 Powered By Tuya 设备中。让您无需担心设备差异性,快速基于智能设备开发 SaaS 应用。