更新时间:2024-06-21 07:57:24下载pdf
本文介绍如何基于涂鸦云开发开放的能力和 SDK,开发一个控制 Powered By Tuya 的智能设备的程序。
本文档已停止更新,文中内容仅供您参考。如需查看相关内容,请访问 最佳实践。
本步骤基于 Tuya-iot-python-sdk。Tuya-iot-python-sdk
集成了开发者在涂鸦云云对接(OpenAPI 或者消息订阅)项目过程中的云端连接和处理过程,可以让开发者如同本地开发一样,聚焦于自身的业务逻辑。克隆步骤如下:
在 Tuya-iot-python-sdk 获取 SDK 地址。
在 Projects > Get from VCS > URL,输入 SDK 地址,单击 Clone。
开发前您需要在 env.py
文件配置环境变量,各参数说明如下:
ACCESS_ID
和 ACCESS_KEY
:云应用密钥 Access ID 和 Access Key。获取方法参见 查询项目信息。USERNAME
和 PASSWORD
:App 账号和密码。ENDPOINT
:云开发项目的接入地址。填写方法参见 接入地址。DEVICE_ID
:关联设备的 ID。查看方法参见 查看设备。ACCESS_ID = "fsxg5c9jasdrolc****"
ACCESS_KEY = "d064654cd2714286a3823f16a223****"
USERNAME = "*********"
PASSWORD = "*********"
DEVICE_ID = "vdevo16274430851****"
ENDPOINT = "https://openapi.tuyacn.com"
完成环境编辑配置后,您可以开始代码开发。最常见的功能类型为设备控制。以下为在键盘上输入任意 Enter
后切换灯带开关功能的代码示例,供您参考。新建一个 switch.py
代码内容如下。
本程序控制的设备为一个灯带,控制其开关的标准指令集为 switch_led
。如果您使用的是其它设备,需要查询标准指令集后修改代码。
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.connect(USERNAME, PASSWORD, "86", 'smartlife')
# # 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/devices/{}/commands'.format(DEVICE_ID), commands)
返回结果示例:
Hit Enter to toggle light switch.
[2022-10-14 14:30:42,047] [tuya-openapi] Request: method = POST, url = https://openapi.tuyacn.com/v1.0/devices/vdevo16657167*********/commands, params = None, body = {'commands': [{'code': 'switch_led', 'value': False}]}, t = 1665729042047
[2022-10-14 14:30:42,203] [tuya-openapi] Response: {
"result": true,
"success": true,
"t": 1665729042258,
"tid": "b9feb6ce4b8911ed97368aeef190c9e7"
}
Hit Enter to toggle light switch.
本代码实现了监听一个用户下设备事件的信息,包含了设备在线、离线、状态上报等。设备状态通知服务以 MQTT 消息形式,将设备状态的变更、设备告警消息等内容实时主动通知到终端应用程序,无需终端应用频繁查询设备状态,新建一个 monitor.py
代码内容如下。
该功能需要开通 设备状态通知 云服务。开通方式参见 开通云服务。
import logging
from tuya_iot import TuyaOpenAPI, TuyaOpenMQ, TUYA_LOGGER
from env import ENDPOINT, ACCESS_ID, ACCESS_KEY, USERNAME, PASSWORD
TUYA_LOGGER.setLevel(logging.DEBUG)
# Init
openapi = TuyaOpenAPI(ENDPOINT, ACCESS_ID, ACCESS_KEY)
openapi.connect(USERNAME, PASSWORD, "86", 'tuyaSmart')
# Receive device message
def on_message(msg):
print("on_message: %s" % msg)
openapi.token_info.expire_time = 0
openmq = TuyaOpenMQ(openapi)
openmq.start()
openmq.add_message_listener(on_message)
返回结果示例:
[2022-10-14 11:38:41,704] [tuya-openmq] payload-> b'{"data":"gIaHR01z+26gUD10tL33xxRJ/ii/cc3Egz/NXII8riWBKrFfzmMtzqX/1kSamNFkt1DwKiY6a91Ru/ChWEjhOadlz0n7A+5oFZlvV9zcWCayf5WaPGMcwpjiifAM+qDowHyHEwFmXBMFPb5449xCNKDmAraFkhaUMEOGKdAgwaCabpBzu6E/aMNc+hOSnyBrIdzAuS6ZiUEjbtVQgBDDzLcCg4+dCZHznETdWJDA3Gu0VjQhObTu4ZLd80M5x3qE","protocol":4,"pv":"2.0","sign":"fc234c7bbd6e6f11ce433676de6335f1","t":1665718721658}'
[2022-10-14 11:38:41,705] [tuya-openmq] on_message: {'data': {'dataId': 'e0d1ca4f-7fd0-4c83-a64a-c8c7113a7153', 'devId': 'vdevo166571674150717', 'productKey': '0v90y5gxz1ae8pcl', 'status': [{'code': 'switch_led', 't': '1665718721658', 'value': True, '20': True}]}, 'protocol': 4, 'pv': '2.0', 'sign': 'fc234c7bbd6e6f11ce433676de6335f1', 't': 1665718721658}
本文介绍了如何使用 Python SDK 基于涂鸦云开发,调用设备相关 API 控制一个智能设备和监听设备信息。基于 Powered by Tuya 设备体系严格的统一性,您可以将这个控制方式拓展到所有 Powered by Tuya 设备中。让您无需担心设备差异性,快速基于智能设备开发 SaaS 应用。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