pip3 install tuya-connector-python
我的是:
{
"name": "打开空调-制冷-26度-中速风",
"command": {"power": 1, "mode": 0, "temp": 26, "wind": 2}
},
{
"name": "关闭空调",
"command": {"power": 0}
},
{
"name": "打开空调-制冷-26度-自动风",
"command": {"power": 1, "mode": 0, "temp": 26, "wind": 0}
},
{
"name": "设置仅风模式",
"command": {"power": 1, "mode": 3, "temp": 25, "wind": 0}
}
Power:1 设备开 0 关
Mode:0 - 4
VALID_MODES = {
"0": HVACMode.COOL, #制冷
"1": HVACMode.HEAT, #制热
"2": HVACMode.AUTO, #自动
"3": HVACMode.FAN_ONLY, #仅送风
"4": HVACMode.DRY, #除湿
}
Temp:整数温度
Wind:风速, 0 自动风,1 低速 2中速 3高速
我海尔空调,自动、仅送风 除湿 三个模式,temp 都是25,风 0
大家看懂这个编码格式,用python3 test-tuya.py,在PC 测试好你空调的控制,在HA 改插件代码不难了,我已经做好了一个可以自动模式 围绕目标温度制冷+送风的 版本。稍后发源码出来。
[attach]61061[/attach]
查特。GPT写的介绍
这个 Home Assistant 插件用于通过 Tuya API 控制空调设备。它通过定义和管理 ClimateEntity 实体来实现与 Tuya 平台的交互,支持设置温度、风速和操作模式等功能。
主要功能模块1. 配置模式和平台设置插件使用 voluptuous 进行配置验证,确保用户提供的配置信息符合预期格式。配置模式包括:
- access_id: Tuya API 的访问 ID。
- access_secret: Tuya API 的访问密钥。
- remote_id: 遥控器 ID。
- ac_id: 空调 ID。
- name: 设备名称。
- sensor: 关联的传感器名称。
2. 平台设置函数setup_platform 函数是插件的入口点,负责从配置中读取必要信息,并使用这些信息初始化 TuyaClassThermostat 实体。这个函数在 Home Assistant 启动时调用,将配置传递给实体并将其添加到 Home Assistant 的实体列表中。
TuyaClassThermostat 类TuyaClassThermostat 类继承自 ClimateEntity,是插件的核心组件。它负责与 Tuya API 进行交互,并提供各种属性和方法来管理空调设备的状态和行为。
主要属性和方法初始化方法在初始化时,使用配置中的信息来设置 Tuya API、传感器名称、设备名称等属性。初始化后,通过 _api 对象与 Tuya API 进行交互。
属性方法这些方法用于获取和设置空调的各种属性,如名称、唯一 ID、温度单位、支持的功能、当前温度、目标温度、HVAC 模式和风速模式。
- 名称属性:返回设备的名称,用于在 Home Assistant UI 中显示。
- 唯一 ID 属性:返回设备的唯一标识符,确保每个设备在系统中都是唯一的。
- 温度单位属性:定义设备使用的温度单位(摄氏度)。
- 支持的功能属性:定义设备支持的功能,如目标温度和风速模式。
- 最小和最大温度属性:定义设备支持的温度范围。
- 当前温度属性:通过传感器或 API 获取当前温度。
- 目标温度属性:通过 API 获取或设置目标温度。
- HVAC 模式属性:获取和设置当前的 HVAC 模式,包括制冷、制热、自动、仅风扇和干燥模式。
- 风速模式属性:获取和设置当前的风速模式,包括低速、中速、高速和自动风。
更新方法async_update 方法定期调用 Tuya API 获取设备的最新状态,并更新 Home Assistant 中的实体状态。
python复制代码, 我测试 HA 每一分钟调用一次async_update我把我的自动化空调温控代码放在这里调用,改到了空调本身的自动模式。
async def async_update(self): await self._api.async_update() self.async_write_ha_state()
设置温度方法async_set_temperature 方法通过 API 设置目标温度。如果当前模式是自动、仅风扇或干燥模式,则温度固定为 25℃,否则根据用户输入设置温度。
设置风速模式方法async_set_fan_mode 方法通过 API 设置风速模式。如果当前模式是自动、仅风扇或干燥模式,风速固定为自动风,否则根据用户选择设置风速。
设置 HVAC 模式方法async_set_hvac_mode 方法通过 API 设置 HVAC 模式。如果模式为关闭,则调用 async_turn_off 方法关闭空调。否则,根据选择的模式设置相应的参数。
与 Home Assistant UI 交互插件与 Home Assistant UI 的交互通过实体的属性和方法实现。当用户在 UI 中更改温度、风速或模式时,Home Assistant 会调用相应的实体方法来更新状态。实体通过调用 Tuya API 与实际设备通信,并在状态更新后调用 async_write_ha_state 方法将最新状态写入 Home Assistant。
后台状态更新机制插件使用 async_update 方法定期从 Tuya API 获取设备的最新状态。这个方法通过异步方式调用 API,并将获取到的状态更新到 Home Assistant 中。这样可以确保 Home Assistant 中显示的状态始终与实际设备的状态同步。
Tuya API 调用机制插件通过 TuyaAPI 类与 Tuya 平台进行通信。TuyaAPI 负责发送控制命令和接收设备状态。每次用户在 Home Assistant 中更改空调设置时,插件会调用相应的 Tuya API 来更新设备状态。
关机函数async_set_hvac_mode 方法中的关机部分实现了空调的关机功能。当用户选择关闭 HVAC 模式时,插件会调用 async_turn_off 方法通过 Tuya API 关闭空调。
变量使用说明- self._api: TuyaAPI 实例,用于与 Tuya 平台进行通信。
- self._sensor_name: 传感器名称,用于获取当前温度。
- self._name: 设备名称。
- self._hvac_mode: 当前 HVAC 模式。
- self._fan_mode: 当前风速模式。
- self._target_temperature: 目标温度。
总结这个插件通过定义 TuyaClassThermostat 实体并与 Tuya API 进行交互,实现了 Home Assistant 对空调设备的控制。用户可以通过 Home Assistant UI 设置温度、风速和模式,插件会将这些设置发送给 Tuya 平台并更新设备状态。同时,插件会定期从 Tuya 平台获取最新状态,确保 Home Assistant 中显示的状态与实际设备状态同步。
在 Home Assistant 的 UI 中,用户可以通过界面来控制空调的温度、风速和模式。这些交互会触发插件中的相应函数,具体如下:
1. 调整温度当用户在 UI 中调整温度时,Home Assistant 会调用 async_set_temperature 方法。
2. 调整风速当用户在 UI 中调整风速时,Home Assistant 会调用 async_set_fan_mode 方法。
3. 调整模式当用户在 UI 中调整空调模式时,Home Assistant 会调用 async_set_hvac_mode 方法。
4. 获取状态更新当 Home Assistant 需要更新 UI 中的状态显示时,会调用 async_update 方法。这通常在界面刷新或定期状态更新时触发。
交互总结- 调整温度: 调用 async_set_temperature
- 调整风速: 调用 async_set_fan_mode
- 调整模式: 调用 async_set_hvac_mode
- 状态更新: 调用 async_update
这些方法负责处理用户通过 Home Assistant UI 发起的操作,并通过调用 Tuya API 来实际控制空调设备。通过 async_write_ha_state 方法,插件会确保 Home Assistant 中显示的状态与设备的实际状态保持同步。
作者: xingzhi_sy 时间: 2024-6-28 23:17
感谢分享
作者: mitch 时间: 2024-6-29 07:24
谢谢分享
作者: mitch 时间: 2024-6-29 14:51
执行测试失败,出现以下错误,请问怎么解决。
# python3 test_tuya-py.py
Traceback (most recent call last):
File "/usr/share/hassio/homeassistant/custom_components/tuya_smart_ir_ac/test_tuya-py.py", line 2, in <module>
from tuya_connector import TuyaOpenAPI
ModuleNotFoundError: No module named 'tuya_connector'
作者: jesusya 时间: 2024-6-29 15:24
PC里要安装 pip3 install tuya-connector-python,确保4个代码对的
作者: jesusya 时间: 2024-6-29 15:25
pip3 install tuya-connector-python 安装了吗
作者: jesusya 时间: 2024-6-29 15:29
test_tuya-py.py 是给你在PC 测你空调控制代码的,另外2个zip 才是HA里插件,建议在PC or Mac 测试知道自己的空调控制吗,在去HA 插件里改,开关机,温度风扇,模式改变等调用编码
作者: mitch 时间: 2024-6-29 15:37
请问在云开发哪里可以找到这四个代码,我只找到前面两个,后面的remote_id和ac_id没找到
作者: jesusya 时间: 2024-6-29 18:24
进入项目呀,你要建立一个项目,网上有教程
作者: mitch 时间: 2024-6-29 19:17
明白,谢谢
作者: jesusya 时间: 2024-6-30 14:03
记得申请半年免费开发者套餐
作者: mitch 时间: 2024-6-30 14:36
收费的就没有动力了,谢谢
作者: jesusya 时间: 2024-6-30 14:42
免费,半年后再提交下申请
作者: myaliu006 时间: 2024-7-10 09:40
正找这个,有空试试看能不能成功
作者: myaliu006 时间: 2024-7-10 15:19
都搞明白了吗?小白不会啊,谁写个适合小白的教程
作者: jesusya 时间: 2024-7-12 00:07
python3 test-tuya.py ,的用法更新了,你这个可以搞好,HA 就不难了
作者: sheepdean 时间: 2024-8-17 23:00
本地测试过了,我把mycode.zip替换到tuya-smart-ir-ac-master.zip,放在/homeassistant/custom_components/class_tuya_ir_ac里,在配置集成里没有找到这个插件,大佬,请问怎么调用这个插件
作者: jesusya 时间: 2024-8-19 12:34
列下你class_tuya_ir_ac目录下有啥,文件?
作者: jesusya 时间: 2024-8-19 14:05
用我新的吧:https://bbs.hassbian.com/forum.p ... mp;extra=#pid624270
作者: sheepdean 时间: 2024-12-27 23:20
这个适合小白,跟着做就可以了https://bbs.hassbian.com/thread-27902-1-1.html
欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) |
Powered by Discuz! X3.5 |