正在0.111.4版本上修改mypal大神的大金空调金制空气版本的...
本帖最后由 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)
不明觉厉 看看 我准备照葫芦画瓢搞个日立的,精力和水平都有限,老了,唉 期待有进展,这个版本的ds-air闲鱼只要300元,能成功接入就太棒了! hlwqcc 发表于 2020-8-2 19:40
期待有进展,这个版本的ds-air闲鱼只要300元,能成功接入就太棒了!
已经可以接入了,还有些小毛病,最佳忙,没时间完善。 caocheng 发表于 2020-8-3 15:31
已经可以接入了,还有些小毛病,最佳忙,没时间完善。
厉害,期待完善 楼主,加油,我已经用上了,但是家里一共有5台机器,只显示出了两台 大佬帮忙看看啥情况。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. 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 = importlib.import_module(
File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name, 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
hlwqcc 发表于 2020-8-6 01:15
厉害,期待完善
300块哪里买