Merge branch 'master' of github.com:sususweet/midea-meiju-codec

This commit is contained in:
sususweet
2026-02-07 14:49:03 +08:00
5 changed files with 94 additions and 8 deletions

View File

@@ -172,7 +172,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType):
from .const import BIT_LUA
bit_lua = base64.b64decode(BIT_LUA.encode("utf-8")).decode("utf-8")
try:
with open(bit, "wt") as fp:
with open(bit, "wt", encoding="utf-8") as fp:
fp.write(bit_lua)
except PermissionError as e:
MideaLogger.error(f"Failed to create bit.lua at {bit}: {e}")
@@ -180,7 +180,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType):
import tempfile
temp_dir = tempfile.gettempdir()
bit = os.path.join(temp_dir, "bit.lua")
with open(bit, "wt") as fp:
with open(bit, "wt", encoding="utf-8") as fp:
fp.write(bit_lua)
MideaLogger.warning(f"Using temporary file for bit.lua: {bit}")

View File

@@ -492,7 +492,7 @@ class MeijuCloud(MideaCloud):
self._security.aes_decrypt_with_fixed_key(lua))
stream = stream.replace("\r\n", "\n")
fnm = f"{path}/{response['fileName']}"
async with aiofiles.open(fnm, "w") as fp:
async with aiofiles.open(fnm, "w", encoding="utf-8") as fp:
await fp.write(stream)
return fnm
@@ -744,7 +744,7 @@ class MSmartHomeCloud(MideaCloud):
self._security.aes_decrypt_with_fixed_key(lua))
stream = stream.replace("\r\n", "\n")
fnm = f"{path}/{response['fileName']}"
async with aiofiles.open(fnm, "w") as fp:
async with aiofiles.open(fnm, "w", encoding="utf-8") as fp:
await fp.write(stream)
return fnm

View File

@@ -1128,7 +1128,8 @@ DEVICE_MAPPING = {
},
("22012369", "22040023", "22270043"): {
"rationale": ["off", "on"],
"queries": [{}, {"query_type": "prevent_straight_wind"}],
"queries": [{}, {"query_type": "prevent_straight_wind"}, {"query_type": "prevent_super_cool"},
{"query_type": "wind_swing_ud_angle"}, {"query_type": "wind_swing_lr_angle"}],
"centralized": ["buzzer"],
"calculate":{
"get": [
@@ -1183,10 +1184,33 @@ DEVICE_MAPPING = {
"precision": PRECISION_HALVES,
}
},
Platform.SELECT: {
"wind_swing_ud_angle": {
"options": {
"关闭": {"wind_swing_ud_angle": 0},
"最上": {"wind_swing_ud_angle": 1},
"偏上": {"wind_swing_ud_angle": 25},
"中间": {"wind_swing_ud_angle": 50},
"偏下": {"wind_swing_ud_angle": 75},
"最下": {"wind_swing_ud_angle": 100}
}
},
"wind_swing_lr_angle": {
"options": {
"关闭": {"wind_swing_lr_angle": 0},
"最左": {"wind_swing_lr_angle": 1},
"偏左": {"wind_swing_lr_angle": 25},
"中间": {"wind_swing_lr_angle": 50},
"偏右": {"wind_swing_lr_angle": 75},
"最右": {"wind_swing_lr_angle": 100}
}
}
},
Platform.SWITCH: {
"buzzer": {
"device_class": SwitchDeviceClass.SWITCH,
"default_value": "on",
"translation_key": "voice"
},
"screen_display": {
"device_class": SwitchDeviceClass.SWITCH,
@@ -1196,6 +1220,9 @@ DEVICE_MAPPING = {
"device_class": SwitchDeviceClass.SWITCH,
"rationale": [1, 2]
},
"prevent_super_cool": {
"device_class": SwitchDeviceClass.SWITCH,
},
"dry": {
"device_class": SwitchDeviceClass.SWITCH,
},
@@ -1223,7 +1250,8 @@ DEVICE_MAPPING = {
},
"22251077": {
"rationale": ["off", "on"],
"queries": [{}, {"query_type": "prevent_straight_wind"}],
"queries": [{}, {"query_type": "no_wind_sense"}, {"query_type": "prevent_super_cool"},
{"query_type": "wind_swing_ud_angle"}, {"query_type": "wind_swing_lr_angle"}],
"centralized": ["buzzer"],
"calculate":{
"get": [
@@ -1278,15 +1306,49 @@ DEVICE_MAPPING = {
"precision": PRECISION_HALVES,
}
},
Platform.SELECT: {
"wind_swing_ud_angle": {
"options": {
"关闭": {"wind_swing_ud_angle": 0},
"最上": {"wind_swing_ud_angle": 1},
"偏上": {"wind_swing_ud_angle": 25},
"中间": {"wind_swing_ud_angle": 50},
"偏下": {"wind_swing_ud_angle": 75},
"最下": {"wind_swing_ud_angle": 100}
}
},
"wind_swing_lr_angle": {
"options": {
"关闭": {"wind_swing_lr_angle": 0},
"最左": {"wind_swing_lr_angle": 1},
"偏左": {"wind_swing_lr_angle": 25},
"中间": {"wind_swing_lr_angle": 50},
"偏右": {"wind_swing_lr_angle": 75},
"最右": {"wind_swing_lr_angle": 100}
}
},
"no_wind_sense": {
"options": {
"关闭": {"no_wind_sense": 0},
"上+下无风感": {"no_wind_sense": 1},
"上无风感": {"no_wind_sense": 2},
"下无风感": {"no_wind_sense": 3},
}
}
},
Platform.SWITCH: {
"buzzer": {
"device_class": SwitchDeviceClass.SWITCH,
"default_value": "on",
"translation_key": "voice"
},
"screen_display": {
"device_class": SwitchDeviceClass.SWITCH,
"translation_key": "screen_close",
},
"prevent_super_cool": {
"device_class": SwitchDeviceClass.SWITCH,
},
"dry": {
"device_class": SwitchDeviceClass.SWITCH,
},

View File

@@ -442,6 +442,15 @@
}
},
"select": {
"no_wind_sense": {
"name": "No Wind Sense"
},
"wind_swing_ud_angle": {
"name": "Vertical Wind Direction"
},
"wind_swing_lr_angle": {
"name": "Horizontal Wind Direction"
},
"custom_temperature": {
"name": "Custom Temperature"
},
@@ -2358,7 +2367,10 @@
"name": "Fan"
}
},
"switch": {
"switch": {
"prevent_super_cool": {
"name": "Prevent Super Cool"
},
"new_wind_machine": {
"name": "Fresh air switch"
},

View File

@@ -462,6 +462,15 @@
}
},
"select": {
"no_wind_sense": {
"name": "无风感"
},
"wind_swing_ud_angle": {
"name": "上下摆动风向"
},
"wind_swing_lr_angle": {
"name": "左右摆动风向"
},
"custom_temperature": {
"name": "自定义烧水温度"
},
@@ -2689,7 +2698,10 @@
}
}
},
"switch": {
"switch": {
"prevent_super_cool": {
"name": "智控温"
},
"new_wind_machine": {
"name": "新风开关"
},