1 """OpenEnergyMonitor Thermostat Support."""
3 from __future__
import annotations
7 from oemthermostat
import Thermostat
9 import voluptuous
as vol
12 PLATFORM_SCHEMA
as CLIMATE_PLATFORM_SCHEMA,
32 PLATFORM_SCHEMA = CLIMATE_PLATFORM_SCHEMA.extend(
34 vol.Required(CONF_HOST): cv.string,
35 vol.Optional(CONF_NAME, default=
"Thermostat"): cv.string,
36 vol.Optional(CONF_PORT, default=80): cv.port,
37 vol.Inclusive(CONF_USERNAME,
"authentication"): cv.string,
38 vol.Inclusive(CONF_PASSWORD,
"authentication"): cv.string,
42 SUPPORT_HVAC = [HVACMode.AUTO, HVACMode.HEAT, HVACMode.OFF]
48 add_entities: AddEntitiesCallback,
49 discovery_info: DiscoveryInfoType |
None =
None,
51 """Set up the oemthermostat platform."""
52 name = config.get(CONF_NAME)
53 host = config.get(CONF_HOST)
54 port = config.get(CONF_PORT)
55 username = config.get(CONF_USERNAME)
56 password = config.get(CONF_PASSWORD)
59 therm = Thermostat(host, port=port, username=username, password=password)
60 except (ValueError, AssertionError, requests.RequestException):
67 """Interface class for the oemthermostat module."""
69 _attr_hvac_modes = SUPPORT_HVAC
70 _attr_supported_features = (
71 ClimateEntityFeature.TARGET_TEMPERATURE
72 | ClimateEntityFeature.TURN_OFF
73 | ClimateEntityFeature.TURN_ON
75 _attr_temperature_unit = UnitOfTemperature.CELSIUS
76 _enable_turn_on_off_backwards_compatibility =
False
79 """Initialize the device."""
91 """Return hvac operation ie. heat, cool mode.
93 Need to be one of HVAC_MODE_*.
95 if self.
_mode_mode == 2:
97 if self.
_mode_mode == 1:
103 """Return the name of this Thermostat."""
104 return self.
_name_name
108 """Return current hvac i.e. heat, cool, idle."""
109 if not self.
_mode_mode:
110 return HVACAction.OFF
112 return HVACAction.HEATING
113 return HVACAction.IDLE
117 """Return the current temperature."""
122 """Return the temperature we try to reach."""
126 """Set new target hvac mode."""
127 if hvac_mode == HVACMode.AUTO:
129 elif hvac_mode == HVACMode.HEAT:
131 elif hvac_mode == HVACMode.OFF:
135 """Set the temperature."""
136 temp = kwargs.get(ATTR_TEMPERATURE)
140 """Update local state."""
def target_temperature(self)
HVACAction hvac_action(self)
None set_hvac_mode(self, HVACMode hvac_mode)
None set_temperature(self, **Any kwargs)
def __init__(self, thermostat, name)
def current_temperature(self)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)