『瀚思彼岸』» 智能家居技术论坛

标题: 涂鸦wifi红外遥控器不刷固件不学习红外编码老空调接入HA [打印本页]

作者: jesusya    时间: 2024-6-28 22:45
标题: 涂鸦wifi红外遥控器不刷固件不学习红外编码老空调接入HA
本帖最后由 jesusya 于 2024-7-12 00:55 编辑

[attach]61063[/attach]
使用场景:

家中老的Haier中央空调,温控红外面板在墙上,开启空调制冷,空调面板在门口和人体所处位置还是有差距,温控总滞后,冷风不停吹,睡觉就更怕冷风吹过了头

[attach]60965[/attach]
找了歪果仁的一个项目:https://github.com/DavidIlie/tuya-smart-ir-ac, 插件依赖的 tuya api 接口:tuya-connector-python :https://github.com/tuya/tuya-connector-python

基本上搭建好了一个框架,调用tuya API 模式控制空调,他代码中只有单个命令,比如 模式 、温度、风速转换,我空调在制冷、制热才可以单命令发送,在自动、送风、抽湿都是组合命令发送。所以改了他的写bug,重点把空调按下Auto模式劫持了,用制冷和送风2个模式实现自动模式。我不会python,我描述控制逻辑,查特GPT帮助下一起完成了自己的控制逻辑和设备支持。

[attach]61062[/attach]
HA和Homekit的效果如下:附上我对作者几处bug修改的地方,我自行改的“自动化”模式的代码,太复制了,就不上传献丑了。我的插件放在:/homeassistant/custom_components/class_tuya_ir_ac 包含作者代码后,替换我的代码。configuration.yaml  加入:
climate:
  - platform: class_tuya_ir_ac
    name: "主卧Haier空调"
    sensor: sensor.temperature_humidity_sensor_主卧_temperature #主卧传感器
    access_id: "xxx"
    access_secret: "xxx"
    remote_id: "设备红外设备"
    ac_id: "设备下定义的空调遥控器,一个设备可以定义多少家电的遥控"

http://iot.tuya.com 可以云开发里可以找到这4个代码

附件了,PC 测试空调和API接口的代码:python3 test-tuya.py 在pc 上先测试API指令和你空调的控制,pc or mac 先安装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 进行配置验证,确保用户提供的配置信息符合预期格式。配置模式包括:
2. 平台设置函数setup_platform 函数是插件的入口点,负责从配置中读取必要信息,并使用这些信息初始化 TuyaClassThermostat 实体。这个函数在 Home Assistant 启动时调用,将配置传递给实体并将其添加到 Home Assistant 的实体列表中。

TuyaClassThermostat 类TuyaClassThermostat 类继承自 ClimateEntity,是插件的核心组件。它负责与 Tuya API 进行交互,并提供各种属性和方法来管理空调设备的状态和行为。
主要属性和方法初始化方法在初始化时,使用配置中的信息来设置 Tuya API、传感器名称、设备名称等属性。初始化后,通过 _api 对象与 Tuya API 进行交互。

属性方法这些方法用于获取和设置空调的各种属性,如名称、唯一 ID、温度单位、支持的功能、当前温度、目标温度、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 关闭空调。
变量使用说明总结这个插件通过定义 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 方法。这通常在界面刷新或定期状态更新时触发。


交互总结这些方法负责处理用户通过 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
mitch 发表于 2024-6-29 14:51
执行测试失败,出现以下错误,请问怎么解决。
# python3 test_tuya-py.py
Traceback (most recent call las ...

pip3 install tuya-connector-python 安装了吗
作者: jesusya    时间: 2024-6-29 15:29
mitch 发表于 2024-6-29 14:51
执行测试失败,出现以下错误,请问怎么解决。
# python3 test_tuya-py.py
Traceback (most recent call las ...

test_tuya-py.py 是给你在PC 测你空调控制代码的,另外2个zip 才是HA里插件,建议在PC or Mac 测试知道自己的空调控制吗,在去HA 插件里改,开关机,温度风扇,模式改变等调用编码
作者: mitch    时间: 2024-6-29 15:37
jesusya 发表于 2024-6-29 15:24
PC里要安装 pip3 install tuya-connector-python,确保4个代码对的

请问在云开发哪里可以找到这四个代码,我只找到前面两个,后面的remote_id和ac_id没找到
作者: jesusya    时间: 2024-6-29 18:24
mitch 发表于 2024-6-29 15:37
请问在云开发哪里可以找到这四个代码,我只找到前面两个,后面的remote_id和ac_id没找到 ...

进入项目呀,你要建立一个项目,网上有教程
作者: mitch    时间: 2024-6-29 19:17
jesusya 发表于 2024-6-29 18:24
进入项目呀,你要建立一个项目,网上有教程

明白,谢谢
作者: jesusya    时间: 2024-6-30 14:03
mitch 发表于 2024-6-29 19:17
明白,谢谢

记得申请半年免费开发者套餐
作者: mitch    时间: 2024-6-30 14:36
jesusya 发表于 2024-6-30 14:03
记得申请半年免费开发者套餐

收费的就没有动力了,谢谢
作者: jesusya    时间: 2024-6-30 14:42
mitch 发表于 2024-6-30 14:36
收费的就没有动力了,谢谢

免费,半年后再提交下申请
作者: myaliu006    时间: 2024-7-10 09:40
正找这个,有空试试看能不能成功
作者: myaliu006    时间: 2024-7-10 15:19
都搞明白了吗?小白不会啊,谁写个适合小白的教程
作者: jesusya    时间: 2024-7-12 00:07
myaliu006 发表于 2024-7-10 15:19
都搞明白了吗?小白不会啊,谁写个适合小白的教程

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
sheepdean 发表于 2024-8-17 23:00
本地测试过了,我把mycode.zip替换到tuya-smart-ir-ac-master.zip,放在/homeassistant/custom_components/ ...

用我新的吧:https://bbs.hassbian.com/forum.p ... mp;extra=#pid624270
作者: sheepdean    时间: 2024-12-27 23:20
myaliu006 发表于 2024-7-10 15:19
都搞明白了吗?小白不会啊,谁写个适合小白的教程

这个适合小白,跟着做就可以了https://bbs.hassbian.com/thread-27902-1-1.html




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5