7 Commits

Author SHA1 Message Date
sususweet
890e241922 chore: dump version to v0.2.6 2026-02-07 14:50:21 +08:00
sususweet
2ff714d0d5 Merge branch 'master' of github.com:sususweet/midea-meiju-codec 2026-02-07 14:49:03 +08:00
sususweet
8e160c53f7 chore: download_plugin issue in msmartapp. 2026-02-07 14:46:39 +08:00
Yingqi Tang
c77dd6939e Merge pull request #108 from Cyborg2017/staging
feat: Add wind swing angle controls and prevent super cool switch for…
2026-02-07 12:11:00 +08:00
Yingqi Tang
dd769e039d Merge pull request #109 from rengaryang/rengar_dev
fix: write lua files with utf-8 encoding,the env as below:haos 17.0…
2026-02-07 12:10:38 +08:00
yangsiyuan.rengar
cfabc390f3 fix: write lua files with utf-8 encoding,the env as below:haos 17.0,core 2026.1.3 2026-02-06 14:51:49 +08:00
Cyborg2017
21b29f1a51 feat: Add wind swing angle controls and prevent super cool switch for AC devices 2026-02-05 11:11:19 +08:00
6 changed files with 107 additions and 9 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,10 +744,22 @@ 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
async def download_plugin(
self, path: str,
appliance_code: str,
smart_product_id: str,
device_type: int,
sn: str,
sn8: str,
model_number: str | None,
manufacturer_code: str = "0000",
):
return
async def send_cloud(self, appliance_code: int, data: bytearray):
appliance_code = str(appliance_code)
params = {

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

@@ -7,5 +7,5 @@
"iot_class": "cloud_push",
"issue_tracker": "https://github.com/sususweet/midea-meiju-codec/issues",
"requirements": ["lupa>=2.0"],
"version": "v0.2.5"
"version": "v0.2.6"
}

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": "新风开关"
},