forked from HomeAssistant/midea-meiju-codec
feat: support more devices.
This commit is contained in:
@@ -19,12 +19,14 @@
|
|||||||
- T0xAC 空调
|
- T0xAC 空调
|
||||||
- T0xB3 消毒碗柜
|
- T0xB3 消毒碗柜
|
||||||
- T0xB8 智能扫地机器人
|
- T0xB8 智能扫地机器人
|
||||||
|
- T0xCA 对开门冰箱
|
||||||
- T0xCE 新风机
|
- T0xCE 新风机
|
||||||
- T0xCF 中央空调暖家
|
- T0xCF 中央空调暖家
|
||||||
- T0xD9 复式洗衣机
|
- T0xD9 复式洗衣机
|
||||||
- T0xDB 滚筒洗衣机
|
- T0xDB 滚筒洗衣机
|
||||||
- T0xDC 干衣机
|
- T0xDC 干衣机
|
||||||
- T0xE1 洗碗机
|
- T0xE1 洗碗机
|
||||||
|
- T0xE3 恒温式燃气热水器
|
||||||
- T0xEA 电饭锅
|
- T0xEA 电饭锅
|
||||||
- T0xED 软水机
|
- T0xED 软水机
|
||||||
- T0xFD 加湿器
|
- T0xFD 加湿器
|
||||||
|
@@ -100,7 +100,13 @@ class MideaClimateEntity(MideaEntity, ClimateEntity):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def current_temperature(self):
|
def current_temperature(self):
|
||||||
return self.device_attributes.get(self._key_current_temperature)
|
temp = self.device_attributes.get(self._key_current_temperature)
|
||||||
|
if temp is not None:
|
||||||
|
try:
|
||||||
|
return float(temp)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
return None
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def target_temperature(self):
|
def target_temperature(self):
|
||||||
@@ -108,10 +114,19 @@ class MideaClimateEntity(MideaEntity, ClimateEntity):
|
|||||||
temp_int = self.device_attributes.get(self._key_target_temperature[0])
|
temp_int = self.device_attributes.get(self._key_target_temperature[0])
|
||||||
tem_dec = self.device_attributes.get(self._key_target_temperature[1])
|
tem_dec = self.device_attributes.get(self._key_target_temperature[1])
|
||||||
if temp_int is not None and tem_dec is not None:
|
if temp_int is not None and tem_dec is not None:
|
||||||
return temp_int + tem_dec
|
try:
|
||||||
|
return float(temp_int) + float(tem_dec)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
return None
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
return self.device_attributes.get(self._key_target_temperature)
|
temp = self.device_attributes.get(self._key_target_temperature)
|
||||||
|
if temp is not None:
|
||||||
|
try:
|
||||||
|
return float(temp)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
return None
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def min_temp(self):
|
def min_temp(self):
|
||||||
|
317
custom_components/midea_auto_cloud/device_mapping/T0xCA.py
Normal file
317
custom_components/midea_auto_cloud/device_mapping/T0xCA.py
Normal file
@@ -0,0 +1,317 @@
|
|||||||
|
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": {
|
||||||
|
"rationale": ["off", "on"],
|
||||||
|
"queries": [{}],
|
||||||
|
"centralized": [
|
||||||
|
"freezing_mode", "intelligent_mode", "energy_saving_mode", "holiday_mode",
|
||||||
|
"moisturize_mode", "preservation_mode", "acme_freezing_mode", "variable_mode",
|
||||||
|
"storage_power", "left_flexzone_power", "right_flexzone_power", "freezing_power",
|
||||||
|
"function_zone_power", "storage_temperature", "freezing_temperature",
|
||||||
|
"left_flexzone_temperature", "right_flexzone_temperature"
|
||||||
|
],
|
||||||
|
"entities": {
|
||||||
|
Platform.SWITCH: {
|
||||||
|
"freezing_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"intelligent_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"energy_saving_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"holiday_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"moisturize_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"preservation_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"acme_freezing_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"storage_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"left_flexzone_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"right_flexzone_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"freezing_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"function_zone_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"cross_peak_electricity": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"all_refrigeration_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"remove_dew_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"humidify_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"unfreeze_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"floodlight_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"radar_mode_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"milk_mode_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"icea_mode_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"plasma_aseptic_mode_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"acquire_icea_mode_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"brash_icea_mode_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"acquire_water_mode_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"freezing_ice_machine_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"microcrystal_fresh": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"dry_zone": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"electronic_smell": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"eradicate_pesticide_residue": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"performance_mode": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"ice_mouth_power": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Platform.BINARY_SENSOR: {
|
||||||
|
"storage_door_state": {
|
||||||
|
"device_class": BinarySensorDeviceClass.DOOR,
|
||||||
|
},
|
||||||
|
"freezer_door_state": {
|
||||||
|
"device_class": BinarySensorDeviceClass.DOOR,
|
||||||
|
},
|
||||||
|
"flexzone_door_state": {
|
||||||
|
"device_class": BinarySensorDeviceClass.DOOR,
|
||||||
|
},
|
||||||
|
"storage_ice_home_door_state": {
|
||||||
|
"device_class": BinarySensorDeviceClass.DOOR,
|
||||||
|
},
|
||||||
|
"bar_door_state": {
|
||||||
|
"device_class": BinarySensorDeviceClass.DOOR,
|
||||||
|
},
|
||||||
|
"is_error": {
|
||||||
|
"device_class": BinarySensorDeviceClass.PROBLEM,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Platform.CLIMATE: {
|
||||||
|
"storage_zone": {
|
||||||
|
"power": "storage_power",
|
||||||
|
"hvac_modes": {
|
||||||
|
"off": {"storage_power": "off"},
|
||||||
|
"heat": {"storage_power": "on"}
|
||||||
|
},
|
||||||
|
"target_temperature": "storage_temperature",
|
||||||
|
"current_temperature": "refrigeration_real_temperature",
|
||||||
|
"min_temp": -10,
|
||||||
|
"max_temp": 10,
|
||||||
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
|
"precision": PRECISION_HALVES,
|
||||||
|
},
|
||||||
|
"freezing_zone": {
|
||||||
|
"power": "freezing_power",
|
||||||
|
"hvac_modes": {
|
||||||
|
"off": {"freezing_power": "off"},
|
||||||
|
"heat": {"freezing_power": "on"}
|
||||||
|
},
|
||||||
|
"target_temperature": "freezing_temperature",
|
||||||
|
"current_temperature": "freezing_real_temperature",
|
||||||
|
"min_temp": -30,
|
||||||
|
"max_temp": -10,
|
||||||
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
|
"precision": PRECISION_HALVES,
|
||||||
|
},
|
||||||
|
"left_flexzone": {
|
||||||
|
"power": "left_flexzone_power",
|
||||||
|
"hvac_modes": {
|
||||||
|
"off": {"left_flexzone_power": "off"},
|
||||||
|
"heat": {"left_flexzone_power": "on"}
|
||||||
|
},
|
||||||
|
"target_temperature": "left_flexzone_temperature",
|
||||||
|
"current_temperature": "left_variable_real_temperature",
|
||||||
|
"min_temp": -30,
|
||||||
|
"max_temp": 10,
|
||||||
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
|
"precision": PRECISION_HALVES,
|
||||||
|
},
|
||||||
|
"right_flexzone": {
|
||||||
|
"power": "right_flexzone_power",
|
||||||
|
"hvac_modes": {
|
||||||
|
"off": {"right_flexzone_power": "off"},
|
||||||
|
"heat": {"right_flexzone_power": "on"}
|
||||||
|
},
|
||||||
|
"target_temperature": "right_flexzone_temperature",
|
||||||
|
"current_temperature": "right_variable_real_temperature",
|
||||||
|
"min_temp": -30,
|
||||||
|
"max_temp": 10,
|
||||||
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
|
"precision": PRECISION_HALVES,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Platform.SELECT: {
|
||||||
|
"variable_mode": {
|
||||||
|
"options": {
|
||||||
|
"none_mode": {"variable_mode": "none_mode"},
|
||||||
|
"freezing": {"variable_mode": "freezing"},
|
||||||
|
"refrigeration": {"variable_mode": "refrigeration"},
|
||||||
|
"wine": {"variable_mode": "wine"},
|
||||||
|
"vegetable": {"variable_mode": "vegetable"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"icea_bar_function_switch": {
|
||||||
|
"options": {
|
||||||
|
"default": {"icea_bar_function_switch": "default"},
|
||||||
|
"ice": {"icea_bar_function_switch": "ice"},
|
||||||
|
"water": {"icea_bar_function_switch": "water"},
|
||||||
|
"off": {"icea_bar_function_switch": "off"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"food_site": {
|
||||||
|
"options": {
|
||||||
|
"left_freezing_room": {"food_site": "left_freezing_room"},
|
||||||
|
"right_freezing_room": {"food_site": "right_freezing_room"},
|
||||||
|
"storage_room": {"food_site": "storage_room"},
|
||||||
|
"function_zone": {"food_site": "function_zone"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"temperature_unit": {
|
||||||
|
"options": {
|
||||||
|
"celsius": {"temperature_unit": "celsius"},
|
||||||
|
"fahrenheit": {"temperature_unit": "fahrenheit"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Platform.SENSOR: {
|
||||||
|
"storage_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"freezing_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"left_flexzone_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"right_flexzone_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"refrigeration_real_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"freezing_real_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"left_variable_real_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"right_variable_real_temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"interval_room_humidity_level": {
|
||||||
|
"device_class": SensorDeviceClass.HUMIDITY,
|
||||||
|
"unit_of_measurement": PERCENTAGE,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"normal_zone_level": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"function_zone_level": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"freeze_fahrenheit_level": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"refrigeration_fahrenheit_level": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"leach_expire_day": {
|
||||||
|
"device_class": SensorDeviceClass.DURATION,
|
||||||
|
"unit_of_measurement": UnitOfTime.DAYS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"power_consumption_low": {
|
||||||
|
"device_class": SensorDeviceClass.POWER,
|
||||||
|
"unit_of_measurement": "W",
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"power_consumption_high": {
|
||||||
|
"device_class": SensorDeviceClass.POWER,
|
||||||
|
"unit_of_measurement": "W",
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"fast_cold_minute": {
|
||||||
|
"device_class": SensorDeviceClass.DURATION,
|
||||||
|
"unit_of_measurement": UnitOfTime.MINUTES,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"fast_freeze_minute": {
|
||||||
|
"device_class": SensorDeviceClass.DURATION,
|
||||||
|
"unit_of_measurement": UnitOfTime.MINUTES,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"version": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
183
custom_components/midea_auto_cloud/device_mapping/T0xE3.py
Normal file
183
custom_components/midea_auto_cloud/device_mapping/T0xE3.py
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
from homeassistant.const import Platform, UnitOfTemperature, UnitOfVolume, 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": {
|
||||||
|
"rationale": ["off", "on"],
|
||||||
|
"queries": [{}],
|
||||||
|
"centralized": [
|
||||||
|
"power", "bubble", "cold_water", "bathtub", "safe", "cold_water_dot",
|
||||||
|
"change_litre_switch", "cold_water_ai", "cold_water_pressure",
|
||||||
|
"person_mode_one", "person_mode_two", "person_mode_three", "gesture_function",
|
||||||
|
"mode", "power_level", "type_machine", "capacity", "temperature"
|
||||||
|
],
|
||||||
|
"entities": {
|
||||||
|
Platform.SWITCH: {
|
||||||
|
"bubble": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"cold_water": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"bathtub": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"safe": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"cold_water_dot": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"change_litre_switch": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"cold_water_ai": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"cold_water_pressure": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"person_mode_one": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"person_mode_two": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"person_mode_three": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
},
|
||||||
|
"gesture_function": {
|
||||||
|
"device_class": SwitchDeviceClass.SWITCH,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Platform.CLIMATE: {
|
||||||
|
"water_heater": {
|
||||||
|
"power": "power",
|
||||||
|
"hvac_modes": {
|
||||||
|
"off": {"power": "off"},
|
||||||
|
"heat": {"power": "on", "mode": "shower"}
|
||||||
|
},
|
||||||
|
"target_temperature": "temperature",
|
||||||
|
"current_temperature": "out_water_tem",
|
||||||
|
"min_temp": 20,
|
||||||
|
"max_temp": 60,
|
||||||
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
|
"precision": PRECISION_HALVES,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Platform.SELECT: {
|
||||||
|
"mode": {
|
||||||
|
"options": {
|
||||||
|
"shower": {"mode": "shower"},
|
||||||
|
"bath": {"mode": "bath"},
|
||||||
|
"mixed": {"mode": "mixed"},
|
||||||
|
"eco": {"mode": "eco"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"power_level": {
|
||||||
|
"options": {
|
||||||
|
"low": {"power_level": "0"},
|
||||||
|
"medium": {"power_level": "1"},
|
||||||
|
"high": {"power_level": "2"},
|
||||||
|
"max": {"power_level": "3"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type_machine": {
|
||||||
|
"options": {
|
||||||
|
"standard": {"type_machine": "20"},
|
||||||
|
"premium": {"type_machine": "21"},
|
||||||
|
"deluxe": {"type_machine": "22"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"capacity": {
|
||||||
|
"options": {
|
||||||
|
"small": {"capacity": "1"},
|
||||||
|
"medium": {"capacity": "2"},
|
||||||
|
"large": {"capacity": "3"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gesture_function_type": {
|
||||||
|
"options": {
|
||||||
|
"none": {"gesture_function_type": "0"},
|
||||||
|
"wave": {"gesture_function_type": "1"},
|
||||||
|
"touch": {"gesture_function_type": "2"},
|
||||||
|
"proximity": {"gesture_function_type": "3"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Platform.SENSOR: {
|
||||||
|
"out_water_tem": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"water_volume": {
|
||||||
|
"device_class": SensorDeviceClass.VOLUME,
|
||||||
|
"unit_of_measurement": UnitOfVolume.LITERS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"zero_cold_tem": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"bath_out_volume": {
|
||||||
|
"device_class": SensorDeviceClass.VOLUME,
|
||||||
|
"unit_of_measurement": UnitOfVolume.LITERS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"return_water_tem": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"change_litre": {
|
||||||
|
"device_class": SensorDeviceClass.VOLUME,
|
||||||
|
"unit_of_measurement": UnitOfVolume.LITERS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"bathtub_water_level": {
|
||||||
|
"device_class": SensorDeviceClass.VOLUME,
|
||||||
|
"unit_of_measurement": UnitOfVolume.LITERS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"temperature": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"gas_lift_percent": {
|
||||||
|
"device_class": SensorDeviceClass.POWER_FACTOR,
|
||||||
|
"unit_of_measurement": PERCENTAGE,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"person_tem_one": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"person_tem_two": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"person_tem_three": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"in_water_tem": {
|
||||||
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
},
|
||||||
|
"error_code": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
"state_class": SensorStateClass.MEASUREMENT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,6 +1,5 @@
|
|||||||
from homeassistant.const import Platform, UnitOfTemperature
|
from homeassistant.const import Platform, UnitOfTemperature, PRECISION_HALVES
|
||||||
from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass
|
from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass
|
||||||
from homeassistant.components.climate.const import PRECISION_HALVES
|
|
||||||
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
|
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
|
||||||
from homeassistant.components.switch import SwitchDeviceClass
|
from homeassistant.components.switch import SwitchDeviceClass
|
||||||
|
|
||||||
|
@@ -124,8 +124,10 @@ class MideaEntity(CoordinatorEntity[MideaDataUpdateCoordinator], Entity):
|
|||||||
@property
|
@property
|
||||||
def available(self) -> bool:
|
def available(self) -> bool:
|
||||||
"""Return if entity is available."""
|
"""Return if entity is available."""
|
||||||
MideaLogger.debug(f"available available={self.coordinator.data} ")
|
if self.coordinator.data:
|
||||||
return self.coordinator.data.available
|
return self.coordinator.data.available
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
async def _publish_command(self) -> None:
|
async def _publish_command(self) -> None:
|
||||||
"""Publish commands to the device."""
|
"""Publish commands to the device."""
|
||||||
|
@@ -66,4 +66,26 @@ class MideaSensorEntity(MideaEntity, SensorEntity):
|
|||||||
@property
|
@property
|
||||||
def native_value(self):
|
def native_value(self):
|
||||||
"""Return the native value of the sensor."""
|
"""Return the native value of the sensor."""
|
||||||
return self.device_attributes.get(self._entity_key)
|
value = self.device_attributes.get(self._entity_key)
|
||||||
|
|
||||||
|
# Handle invalid string values
|
||||||
|
if isinstance(value, str) and value.lower() in ['invalid', 'none', 'null', '']:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Try to convert to number if it's a string that looks like a number
|
||||||
|
if isinstance(value, str):
|
||||||
|
try:
|
||||||
|
# Try integer first
|
||||||
|
if '.' not in value:
|
||||||
|
return int(value)
|
||||||
|
# Then float
|
||||||
|
return float(value)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
# If conversion fails, return None for numeric sensors
|
||||||
|
# or return the original string for enum sensors
|
||||||
|
device_class = self._config.get("device_class")
|
||||||
|
if device_class and "enum" not in device_class.lower():
|
||||||
|
return None
|
||||||
|
return value
|
||||||
|
|
||||||
|
return value
|
||||||
|
@@ -508,7 +508,119 @@
|
|||||||
"display_on_off": { "name": "Display On Off" },
|
"display_on_off": { "name": "Display On Off" },
|
||||||
"netions_on_off": { "name": "Net Ions On Off" },
|
"netions_on_off": { "name": "Net Ions On Off" },
|
||||||
"airdry_on_off": { "name": "Air Dry On Off" },
|
"airdry_on_off": { "name": "Air Dry On Off" },
|
||||||
"add_water_flag": { "name": "Add Water Flag" }
|
"add_water_flag": { "name": "Add Water Flag" },
|
||||||
|
"bubble": { "name": "Bubble" },
|
||||||
|
"cold_water": { "name": "Cold Water" },
|
||||||
|
"bathtub": { "name": "Bathtub" },
|
||||||
|
"safe": { "name": "Safe" },
|
||||||
|
"cold_water_dot": { "name": "Cold Water Dot" },
|
||||||
|
"change_litre_switch": { "name": "Change Litre Switch" },
|
||||||
|
"cold_water_ai": { "name": "Cold Water AI" },
|
||||||
|
"cold_water_pressure": { "name": "Cold Water Pressure" },
|
||||||
|
"person_mode_one": { "name": "Person Mode One" },
|
||||||
|
"person_mode_two": { "name": "Person Mode Two" },
|
||||||
|
"person_mode_three": { "name": "Person Mode Three" },
|
||||||
|
"gesture_function": { "name": "Gesture Function" }
|
||||||
|
},
|
||||||
|
"climate": {
|
||||||
|
"water_heater": { "name": "Water Heater" }
|
||||||
|
},
|
||||||
|
"select": {
|
||||||
|
"mode": { "name": "Mode" },
|
||||||
|
"power_level": { "name": "Power Level" },
|
||||||
|
"type_machine": { "name": "Type Machine" },
|
||||||
|
"capacity": { "name": "Capacity" },
|
||||||
|
"gesture_function_type": { "name": "Gesture Function Type" }
|
||||||
|
},
|
||||||
|
"sensor": {
|
||||||
|
"out_water_tem": { "name": "Out Water Temperature" },
|
||||||
|
"water_volume": { "name": "Water Volume" },
|
||||||
|
"zero_cold_tem": { "name": "Zero Cold Temperature" },
|
||||||
|
"bath_out_volume": { "name": "Bath Out Volume" },
|
||||||
|
"return_water_tem": { "name": "Return Water Temperature" },
|
||||||
|
"change_litre": { "name": "Change Litre" },
|
||||||
|
"bathtub_water_level": { "name": "Bathtub Water Level" },
|
||||||
|
"temperature": { "name": "Temperature" },
|
||||||
|
"gas_lift_percent": { "name": "Gas Lift Percent" },
|
||||||
|
"person_tem_one": { "name": "Person Temperature One" },
|
||||||
|
"person_tem_two": { "name": "Person Temperature Two" },
|
||||||
|
"person_tem_three": { "name": "Person Temperature Three" },
|
||||||
|
"in_water_tem": { "name": "In Water Temperature" },
|
||||||
|
"error_code": { "name": "Error Code" },
|
||||||
|
"version": { "name": "Version" },
|
||||||
|
"freezing_mode": { "name": "Freezing Mode" },
|
||||||
|
"intelligent_mode": { "name": "Intelligent Mode" },
|
||||||
|
"energy_saving_mode": { "name": "Energy Saving Mode" },
|
||||||
|
"holiday_mode": { "name": "Holiday Mode" },
|
||||||
|
"moisturize_mode": { "name": "Moisturize Mode" },
|
||||||
|
"preservation_mode": { "name": "Preservation Mode" },
|
||||||
|
"acme_freezing_mode": { "name": "Acme Freezing Mode" },
|
||||||
|
"storage_power": { "name": "Storage Power" },
|
||||||
|
"left_flexzone_power": { "name": "Left Flexzone Power" },
|
||||||
|
"right_flexzone_power": { "name": "Right Flexzone Power" },
|
||||||
|
"freezing_power": { "name": "Freezing Power" },
|
||||||
|
"function_zone_power": { "name": "Function Zone Power" },
|
||||||
|
"cross_peak_electricity": { "name": "Cross Peak Electricity" },
|
||||||
|
"all_refrigeration_power": { "name": "All Refrigeration Power" },
|
||||||
|
"remove_dew_power": { "name": "Remove Dew Power" },
|
||||||
|
"humidify_power": { "name": "Humidify Power" },
|
||||||
|
"unfreeze_power": { "name": "Unfreeze Power" },
|
||||||
|
"floodlight_power": { "name": "Floodlight Power" },
|
||||||
|
"radar_mode_power": { "name": "Radar Mode Power" },
|
||||||
|
"milk_mode_power": { "name": "Milk Mode Power" },
|
||||||
|
"icea_mode_power": { "name": "Icea Mode Power" },
|
||||||
|
"plasma_aseptic_mode_power": { "name": "Plasma Aseptic Mode Power" },
|
||||||
|
"acquire_icea_mode_power": { "name": "Acquire Icea Mode Power" },
|
||||||
|
"brash_icea_mode_power": { "name": "Brash Icea Mode Power" },
|
||||||
|
"acquire_water_mode_power": { "name": "Acquire Water Mode Power" },
|
||||||
|
"freezing_ice_machine_power": { "name": "Freezing Ice Machine Power" },
|
||||||
|
"microcrystal_fresh": { "name": "Microcrystal Fresh" },
|
||||||
|
"dry_zone": { "name": "Dry Zone" },
|
||||||
|
"electronic_smell": { "name": "Electronic Smell" },
|
||||||
|
"eradicate_pesticide_residue": { "name": "Eradicate Pesticide Residue" },
|
||||||
|
"performance_mode": { "name": "Performance Mode" },
|
||||||
|
"ice_mouth_power": { "name": "Ice Mouth Power" }
|
||||||
|
},
|
||||||
|
"binary_sensor": {
|
||||||
|
"storage_door_state": { "name": "Storage Door State" },
|
||||||
|
"freezer_door_state": { "name": "Freezer Door State" },
|
||||||
|
"flexzone_door_state": { "name": "Flexzone Door State" },
|
||||||
|
"storage_ice_home_door_state": { "name": "Storage Ice Home Door State" },
|
||||||
|
"bar_door_state": { "name": "Bar Door State" },
|
||||||
|
"is_error": { "name": "Is Error" }
|
||||||
|
},
|
||||||
|
"climate": {
|
||||||
|
"storage_zone": { "name": "Storage Zone" },
|
||||||
|
"freezing_zone": { "name": "Freezing Zone" },
|
||||||
|
"left_flexzone": { "name": "Left Flexzone" },
|
||||||
|
"right_flexzone": { "name": "Right Flexzone" }
|
||||||
|
},
|
||||||
|
"select": {
|
||||||
|
"variable_mode": { "name": "Variable Mode" },
|
||||||
|
"icea_bar_function_switch": { "name": "Icea Bar Function Switch" },
|
||||||
|
"food_site": { "name": "Food Site" },
|
||||||
|
"temperature_unit": { "name": "Temperature Unit" }
|
||||||
|
},
|
||||||
|
"sensor": {
|
||||||
|
"storage_temperature": { "name": "Storage Temperature" },
|
||||||
|
"freezing_temperature": { "name": "Freezing Temperature" },
|
||||||
|
"left_flexzone_temperature": { "name": "Left Flexzone Temperature" },
|
||||||
|
"right_flexzone_temperature": { "name": "Right Flexzone Temperature" },
|
||||||
|
"refrigeration_real_temperature": { "name": "Refrigeration Real Temperature" },
|
||||||
|
"freezing_real_temperature": { "name": "Freezing Real Temperature" },
|
||||||
|
"left_variable_real_temperature": { "name": "Left Variable Real Temperature" },
|
||||||
|
"right_variable_real_temperature": { "name": "Right Variable Real Temperature" },
|
||||||
|
"interval_room_humidity_level": { "name": "Interval Room Humidity Level" },
|
||||||
|
"normal_zone_level": { "name": "Normal Zone Level" },
|
||||||
|
"function_zone_level": { "name": "Function Zone Level" },
|
||||||
|
"freeze_fahrenheit_level": { "name": "Freeze Fahrenheit Level" },
|
||||||
|
"refrigeration_fahrenheit_level": { "name": "Refrigeration Fahrenheit Level" },
|
||||||
|
"leach_expire_day": { "name": "Leach Expire Day" },
|
||||||
|
"power_consumption_low": { "name": "Power Consumption Low" },
|
||||||
|
"power_consumption_high": { "name": "Power Consumption High" },
|
||||||
|
"fast_cold_minute": { "name": "Fast Cold Minute" },
|
||||||
|
"fast_freeze_minute": { "name": "Fast Freeze Minute" },
|
||||||
|
"version": { "name": "Version" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -508,7 +508,119 @@
|
|||||||
"display_on_off": { "name": "显示开关" },
|
"display_on_off": { "name": "显示开关" },
|
||||||
"netions_on_off": { "name": "负离子开关" },
|
"netions_on_off": { "name": "负离子开关" },
|
||||||
"airdry_on_off": { "name": "风干开关" },
|
"airdry_on_off": { "name": "风干开关" },
|
||||||
"add_water_flag": { "name": "加水标志" }
|
"add_water_flag": { "name": "加水标志" },
|
||||||
|
"bubble": { "name": "气泡" },
|
||||||
|
"cold_water": { "name": "冷水" },
|
||||||
|
"bathtub": { "name": "浴缸" },
|
||||||
|
"safe": { "name": "安全" },
|
||||||
|
"cold_water_dot": { "name": "冷水点" },
|
||||||
|
"change_litre_switch": { "name": "换水开关" },
|
||||||
|
"cold_water_ai": { "name": "冷水AI" },
|
||||||
|
"cold_water_pressure": { "name": "冷水压力" },
|
||||||
|
"person_mode_one": { "name": "个人模式一" },
|
||||||
|
"person_mode_two": { "name": "个人模式二" },
|
||||||
|
"person_mode_three": { "name": "个人模式三" },
|
||||||
|
"gesture_function": { "name": "手势功能" }
|
||||||
|
},
|
||||||
|
"climate": {
|
||||||
|
"water_heater": { "name": "热水器" }
|
||||||
|
},
|
||||||
|
"select": {
|
||||||
|
"mode": { "name": "模式" },
|
||||||
|
"power_level": { "name": "功率等级" },
|
||||||
|
"type_machine": { "name": "机器类型" },
|
||||||
|
"capacity": { "name": "容量" },
|
||||||
|
"gesture_function_type": { "name": "手势功能类型" }
|
||||||
|
},
|
||||||
|
"sensor": {
|
||||||
|
"out_water_tem": { "name": "出水温度" },
|
||||||
|
"water_volume": { "name": "水量" },
|
||||||
|
"zero_cold_tem": { "name": "零冷水温度" },
|
||||||
|
"bath_out_volume": { "name": "浴缸出水量" },
|
||||||
|
"return_water_tem": { "name": "回水温度" },
|
||||||
|
"change_litre": { "name": "换水量" },
|
||||||
|
"bathtub_water_level": { "name": "浴缸水位" },
|
||||||
|
"temperature": { "name": "温度" },
|
||||||
|
"gas_lift_percent": { "name": "燃气提升百分比" },
|
||||||
|
"person_tem_one": { "name": "个人温度一" },
|
||||||
|
"person_tem_two": { "name": "个人温度二" },
|
||||||
|
"person_tem_three": { "name": "个人温度三" },
|
||||||
|
"in_water_tem": { "name": "进水温度" },
|
||||||
|
"error_code": { "name": "错误代码" },
|
||||||
|
"version": { "name": "版本" },
|
||||||
|
"freezing_mode": { "name": "冷冻模式" },
|
||||||
|
"intelligent_mode": { "name": "智能模式" },
|
||||||
|
"energy_saving_mode": { "name": "节能模式" },
|
||||||
|
"holiday_mode": { "name": "假日模式" },
|
||||||
|
"moisturize_mode": { "name": "保湿模式" },
|
||||||
|
"preservation_mode": { "name": "保鲜模式" },
|
||||||
|
"acme_freezing_mode": { "name": "极速冷冻模式" },
|
||||||
|
"storage_power": { "name": "冷藏电源" },
|
||||||
|
"left_flexzone_power": { "name": "左变温区电源" },
|
||||||
|
"right_flexzone_power": { "name": "右变温区电源" },
|
||||||
|
"freezing_power": { "name": "冷冻电源" },
|
||||||
|
"function_zone_power": { "name": "功能区电源" },
|
||||||
|
"cross_peak_electricity": { "name": "错峰用电" },
|
||||||
|
"all_refrigeration_power": { "name": "全制冷电源" },
|
||||||
|
"remove_dew_power": { "name": "除露电源" },
|
||||||
|
"humidify_power": { "name": "加湿电源" },
|
||||||
|
"unfreeze_power": { "name": "解冻电源" },
|
||||||
|
"floodlight_power": { "name": "照明电源" },
|
||||||
|
"radar_mode_power": { "name": "雷达模式电源" },
|
||||||
|
"milk_mode_power": { "name": "牛奶模式电源" },
|
||||||
|
"icea_mode_power": { "name": "制冰模式电源" },
|
||||||
|
"plasma_aseptic_mode_power": { "name": "等离子杀菌模式电源" },
|
||||||
|
"acquire_icea_mode_power": { "name": "取冰模式电源" },
|
||||||
|
"brash_icea_mode_power": { "name": "碎冰模式电源" },
|
||||||
|
"acquire_water_mode_power": { "name": "取水模式电源" },
|
||||||
|
"freezing_ice_machine_power": { "name": "冷冻制冰机电源" },
|
||||||
|
"microcrystal_fresh": { "name": "微晶保鲜" },
|
||||||
|
"dry_zone": { "name": "干燥区" },
|
||||||
|
"electronic_smell": { "name": "电子除味" },
|
||||||
|
"eradicate_pesticide_residue": { "name": "去除农药残留" },
|
||||||
|
"performance_mode": { "name": "性能模式" },
|
||||||
|
"ice_mouth_power": { "name": "出冰口电源" }
|
||||||
|
},
|
||||||
|
"binary_sensor": {
|
||||||
|
"storage_door_state": { "name": "冷藏门状态" },
|
||||||
|
"freezer_door_state": { "name": "冷冻门状态" },
|
||||||
|
"flexzone_door_state": { "name": "变温区门状态" },
|
||||||
|
"storage_ice_home_door_state": { "name": "冷藏制冰室门状态" },
|
||||||
|
"bar_door_state": { "name": "吧台门状态" },
|
||||||
|
"is_error": { "name": "是否错误" }
|
||||||
|
},
|
||||||
|
"climate": {
|
||||||
|
"storage_zone": { "name": "冷藏区" },
|
||||||
|
"freezing_zone": { "name": "冷冻区" },
|
||||||
|
"left_flexzone": { "name": "左变温区" },
|
||||||
|
"right_flexzone": { "name": "右变温区" }
|
||||||
|
},
|
||||||
|
"select": {
|
||||||
|
"variable_mode": { "name": "变温模式" },
|
||||||
|
"icea_bar_function_switch": { "name": "制冰吧台功能开关" },
|
||||||
|
"food_site": { "name": "食物位置" },
|
||||||
|
"temperature_unit": { "name": "温度单位" }
|
||||||
|
},
|
||||||
|
"sensor": {
|
||||||
|
"storage_temperature": { "name": "冷藏温度" },
|
||||||
|
"freezing_temperature": { "name": "冷冻温度" },
|
||||||
|
"left_flexzone_temperature": { "name": "左变温区温度" },
|
||||||
|
"right_flexzone_temperature": { "name": "右变温区温度" },
|
||||||
|
"refrigeration_real_temperature": { "name": "冷藏实际温度" },
|
||||||
|
"freezing_real_temperature": { "name": "冷冻实际温度" },
|
||||||
|
"left_variable_real_temperature": { "name": "左变温实际温度" },
|
||||||
|
"right_variable_real_temperature": { "name": "右变温实际温度" },
|
||||||
|
"interval_room_humidity_level": { "name": "间室湿度等级" },
|
||||||
|
"normal_zone_level": { "name": "普通区等级" },
|
||||||
|
"function_zone_level": { "name": "功能区等级" },
|
||||||
|
"freeze_fahrenheit_level": { "name": "冷冻华氏等级" },
|
||||||
|
"refrigeration_fahrenheit_level": { "name": "冷藏华氏等级" },
|
||||||
|
"leach_expire_day": { "name": "沥干过期天数" },
|
||||||
|
"power_consumption_low": { "name": "低功耗" },
|
||||||
|
"power_consumption_high": { "name": "高功耗" },
|
||||||
|
"fast_cold_minute": { "name": "快速制冷分钟" },
|
||||||
|
"fast_freeze_minute": { "name": "快速冷冻分钟" },
|
||||||
|
"version": { "name": "版本" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user