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

 找回密码
 立即注册
查看: 16170|回复: 73

正在0.111.4版本上修改mypal大神的大金空调金制空气版本的...

[复制链接]

2

主题

14

帖子

129

积分

论坛分享达人

积分
129
金钱
115
HASS币
0
发表于 2020-7-8 15:49:54 | 显示全部楼层 |阅读模式
本帖最后由 caocheng 于 2020-7-9 16:03 编辑


2020-07-09
今天完成了实体注册部分的改造, HA里可以看到 大金空调的,新版,老板空调的实体, 也能开关
这个版本控制的网关类型是: DTA117C611 ,程序还在开发完善中
欢迎大金一起测试开发
https://github.com/hicaoc/ha-dsair


---------------------------------------------------------------------------------------
正在0.111.4版本上修改mypal大神的大金空调金制空气版本的的插件
发给贴,记录下过程,希望有兴趣的朋友一起参与

目前进展如下
1. 插件可以和设备通信, 查询房间,查询空调状态,空调状态消息解码基本正常
2. 新设备支持几种新设备, 下面贴出来
2.  金制空气版本的,空调当前温度,已经不在空调状态中,看源代码,应该要通过查询场景才能得到,还在研究代码
3.  目前设备还不能注册到实体中,正在分析mypal的代码

class EnumDevice(Enum):
    SYSTEM = (0, 0)
    AIRCON = (8, 18)
    GEOTHERMIC = (8, 19)
    VENTILATION = (8, 20)
    HD = (8, 22)
    NEWAIRCON = (8, 23)
    BATHROOM = (8, 24)
    SENSOR = (8, 25)
    IP_MESH_COMMON = (10, 47)
    MESHID_MESH_COMMON = (12, 47)
    IP_LSM = (10, 33)
    MESHID_LSM = (12, 33)
    IP_MESH_SENSOR = (10, 25)
    MESHID_MESH_SENSOR = (12, 25)
    SLEEP_SENSOR = (10, 48)
    IP_RA = (10, 34)
    MESHID_RA = (12, 34)
    SECURITY_MONITOR = (8, 49)



class EnumCmdType(IntEnum):
    AIR_CAPABILITY_QUERY = 6
    AIR_CON_CAPABILITY_V2 = 35
    AIR_CON_CLEANING_V = 36
    AIR_RECOMMENDED_INDOOR_TEMP = 4
    AIR_SCENARIO_CONTROL = 32
    CONTROL = 1
    QUERY_SCENARIO_SETTING = 34
    QUERY_STATUS = 3
    SCENARIO_SETTING = 33
    STATUS_CHANGED = 2
    SYS_ACK = 1
    SYS_CHANGE_PW = 17
    SYS_CMD_RSP = 2
    SYS_CMD_TRANSFER = 40961
    SYS_CMD_TRANSFER_TARGET_QUIT = 40962
    SYS_ERR_CODE = 6
    SYS_FILTER_CLEAN_SIGN = 9
    SYS_FILTER_CLEAN_SIGN_RESET = 21
    SYS_GET_ROOM_INFO = 48
    SYS_GET_WEATHER = 7
    SYS_HAND_SHAKE = 40960
    SYS_LOGIN = 16
    SYS_QUERY_SCHEDULE_FINISH = 68
    SYS_QUERY_SCHEDULE = 69
    SYS_QUERY_SCHEDULE_ID = 66
    SYS_QUERY_SCHEDULE_SETTING = 65
    SYS_SCENARIO_CONTROL = 67
    SYS_SCHEDULE_SETTING = 64
    SYS_SET_BASIC_ROOM_INFO = 49
    SYS_TIME_SYNC = 5
    SYS_GET_GW_INFO = 80
    SYS_SET_GW_INFO = 81
    SYS_AUTO_ADDRESS = 82
    SYS_RESTORE_SETTINGS = 83
    SYS_CHECK_NEW_VERSION = 85
    SYS_VERSION_UP_MODE = 86
    SYS_VERSION_UP_STUATUS = 87
    SYS_SET_DISTRIBUTOR_INFO = 88
    SYS_SET_AREA_INFO = 89
    SYS_BIND_OR_UNBIND_SENSOR = 96
    SYS_GET_SENSOR_IN_ROOMS = 98
    SYS_GET_ALL_SENSOR_STATE = 99
    SYS_RESTART = 40963
    SYS_TRANSFER_FAIL = 40964

class FreshAirHumidification(IntEnum):
    OFF = 0
    FRESH_AIR = 5
    HUM_FRESH_AIR = 5

class ThreeDFresh(IntEnum):
    AUTO = 1
    CLOSE = 0
    STRONG = 0
    WEAK = 1

