forked from HomeAssistant/midea-meiju-codec
237 lines
9.8 KiB
Python
237 lines
9.8 KiB
Python
from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime, PERCENTAGE, PRECISION_HALVES
|
|
from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass
|
|
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
|
|
from homeassistant.components.switch import SwitchDeviceClass
|
|
|
|
DEVICE_MAPPING = {
|
|
"default": {
|
|
"manufacturer": "美的",
|
|
"rationale": ["off", "on"],
|
|
"queries": [{}],
|
|
"centralized": [],
|
|
"entities": {
|
|
Platform.WATER_HEATER: {
|
|
"water_heater": {
|
|
"power": "power",
|
|
"operation_list": {
|
|
"off": {"power": "off"},
|
|
"on": {"power": "on"},
|
|
},
|
|
"target_temperature": "temperature",
|
|
"current_temperature": "cur_temperature",
|
|
"min_temp": 30,
|
|
"max_temp": 75,
|
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
|
"precision": PRECISION_HALVES,
|
|
}
|
|
},
|
|
Platform.SWITCH: {
|
|
"ti_protect": {
|
|
"device_class": SwitchDeviceClass.SWITCH,
|
|
},
|
|
"auto_off": {
|
|
"device_class": SwitchDeviceClass.SWITCH,
|
|
},
|
|
"protect": {
|
|
"device_class": SwitchDeviceClass.SWITCH,
|
|
},
|
|
"sleep": {
|
|
"device_class": SwitchDeviceClass.SWITCH,
|
|
},
|
|
"memory": {
|
|
"device_class": SwitchDeviceClass.SWITCH,
|
|
},
|
|
"safe": {
|
|
"device_class": SwitchDeviceClass.SWITCH,
|
|
},
|
|
"water_flow": {
|
|
"device_class": SwitchDeviceClass.SWITCH,
|
|
},
|
|
},
|
|
Platform.SELECT: {
|
|
"water_quality": {
|
|
"options": {
|
|
"0": {"water_quality": 0},
|
|
"1": {"water_quality": 1},
|
|
"2": {"water_quality": 2},
|
|
"3": {"water_quality": 3}
|
|
}
|
|
},
|
|
"func_select": {
|
|
"options": {
|
|
"low": {"func_select": "low"},
|
|
"medium": {"func_select": "medium"}
|
|
}
|
|
},
|
|
"type_select": {
|
|
"options": {
|
|
"normal": {"type_select": "normal"},
|
|
"valve": {"type_select": "valve"},
|
|
}
|
|
},
|
|
"machine": {
|
|
"options": {
|
|
"real_machine": {"machine": "real_machine"},
|
|
"virtual_machine": {"machine": "virtual_machine"}
|
|
}
|
|
}
|
|
},
|
|
Platform.SENSOR: {
|
|
"temperature": {
|
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"cur_temperature": {
|
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"top_temp": {
|
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"bottom_temp": {
|
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"in_temperature": {
|
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"passwater_lowbyte": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "L",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"passwater_highbyte": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "L",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"rate": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "L/min",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"cur_rate": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "L/min",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"sterilize_left_days": {
|
|
"device_class": SensorDeviceClass.DURATION,
|
|
"unit_of_measurement": UnitOfTime.DAYS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"uv_sterilize_minute": {
|
|
"device_class": SensorDeviceClass.DURATION,
|
|
"unit_of_measurement": UnitOfTime.MINUTES,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"uv_sterilize_second": {
|
|
"device_class": SensorDeviceClass.DURATION,
|
|
"unit_of_measurement": UnitOfTime.SECONDS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"screen_light": {
|
|
"device_class": SensorDeviceClass.ILLUMINANCE,
|
|
"unit_of_measurement": "lx",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"morning_night_bash": {
|
|
"device_class": SensorDeviceClass.DURATION,
|
|
"unit_of_measurement": UnitOfTime.MINUTES,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"tds_value": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "ppm",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"heat_water_level": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "%",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"flow": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "L/min",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"end_time_hour": {
|
|
"device_class": SensorDeviceClass.DURATION,
|
|
"unit_of_measurement": UnitOfTime.HOURS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"end_time_minute": {
|
|
"device_class": SensorDeviceClass.DURATION,
|
|
"unit_of_measurement": UnitOfTime.MINUTES,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"wash_temperature": {
|
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"sterilize_cycle_index": {
|
|
"device_class": SensorDeviceClass.ENUM
|
|
},
|
|
"discharge_status": {
|
|
"device_class": SensorDeviceClass.ENUM
|
|
},
|
|
"error_code": {
|
|
"device_class": SensorDeviceClass.ENUM
|
|
},
|
|
"water_system": {
|
|
"device_class": SensorDeviceClass.ENUM
|
|
},
|
|
"discharge_left_time": {
|
|
"device_class": SensorDeviceClass.DURATION,
|
|
"unit_of_measurement": UnitOfTime.MINUTES,
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"mg_remain": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "mg",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"waterday_lowbyte": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "L",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
},
|
|
"waterday_highbyte": {
|
|
"device_class": SensorDeviceClass.WATER,
|
|
"unit_of_measurement": "L",
|
|
"state_class": SensorStateClass.MEASUREMENT
|
|
}
|
|
},
|
|
Platform.BINARY_SENSOR: {
|
|
"door_status": {
|
|
"device_class": BinarySensorDeviceClass.DOOR,
|
|
},
|
|
"limit_error": {
|
|
"device_class": BinarySensorDeviceClass.PROBLEM,
|
|
},
|
|
"sensor_error": {
|
|
"device_class": BinarySensorDeviceClass.PROBLEM,
|
|
},
|
|
"communication_error": {
|
|
"device_class": BinarySensorDeviceClass.PROBLEM,
|
|
},
|
|
"ele_exception": {
|
|
"device_class": BinarySensorDeviceClass.PROBLEM,
|
|
},
|
|
"elec_warning": {
|
|
"device_class": BinarySensorDeviceClass.PROBLEM,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|