forked from HomeAssistant/midea-meiju-codec
feat: add device support for T0xFA
This commit is contained in:
201
custom_components/midea_auto_cloud/device_mapping/T0xFA.py
Normal file
201
custom_components/midea_auto_cloud/device_mapping/T0xFA.py
Normal file
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -308,6 +308,24 @@
|
|||||||
},
|
},
|
||||||
"work_status": {
|
"work_status": {
|
||||||
"name": "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": {
|
"sensor": {
|
||||||
@@ -1006,6 +1024,57 @@
|
|||||||
},
|
},
|
||||||
"cloudmenuid": {
|
"cloudmenuid": {
|
||||||
"name": "Cloud Menu ID"
|
"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": {
|
"binary_sensor": {
|
||||||
@@ -1140,6 +1209,30 @@
|
|||||||
},
|
},
|
||||||
"execute": {
|
"execute": {
|
||||||
"name": "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": {
|
"climate": {
|
||||||
|
@@ -245,6 +245,30 @@
|
|||||||
},
|
},
|
||||||
"execute": {
|
"execute": {
|
||||||
"name": "执行"
|
"name": "执行"
|
||||||
|
},
|
||||||
|
"power": {
|
||||||
|
"name": "电源"
|
||||||
|
},
|
||||||
|
"humidify": {
|
||||||
|
"name": "加湿"
|
||||||
|
},
|
||||||
|
"swing": {
|
||||||
|
"name": "摆风"
|
||||||
|
},
|
||||||
|
"anion": {
|
||||||
|
"name": "负离子"
|
||||||
|
},
|
||||||
|
"display_on_off": {
|
||||||
|
"name": "显示开关"
|
||||||
|
},
|
||||||
|
"dust_reset": {
|
||||||
|
"name": "灰尘重置"
|
||||||
|
},
|
||||||
|
"temp_wind_switch": {
|
||||||
|
"name": "温风开关"
|
||||||
|
},
|
||||||
|
"filter_reset": {
|
||||||
|
"name": "滤网重置"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"climate": {
|
"climate": {
|
||||||
@@ -467,6 +491,24 @@
|
|||||||
},
|
},
|
||||||
"work_status": {
|
"work_status": {
|
||||||
"name": "工作状态"
|
"name": "工作状态"
|
||||||
|
},
|
||||||
|
"voice": {
|
||||||
|
"name": "语音"
|
||||||
|
},
|
||||||
|
"swing_angle": {
|
||||||
|
"name": "摆风角度"
|
||||||
|
},
|
||||||
|
"swing_direction": {
|
||||||
|
"name": "摆风方向"
|
||||||
|
},
|
||||||
|
"scene": {
|
||||||
|
"name": "场景"
|
||||||
|
},
|
||||||
|
"sleep_sensor": {
|
||||||
|
"name": "睡眠传感器"
|
||||||
|
},
|
||||||
|
"gear": {
|
||||||
|
"name": "档位"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sensor": {
|
"sensor": {
|
||||||
@@ -1168,6 +1210,57 @@
|
|||||||
},
|
},
|
||||||
"cloudmenuid": {
|
"cloudmenuid": {
|
||||||
"name": "云菜单ID"
|
"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": {
|
"switch": {
|
||||||
|
Reference in New Issue
Block a user