class AirConStatusChangedResult(BaseResult):
    def __init__(self, cmd_id: int, target: EnumDevice):
        BaseResult.__init__(self, cmd_id, target, EnumCmdType.STATUS_CHANGED)
        self._room = 0                 # type: int
        self._unit = 0                 # type: int
        self._status = AirConStatus()  # type: AirConStatus

    def load_bytes(self, b):
        d = Decode(b)
        self.room = d.read1()
        self.unit = d.read1()
        flag = d.read1()

        if flag & 1:
            self.switch = EnumControl.Switch(d.read1())
        if flag >> 1 & 1:
            self.mode = EnumControl.Mode(d.read1())
        if flag >> 2 & 1:
            self.air_flow = EnumControl.AirFlow(d.read1())
        if flag >> 3 & 1:
            b1 = d.read1()
            if b1 & 0x8:
                self.hum_allow = True
            else:
                self.hum_allow = False
            if b1 & 0x4:
                self.hum_allow = True
            self.fresh_air_allow = self.hum_allow
            self.fresh_air_humidification = EnumControl.FreshAirHumidification(b1 & 0x3)

        if flag >> 4 & 1:
            self.setted_temp = d.read1()
        if Config.is_new_version:
            if flag >> 5 & 1:
                b = d.read1()
                self.fan_direction1 = EnumControl.FanDirection(b & 0xf)
                self.fan_direction2 = EnumControl.FanDirection(b >> 4 & 0xf)
            if flag >> 6 & 1:
                    self.humidity = EnumControl.Humidity(d.read1())
            if self.target == EnumDevice.BATHROOM:
                if flag >> 7 & 1:
                    self.breathe = EnumControl.Breathe(d.read1())
                    return
            elif (self.target == EnumDevice.AIRCON) and (flag >> 7 & 1):
                self.three_dfresh = EnumControl.ThreeDFresh(d.read1())


    def do(self):
        from .service import Service
        Service.update_aircon(self.target, self._room, self._unit, status=self._status)

评分

参与人数 4金钱 +32 收起 理由
Wadana + 5 虽然看不懂,但感觉很厉害的样子。.
sadpig + 5
weiyideai520 + 2 虽然看不懂,但感觉很厉害的样子。.
+ 20 虽然看不懂,但感觉很厉害的样子。.

查看全部评分

回复

使用道具 举报

4

主题

162

帖子

765

积分

高级会员

Rank: 4

积分
765
金钱
603
HASS币
10
发表于 2020-7-8 16:25:51 | 显示全部楼层
不明觉厉   看看
回复

使用道具 举报

0

主题

242

帖子

1703

积分

金牌会员

Rank: 6Rank: 6

积分
1703
金钱
1461
HASS币
0
发表于 2020-7-8 17:22:57 | 显示全部楼层
我准备照葫芦画瓢搞个日立的,精力和水平都有限,老了,唉
回复

使用道具 举报

0

主题

29

帖子

170

积分

注册会员

Rank: 2

积分
170
金钱
141
HASS币
0
发表于 2020-8-2 19:40:25 | 显示全部楼层
期待有进展,这个版本的ds-air闲鱼只要300元,能成功接入就太棒了!
回复

使用道具 举报

2

主题

14

帖子

129

积分

论坛分享达人

积分
129
金钱
115
HASS币
0
 楼主| 发表于 2020-8-3 15:31:16 | 显示全部楼层
hlwqcc 发表于 2020-8-2 19:40
期待有进展,这个版本的ds-air闲鱼只要300元,能成功接入就太棒了!

已经可以接入了,还有些小毛病,最佳忙,没时间完善。
回复

使用道具 举报

0

主题

29

帖子

170

积分

注册会员

Rank: 2

积分
170
金钱
141
HASS币
0
发表于 2020-8-6 01:15:26 来自手机 | 显示全部楼层
caocheng 发表于 2020-8-3 15:31
已经可以接入了,还有些小毛病,最佳忙,没时间完善。

厉害,期待完善
回复

使用道具 举报

0

主题

34

帖子

305

积分

论坛积极会员

积分
305
金钱
271
HASS币
0
发表于 2020-8-22 07:26:21 | 显示全部楼层
楼主,加油,我已经用上了,但是家里一共有5台机器,只显示出了两台
回复

使用道具 举报

0

主题

19

帖子

108

积分

注册会员

Rank: 2

积分
108
金钱
89
HASS币
0
发表于 2020-8-25 09:59:45 | 显示全部楼层
大佬帮忙看看啥情况。You are using a custom integration for ds_air which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant.
回复

使用道具 举报

0

主题

19

帖子

108

积分

注册会员

Rank: 2

积分
108
金钱
89
HASS币
0
发表于 2020-8-25 10:01:28 | 显示全部楼层
Error setting up integration climate - received exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 64, in async_setup_component
    return await task  # type: ignore
  File "/usr/src/homeassistant/homeassistant/setup.py", line 150, in _async_setup_component
    processed_config = await conf_util.async_process_component_config(
  File "/usr/src/homeassistant/homeassistant/config.py", line 804, in async_process_component_config
    platform = p_integration.get_platform(domain)
  File "/usr/src/homeassistant/homeassistant/loader.py", line 389, in get_platform
    cache[full_name] = importlib.import_module(
  File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 779, in exec_module
  File "<frozen importlib._bootstrap_external>", line 916, in get_code
  File "<frozen importlib._bootstrap_external>", line 846, in source_to_code
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/config/custom_components/ds_air/climate.py", line 31
    SWING_LIST = ['➡️', '↘️', '⬇️', '↙️', '⬅️', '↔️', 'ߔ䧝
                                                        ^
SyntaxError: EOL while scanning string literal
回复

使用道具 举报

6

主题

388

帖子

2043

积分

金牌会员

Rank: 6Rank: 6

积分
2043
金钱
1655
HASS币
0
发表于 2020-9-15 00:20:13 | 显示全部楼层
hlwqcc 发表于 2020-8-6 01:15
厉害,期待完善

300块哪里买
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 02:41 , Processed in 1.512536 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表