This commit is contained in:
Jack Simbach 2024-01-28 09:34:48 -05:00
commit edc877c472
22 changed files with 115 additions and 175 deletions

View File

@ -2,7 +2,7 @@ import logging
from typing import List
from gehomesdk.erd.erd_data_type import ErdDataType
from homeassistant.const import DEVICE_CLASS_POWER_FACTOR
from homeassistant.components.sensor import SensorDeviceClass
from homeassistant.helpers.entity import Entity
from gehomesdk import (
ErdCode,
@ -44,7 +44,7 @@ class CooktopApi(ApplianceApi):
cooktop_entities.append(GeErdPropertyBinarySensor(self, ErdCode.COOKTOP_STATUS, prop+".on"))
cooktop_entities.append(GeErdPropertyBinarySensor(self, ErdCode.COOKTOP_STATUS, prop+".synchronized"))
if not v.on_off_only:
cooktop_entities.append(GeErdPropertySensor(self, ErdCode.COOKTOP_STATUS, prop+".power_pct", icon_override="mdi:fire", device_class_override=DEVICE_CLASS_POWER_FACTOR, data_type_override=ErdDataType.INT))
cooktop_entities.append(GeErdPropertySensor(self, ErdCode.COOKTOP_STATUS, prop+".power_pct", icon_override="mdi:fire", device_class_override=SensorDeviceClass.POWER_FACTOR, data_type_override=ErdDataType.INT))
return base_entities + cooktop_entities

View File

@ -1,5 +1,5 @@
from homeassistant.components.binary_sensor import DEVICE_CLASS_PROBLEM
from homeassistant.const import DEVICE_CLASS_TEMPERATURE
from homeassistant.components.sensor import SensorDeviceClass
import logging
from typing import List
@ -129,7 +129,7 @@ class FridgeApi(ApplianceApi):
GeErdSensor(self, ErdCode.HOT_WATER_SET_TEMP),
GeErdPropertySensor(self, ErdCode.HOT_WATER_STATUS, "status", icon_override="mdi:information-outline"),
GeErdPropertySensor(self, ErdCode.HOT_WATER_STATUS, "time_until_ready", icon_override="mdi:timer-outline"),
GeErdPropertySensor(self, ErdCode.HOT_WATER_STATUS, "current_temp", device_class_override=DEVICE_CLASS_TEMPERATURE, data_type_override=ErdDataType.INT),
GeErdPropertySensor(self, ErdCode.HOT_WATER_STATUS, "current_temp", device_class_override=SensorDeviceClass.TEMPERATURE, data_type_override=ErdDataType.INT),
GeErdPropertyBinarySensor(self, ErdCode.HOT_WATER_STATUS, "faulted", device_class_override=DEVICE_CLASS_PROBLEM),
GeDispenser(self)
])

View File

