Refactor vallox constants (#55456)
This commit is contained in:
parent
c4235edc41
commit
cbc68e45cd
4 changed files with 46 additions and 24 deletions
|
@ -1,6 +1,5 @@
|
|||
"""Support for Vallox ventilation units."""
|
||||
|
||||
from datetime import timedelta
|
||||
import ipaddress
|
||||
import logging
|
||||
|
||||
|
@ -15,19 +14,21 @@ from homeassistant.helpers.discovery import async_load_platform
|
|||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||
from homeassistant.helpers.event import async_track_time_interval
|
||||
|
||||
from .const import (
|
||||
DEFAULT_FAN_SPEED_AWAY,
|
||||
DEFAULT_FAN_SPEED_BOOST,
|
||||
DEFAULT_FAN_SPEED_HOME,
|
||||
DEFAULT_NAME,
|
||||
DOMAIN,
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_AWAY,
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_BOOST,
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_HOME,
|
||||
SIGNAL_VALLOX_STATE_UPDATE,
|
||||
STATE_PROXY_SCAN_INTERVAL,
|
||||
)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DOMAIN = "vallox"
|
||||
DEFAULT_NAME = "Vallox"
|
||||
SIGNAL_VALLOX_STATE_UPDATE = "vallox_state_update"
|
||||
SCAN_INTERVAL = timedelta(seconds=60)
|
||||
|
||||
# Various metric keys that are reused between profiles.
|
||||
METRIC_KEY_MODE = "A_CYC_MODE"
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_HOME = "A_CYC_HOME_SPEED_SETTING"
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_AWAY = "A_CYC_AWAY_SPEED_SETTING"
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_BOOST = "A_CYC_BOOST_SPEED_SETTING"
|
||||
|
||||
CONFIG_SCHEMA = vol.Schema(
|
||||
{
|
||||
DOMAIN: vol.Schema(
|
||||
|
@ -93,10 +94,6 @@ SERVICE_TO_METHOD = {
|
|||
},
|
||||
}
|
||||
|
||||
DEFAULT_FAN_SPEED_HOME = 50
|
||||
DEFAULT_FAN_SPEED_AWAY = 25
|
||||
DEFAULT_FAN_SPEED_BOOST = 65
|
||||
|
||||
|
||||
async def async_setup(hass, config):
|
||||
"""Set up the client and boot the platforms."""
|
||||
|
@ -126,7 +123,7 @@ async def async_setup(hass, config):
|
|||
hass.async_create_task(async_load_platform(hass, "sensor", DOMAIN, {}, config))
|
||||
hass.async_create_task(async_load_platform(hass, "fan", DOMAIN, {}, config))
|
||||
|
||||
async_track_time_interval(hass, state_proxy.async_update, SCAN_INTERVAL)
|
||||
async_track_time_interval(hass, state_proxy.async_update, STATE_PROXY_SCAN_INTERVAL)
|
||||
|
||||
return True
|
||||
|
||||
|
@ -218,7 +215,7 @@ class ValloxServiceHandler:
|
|||
async def async_set_profile_fan_speed_away(
|
||||
self, fan_speed: int = DEFAULT_FAN_SPEED_AWAY
|
||||
) -> bool:
|
||||
"""Set the fan speed in percent for the Home profile."""
|
||||
"""Set the fan speed in percent for the Away profile."""
|
||||
_LOGGER.debug("Setting Away fan speed to: %d%%", fan_speed)
|
||||
|
||||
try:
|
||||
|
|
22
homeassistant/components/vallox/const.py
Normal file
22
homeassistant/components/vallox/const.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
"""Constants for the Vallox integration."""
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
DOMAIN = "vallox"
|
||||
DEFAULT_NAME = "Vallox"
|
||||
|
||||
SIGNAL_VALLOX_STATE_UPDATE = "vallox_state_update"
|
||||
STATE_PROXY_SCAN_INTERVAL = timedelta(seconds=60)
|
||||
|
||||
# Common metric keys and (default) values.
|
||||
METRIC_KEY_MODE = "A_CYC_MODE"
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_HOME = "A_CYC_HOME_SPEED_SETTING"
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_AWAY = "A_CYC_AWAY_SPEED_SETTING"
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_BOOST = "A_CYC_BOOST_SPEED_SETTING"
|
||||
|
||||
MODE_ON = 0
|
||||
MODE_OFF = 5
|
||||
|
||||
DEFAULT_FAN_SPEED_HOME = 50
|
||||
DEFAULT_FAN_SPEED_AWAY = 25
|
||||
DEFAULT_FAN_SPEED_BOOST = 65
|
|
@ -6,12 +6,14 @@ from homeassistant.components.fan import FanEntity
|
|||
from homeassistant.core import callback
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
|
||||
from . import (
|
||||
from .const import (
|
||||
DOMAIN,
|
||||
METRIC_KEY_MODE,
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_AWAY,
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_BOOST,
|
||||
METRIC_KEY_PROFILE_FAN_SPEED_HOME,
|
||||
MODE_OFF,
|
||||
MODE_ON,
|
||||
SIGNAL_VALLOX_STATE_UPDATE,
|
||||
)
|
||||
|
||||
|
@ -109,7 +111,7 @@ class ValloxFan(FanEntity):
|
|||
try:
|
||||
# Fetch if the whole device is in regular operation state.
|
||||
mode = self._state_proxy.fetch_metric(METRIC_KEY_MODE)
|
||||
if mode == 0:
|
||||
if mode == MODE_ON:
|
||||
self._state = True
|
||||
else:
|
||||
self._state = False
|
||||
|
@ -161,7 +163,7 @@ class ValloxFan(FanEntity):
|
|||
|
||||
if self._state is False:
|
||||
try:
|
||||
await self._client.set_values({METRIC_KEY_MODE: 0})
|
||||
await self._client.set_values({METRIC_KEY_MODE: MODE_ON})
|
||||
|
||||
# This state change affects other entities like sensors. Force
|
||||
# an immediate update that can be observed by all parties
|
||||
|
@ -178,7 +180,7 @@ class ValloxFan(FanEntity):
|
|||
"""Turn the device off."""
|
||||
if self._state is True:
|
||||
try:
|
||||
await self._client.set_values({METRIC_KEY_MODE: 5})
|
||||
await self._client.set_values({METRIC_KEY_MODE: MODE_OFF})
|
||||
|
||||
# Same as for turn_on method.
|
||||
await self._state_proxy.async_update(None)
|
||||
|
|
|
@ -22,7 +22,8 @@ from homeassistant.const import (
|
|||
from homeassistant.core import callback
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
|
||||
from . import DOMAIN, METRIC_KEY_MODE, SIGNAL_VALLOX_STATE_UPDATE, ValloxStateProxy
|
||||
from . import ValloxStateProxy
|
||||
from .const import DOMAIN, METRIC_KEY_MODE, MODE_ON, SIGNAL_VALLOX_STATE_UPDATE
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -101,7 +102,7 @@ class ValloxFanSpeedSensor(ValloxSensor):
|
|||
"""Fetch state from the ventilation unit."""
|
||||
try:
|
||||
# If device is in regular operation, continue.
|
||||
if self._state_proxy.fetch_metric(METRIC_KEY_MODE) == 0:
|
||||
if self._state_proxy.fetch_metric(METRIC_KEY_MODE) == MODE_ON:
|
||||
await super().async_update()
|
||||
else:
|
||||
# Report zero percent otherwise.
|
||||
|
|
Loading…
Add table
Reference in a new issue