Files
2025-09-25 11:45:46 +08:00

196 lines
8.8 KiB
Python

from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime
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": [
"upstair_work_status", "downstair_work_status", "middlestair_work_status",
"upstair_mode", "downstair_mode", "middlestair_mode",
"upstair_temp", "downstair_temp", "middlestair_temp"
],
"entities": {
Platform.BINARY_SENSOR: {
"door_middlestair": {
"device_class": BinarySensorDeviceClass.DOOR,
},
"door_upstair": {
"device_class": BinarySensorDeviceClass.DOOR,
},
"door_downstair": {
"device_class": BinarySensorDeviceClass.DOOR,
},
"downstair_ispreheat": {
"device_class": BinarySensorDeviceClass.RUNNING,
},
"upstair_ispreheat": {
"device_class": BinarySensorDeviceClass.RUNNING,
},
"downstair_iscooling": {
"device_class": BinarySensorDeviceClass.RUNNING,
},
"upstair_iscooling": {
"device_class": BinarySensorDeviceClass.RUNNING,
},
"middlestair_ispreheat": {
"device_class": BinarySensorDeviceClass.RUNNING,
},
"middlestair_iscooling": {
"device_class": BinarySensorDeviceClass.RUNNING,
},
"lock": {
"device_class": BinarySensorDeviceClass.LOCK,
},
"is_error": {
"device_class": BinarySensorDeviceClass.PROBLEM,
},
"uv_disinfect": {
"device_class": BinarySensorDeviceClass.RUNNING,
}
},
Platform.SELECT: {
"upstair_work_status": {
"options": {
"power_off": {"upstair_work_status": "power_off"},
"power_on": {"upstair_work_status": "power_on"},
"working": {"upstair_work_status": "working"},
"pause": {"upstair_work_status": "pause"},
"finish": {"upstair_work_status": "finish"},
"error": {"upstair_work_status": "error"}
}
},
"downstair_work_status": {
"options": {
"power_off": {"downstair_work_status": "power_off"},
"power_on": {"downstair_work_status": "power_on"},
"working": {"downstair_work_status": "working"},
"pause": {"downstair_work_status": "pause"},
"finish": {"downstair_work_status": "finish"},
"error": {"downstair_work_status": "error"}
}
},
"middlestair_work_status": {
"options": {
"power_off": {"middlestair_work_status": "power_off"},
"power_on": {"middlestair_work_status": "power_on"},
"working": {"middlestair_work_status": "working"},
"pause": {"middlestair_work_status": "pause"},
"finish": {"middlestair_work_status": "finish"},
"error": {"middlestair_work_status": "error"}
}
},
"upstair_mode": {
"options": {
"off": {"upstair_mode": "0"},
"bake": {"upstair_mode": "1"},
"roast": {"upstair_mode": "2"},
"grill": {"upstair_mode": "3"},
"convection": {"upstair_mode": "4"},
"defrost": {"upstair_mode": "5"}
}
},
"downstair_mode": {
"options": {
"off": {"downstair_mode": "0"},
"bake": {"downstair_mode": "1"},
"roast": {"downstair_mode": "2"},
"grill": {"downstair_mode": "3"},
"convection": {"downstair_mode": "4"},
"defrost": {"downstair_mode": "5"}
}
},
"middlestair_mode": {
"options": {
"off": {"middlestair_mode": "0"},
"bake": {"middlestair_mode": "1"},
"roast": {"middlestair_mode": "2"},
"grill": {"middlestair_mode": "3"},
"convection": {"middlestair_mode": "4"},
"defrost": {"middlestair_mode": "5"}
}
}
},
Platform.SENSOR: {
"upstair_temp": {
"device_class": SensorDeviceClass.TEMPERATURE,
"unit_of_measurement": UnitOfTemperature.CELSIUS,
"state_class": SensorStateClass.MEASUREMENT
},
"downstair_temp": {
"device_class": SensorDeviceClass.TEMPERATURE,
"unit_of_measurement": UnitOfTemperature.CELSIUS,
"state_class": SensorStateClass.MEASUREMENT
},
"middlestair_temp": {
"device_class": SensorDeviceClass.TEMPERATURE,
"unit_of_measurement": UnitOfTemperature.CELSIUS,
"state_class": SensorStateClass.MEASUREMENT
},
"upstair_hour": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.HOURS,
"state_class": SensorStateClass.MEASUREMENT
},
"upstair_min": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.MINUTES,
"state_class": SensorStateClass.MEASUREMENT
},
"upstair_sec": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.SECONDS,
"state_class": SensorStateClass.MEASUREMENT
},
"middlestair_hour": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.HOURS,
"state_class": SensorStateClass.MEASUREMENT
},
"middlestair_min": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.MINUTES,
"state_class": SensorStateClass.MEASUREMENT
},
"middlestair_sec": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.SECONDS,
"state_class": SensorStateClass.MEASUREMENT
},
"downstair_hour": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.HOURS,
"state_class": SensorStateClass.MEASUREMENT
},
"downstair_min": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.MINUTES,
"state_class": SensorStateClass.MEASUREMENT
},
"downstair_sec": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.SECONDS,
"state_class": SensorStateClass.MEASUREMENT
},
"order_hour": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.HOURS,
"state_class": SensorStateClass.MEASUREMENT
},
"order_min": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.MINUTES,
"state_class": SensorStateClass.MEASUREMENT
},
"order_sec": {
"device_class": SensorDeviceClass.DURATION,
"unit_of_measurement": UnitOfTime.SECONDS,
"state_class": SensorStateClass.MEASUREMENT
}
}
}
}
}