@ -2,7 +2,7 @@ import logging
from typing import List
from gehomesdk.erd.erd_data_type import ErdDataType
from homeassistant.const import DEVICE_CLASS_POWER_FACTOR
from homeassistant.components.sensor import SensorDeviceClass
from homeassistant.helpers.entity import Entity
from gehomesdk import (
ErdCode,
@ -120,7 +120,7 @@ class OvenApi(ApplianceApi):
cooktop_entities.append(GeErdPropertyBinarySensor(self, cooktop_status_erd, prop+".on"))
cooktop_entities.append(GeErdPropertyBinarySensor(self, cooktop_status_erd, prop+".synchronized"))
if not v.on_off_only:
cooktop_entities.append(GeErdPropertySensor(self, cooktop_status_erd, prop+".power_pct", icon_override="mdi:fire", device_class_override=DEVICE_CLASS_POWER_FACTOR, data_type_override=ErdDataType.INT))
cooktop_entities.append(GeErdPropertySensor(self, cooktop_status_erd, prop+".power_pct", icon_override="mdi:fire", device_class_override=SensorDeviceClass.POWER_FACTOR, data_type_override=ErdDataType.INT))
return base_entities + oven_entities + cooktop_entities

View File

@ -1,11 +1,6 @@
import logging
from typing import Any, List, Optional
from homeassistant.components.climate.const import (
HVAC_MODE_AUTO,
HVAC_MODE_COOL,
HVAC_MODE_FAN_ONLY,
)
from gehomesdk import ErdAcFanSetting
from ..common import OptionsConverter

View File

@ -1,11 +1,7 @@
import logging
from typing import Any, List, Optional
from homeassistant.components.climate.const import (
HVAC_MODE_AUTO,
HVAC_MODE_COOL,
HVAC_MODE_FAN_ONLY,
)
from homeassistant.components.climate import HVACMode
from gehomesdk import ErdAcOperationMode
from ...devices import ApplianceApi
from ..common import GeClimate, OptionsConverter
@ -16,13 +12,13 @@ _LOGGER = logging.getLogger(__name__)
class BiacHvacModeOptionsConverter(OptionsConverter):
@property
def options(self) -> List[str]:
return [HVAC_MODE_AUTO, HVAC_MODE_COOL, HVAC_MODE_FAN_ONLY]
return [HVACMode.AUTO, HVACMode.COOL, HVACMode.FAN_ONLY]
def from_option_string(self, value: str) -> Any:
try:
return {
HVAC_MODE_AUTO: ErdAcOperationMode.ENERGY_SAVER,
HVAC_MODE_COOL: ErdAcOperationMode.COOL,
HVAC_MODE_FAN_ONLY: ErdAcOperationMode.FAN_ONLY
HVACMode.AUTO: ErdAcOperationMode.ENERGY_SAVER,
HVACMode.COOL: ErdAcOperationMode.COOL,
HVACMode.FAN_ONLY: ErdAcOperationMode.FAN_ONLY
}.get(value)
except:
_LOGGER.warn(f"Could not set HVAC mode to {value.upper()}")
@ -30,14 +26,14 @@ class BiacHvacModeOptionsConverter(OptionsConverter):
def to_option_string(self, value: Any) -> Optional[str]:
try:
return {
ErdAcOperationMode.ENERGY_SAVER: HVAC_MODE_AUTO,
ErdAcOperationMode.AUTO: HVAC_MODE_AUTO,
ErdAcOperationMode.COOL: HVAC_MODE_COOL,
ErdAcOperationMode.FAN_ONLY: HVAC_MODE_FAN_ONLY
ErdAcOperationMode.ENERGY_SAVER: HVACMode.AUTO,
ErdAcOperationMode.AUTO: HVACMode.AUTO,
ErdAcOperationMode.COOL: HVACMode.COOL,
ErdAcOperationMode.FAN_ONLY: HVACMode.FAN_ONLY
}.get(value)
except:
_LOGGER.warn(f"Could not determine operation mode mapping for {value}")
return HVAC_MODE_COOL
return HVACMode.COOL
class GeBiacClimate(GeClimate):
"""Class for Built-In AC units"""

View File

@ -1,17 +1,7 @@
import logging
from typing import Any, List, Optional
from homeassistant.const import (
TEMP_FAHRENHEIT
)
from homeassistant.components.climate.const import (
HVAC_MODE_AUTO,
HVAC_MODE_COOL,
HVAC_MODE_DRY,
HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT,
)
from homeassistant.components.climate import HVACMode
from gehomesdk import ErdCode, ErdAcOperationMode, ErdSacAvailableModes, ErdSacTargetTemperatureRange
from ...devices import ApplianceApi
from ..common import GeClimate, OptionsConverter
@ -25,19 +15,19 @@ class PacHvacModeOptionsConverter(OptionsConverter):
@property
def options(self) -> List[str]:
modes = [HVAC_MODE_COOL, HVAC_MODE_FAN_ONLY]
modes = [HVACMode.COOL, HVACMode.FAN_ONLY]
if self._available_modes and self._available_modes.has_heat:
modes.append(HVAC_MODE_HEAT)
modes.append(HVACMode.HEAT)
if self._available_modes and self._available_modes.has_dry:
modes.append(HVAC_MODE_DRY)
modes.append(HVACMode.DRY)
return modes
def from_option_string(self, value: str) -> Any:
try:
return {
HVAC_MODE_COOL: ErdAcOperationMode.COOL,
HVAC_MODE_HEAT: ErdAcOperationMode.HEAT,
HVAC_MODE_FAN_ONLY: ErdAcOperationMode.FAN_ONLY,
HVAC_MODE_DRY: ErdAcOperationMode.DRY
HVACMode.COOL: ErdAcOperationMode.COOL,
HVACMode.HEAT: ErdAcOperationMode.HEAT,
HVACMode.FAN_ONLY: ErdAcOperationMode.FAN_ONLY,
HVACMode.DRY: ErdAcOperationMode.DRY
}.get(value)
except:
_LOGGER.warn(f"Could not set HVAC mode to {value.upper()}")
@ -45,14 +35,14 @@ class PacHvacModeOptionsConverter(OptionsConverter):
def to_option_string(self, value: Any) -> Optional[str]:
try:
return {
ErdAcOperationMode.COOL: HVAC_MODE_COOL,
ErdAcOperationMode.HEAT: HVAC_MODE_HEAT,
ErdAcOperationMode.DRY: HVAC_MODE_DRY,
ErdAcOperationMode.FAN_ONLY: HVAC_MODE_FAN_ONLY
ErdAcOperationMode.COOL: HVACMode.COOL,
ErdAcOperationMode.HEAT: HVACMode.HEAT,
ErdAcOperationMode.DRY: HVACMode.DRY,
ErdAcOperationMode.FAN_ONLY: HVACMode.FAN_ONLY
}.get(value)
except:
_LOGGER.warn(f"Could not determine operation mode mapping for {value}")
return HVAC_MODE_COOL
return HVACMode.COOL
class GePacClimate(GeClimate):
"""Class for Portable AC units"""

View File

@ -1,16 +1,7 @@
import logging
from typing import Any, List, Optional
from homeassistant.const import (
TEMP_FAHRENHEIT
)
from homeassistant.components.climate.const import (
HVAC_MODE_AUTO,
HVAC_MODE_COOL,
HVAC_MODE_DRY,
HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT,
)
from homeassistant.components.climate import HVACMode
from gehomesdk import ErdCode, ErdAcOperationMode, ErdSacAvailableModes, ErdSacTargetTemperatureRange
from ...devices import ApplianceApi
from ..common import GeClimate, OptionsConverter
@ -24,21 +15,21 @@ class SacHvacModeOptionsConverter(OptionsConverter):
@property
def options(self) -> List[str]:
modes = [HVAC_MODE_COOL, HVAC_MODE_FAN_ONLY]
modes = [HVACMode.COOL, HVACMode.FAN_ONLY]
if self._available_modes and self._available_modes.has_heat:
modes.append(HVAC_MODE_HEAT)
modes.append(HVAC_MODE_AUTO)
modes.append(HVACMode.HEAT)
modes.append(HVACMode.AUTO)
if self._available_modes and self._available_modes.has_dry:
modes.append(HVAC_MODE_DRY)
modes.append(HVACMode.DRY)
return modes
def from_option_string(self, value: str) -> Any:
try:
return {
HVAC_MODE_AUTO: ErdAcOperationMode.AUTO,
HVAC_MODE_COOL: ErdAcOperationMode.COOL,
HVAC_MODE_HEAT: ErdAcOperationMode.HEAT,
HVAC_MODE_FAN_ONLY: ErdAcOperationMode.FAN_ONLY,
HVAC_MODE_DRY: ErdAcOperationMode.DRY
HVACMode.AUTO: ErdAcOperationMode.AUTO,
HVACMode.COOL: ErdAcOperationMode.COOL,
HVACMode.HEAT: ErdAcOperationMode.HEAT,
HVACMode.FAN_ONLY: ErdAcOperationMode.FAN_ONLY,
HVACMode.DRY: ErdAcOperationMode.DRY
}.get(value)
except:
_LOGGER.warn(f"Could not set HVAC mode to {value.upper()}")
@ -46,16 +37,16 @@ class SacHvacModeOptionsConverter(OptionsConverter):
def to_option_string(self, value: Any) -> Optional[str]:
try:
return {
ErdAcOperationMode.ENERGY_SAVER: HVAC_MODE_AUTO,
ErdAcOperationMode.AUTO: HVAC_MODE_AUTO,
ErdAcOperationMode.COOL: HVAC_MODE_COOL,
ErdAcOperationMode.HEAT: HVAC_MODE_HEAT,
ErdAcOperationMode.DRY: HVAC_MODE_DRY,
ErdAcOperationMode.FAN_ONLY: HVAC_MODE_FAN_ONLY
ErdAcOperationMode.ENERGY_SAVER: HVACMode.AUTO,
ErdAcOperationMode.AUTO: HVACMode.AUTO,
ErdAcOperationMode.COOL: HVACMode.COOL,
ErdAcOperationMode.HEAT: HVACMode.HEAT,
ErdAcOperationMode.DRY: HVACMode.DRY,
ErdAcOperationMode.FAN_ONLY: HVACMode.FAN_ONLY
}.get(value)
except:
_LOGGER.warn(f"Could not determine operation mode mapping for {value}")
return HVAC_MODE_COOL
return HVACMode.COOL
class GeSacClimate(GeClimate):
"""Class for Split AC units"""

View File

@ -1,11 +1,7 @@
import logging
from typing import Any, List, Optional
from homeassistant.components.climate.const import (
HVAC_MODE_AUTO,
HVAC_MODE_COOL,
HVAC_MODE_FAN_ONLY,
)
from homeassistant.components.climate import HVACMode
from gehomesdk import ErdAcOperationMode
from ...devices import ApplianceApi
from ..common import GeClimate, OptionsConverter
@ -16,13 +12,13 @@ _LOGGER = logging.getLogger(__name__)
class WacHvacModeOptionsConverter(OptionsConverter):
@property
def options(self) -> List[str]:
return [HVAC_MODE_AUTO, HVAC_MODE_COOL, HVAC_MODE_FAN_ONLY]
return [HVACMode.AUTO, HVACMode.COOL, HVACMode.FAN_ONLY]
def from_option_string(self, value: str) -> Any:
try:
return {
HVAC_MODE_AUTO: ErdAcOperationMode.ENERGY_SAVER,
HVAC_MODE_COOL: ErdAcOperationMode.COOL,
HVAC_MODE_FAN_ONLY: ErdAcOperationMode.FAN_ONLY
HVACMode.AUTO: ErdAcOperationMode.ENERGY_SAVER,
HVACMode.COOL: ErdAcOperationMode.COOL,
HVACMode.FAN_ONLY: ErdAcOperationMode.FAN_ONLY
}.get(value)
except:
_LOGGER.warn(f"Could not set HVAC mode to {value.upper()}")
@ -30,14 +26,14 @@ class WacHvacModeOptionsConverter(OptionsConverter):
def to_option_string(self, value: Any) -> Optional[str]:
try:
return {
ErdAcOperationMode.ENERGY_SAVER: HVAC_MODE_AUTO,
ErdAcOperationMode.AUTO: HVAC_MODE_AUTO,
ErdAcOperationMode.COOL: HVAC_MODE_COOL,
ErdAcOperationMode.FAN_ONLY: HVAC_MODE_FAN_ONLY
ErdAcOperationMode.ENERGY_SAVER: HVACMode.AUTO,
ErdAcOperationMode.AUTO: HVACMode.AUTO,
ErdAcOperationMode.COOL: HVACMode.COOL,
ErdAcOperationMode.FAN_ONLY: HVACMode.FAN_ONLY
}.get(value)
except:
_LOGGER.warn(f"Could not determine operation mode mapping for {value}")
return HVAC_MODE_COOL
return HVACMode.COOL
class GeWacClimate(GeClimate):
"""Class for Window AC units"""

View File

@ -1,8 +1,5 @@
from homeassistant.components.water_heater import (
SUPPORT_OPERATION_MODE,
SUPPORT_TARGET_TEMPERATURE
)
from homeassistant.components.water_heater import WaterHeaterEntityFeature
SUPPORT_NONE = 0
GE_ADVANTIUM_WITH_TEMPERATURE = (SUPPORT_OPERATION_MODE | SUPPORT_TARGET_TEMPERATURE)
GE_ADVANTIUM = SUPPORT_OPERATION_MODE
GE_ADVANTIUM_WITH_TEMPERATURE = (WaterHeaterEntityFeature.OPERATION_MODE | WaterHeaterEntityFeature.TARGET_TEMPERATURE)
GE_ADVANTIUM = WaterHeaterEntityFeature.OPERATION_MODE

View File

@ -15,7 +15,8 @@ from gehomesdk import (
)
from gehomesdk.erd.values.advantium.advantium_enums import CookAction, CookMode
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
from homeassistant.components.sensor import SensorDeviceClass
from homeassistant.const import ATTR_TEMPERATURE
from ...const import DOMAIN
from ...devices import ApplianceApi
from ..common import GeAbstractWaterHeater
@ -272,7 +273,7 @@ class GeAdvantium(GeAbstractWaterHeater):
async def _convert_target_temperature(self, temp_120v: int, temp_240v: int):
unit_type = self.unit_type
target_temp_f = temp_240v if unit_type in [ErdUnitType.TYPE_240V_MONOGRAM, ErdUnitType.TYPE_240V_CAFE] else temp_120v
if self.temperature_unit == TEMP_FAHRENHEIT:
if self.temperature_unit == SensorDeviceClass.FAHRENHEIT:
return float(target_temp_f)
else:
return (target_temp_f - 32.0) * (5/9)

View File

@ -2,7 +2,6 @@ from gehomesdk import ErdCode
from ...devices import ApplianceApi
from ..common import GeErdNumber
from .ge_ccm_cached_value import GeCcmCachedValue
from homeassistant.const import TEMP_FAHRENHEIT
class GeCcmBrewTemperatureNumber(GeErdNumber, GeCcmCachedValue):
def __init__(self, api: ApplianceApi):

View File

@ -4,15 +4,10 @@ from typing import List, Optional
from homeassistant.components.climate import ClimateEntity
from homeassistant.const import (
ATTR_TEMPERATURE,
TEMP_FAHRENHEIT,
TEMP_CELSIUS,
)
from homeassistant.components.climate.const import (
HVAC_MODE_FAN_ONLY,
SUPPORT_TARGET_TEMPERATURE,
SUPPORT_FAN_MODE,
HVAC_MODE_OFF
UnitOfTemperature,
)
from homeassistant.components.climate import ClimateEntityFeature, HVACMode
from homeassistant.components.water_heater import WaterHeaterEntityFeature
from gehomesdk import ErdCode, ErdCodeType, ErdMeasurementUnits, ErdOnOff
from ...const import DOMAIN
from ...devices import ApplianceApi
@ -22,7 +17,7 @@ from .options_converter import OptionsConverter
_LOGGER = logging.getLogger(__name__)
#by default, we'll support target temp and fan mode (derived classes can override)
GE_CLIMATE_SUPPORT = SUPPORT_TARGET_TEMPERATURE | SUPPORT_FAN_MODE
GE_CLIMATE_SUPPORT = WaterHeaterEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
class GeClimate(GeEntity, ClimateEntity):
"""GE Climate Base Entity (Window AC, Portable AC, etc)"""
@ -83,11 +78,11 @@ class GeClimate(GeEntity, ClimateEntity):
@property
def temperature_unit(self):
#appears to always be Fahrenheit internally, hardcode this
return TEMP_FAHRENHEIT
return UnitOfTemperature.FAHRENHEIT
#measurement_system = self.appliance.get_erd_value(ErdCode.TEMPERATURE_UNIT)
#if measurement_system == ErdMeasurementUnits.METRIC:
# return TEMP_CELSIUS
#return TEMP_FAHRENHEIT
# return UnitOfTemperature.CELSIUS
#return UnitOfTempterature.FAHRENHEIT
@property
def supported_features(self):
@ -116,30 +111,30 @@ class GeClimate(GeEntity, ClimateEntity):
@property
def hvac_mode(self):
if not self.is_on:
return HVAC_MODE_OFF
return HVACMode.OFF
return self._hvac_mode_converter.to_option_string(self.appliance.get_erd_value(self.hvac_mode_erd_code))
@property
def hvac_modes(self) -> List[str]:
return [HVAC_MODE_OFF] + self._hvac_mode_converter.options
return [HVACMode.OFF] + self._hvac_mode_converter.options
@property
def fan_mode(self):
if self.hvac_mode == HVAC_MODE_FAN_ONLY:
if self.hvac_mode == HVACMode.FAN_ONLY:
return self._fan_only_fan_mode_converter.to_option_string(self.appliance.get_erd_value(self.fan_mode_erd_code))
return self._fan_mode_converter.to_option_string(self.appliance.get_erd_value(self.fan_mode_erd_code))
@property
def fan_modes(self) -> List[str]:
if self.hvac_mode == HVAC_MODE_FAN_ONLY:
if self.hvac_mode == HVACMode.FAN_ONLY:
return self._fan_only_fan_mode_converter.options
return self._fan_mode_converter.options
async def async_set_hvac_mode(self, hvac_mode: str) -> None:
_LOGGER.debug(f"Setting HVAC mode from {self.hvac_mode} to {hvac_mode}")
if hvac_mode != self.hvac_mode:
if hvac_mode == HVAC_MODE_OFF:
if hvac_mode == HVACMode.OFF:
await self.appliance.async_set_erd_value(self.power_status_erd_code, ErdOnOff.OFF)
else:
#if it's not on, turn it on
@ -156,7 +151,7 @@ class GeClimate(GeEntity, ClimateEntity):
_LOGGER.debug(f"Setting Fan mode from {self.fan_mode} to {fan_mode}")
if fan_mode != self.fan_mode:
converter = (self._fan_only_fan_mode_converter
if self.hvac_mode == HVAC_MODE_FAN_ONLY
if self.hvac_mode == HVACMode.FAN_ONLY
else self._fan_mode_converter
)
@ -185,7 +180,7 @@ class GeClimate(GeEntity, ClimateEntity):
await self.appliance.async_set_erd_value(self.power_status_erd_code, ErdOnOff.OFF)
def _convert_temp(self, temperature_f: int):
if self.temperature_unit == TEMP_FAHRENHEIT:
if self.temperature_unit == UnitOfTemperature.FAHRENHEIT:
return float(temperature_f)
else:
return (temperature_f - 32.0) * (5/9)

View File

@ -5,7 +5,7 @@ from homeassistant.components.number import (
NumberEntity,
NumberDeviceClass,
)
from homeassistant.const import TEMP_FAHRENHEIT
from homeassistant.const import UnitOfTemperature
from gehomesdk import ErdCodeType, ErdCodeClass
from .ge_erd_entity import GeErdEntity
from ...devices import ApplianceApi
@ -91,7 +91,7 @@ class GeErdNumber(GeErdEntity, NumberEntity):
#NOTE: it appears that the API only sets temperature in Fahrenheit,
#so we'll hard code this UOM instead of using the device configured
#settings
return TEMP_FAHRENHEIT
return UnitOfTemperature.FAHRENHEIT
return None

View File

@ -1,17 +1,9 @@
import logging
from typing import Optional
from gehomesdk.erd.erd_data_type import ErdDataType
from homeassistant.components.sensor import SensorEntity, SensorStateClass
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity, SensorStateClass
from homeassistant.const import (
DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_POWER_FACTOR,
DEVICE_CLASS_HUMIDITY,
TEMP_FAHRENHEIT,
)
from homeassistant.const import UnitOfTemperature
from gehomesdk import ErdCodeType, ErdCodeClass
from .ge_erd_entity import GeErdEntity
from ...devices import ApplianceApi
@ -76,8 +68,8 @@ class GeErdSensor(GeErdEntity, SensorEntity):
return self.api.hass.config.units.temperature_unit
#if self._measurement_system == ErdMeasurementUnits.METRIC:
# return TEMP_CELSIUS
#return TEMP_FAHRENHEIT
# return UnitOfTemperature.CELSIUS
#return UnitOfTemperature.FAHRENHEIT
def _convert_numeric_value_from_device(self, value):
"""Convert to expected data type"""
@ -97,20 +89,20 @@ class GeErdSensor(GeErdEntity, SensorEntity):
if (
self.erd_code_class
in [ErdCodeClass.RAW_TEMPERATURE, ErdCodeClass.NON_ZERO_TEMPERATURE]
or self.device_class == DEVICE_CLASS_TEMPERATURE
or self.device_class == SensorDeviceClass.TEMPERATURE
):
#NOTE: it appears that the API only sets temperature in Fahrenheit,
#so we'll hard code this UOM instead of using the device configured
#settings
return TEMP_FAHRENHEIT
return UnitOfTemperature.FAHRENHEIT
if (
self.erd_code_class == ErdCodeClass.BATTERY
or self.device_class == DEVICE_CLASS_BATTERY
or self.device_class == SensorDeviceClass.BATTERY
):
return "%"
if self.erd_code_class == ErdCodeClass.PERCENTAGE:
return "%"
if self.device_class == DEVICE_CLASS_POWER_FACTOR:
if self.device_class == SensorDeviceClass.POWER_FACTOR:
return "%"
if self.erd_code_class == ErdCodeClass.HUMIDITY:
return "%"
@ -131,15 +123,15 @@ class GeErdSensor(GeErdEntity, SensorEntity):
ErdCodeClass.RAW_TEMPERATURE,
ErdCodeClass.NON_ZERO_TEMPERATURE,
]:
return DEVICE_CLASS_TEMPERATURE
return SensorDeviceClass.TEMPERATURE
if self.erd_code_class == ErdCodeClass.BATTERY:
return DEVICE_CLASS_BATTERY
return SensorDeviceClass.BATTERY
if self.erd_code_class == ErdCodeClass.POWER:
return DEVICE_CLASS_POWER
return SensorDeviceClass.POWER
if self.erd_code_class == ErdCodeClass.ENERGY:
return DEVICE_CLASS_ENERGY
return SensorDeviceClass.ENERGY
if self.erd_code_class == ErdCodeClass.HUMIDITY:
return DEVICE_CLASS_HUMIDITY
return SensorDeviceClass.HUMIDITY
return None
@ -147,7 +139,7 @@ class GeErdSensor(GeErdEntity, SensorEntity):
if self._state_class_override:
return self._state_class_override
if self.device_class in [DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_ENERGY]:
if self.device_class in [SensorDeviceClass.TEMPERATURE, SensorDeviceClass.ENERGY]:
return SensorStateClass.MEASUREMENT
if self.erd_code_class in [ErdCodeClass.FLOW_RATE, ErdCodeClass.PERCENTAGE, ErdCodeClass.HUMIDITY]:
return SensorStateClass.MEASUREMENT

