Files
midea-meiju-codec/custom_components/midea_auto_cloud/device_mapping/T0xB6.py
Cyborg2017 2ac5880eb6 feat: add command template support for device control
- Add command field support to MideaNumberEntity and MideaSelectEntity
- Command templates allow defining fixed parameters in configuration
- Options/values are merged with command template before sending to device
- Backward compatible - existing configurations continue to work

Examples in device_mapping:

1. For NUMBER platform - brightness control with protocol template:
```yaml
Platform.NUMBER: {
    "lightness": {
        "min": 10,
        "max": 100,
        "step": 5,
        "command": {
            "electronic_control_version": 2,
            "type": "b6",
            "b6_action": "setting",
            "setting": "light",
            "lightness": "{value}"  # {value} placeholder for actual number value
        }
    }
}

2.For SELECT platform - gesture selection with protocol template:
```yaml
Platform.SELECT: {
    "gesture": {
        "options": {
            "off": {"gesture": "off"},
            "on": {"gesture": "on"}
        },
        "command": {  # Protocol template for gesture control
            "electronic_control_version": 2,
            "type": "b6",
            "b6_action": "setting",
            "setting": "gesture"
            # {gesture} value from options will be merged automatically
        }
    }
}
2026-01-07 11:22:04 +08:00

95 lines
3.5 KiB
Python

from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass
from homeassistant.const import Platform, UnitOfElectricPotential
from homeassistant.components.switch import SwitchDeviceClass
DEVICE_MAPPING = {
"default": {
"rationale": ["off", "on"],
"queries": [{}],
"centralized": ["lightness"],
"calculate": {
"get": [
{
"lvalue": "[b7_vbattery]",
"rvalue": "float([b7_vbatt] / 1000.0)"
},
],
},
"entities": {
Platform.SWITCH: {
"power": {
"device_class": SwitchDeviceClass.SWITCH,
},
"light": {
"device_class": SwitchDeviceClass.SWITCH,
},
"wisdom_wind": {
"device_class": SwitchDeviceClass.SWITCH,
}
},
Platform.SENSOR: {
"b7_left_status": {
"device_class": SensorDeviceClass.ENUM,
"translation_key": "left_status",
},
"b7_right_status": {
"device_class": SensorDeviceClass.ENUM,
"translation_key": "right_status",
},
"b7_vbattery":{
"device_class": SensorDeviceClass.VOLTAGE,
"unit_of_measurement": UnitOfElectricPotential.VOLT,
"state_class": SensorStateClass.MEASUREMENT,
"translation_key": "battery_voltage",
}
},
Platform.BUTTON: {
"left_stove_off": {
"command": {"electronic_control_version": 2, "type": "b7", "b7_work_burner_control": 1,
"b7_function_control": 1},
},
"right_stove_off": {
"command": {"electronic_control_version": 2, "type": "b7", "b7_work_burner_control": 2,
"b7_function_control": 1},
},
"middle_stove_off": {
"command": {"electronic_control_version": 2, "type": "b7", "b7_work_burner_control": 3,
"b7_function_control": 1},
}
},
Platform.SELECT: {
"wind_pressure": {
"options": {
"off": {"wind_pressure": "0"},
"low": {"wind_pressure": "1"},
"medium": {"wind_pressure": "2"},
"high": {"wind_pressure": "3"},
"extreme": {"wind_pressure": "4"},
}
},
"gear": {
"options": {
"off": {"gear": 0},
"low": {"gear": 1},
"medium": {"gear": 2},
"high": {"gear": 3},
"extreme": {"gear": 4},
}
},
"light": {
"options": {
"off": {"light": "off"},
"on": {"light": "on"}
},
"command": {
"electronic_control_version": 2,
"type": "b6",
"b6_action": "setting",
"setting": "light"
}
}
},
}
}
}