46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
import logging
|
|
from typing import Any, List, Optional
|
|
|
|
from gehomesdk import ErdAcFanSetting
|
|
from ..common import OptionsConverter
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
class AcFanModeOptionsConverter(OptionsConverter):
|
|
def __init__(self, default_option: ErdAcFanSetting = ErdAcFanSetting.AUTO):
|
|
self._default = default_option
|
|
|
|
@property
|
|
def options(self) -> List[str]:
|
|
return [i.stringify() for i in [ErdAcFanSetting.AUTO, ErdAcFanSetting.LOW, ErdAcFanSetting.MED, ErdAcFanSetting.HIGH]]
|
|
|
|
def from_option_string(self, value: str) -> Any:
|
|
try:
|
|
return ErdAcFanSetting[value.upper().replace(" ","_")]
|
|
except:
|
|
_LOGGER.warning(f"Could not set fan mode to {value}")
|
|
return self._default
|
|
|
|
def to_option_string(self, value: Any) -> Optional[str]:
|
|
try:
|
|
return {
|
|
ErdAcFanSetting.AUTO: ErdAcFanSetting.AUTO,
|
|
ErdAcFanSetting.LOW: ErdAcFanSetting.LOW,
|
|
ErdAcFanSetting.LOW_AUTO: ErdAcFanSetting.AUTO,
|
|
ErdAcFanSetting.MED: ErdAcFanSetting.MED,
|
|
ErdAcFanSetting.MED_AUTO: ErdAcFanSetting.AUTO,
|
|
ErdAcFanSetting.HIGH: ErdAcFanSetting.HIGH,
|
|
ErdAcFanSetting.HIGH_AUTO: ErdAcFanSetting.HIGH
|
|
}.get(value).stringify()
|
|
except:
|
|
pass
|
|
return self._default.stringify()
|
|
|
|
class AcFanOnlyFanModeOptionsConverter(AcFanModeOptionsConverter):
|
|
def __init__(self):
|
|
super().__init__(ErdAcFanSetting.LOW)
|
|
|
|
@property
|
|
def options(self) -> List[str]:
|
|
return [i.stringify() for i in [ErdAcFanSetting.LOW, ErdAcFanSetting.MED, ErdAcFanSetting.HIGH]]
|