mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Fix Plugwise climate issues (#31209)
* Fix Plugwise climate issues * Remove showing None-state for available_schemas, as requested by reviewer.
This commit is contained in:
parent
89ae255de7
commit
61a8618010
@ -13,6 +13,7 @@ from homeassistant.components.climate.const import (
|
|||||||
HVAC_MODE_AUTO,
|
HVAC_MODE_AUTO,
|
||||||
HVAC_MODE_HEAT,
|
HVAC_MODE_HEAT,
|
||||||
HVAC_MODE_HEAT_COOL,
|
HVAC_MODE_HEAT_COOL,
|
||||||
|
HVAC_MODE_OFF,
|
||||||
SUPPORT_PRESET_MODE,
|
SUPPORT_PRESET_MODE,
|
||||||
SUPPORT_TARGET_TEMPERATURE,
|
SUPPORT_TARGET_TEMPERATURE,
|
||||||
)
|
)
|
||||||
@ -66,7 +67,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
|
|
||||||
|
|
||||||
def setup_platform(hass, config, add_entities, discovery_info=None):
|
def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
"""Add the Plugwise (Anna) Thermostate."""
|
"""Add the Plugwise (Anna) Thermostat."""
|
||||||
api = haanna.Haanna(
|
api = haanna.Haanna(
|
||||||
config[CONF_USERNAME],
|
config[CONF_USERNAME],
|
||||||
config[CONF_PASSWORD],
|
config[CONF_PASSWORD],
|
||||||
@ -88,7 +89,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
|
|
||||||
|
|
||||||
class ThermostatDevice(ClimateDevice):
|
class ThermostatDevice(ClimateDevice):
|
||||||
"""Representation of an Plugwise thermostat."""
|
"""Representation of the Plugwise thermostat."""
|
||||||
|
|
||||||
def __init__(self, api, name, min_temp, max_temp):
|
def __init__(self, api, name, min_temp, max_temp):
|
||||||
"""Set up the Plugwise API."""
|
"""Set up the Plugwise API."""
|
||||||
@ -96,14 +97,18 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
self._min_temp = min_temp
|
self._min_temp = min_temp
|
||||||
self._max_temp = max_temp
|
self._max_temp = max_temp
|
||||||
self._name = name
|
self._name = name
|
||||||
|
self._direct_objects = None
|
||||||
self._domain_objects = None
|
self._domain_objects = None
|
||||||
self._outdoor_temperature = None
|
self._outdoor_temperature = None
|
||||||
self._selected_schema = None
|
self._selected_schema = None
|
||||||
|
self._last_active_schema = None
|
||||||
self._preset_mode = None
|
self._preset_mode = None
|
||||||
self._presets = None
|
self._presets = None
|
||||||
self._presets_list = None
|
self._presets_list = None
|
||||||
|
self._boiler_status = None
|
||||||
self._heating_status = None
|
self._heating_status = None
|
||||||
self._cooling_status = None
|
self._cooling_status = None
|
||||||
|
self._dhw_status = None
|
||||||
self._schema_names = None
|
self._schema_names = None
|
||||||
self._schema_status = None
|
self._schema_status = None
|
||||||
self._current_temperature = None
|
self._current_temperature = None
|
||||||
@ -115,8 +120,8 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_action(self):
|
def hvac_action(self):
|
||||||
"""Return the current action."""
|
"""Return the current hvac action."""
|
||||||
if self._heating_status:
|
if self._heating_status or self._boiler_status or self._dhw_status:
|
||||||
return CURRENT_HVAC_HEAT
|
return CURRENT_HVAC_HEAT
|
||||||
if self._cooling_status:
|
if self._cooling_status:
|
||||||
return CURRENT_HVAC_COOL
|
return CURRENT_HVAC_COOL
|
||||||
@ -143,7 +148,9 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
attributes = {}
|
attributes = {}
|
||||||
if self._outdoor_temperature:
|
if self._outdoor_temperature:
|
||||||
attributes["outdoor_temperature"] = self._outdoor_temperature
|
attributes["outdoor_temperature"] = self._outdoor_temperature
|
||||||
|
if self._schema_names:
|
||||||
attributes["available_schemas"] = self._schema_names
|
attributes["available_schemas"] = self._schema_names
|
||||||
|
if self._selected_schema:
|
||||||
attributes["selected_schema"] = self._selected_schema
|
attributes["selected_schema"] = self._selected_schema
|
||||||
if self._boiler_temperature:
|
if self._boiler_temperature:
|
||||||
attributes["boiler_temperature"] = self._boiler_temperature
|
attributes["boiler_temperature"] = self._boiler_temperature
|
||||||
@ -162,7 +169,7 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
@property
|
@property
|
||||||
def hvac_modes(self):
|
def hvac_modes(self):
|
||||||
"""Return the available hvac modes list."""
|
"""Return the available hvac modes list."""
|
||||||
if self._heating_status is not None:
|
if self._heating_status is not None or self._boiler_status is not None:
|
||||||
if self._cooling_status is not None:
|
if self._cooling_status is not None:
|
||||||
return HVAC_MODES_2
|
return HVAC_MODES_2
|
||||||
return HVAC_MODES_1
|
return HVAC_MODES_1
|
||||||
@ -173,11 +180,11 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
"""Return current active hvac state."""
|
"""Return current active hvac state."""
|
||||||
if self._schema_status:
|
if self._schema_status:
|
||||||
return HVAC_MODE_AUTO
|
return HVAC_MODE_AUTO
|
||||||
if self._heating_status:
|
if self._heating_status or self._boiler_status or self._dhw_status:
|
||||||
if self._cooling_status:
|
if self._cooling_status:
|
||||||
return HVAC_MODE_HEAT_COOL
|
return HVAC_MODE_HEAT_COOL
|
||||||
return HVAC_MODE_HEAT
|
return HVAC_MODE_HEAT
|
||||||
return None
|
return HVAC_MODE_OFF
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def target_temperature(self):
|
def target_temperature(self):
|
||||||
@ -193,9 +200,9 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
def preset_mode(self):
|
def preset_mode(self):
|
||||||
"""Return the active selected schedule-name.
|
"""Return the active selected schedule-name.
|
||||||
|
|
||||||
Or return the active preset, or return Temporary in case of a manual change
|
Or, return the active preset, or return Temporary in case of a manual change
|
||||||
in the set-temperature with a weekschedule active,
|
in the set-temperature with a weekschedule active.
|
||||||
or return Manual in case of a manual change and no weekschedule active.
|
Or return Manual in case of a manual change and no weekschedule active.
|
||||||
"""
|
"""
|
||||||
if self._presets:
|
if self._presets:
|
||||||
presets = self._presets
|
presets = self._presets
|
||||||
@ -248,7 +255,7 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
if hvac_mode == HVAC_MODE_AUTO:
|
if hvac_mode == HVAC_MODE_AUTO:
|
||||||
schema_mode = "true"
|
schema_mode = "true"
|
||||||
self._api.set_schema_state(
|
self._api.set_schema_state(
|
||||||
self._domain_objects, self._selected_schema, schema_mode
|
self._domain_objects, self._last_active_schema, schema_mode
|
||||||
)
|
)
|
||||||
|
|
||||||
def set_preset_mode(self, preset_mode):
|
def set_preset_mode(self, preset_mode):
|
||||||
@ -259,16 +266,22 @@ class ThermostatDevice(ClimateDevice):
|
|||||||
def update(self):
|
def update(self):
|
||||||
"""Update the data from the thermostat."""
|
"""Update the data from the thermostat."""
|
||||||
_LOGGER.debug("Update called")
|
_LOGGER.debug("Update called")
|
||||||
|
self._direct_objects = self._api.get_direct_objects()
|
||||||
self._domain_objects = self._api.get_domain_objects()
|
self._domain_objects = self._api.get_domain_objects()
|
||||||
self._outdoor_temperature = self._api.get_outdoor_temperature(
|
self._outdoor_temperature = self._api.get_outdoor_temperature(
|
||||||
self._domain_objects
|
self._domain_objects
|
||||||
)
|
)
|
||||||
self._selected_schema = self._api.get_active_schema_name(self._domain_objects)
|
self._selected_schema = self._api.get_active_schema_name(self._domain_objects)
|
||||||
|
self._last_active_schema = self._api.get_last_active_schema_name(
|
||||||
|
self._domain_objects
|
||||||
|
)
|
||||||
self._preset_mode = self._api.get_current_preset(self._domain_objects)
|
self._preset_mode = self._api.get_current_preset(self._domain_objects)
|
||||||
self._presets = self._api.get_presets(self._domain_objects)
|
self._presets = self._api.get_presets(self._domain_objects)
|
||||||
self._presets_list = list(self._api.get_presets(self._domain_objects))
|
self._presets_list = list(self._api.get_presets(self._domain_objects))
|
||||||
self._heating_status = self._api.get_heating_status(self._domain_objects)
|
self._boiler_status = self._api.get_boiler_status(self._direct_objects)
|
||||||
self._cooling_status = self._api.get_cooling_status(self._domain_objects)
|
self._heating_status = self._api.get_heating_status(self._direct_objects)
|
||||||
|
self._cooling_status = self._api.get_cooling_status(self._direct_objects)
|
||||||
|
self._dhw_status = self._api.get_domestic_hot_water_status(self._direct_objects)
|
||||||
self._schema_names = self._api.get_schema_names(self._domain_objects)
|
self._schema_names = self._api.get_schema_names(self._domain_objects)
|
||||||
self._schema_status = self._api.get_schema_state(self._domain_objects)
|
self._schema_status = self._api.get_schema_state(self._domain_objects)
|
||||||
self._current_temperature = self._api.get_current_temperature(
|
self._current_temperature = self._api.get_current_temperature(
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
"documentation": "https://www.home-assistant.io/integrations/plugwise",
|
"documentation": "https://www.home-assistant.io/integrations/plugwise",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": ["@laetificat", "@CoMPaTech", "@bouwew"],
|
"codeowners": ["@laetificat", "@CoMPaTech", "@bouwew"],
|
||||||
"requirements": ["haanna==0.13.5"]
|
"requirements": ["haanna==0.14.1"]
|
||||||
}
|
}
|
||||||
|
@ -640,7 +640,7 @@ ha-ffmpeg==2.0
|
|||||||
ha-philipsjs==0.0.8
|
ha-philipsjs==0.0.8
|
||||||
|
|
||||||
# homeassistant.components.plugwise
|
# homeassistant.components.plugwise
|
||||||
haanna==0.13.5
|
haanna==0.14.1
|
||||||
|
|
||||||
# homeassistant.components.habitica
|
# homeassistant.components.habitica
|
||||||
habitipy==0.2.0
|
habitipy==0.2.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user