View File

@ -3,10 +3,7 @@ import logging
from typing import Any, Dict, List, Optional
from homeassistant.components.water_heater import WaterHeaterEntity
from homeassistant.const import (
TEMP_FAHRENHEIT,
TEMP_CELSIUS
)
from homeassistant.const import UnitOfTemperature
from gehomesdk import ErdCode, ErdMeasurementUnits
from ...const import DOMAIN
from .ge_erd_entity import GeEntity
@ -37,8 +34,8 @@ class GeAbstractWaterHeater(GeEntity, WaterHeaterEntity, metaclass=abc.ABCMeta):
#It appears that the GE API is alwasy Fehrenheit
#measurement_system = self.appliance.get_erd_value(ErdCode.TEMPERATURE_UNIT)
#if measurement_system == ErdMeasurementUnits.METRIC:
# return TEMP_CELSIUS
return TEMP_FAHRENHEIT
# return UnitOfTemperature.CELSIUS
return UnitOfTemperature.FAHRENHEIT
@property
def supported_features(self):

View File

@ -1,10 +1,7 @@
from homeassistant.components.water_heater import (
SUPPORT_OPERATION_MODE,
SUPPORT_TARGET_TEMPERATURE
)
from homeassistant.components.water_heater import WaterHeaterEntityFeature
ATTR_DOOR_STATUS = "door_status"
GE_FRIDGE_SUPPORT = (SUPPORT_OPERATION_MODE | SUPPORT_TARGET_TEMPERATURE)
GE_FRIDGE_SUPPORT = (WaterHeaterEntityFeature.OPERATION_MODE | WaterHeaterEntityFeature.TARGET_TEMPERATURE)
HEATER_TYPE_FRIDGE = "fridge"
HEATER_TYPE_FREEZER = "freezer"

