Skip to content

Commit

Permalink
- added convertable drawer to fridge
Browse files Browse the repository at this point in the history
  • Loading branch information
simbaja committed Oct 9, 2021
1 parent 16a5a89 commit 64c92d3
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 7 deletions.
17 changes: 11 additions & 6 deletions custom_components/ge_home/devices/fridge.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from custom_components.ge_home.entities.common.bool_converter import ErdOnOffBoolConverter
from homeassistant.components.binary_sensor import DEVICE_CLASS_PROBLEM
from homeassistant.const import DEVICE_CLASS_TEMPERATURE
import logging
Expand All @@ -14,19 +13,23 @@
IceMakerControlStatus,
ErdFilterStatus,
HotWaterStatus,
FridgeModelInfo
FridgeModelInfo,
ErdConvertableDrawerMode
)

from .base import ApplianceApi
from ..entities import (
ErdOnOffBoolConverter,
GeErdSensor,
GeErdBinarySensor,
GeErdSwitch,
GeErdSelect,
GeFridge,
GeFreezer,
GeDispenser,
GeErdPropertySensor,
GeErdPropertyBinarySensor
GeErdPropertyBinarySensor,
ConvertableDrawerModeOptionsConverter
)

_LOGGER = logging.getLogger(__name__)
Expand All @@ -50,11 +53,11 @@ def get_all_entities(self) -> List[Entity]:
air_filter: ErdFilterStatus = self.try_get_erd_value(ErdCode.AIR_FILTER_STATUS)
hot_water_status: HotWaterStatus = self.try_get_erd_value(ErdCode.HOT_WATER_STATUS)
fridge_model_info: FridgeModelInfo = self.try_get_erd_value(ErdCode.FRIDGE_MODEL_INFO)

convertable_drawer: ErdConvertableDrawerMode = self.try_get_erd_value(ErdCode.CONVERTABLE_DRAWER_MODE)

interior_light: int = self.try_get_erd_value(ErdCode.INTERIOR_LIGHT)
proximity_light: ErdOnOff = self.try_get_erd_value(ErdCode.PROXIMITY_LIGHT)


# Common entities
common_entities = [
GeErdSensor(self, ErdCode.FRIDGE_MODEL_INFO),
Expand Down Expand Up @@ -83,7 +86,9 @@ def get_all_entities(self) -> List[Entity]:
fridge_entities.append(GeErdSensor(self, ErdCode.INTERIOR_LIGHT))
if(proximity_light and proximity_light != ErdOnOff.NA):
fridge_entities.append(GeErdSwitch(self, ErdCode.PROXIMITY_LIGHT, ErdOnOffBoolConverter(), icon_on_override="mdi:lightbulb-on", icon_off_override="mdi:lightbulb"))

if(convertable_drawer and convertable_drawer != ErdConvertableDrawerMode.NA):
fridge_entities.append(GeErdSelect(self, ErdCode.CONVERTABLE_DRAWER_MODE, ConvertableDrawerModeOptionsConverter()))

# Freezer entities
if fridge_model_info is None or fridge_model_info.has_freezer:
freezer_entities.extend([
Expand Down
3 changes: 2 additions & 1 deletion custom_components/ge_home/entities/fridge/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .ge_fridge import GeFridge
from .ge_freezer import GeFreezer
from .ge_dispenser import GeDispenser
from .ge_dispenser import GeDispenser
from .convertable_drawer_mode_options import ConvertableDrawerModeOptionsConverter
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import logging
from typing import List, Any, Optional

from gehomesdk import ErdConvertableDrawerMode
from ..common import OptionsConverter

_LOGGER = logging.getLogger(__name__)

class ConvertableDrawerModeOptionsConverter(OptionsConverter):
def __init__(self):
super().__init__()
self._excluded_options = [
ErdConvertableDrawerMode.UNKNOWN0,
ErdConvertableDrawerMode.UNKNOWN1,
ErdConvertableDrawerMode.NA
]

@property
def options(self) -> List[str]:
return [i.stringify() for i in ErdConvertableDrawerMode if i not in self._excluded_options]
def from_option_string(self, value: str) -> Any:
try:
return ErdConvertableDrawerMode[value.upper()]
except:
_LOGGER.warn(f"Could not set hood light level to {value.upper()}")
return ErdConvertableDrawerMode.NA
def to_option_string(self, value: ErdConvertableDrawerMode) -> Optional[str]:
try:
if value is not None:
return value.stringify()
except:
pass
return ErdConvertableDrawerMode.NA.stringify()

0 comments on commit 64c92d3

Please sign in to comment.