Skip to content

Commit

Permalink
- added support for split AC devices
Browse files Browse the repository at this point in the history
  • Loading branch information
simbaja committed Aug 8, 2021
1 parent ceb24a8 commit 2cc5f3a
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 2 deletions.
3 changes: 3 additions & 0 deletions custom_components/ge_home/devices/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from .water_filter import WaterFilterApi
from .advantium import AdvantiumApi
from .wac import WacApi
from .sac import SacApi

_LOGGER = logging.getLogger(__name__)

Expand All @@ -38,6 +39,8 @@ def get_appliance_api_type(appliance_type: ErdApplianceType) -> Type:
return AdvantiumApi
if appliance_type == ErdApplianceType.AIR_CONDITIONER:
return WacApi
if appliance_type == ErdApplianceType.SPLIT_AIR_CONDITIONER:
return SacApi

# Fallback
return ApplianceApi
37 changes: 37 additions & 0 deletions custom_components/ge_home/devices/sac.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import logging
from typing import List

from homeassistant.helpers.entity import Entity
from gehomesdk.erd import ErdCode, ErdApplianceType

from .base import ApplianceApi
from ..entities import GeSacClimate, GeErdSensor, GeErdBinarySensor, GeErdSwitch, ErdOnOffBoolConverter

_LOGGER = logging.getLogger(__name__)


class SacApi(ApplianceApi):
"""API class for Split AC objects"""
APPLIANCE_TYPE = ErdApplianceType.SPLIT_AIR_CONDITIONER

def get_all_entities(self) -> List[Entity]:
base_entities = super().get_all_entities()

sac_entities = [
GeSacClimate(self),
GeErdSensor(self, ErdCode.AC_TARGET_TEMPERATURE),
GeErdSensor(self, ErdCode.AC_AMBIENT_TEMPERATURE),
GeErdSensor(self, ErdCode.AC_FAN_SETTING, icon_override="mdi:fan"),
GeErdSensor(self, ErdCode.AC_OPERATION_MODE),
GeErdSwitch(self, ErdCode.AC_POWER_STATUS, bool_converter=ErdOnOffBoolConverter(), icon_on_override="mdi:power-on", icon_off_override="mdi:power-off"),
]

if self.has_erd_code(ErdCode.SAC_SLEEP_MODE):
GeErdSwitch(self, ErdCode.SAC_SLEEP_MODE, bool_converter=ErdOnOffBoolConverter(), icon_on_override="mdi:sleep", icon_off_override="mdi:sleep-off"),
if self.has_erd_code(ErdCode.SAC_AUTO_SWING_MODE):
GeErdSwitch(self, ErdCode.SAC_AUTO_SWING_MODE, bool_converter=ErdOnOffBoolConverter(), icon_on_override="mdi:arrow-decision-auto", icon_off_override="mdi:arrow-decision-auto-outline"),


entities = base_entities + sac_entities
return entities

2 changes: 1 addition & 1 deletion custom_components/ge_home/devices/wac.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@


class WacApi(ApplianceApi):
"""API class for window AC objects"""
"""API class for Window AC objects"""
APPLIANCE_TYPE = ErdApplianceType.AIR_CONDITIONER

def get_all_entities(self) -> List[Entity]:
Expand Down
3 changes: 2 additions & 1 deletion custom_components/ge_home/entities/ac/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from .ge_wac_climate import GeWacClimate
from .ge_wac_climate import GeWacClimate
from .ge_sac_climate import GeSacClimate

0 comments on commit 2cc5f3a

Please sign in to comment.