View File

@ -2,7 +2,7 @@ import logging
from typing import List, Any, Optional
from gehomesdk import ErdConvertableDrawerMode
from homeassistant.const import TEMP_FAHRENHEIT
from homeassistant.const import UnitOfTemperature
from homeassistant.util.unit_system import UnitSystem
from ..common import OptionsConverter
@ -43,7 +43,7 @@ class ConvertableDrawerModeOptionsConverter(OptionsConverter):
t = _TEMP_MAP.get(value, None)
if t and self._units.is_metric:
t = self._units.temperature(float(t), TEMP_FAHRENHEIT)
t = self._units.temperature(float(t), UnitOfTemperature.FAHRENHEIT)
t = round(t,1)
if t:

View File

@ -6,7 +6,7 @@ import abc
import logging
from typing import Any, Dict, List, Optional
from homeassistant.const import ATTR_TEMPERATURE, TEMP_FAHRENHEIT
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from homeassistant.util.unit_conversion import TemperatureConverter
from gehomesdk import (
ErdCode,
@ -117,7 +117,7 @@ class GeAbstractFridge(GeAbstractWaterHeater):
return getattr(self.setpoint_limits, f"{self.heater_type}_min")
except:
_LOGGER.debug("No temperature setpoint limits available. Using hardcoded limits.")
return TemperatureConverter.convert(self.temp_limits[f"{self.heater_type}_min"], TEMP_FAHRENHEIT, self.temperature_unit)
return TemperatureConverter.convert(self.temp_limits[f"{self.heater_type}_min"], UnitOfTemperature.FAHRENHEIT, self.temperature_unit)
@property
def max_temp(self):
@ -126,7 +126,7 @@ class GeAbstractFridge(GeAbstractWaterHeater):
return getattr(self.setpoint_limits, f"{self.heater_type}_max")
except:
_LOGGER.debug("No temperature setpoint limits available. Using hardcoded limits.")
return TemperatureConverter.convert(self.temp_limits[f"{self.heater_type}_max"], TEMP_FAHRENHEIT, self.temperature_unit)
return TemperatureConverter.convert(self.temp_limits[f"{self.heater_type}_max"], UnitOfTemperature.FAHRENHEIT, self.temperature_unit)
@property
def current_operation(self) -> str:

View File

@ -3,7 +3,7 @@
import logging
from typing import List, Optional, Dict, Any
from homeassistant.const import ATTR_TEMPERATURE, TEMP_FAHRENHEIT
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from homeassistant.util.unit_conversion import TemperatureConverter
from gehomesdk import (
@ -102,12 +102,12 @@ class GeDispenser(GeAbstractWaterHeater):
@property
def min_temp(self):
"""Return the minimum temperature."""
return TemperatureConverter.convert(self._min_temp, TEMP_FAHRENHEIT, self.temperature_unit)
return TemperatureConverter.convert(self._min_temp, UnitOfTemperature.FAHRENHEIT, self.temperature_unit)
@property
def max_temp(self):
"""Return the maximum temperature."""
return TemperatureConverter.convert(self._max_temp, TEMP_FAHRENHEIT, self.temperature_unit)
return TemperatureConverter.convert(self._max_temp, UnitOfTemperature.FAHRENHEIT, self.temperature_unit)
@property
def extra_state_attributes(self) -> Dict[str, Any]:

View File

@ -1,13 +1,10 @@
import bidict
from homeassistant.components.water_heater import (
SUPPORT_OPERATION_MODE,
SUPPORT_TARGET_TEMPERATURE
)
from homeassistant.components.water_heater import WaterHeaterEntityFeature
from gehomesdk import ErdOvenCookMode
SUPPORT_NONE = 0
GE_OVEN_SUPPORT = (SUPPORT_OPERATION_MODE | SUPPORT_TARGET_TEMPERATURE)
GE_OVEN_SUPPORT = (WaterHeaterEntityFeature.OPERATION_MODE | WaterHeaterEntityFeature.TARGET_TEMPERATURE)
OP_MODE_OFF = "Off"
OP_MODE_BAKE = "Bake"

View File

@ -10,7 +10,7 @@ from gehomesdk import (
OvenCookSetting
)
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from ...const import DOMAIN
from ...devices import ApplianceApi
from ..common import GeAbstractWaterHeater
@ -56,8 +56,8 @@ class GeOven(GeAbstractWaterHeater):
def temperature_unit(self):
measurement_system = self.appliance.get_erd_value(ErdCode.TEMPERATURE_UNIT)
if measurement_system == ErdMeasurementUnits.METRIC:
return TEMP_CELSIUS
return TEMP_FAHRENHEIT
return UnitOfTemperature.CELSIUS
return UnitOfTemperature.FAHRENHEIT
@property
def oven_select(self) -> str:
@ -155,7 +155,7 @@ class GeOven(GeAbstractWaterHeater):
target_temp = 0
elif self.target_temperature:
target_temp = self.target_temperature
elif self.temperature_unit == TEMP_FAHRENHEIT:
elif self.temperature_unit == UnitOfTemperature.FAHRENHEIT:
target_temp = 350
else:
target_temp = 177

View File

@ -7,12 +7,9 @@ from gehomesdk import (
ErdWaterHeaterMode
)
from homeassistant.components.water_heater import (
SUPPORT_OPERATION_MODE,
SUPPORT_TARGET_TEMPERATURE
)
from homeassistant.components.water_heater import WaterHeaterEntityFeature
from homeassistant.const import ATTR_TEMPERATURE, TEMP_FAHRENHEIT
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from ...devices import ApplianceApi
from ..common import GeAbstractWaterHeater
from .heater_modes import WhHeaterModeConverter
@ -34,11 +31,11 @@ class GeWaterHeater(GeAbstractWaterHeater):
@property
def supported_features(self):
return (SUPPORT_OPERATION_MODE | SUPPORT_TARGET_TEMPERATURE)
return (WaterHeaterEntityFeature.OPERATION_MODE | WaterHeaterEntityFeature.TARGET_TEMPERATURE)
@property
def temperature_unit(self):
return TEMP_FAHRENHEIT
return UnitOfTemperature.FAHRENHEIT
@property
def current_temperature(self) -> Optional[int]: