mirror of
https://github.com/home-assistant/core.git
synced 2025-04-19 06:47:51 +00:00
Use pyephember2 library in ephember (#140459)
* multiple homes support, all zones visible * Update homes and zones * set zone, target temp, curent temp, hot water type fixes * Hotwater devices added * Mode ajust * next version could be 0.4.4 * depricated climate feature removed ClimateEntityFeature * Migrate to pyephember2 * HEAT_COOL mode * Revert EPH_TO_HA_STATE to HEAT_COOL * homes and ember declaretion removed * cleaning try catch blocks, flatten list on zones * refactored * Version updated * try catch returned * pyephember2==0.4.12 * Update homeassistant/components/ephember/climate.py Co-authored-by: Martin Hjelmare <marhje52@gmail.com> * reverting unique_id and depricated vClimateEntityFeature.AUX_HEAT * Update homeassistant/components/ephember/climate.py Co-authored-by: Martin Hjelmare <marhje52@gmail.com> --------- Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
50796a6a77
commit
c96bb45940
2
CODEOWNERS
generated
2
CODEOWNERS
generated
@ -432,7 +432,7 @@ build.json @home-assistant/supervisor
|
||||
/homeassistant/components/entur_public_transport/ @hfurubotten
|
||||
/homeassistant/components/environment_canada/ @gwww @michaeldavie
|
||||
/tests/components/environment_canada/ @gwww @michaeldavie
|
||||
/homeassistant/components/ephember/ @ttroy50
|
||||
/homeassistant/components/ephember/ @ttroy50 @roberty99
|
||||
/homeassistant/components/epic_games_store/ @hacf-fr @Quentame
|
||||
/tests/components/epic_games_store/ @hacf-fr @Quentame
|
||||
/homeassistant/components/epion/ @lhgravendeel
|
||||
|
@ -6,13 +6,13 @@ from datetime import timedelta
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from pyephember.pyephember import (
|
||||
from pyephember2.pyephember2 import (
|
||||
EphEmber,
|
||||
ZoneMode,
|
||||
zone_current_temperature,
|
||||
zone_is_active,
|
||||
zone_is_boost_active,
|
||||
zone_is_hot_water,
|
||||
zone_is_hotwater,
|
||||
zone_mode,
|
||||
zone_name,
|
||||
zone_target_temperature,
|
||||
@ -69,14 +69,18 @@ def setup_platform(
|
||||
|
||||
try:
|
||||
ember = EphEmber(username, password)
|
||||
zones = ember.get_zones()
|
||||
for zone in zones:
|
||||
add_entities([EphEmberThermostat(ember, zone)])
|
||||
except RuntimeError:
|
||||
_LOGGER.error("Cannot connect to EphEmber")
|
||||
_LOGGER.error("Cannot login to EphEmber")
|
||||
|
||||
try:
|
||||
homes = ember.get_zones()
|
||||
except RuntimeError:
|
||||
_LOGGER.error("Fail to get zones")
|
||||
return
|
||||
|
||||
return
|
||||
add_entities(
|
||||
EphEmberThermostat(ember, zone) for home in homes for zone in home["zones"]
|
||||
)
|
||||
|
||||
|
||||
class EphEmberThermostat(ClimateEntity):
|
||||
@ -85,33 +89,35 @@ class EphEmberThermostat(ClimateEntity):
|
||||
_attr_hvac_modes = OPERATION_LIST
|
||||
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
|
||||
def __init__(self, ember, zone):
|
||||
def __init__(self, ember, zone) -> None:
|
||||
"""Initialize the thermostat."""
|
||||
self._ember = ember
|
||||
self._zone_name = zone_name(zone)
|
||||
self._zone = zone
|
||||
self._hot_water = zone_is_hot_water(zone)
|
||||
|
||||
# hot water = true, is immersive device without target temperature control.
|
||||
self._hot_water = zone_is_hotwater(zone)
|
||||
|
||||
self._attr_name = self._zone_name
|
||||
|
||||
self._attr_supported_features = (
|
||||
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.AUX_HEAT
|
||||
)
|
||||
self._attr_target_temperature_step = 0.5
|
||||
if self._hot_water:
|
||||
self._attr_supported_features = ClimateEntityFeature.AUX_HEAT
|
||||
self._attr_target_temperature_step = None
|
||||
self._attr_supported_features |= (
|
||||
ClimateEntityFeature.TURN_OFF | ClimateEntityFeature.TURN_ON
|
||||
)
|
||||
else:
|
||||
self._attr_target_temperature_step = 0.5
|
||||
self._attr_supported_features = (
|
||||
ClimateEntityFeature.TURN_OFF
|
||||
| ClimateEntityFeature.TURN_ON
|
||||
| ClimateEntityFeature.TARGET_TEMPERATURE
|
||||
)
|
||||
|
||||
@property
|
||||
def current_temperature(self):
|
||||
def current_temperature(self) -> float | None:
|
||||
"""Return the current temperature."""
|
||||
return zone_current_temperature(self._zone)
|
||||
|
||||
@property
|
||||
def target_temperature(self):
|
||||
def target_temperature(self) -> float | None:
|
||||
"""Return the temperature we try to reach."""
|
||||
return zone_target_temperature(self._zone)
|
||||
|
||||
@ -133,12 +139,12 @@ class EphEmberThermostat(ClimateEntity):
|
||||
"""Set the operation mode."""
|
||||
mode = self.map_mode_hass_eph(hvac_mode)
|
||||
if mode is not None:
|
||||
self._ember.set_mode_by_name(self._zone_name, mode)
|
||||
self._ember.set_zone_mode(self._zone["zoneid"], mode)
|
||||
else:
|
||||
_LOGGER.error("Invalid operation mode provided %s", hvac_mode)
|
||||
|
||||
@property
|
||||
def is_aux_heat(self):
|
||||
def is_aux_heat(self) -> bool:
|
||||
"""Return true if aux heater."""
|
||||
|
||||
return zone_is_boost_active(self._zone)
|
||||
@ -167,7 +173,7 @@ class EphEmberThermostat(ClimateEntity):
|
||||
if temperature > self.max_temp or temperature < self.min_temp:
|
||||
return
|
||||
|
||||
self._ember.set_target_temperture_by_name(self._zone_name, temperature)
|
||||
self._ember.set_zone_target_temperature(self._zone["zoneid"], temperature)
|
||||
|
||||
@property
|
||||
def min_temp(self):
|
||||
@ -188,7 +194,8 @@ class EphEmberThermostat(ClimateEntity):
|
||||
|
||||
def update(self) -> None:
|
||||
"""Get the latest data."""
|
||||
self._zone = self._ember.get_zone(self._zone_name)
|
||||
self._ember.get_zones()
|
||||
self._zone = self._ember.get_zone(self._zone["zoneid"])
|
||||
|
||||
@staticmethod
|
||||
def map_mode_hass_eph(operation_mode):
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"domain": "ephember",
|
||||
"name": "EPH Controls",
|
||||
"codeowners": ["@ttroy50"],
|
||||
"codeowners": ["@ttroy50", "@roberty99"],
|
||||
"documentation": "https://www.home-assistant.io/integrations/ephember",
|
||||
"iot_class": "local_polling",
|
||||
"loggers": ["pyephember"],
|
||||
"loggers": ["pyephember2"],
|
||||
"quality_scale": "legacy",
|
||||
"requirements": ["pyephember==0.3.1"]
|
||||
"requirements": ["pyephember2==0.4.12"]
|
||||
}
|
||||
|
2
requirements_all.txt
generated
2
requirements_all.txt
generated
@ -1957,7 +1957,7 @@ pyenphase==1.25.5
|
||||
pyenvisalink==4.7
|
||||
|
||||
# homeassistant.components.ephember
|
||||
pyephember==0.3.1
|
||||
pyephember2==0.4.12
|
||||
|
||||
# homeassistant.components.everlights
|
||||
pyeverlights==0.1.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user