diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xFA.py b/custom_components/midea_auto_cloud/device_mapping/T0xFA.py new file mode 100644 index 0000000..acc0b09 --- /dev/null +++ b/custom_components/midea_auto_cloud/device_mapping/T0xFA.py @@ -0,0 +1,201 @@ +from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime, PERCENTAGE +from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass +from homeassistant.components.binary_sensor import BinarySensorDeviceClass +from homeassistant.components.switch import SwitchDeviceClass + +DEVICE_MAPPING = { + "default": { + "rationale": ["off", "on"], + "queries": [{}], + "centralized": [ + "power", "humidify", "swing", "anion", "display_on_off", + "dust_reset", "temp_wind_switch", "filter_reset" + ], + "entities": { + Platform.BINARY_SENSOR: { + "power": { + "device_class": BinarySensorDeviceClass.POWER, + }, + "humidify": { + "device_class": BinarySensorDeviceClass.RUNNING, + }, + "swing": { + "device_class": BinarySensorDeviceClass.RUNNING, + }, + "anion": { + "device_class": BinarySensorDeviceClass.RUNNING, + }, + "display_on_off": { + "device_class": BinarySensorDeviceClass.RUNNING, + }, + "dust_reset": { + "device_class": BinarySensorDeviceClass.RUNNING, + }, + "temp_wind_switch": { + "device_class": BinarySensorDeviceClass.RUNNING, + }, + "filter_reset": { + "device_class": BinarySensorDeviceClass.RUNNING, + } + }, + Platform.SELECT: { + "voice": { + "options": { + "open_buzzer": {"voice": "open_buzzer"}, + "close_buzzer": {"voice": "close_buzzer"}, + "mute": {"voice": "mute"} + } + }, + "swing_angle": { + "options": { + "unknown": {"swing_angle": "unknown"}, + "30": {"swing_angle": "30"}, + "60": {"swing_angle": "60"}, + "90": {"swing_angle": "90"}, + "120": {"swing_angle": "120"}, + "150": {"swing_angle": "150"}, + "180": {"swing_angle": "180"} + } + }, + "swing_direction": { + "options": { + "unknown": {"swing_direction": "unknown"}, + "horizontal": {"swing_direction": "horizontal"}, + "vertical": {"swing_direction": "vertical"}, + "both": {"swing_direction": "both"} + } + }, + "scene": { + "options": { + "none": {"scene": "none"}, + "auto": {"scene": "auto"}, + "sleep": {"scene": "sleep"}, + "work": {"scene": "work"}, + "study": {"scene": "study"}, + "party": {"scene": "party"} + } + }, + "sleep_sensor": { + "options": { + "none": {"sleep_sensor": "none"}, + "light": {"sleep_sensor": "light"}, + "sound": {"sleep_sensor": "sound"}, + "both": {"sleep_sensor": "both"} + } + }, + "mode": { + "options": { + "normal": {"mode": "normal"}, + "auto": {"mode": "auto"}, + "manual": {"mode": "manual"}, + "sleep": {"mode": "sleep"}, + "turbo": {"mode": "turbo"}, + "quiet": {"mode": "quiet"} + } + }, + "gear": { + "options": { + "1": {"gear": "1"}, + "2": {"gear": "2"}, + "3": {"gear": "3"}, + "4": {"gear": "4"}, + "5": {"gear": "5"}, + "6": {"gear": "6"}, + "auto": {"gear": "auto"} + } + } + }, + Platform.SENSOR: { + "real_gear": { + "device_class": SensorDeviceClass.NONE, + "state_class": SensorStateClass.MEASUREMENT + }, + "dust_life_time": { + "device_class": SensorDeviceClass.DURATION, + "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT + }, + "filter_life_time": { + "device_class": SensorDeviceClass.DURATION, + "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT + }, + "battery_status": { + "device_class": SensorDeviceClass.BATTERY, + "state_class": SensorStateClass.MEASUREMENT + }, + "battery_level": { + "device_class": SensorDeviceClass.BATTERY, + "unit_of_measurement": PERCENTAGE, + "state_class": SensorStateClass.MEASUREMENT + }, + "error_code": { + "device_class": SensorDeviceClass.NONE, + "state_class": SensorStateClass.MEASUREMENT + }, + "temperature_feedback": { + "device_class": SensorDeviceClass.TEMPERATURE, + "unit_of_measurement": UnitOfTemperature.CELSIUS, + "state_class": SensorStateClass.MEASUREMENT + }, + "water_feedback": { + "device_class": SensorDeviceClass.NONE, + "state_class": SensorStateClass.MEASUREMENT + }, + "timer_off_hour": { + "device_class": SensorDeviceClass.DURATION, + "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT + }, + "timer_off_minute": { + "device_class": SensorDeviceClass.DURATION, + "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT + }, + "timer_on_hour": { + "device_class": SensorDeviceClass.DURATION, + "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT + }, + "timer_on_minute": { + "device_class": SensorDeviceClass.DURATION, + "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT + }, + "version": { + "device_class": SensorDeviceClass.NONE, + "state_class": SensorStateClass.MEASUREMENT + }, + "pm25": { + "device_class": SensorDeviceClass.PM25, + "unit_of_measurement": "µg/m³", + "state_class": SensorStateClass.MEASUREMENT + }, + "ud_swing_angle": { + "device_class": SensorDeviceClass.NONE, + "state_class": SensorStateClass.MEASUREMENT + }, + "lr_diy_down_percent": { + "device_class": SensorDeviceClass.NONE, + "unit_of_measurement": PERCENTAGE, + "state_class": SensorStateClass.MEASUREMENT + }, + "lr_diy_up_percent": { + "device_class": SensorDeviceClass.NONE, + "unit_of_measurement": PERCENTAGE, + "state_class": SensorStateClass.MEASUREMENT + }, + "ud_diy_down_percent": { + "device_class": SensorDeviceClass.NONE, + "unit_of_measurement": PERCENTAGE, + "state_class": SensorStateClass.MEASUREMENT + }, + "ud_diy_up_percent": { + "device_class": SensorDeviceClass.NONE, + "unit_of_measurement": PERCENTAGE, + "state_class": SensorStateClass.MEASUREMENT + } + } + } + } +} diff --git a/custom_components/midea_auto_cloud/translations/en.json b/custom_components/midea_auto_cloud/translations/en.json index a81156c..a1c2c10 100644 --- a/custom_components/midea_auto_cloud/translations/en.json +++ b/custom_components/midea_auto_cloud/translations/en.json @@ -308,6 +308,24 @@ }, "work_status": { "name": "Work Status" + }, + "voice": { + "name": "Voice" + }, + "swing_angle": { + "name": "Swing Angle" + }, + "swing_direction": { + "name": "Swing Direction" + }, + "scene": { + "name": "Scene" + }, + "sleep_sensor": { + "name": "Sleep Sensor" + }, + "gear": { + "name": "Gear" } }, "sensor": { @@ -1006,6 +1024,57 @@ }, "cloudmenuid": { "name": "Cloud Menu ID" + }, + "real_gear": { + "name": "Real Gear" + }, + "dust_life_time": { + "name": "Dust Life Time" + }, + "filter_life_time": { + "name": "Filter Life Time" + }, + "battery_status": { + "name": "Battery Status" + }, + "battery_level": { + "name": "Battery Level" + }, + "temperature_feedback": { + "name": "Temperature Feedback" + }, + "water_feedback": { + "name": "Water Feedback" + }, + "timer_off_hour": { + "name": "Timer Off Hour" + }, + "timer_off_minute": { + "name": "Timer Off Minute" + }, + "timer_on_hour": { + "name": "Timer On Hour" + }, + "timer_on_minute": { + "name": "Timer On Minute" + }, + "pm25": { + "name": "PM2.5" + }, + "ud_swing_angle": { + "name": "UD Swing Angle" + }, + "lr_diy_down_percent": { + "name": "LR DIY Down Percent" + }, + "lr_diy_up_percent": { + "name": "LR DIY Up Percent" + }, + "ud_diy_down_percent": { + "name": "UD DIY Down Percent" + }, + "ud_diy_up_percent": { + "name": "UD DIY Up Percent" } }, "binary_sensor": { @@ -1140,6 +1209,30 @@ }, "execute": { "name": "Execute" + }, + "power": { + "name": "Power" + }, + "humidify": { + "name": "Humidify" + }, + "swing": { + "name": "Swing" + }, + "anion": { + "name": "Anion" + }, + "display_on_off": { + "name": "Display On/Off" + }, + "dust_reset": { + "name": "Dust Reset" + }, + "temp_wind_switch": { + "name": "Temp Wind Switch" + }, + "filter_reset": { + "name": "Filter Reset" } }, "climate": { diff --git a/custom_components/midea_auto_cloud/translations/zh-Hans.json b/custom_components/midea_auto_cloud/translations/zh-Hans.json index 15ac285..deff5f2 100644 --- a/custom_components/midea_auto_cloud/translations/zh-Hans.json +++ b/custom_components/midea_auto_cloud/translations/zh-Hans.json @@ -245,6 +245,30 @@ }, "execute": { "name": "执行" + }, + "power": { + "name": "电源" + }, + "humidify": { + "name": "加湿" + }, + "swing": { + "name": "摆风" + }, + "anion": { + "name": "负离子" + }, + "display_on_off": { + "name": "显示开关" + }, + "dust_reset": { + "name": "灰尘重置" + }, + "temp_wind_switch": { + "name": "温风开关" + }, + "filter_reset": { + "name": "滤网重置" } }, "climate": { @@ -467,6 +491,24 @@ }, "work_status": { "name": "工作状态" + }, + "voice": { + "name": "语音" + }, + "swing_angle": { + "name": "摆风角度" + }, + "swing_direction": { + "name": "摆风方向" + }, + "scene": { + "name": "场景" + }, + "sleep_sensor": { + "name": "睡眠传感器" + }, + "gear": { + "name": "档位" } }, "sensor": { @@ -1168,6 +1210,57 @@ }, "cloudmenuid": { "name": "云菜单ID" + }, + "real_gear": { + "name": "实际档位" + }, + "dust_life_time": { + "name": "灰尘寿命" + }, + "filter_life_time": { + "name": "滤网寿命" + }, + "battery_status": { + "name": "电池状态" + }, + "battery_level": { + "name": "电池电量" + }, + "temperature_feedback": { + "name": "温度反馈" + }, + "water_feedback": { + "name": "水位反馈" + }, + "timer_off_hour": { + "name": "定时关机小时" + }, + "timer_off_minute": { + "name": "定时关机分钟" + }, + "timer_on_hour": { + "name": "定时开机小时" + }, + "timer_on_minute": { + "name": "定时开机分钟" + }, + "pm25": { + "name": "PM2.5" + }, + "ud_swing_angle": { + "name": "上下摆风角度" + }, + "lr_diy_down_percent": { + "name": "左右自定义下百分比" + }, + "lr_diy_up_percent": { + "name": "左右自定义上百分比" + }, + "ud_diy_down_percent": { + "name": "上下自定义下百分比" + }, + "ud_diy_up_percent": { + "name": "上下自定义上百分比" } }, "switch": {