112 files
This commit is contained in:
1 parent
94867222bd
commit
b1fd0abc94
112 files changed
+11348
-2701
No files matched your search
@@ -69,6 +69,7 @@ from .feature_lock_manager import FeatureLockManager
|
||||
from .feature_timed_preset_manager import FeatureTimedPresetManager
|
||||
from .feature_heating_failure_detection_manager import FeatureHeatingFailureDetectionManager
|
||||
from .feature_repair_incorrect_state_manager import FeatureRepairIncorrectStateManager
|
||||
from .feature_humidity_manager import FeatureHumidityManager
|
||||
from .state_manager import StateManager
|
||||
from .vtherm_state import VThermState
|
||||
from .vtherm_preset import VThermPreset, HIDDEN_PRESETS, PRESET_AC_SUFFIX
|
||||
@@ -95,6 +96,7 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
.union(FeatureTimedPresetManager.unrecorded_attributes)
|
||||
.union(FeatureHeatingFailureDetectionManager.unrecorded_attributes)
|
||||
.union(FeatureRepairIncorrectStateManager.unrecorded_attributes)
|
||||
.union(FeatureHumidityManager.unrecorded_attributes)
|
||||
)
|
||||
|
||||
##
|
||||
@@ -139,7 +141,6 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
self._ac_mode = None
|
||||
|
||||
self._cur_temp = None
|
||||
|
||||
self._temp_sensor_entity_id = None
|
||||
self._last_seen_temp_sensor_entity_id = None
|
||||
self._ext_temp_sensor_entity_id = None
|
||||
@@ -230,6 +231,7 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
self._timed_preset_manager: FeatureTimedPresetManager = FeatureTimedPresetManager(self, hass)
|
||||
self._heating_failure_detection_manager: FeatureHeatingFailureDetectionManager = FeatureHeatingFailureDetectionManager(self, hass)
|
||||
self._repair_incorrect_state_manager: FeatureRepairIncorrectStateManager = FeatureRepairIncorrectStateManager(self, hass)
|
||||
self._humidity_manager: FeatureHumidityManager = FeatureHumidityManager(self, hass)
|
||||
|
||||
self.register_manager(self._presence_manager)
|
||||
self.register_manager(self._power_manager)
|
||||
@@ -240,6 +242,7 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
self.register_manager(self._timed_preset_manager)
|
||||
self.register_manager(self._heating_failure_detection_manager)
|
||||
self.register_manager(self._repair_incorrect_state_manager)
|
||||
self.register_manager(self._humidity_manager)
|
||||
|
||||
self._cancel_recalculate_later: Callable[[], None] | None = None
|
||||
|
||||
@@ -614,6 +617,11 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
if self.is_ready:
|
||||
await self.init_underlyings_completed()
|
||||
|
||||
@property
|
||||
def current_humidity(self) -> float | None:
|
||||
"""Return humidity supplied by the external humidity manager."""
|
||||
return self._humidity_manager.current_humidity
|
||||
|
||||
async def init_underlyings_completed(self, under_entity_id: Optional[str] = None):
|
||||
"""All underlyings have been initialized. Then we can finish our initialization"""
|
||||
_LOGGER.debug("%s - Calling init_underlyings_completed", self)
|
||||
@@ -1995,6 +2003,7 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
"last_central_mode": self.last_central_mode,
|
||||
"last_update_datetime": self.now.isoformat(),
|
||||
"ext_current_temperature": self._cur_ext_temp,
|
||||
"humidity_sensor_entity_id": self._humidity_manager.humidity_sensor_entity_id,
|
||||
"last_temperature_datetime": self._last_temperature_measure.astimezone(self._current_tz).isoformat(),
|
||||
"last_ext_temperature_datetime": self._last_ext_temperature_measure.astimezone(self._current_tz).isoformat(),
|
||||
"should_device_be_active": self.should_device_be_active,
|
||||
|
||||
@@ -24,6 +24,7 @@ from .const import * # pylint: disable=wildcard-import, unused-wildcard-import
|
||||
from .config_schema import * # pylint: disable=wildcard-import, unused-wildcard-import
|
||||
from .vtherm_central_api import VersatileThermostatAPI
|
||||
from .commons import check_and_extract_service_configuration
|
||||
from .humidity import find_humidity_sensor_candidates
|
||||
|
||||
COMES_FROM = "comes_from"
|
||||
PLUGINS_LINK_PLACEHOLDER = "plugins_link"
|
||||
@@ -209,6 +210,7 @@ class VersatileThermostatBaseConfigFlow(FlowHandler):
|
||||
for conf in [
|
||||
CONF_UNDERLYING_LIST,
|
||||
CONF_TEMP_SENSOR,
|
||||
CONF_HUMIDITY_SENSOR,
|
||||
CONF_EXTERNAL_TEMP_SENSOR,
|
||||
CONF_WINDOW_SENSOR,
|
||||
CONF_MOTION_SENSOR,
|
||||
@@ -254,6 +256,7 @@ class VersatileThermostatBaseConfigFlow(FlowHandler):
|
||||
CONF_USE_PRESENCE_CENTRAL_CONFIG,
|
||||
CONF_USE_PRESETS_CENTRAL_CONFIG,
|
||||
CONF_USE_ADVANCED_CENTRAL_CONFIG,
|
||||
CONF_USE_LOCK_CENTRAL_CONFIG,
|
||||
CONF_USE_CENTRAL_MODE,
|
||||
# CONF_USE_CENTRAL_BOILER_FEATURE, this is for Central Config
|
||||
CONF_USED_BY_CENTRAL_BOILER,
|
||||
@@ -283,15 +286,42 @@ class VersatileThermostatBaseConfigFlow(FlowHandler):
|
||||
if not self.check_sync_device_internal_temp_nb_entities(data, step_id):
|
||||
raise SyncDeviceInternalTempNbEntitiesIncorrect()
|
||||
|
||||
# Validate the min/max opening degrees control parameters.
|
||||
# This is shared between over_valve (step 'type': valves are the underlying
|
||||
# entities) and over_climate with valve regulation (step 'valve_regulation':
|
||||
# valves are the opening degree entities)
|
||||
valve_entities = data.get(CONF_OPENING_DEGREE_LIST) or data.get(
|
||||
CONF_UNDERLYING_LIST
|
||||
)
|
||||
self._validate_valve_control_parameters(data, valve_entities or [])
|
||||
|
||||
# These validations depend on the active configuration-flow step and
|
||||
# do not belong to the shared valve parameter validation.
|
||||
if (
|
||||
self._infos.get(CONF_THERMOSTAT_TYPE) == CONF_THERMOSTAT_SWITCH
|
||||
and step_id == "type"
|
||||
):
|
||||
if not self.check_vswitch_configuration(data):
|
||||
raise VirtualSwitchConfigurationIncorrect(CONF_VSWITCH_ON_CMD_LIST)
|
||||
|
||||
if data.get(CONF_LOCK_CODE) is not None:
|
||||
if not re.match(r"^\d{4}$", str(data.get(CONF_LOCK_CODE))):
|
||||
raise LockCodeIncorrect()
|
||||
|
||||
def _validate_valve_control_parameters(
|
||||
self, data: dict, valve_entities: list
|
||||
) -> None:
|
||||
"""Validate the valve control parameters (min/max opening degrees, cardinality).
|
||||
|
||||
Shared between over_valve (step 'type') and over_climate valve regulation
|
||||
(step 'valve_regulation'). Raises the ValveRegulation* exceptions.
|
||||
"""
|
||||
# Check that the min_opening_degrees is correctly set
|
||||
min_opening_degrees_list: list[int] = []
|
||||
raw_list = data.get(CONF_MIN_OPENING_DEGREES, None)
|
||||
min_opening_degrees_list = []
|
||||
if raw_list:
|
||||
try:
|
||||
# Validation : Convertir la liste saisie
|
||||
min_opening_degrees_list = [int(x.strip()) for x in raw_list.split(",")]
|
||||
|
||||
# Optionnel : Vérifiez des conditions supplémentaires sur la liste
|
||||
if any(x < 0 for x in min_opening_degrees_list):
|
||||
raise ValueError
|
||||
except ValueError as exc:
|
||||
@@ -300,46 +330,59 @@ class VersatileThermostatBaseConfigFlow(FlowHandler):
|
||||
) from exc
|
||||
|
||||
# Check that the max_opening_degrees is correctly set
|
||||
max_opening_degrees_list: list[int] = []
|
||||
raw_list = data.get(CONF_MAX_OPENING_DEGREES, None)
|
||||
max_opening_degrees_list = []
|
||||
if raw_list:
|
||||
try:
|
||||
# Validation : Convertir la liste saisie
|
||||
max_opening_degrees_list = [int(x.strip()) for x in raw_list.split(",")]
|
||||
|
||||
# Check that max opening degrees are <= the underlying valve max opening and > 0
|
||||
valves_entities = data.get(CONF_OPENING_DEGREE_LIST, [])
|
||||
if len(max_opening_degrees_list) > len(valve_entities):
|
||||
raise ValveRegulationCardinalityIncorrect(
|
||||
CONF_MAX_OPENING_DEGREES
|
||||
)
|
||||
# max opening degrees should be > 0 and <= the max of the underlying valve
|
||||
for valve_idx, valve_max in enumerate(max_opening_degrees_list):
|
||||
if valve_max <= 0 or valve_max > self.hass.states.get(valves_entities[valve_idx]).attributes.get("max", 100):
|
||||
valve_state = self.hass.states.get(valve_entities[valve_idx])
|
||||
if (
|
||||
valve_max <= 0
|
||||
or valve_state is None
|
||||
or valve_max > valve_state.attributes.get("max", 100)
|
||||
):
|
||||
raise ValueError
|
||||
except ValveRegulationCardinalityIncorrect:
|
||||
raise
|
||||
except ValueError as exc:
|
||||
raise ValveRegulationMaxOpeningDegreesIncorrect(
|
||||
CONF_MAX_OPENING_DEGREES
|
||||
) from exc
|
||||
|
||||
# Check that max_opening_degrees > min_opening_degrees for each underlying
|
||||
# If both lists exist, check that max > min for each index
|
||||
if min_opening_degrees_list and max_opening_degrees_list:
|
||||
# Get the number of underlyings to know how many values to check
|
||||
nb_underlyings = len(self._infos.get(CONF_UNDERLYING_LIST, []))
|
||||
for idx in range(nb_underlyings):
|
||||
min_val = min_opening_degrees_list[idx] if idx < len(min_opening_degrees_list) else 0
|
||||
max_val = max_opening_degrees_list[idx] if idx < len(max_opening_degrees_list) else 100
|
||||
# Check that the min/max lists don't contain more values than the number of valves
|
||||
# (the rule is now also applied to over_climate valve regulation)
|
||||
nb_valves = len(valve_entities or [])
|
||||
for lst in (min_opening_degrees_list, max_opening_degrees_list):
|
||||
if len(lst) > nb_valves:
|
||||
raise ValveRegulationCardinalityIncorrect(
|
||||
CONF_MIN_OPENING_DEGREES
|
||||
if lst is min_opening_degrees_list
|
||||
else CONF_MAX_OPENING_DEGREES
|
||||
)
|
||||
|
||||
if max_val <= min_val:
|
||||
raise ValveRegulationMinMaxOpeningDegreesIncorrect(
|
||||
CONF_MAX_OPENING_DEGREES
|
||||
)
|
||||
|
||||
# Check the VSWITCH configuration. There should be the same number of vswitch_on (resp. vswitch_off) than the number of underlying entity
|
||||
if self._infos.get(CONF_THERMOSTAT_TYPE) == CONF_THERMOSTAT_SWITCH and step_id == "type":
|
||||
if not self.check_vswitch_configuration(data):
|
||||
raise VirtualSwitchConfigurationIncorrect(CONF_VSWITCH_ON_CMD_LIST)
|
||||
|
||||
# Check the lock code format
|
||||
if data.get(CONF_LOCK_CODE) is not None:
|
||||
if not re.match(r"^\d{4}$", str(data.get(CONF_LOCK_CODE))):
|
||||
raise LockCodeIncorrect()
|
||||
# Check that max_opening_degrees > min_opening_degrees for each valve
|
||||
# (default values are 0 and 100 for indexes beyond the lists)
|
||||
for idx in range(nb_valves):
|
||||
min_val = (
|
||||
min_opening_degrees_list[idx]
|
||||
if idx < len(min_opening_degrees_list)
|
||||
else 0
|
||||
)
|
||||
max_val = (
|
||||
max_opening_degrees_list[idx]
|
||||
if idx < len(max_opening_degrees_list)
|
||||
else self.hass.states.get(valve_entities[idx]).attributes.get("max", 100)
|
||||
)
|
||||
if max_val <= min_val:
|
||||
raise ValveRegulationMinMaxOpeningDegreesIncorrect(
|
||||
CONF_MAX_OPENING_DEGREES
|
||||
)
|
||||
|
||||
def check_vswitch_configuration(self, data) -> bool:
|
||||
"""Check the Virtual switch configuration and return True if the configuration is correct"""
|
||||
@@ -506,6 +549,8 @@ class VersatileThermostatBaseConfigFlow(FlowHandler):
|
||||
errors[str(err)] = "max_opening_degrees_format"
|
||||
except ValveRegulationMinMaxOpeningDegreesIncorrect as err:
|
||||
errors[str(err)] = "min_max_opening_degrees_inconsistent"
|
||||
except ValveRegulationCardinalityIncorrect as err:
|
||||
errors[str(err)] = "valve_control_parameters_cardinality_incorrect"
|
||||
except VirtualSwitchConfigurationIncorrect as err:
|
||||
errors["base"] = "vswitch_configuration_incorrect"
|
||||
except LockCodeIncorrect:
|
||||
@@ -622,6 +667,8 @@ class VersatileThermostatBaseConfigFlow(FlowHandler):
|
||||
|
||||
menu_options.append("advanced")
|
||||
menu_options.append("lock")
|
||||
if not is_central_config:
|
||||
menu_options.append("humidity")
|
||||
|
||||
# Add heating failure detection menu if feature is enabled
|
||||
if self._infos.get(CONF_USE_HEATING_FAILURE_DETECTION_FEATURE, False) is True:
|
||||
@@ -795,6 +842,23 @@ class VersatileThermostatBaseConfigFlow(FlowHandler):
|
||||
|
||||
return await self.generic_step("sync_device_internal_temp", schema, user_input, next_step)
|
||||
|
||||
async def async_step_humidity(self, user_input: dict | None = None) -> FlowResult:
|
||||
"""Handle the optional external humidity sensor configuration."""
|
||||
_LOGGER.debug("Into ConfigFlow.async_step_humidity user_input=%s", user_input)
|
||||
|
||||
if user_input is not None and not user_input.get(CONF_USE_HUMIDITY_FEATURE):
|
||||
user_input = user_input.copy()
|
||||
user_input.pop(CONF_HUMIDITY_SENSOR, None)
|
||||
|
||||
candidates = find_humidity_sensor_candidates(self.hass, self._infos.get(CONF_TEMP_SENSOR))
|
||||
detected_sensor = candidates[0] if candidates else None
|
||||
self._placeholders["humidity_detected"] = detected_sensor or "none"
|
||||
schema = STEP_HUMIDITY_DATA_SCHEMA
|
||||
if user_input is None and self._infos.get(CONF_HUMIDITY_SENSOR) is None:
|
||||
schema = add_suggested_values_to_schema(schema, {CONF_HUMIDITY_SENSOR: detected_sensor})
|
||||
|
||||
return await self.generic_step("humidity", schema, user_input, self.async_step_menu)
|
||||
|
||||
async def async_step_tpi(self, user_input: dict | None = None) -> FlowResult:
|
||||
"""Handle the TPI flow steps"""
|
||||
_LOGGER.debug("Into ConfigFlow.async_step_tpi user_input=%s", user_input)
|
||||
|
||||
@@ -79,16 +79,20 @@ def build_step_thermostat_valve_schema() -> vol.Schema:
|
||||
return vol.Schema(
|
||||
{
|
||||
vol.Required(CONF_UNDERLYING_LIST): selector.EntitySelector(
|
||||
selector.EntitySelectorConfig(
|
||||
domain=[NUMBER_DOMAIN, INPUT_NUMBER_DOMAIN], multiple=True
|
||||
),
|
||||
),
|
||||
vol.Required(CONF_PROP_FUNCTION, default=PROPORTIONAL_FUNCTION_TPI): vol.In(
|
||||
get_prop_function_options()
|
||||
selector.EntitySelectorConfig(domain=[NUMBER_DOMAIN, INPUT_NUMBER_DOMAIN], multiple=True),
|
||||
),
|
||||
vol.Required(CONF_PROP_FUNCTION, default=PROPORTIONAL_FUNCTION_TPI): vol.In(get_prop_function_options()),
|
||||
vol.Optional(CONF_AC_MODE, default=False): cv.boolean,
|
||||
vol.Optional(CONF_AUTO_REGULATION_DTEMP, default=10): vol.Coerce(float),
|
||||
vol.Optional(CONF_AUTO_REGULATION_PERIOD_MIN, default=5): cv.positive_int,
|
||||
vol.Optional(CONF_OPENING_THRESHOLD_DEGREE, default=0): vol.All(
|
||||
cv.positive_int, vol.Range(min=0, max=100)
|
||||
),
|
||||
vol.Optional(CONF_MIN_OPENING_DEGREES, default=""): str,
|
||||
vol.Optional(CONF_MAX_OPENING_DEGREES, default=""): str,
|
||||
vol.Optional(CONF_MAX_CLOSING_DEGREE, default=100): vol.All(
|
||||
cv.positive_int, vol.Range(min=0, max=100)
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -106,10 +110,14 @@ def build_step_valve_regulation_schema() -> vol.Schema:
|
||||
vol.Required(CONF_PROP_FUNCTION, default=PROPORTIONAL_FUNCTION_TPI): vol.In(
|
||||
get_prop_function_options()
|
||||
),
|
||||
vol.Optional(CONF_OPENING_THRESHOLD_DEGREE, default=0): cv.positive_int,
|
||||
vol.Optional(CONF_OPENING_THRESHOLD_DEGREE, default=0): vol.All(
|
||||
cv.positive_int, vol.Range(min=0, max=100)
|
||||
),
|
||||
vol.Optional(CONF_MIN_OPENING_DEGREES, default=""): str,
|
||||
vol.Optional(CONF_MAX_OPENING_DEGREES, default=""): str,
|
||||
vol.Optional(CONF_MAX_CLOSING_DEGREE, default=100): cv.positive_int,
|
||||
vol.Optional(CONF_MAX_CLOSING_DEGREE, default=100): vol.All(
|
||||
cv.positive_int, vol.Range(min=0, max=100)
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -286,6 +294,15 @@ STEP_SYNC_DEVICE_INTERNAL_TEMP = vol.Schema( # pylint: disable=invalid-name
|
||||
}
|
||||
)
|
||||
|
||||
STEP_HUMIDITY_DATA_SCHEMA = vol.Schema( # pylint: disable=invalid-name
|
||||
{
|
||||
vol.Required(CONF_USE_HUMIDITY_FEATURE, default=False): cv.boolean,
|
||||
vol.Optional(CONF_HUMIDITY_SENSOR): selector.EntitySelector(
|
||||
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN, NUMBER_DOMAIN]),
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
STEP_TPI_DATA_SCHEMA = vol.Schema( # pylint: disable=invalid-name
|
||||
{
|
||||
vol.Required(CONF_USE_TPI_CENTRAL_CONFIG, default=True): cv.boolean,
|
||||
|
||||
@@ -63,6 +63,8 @@ PLATFORMS: list[Platform] = [
|
||||
CONF_UNDERLYING_LIST = "underlying_entity_ids"
|
||||
CONF_HEATER_KEEP_ALIVE = "heater_keep_alive"
|
||||
CONF_TEMP_SENSOR = "temperature_sensor_entity_id"
|
||||
CONF_HUMIDITY_SENSOR = "humidity_sensor_entity_id"
|
||||
CONF_USE_HUMIDITY_FEATURE = "use_humidity_feature"
|
||||
CONF_LAST_SEEN_TEMP_SENSOR = "last_seen_temperature_sensor_entity_id"
|
||||
CONF_EXTERNAL_TEMP_SENSOR = "external_temperature_sensor_entity_id"
|
||||
CONF_POWER_SENSOR = "power_sensor_entity_id"
|
||||
@@ -739,6 +741,11 @@ class ValveRegulationNbEntitiesIncorrect(HomeAssistantError):
|
||||
The number of specific entities is incorrect."""
|
||||
|
||||
|
||||
class ValveRegulationCardinalityIncorrect(HomeAssistantError):
|
||||
"""Error to indicate that the min/max opening degrees lists cannot contain
|
||||
more values than the number of underlying valves."""
|
||||
|
||||
|
||||
class SyncDeviceInternalTempNbEntitiesIncorrect(HomeAssistantError):
|
||||
"""Error to indicate there is an error in the configuration of the TRV with synchronize device internal temperature.
|
||||
The number of specific entities is incorrect."""
|
||||
|
||||
@@ -456,6 +456,14 @@ class FeatureCentralBoilerManager(BaseFeatureManager):
|
||||
if self._central_boiler_entity:
|
||||
self._central_boiler_entity.refresh_custom_attributes()
|
||||
|
||||
async def refresh_active_devices(self):
|
||||
"""Recalculate boiler activity sensors and the resulting boiler state."""
|
||||
if self._nb_active_device_number_entity is not None:
|
||||
await self._nb_active_device_number_entity.calculate_nb_active_devices(None)
|
||||
if self._total_power_active_entity is not None:
|
||||
await self._total_power_active_entity.calculate_total_power(None)
|
||||
await self.calculate_central_boiler_state(None)
|
||||
|
||||
@property
|
||||
def nb_device_active_for_boiler_entity(self):
|
||||
"""Returns the entity if the sensor which gives the number of active VTherm which have an
|
||||
|
||||
@@ -22,6 +22,6 @@
|
||||
"vtherm_api>=0.4.0"
|
||||
],
|
||||
"ssdp": [],
|
||||
"version": "10.3.0",
|
||||
"version": "10.4.0",
|
||||
"zeroconf": []
|
||||
}
|
||||
@@ -56,8 +56,11 @@ class OpeningClosingDegreeCalculation:
|
||||
# if heating need is >= opening_threshold (and heating is > 0) -> open and calculate with interpolation,
|
||||
if bvop >= ot and bvop > 0:
|
||||
# interpolation is just here to normalize the max opening which can be != 100. Some TRV has a max which not 100
|
||||
slope = (max_od - min_od) / (1 - ot)
|
||||
calculated_degree = min_od + slope * (bvop - ot)
|
||||
if ot >= 1:
|
||||
calculated_degree = max_od
|
||||
else:
|
||||
slope = (max_od - min_od) / (1 - ot)
|
||||
calculated_degree = min_od + slope * (bvop - ot)
|
||||
else:
|
||||
calculated_degree = 1 - max_cd
|
||||
|
||||
|
||||
@@ -1062,6 +1062,9 @@ class TotalPowerActiveDeviceForBoilerSensor(NbActiveDeviceForBoilerSensor):
|
||||
active_device_ids = []
|
||||
|
||||
for entity in self._entities:
|
||||
if getattr(entity, "is_sleeping", False) is True:
|
||||
continue
|
||||
|
||||
mean_cycle_power = entity.power_manager.mean_cycle_power
|
||||
if mean_cycle_power is None or mean_cycle_power <= 0:
|
||||
continue
|
||||
|
||||
@@ -135,7 +135,7 @@ set_auto_fan_mode:
|
||||
|
||||
set_hvac_mode_sleep:
|
||||
name: Set HVAC Mode to Sleep
|
||||
description: Turns a VTherm climate into seasonal sleep - OFF with valve 100% open (only for VTherm over climate with valve regulation).
|
||||
description: Sets a VTherm to seasonal sleep. It is shown as off and, for over_climate with direct valve regulation and over_valve, sends a raw 100% valve-opening request. The physical opening remains subject to configured valve control and number entity limits.
|
||||
target:
|
||||
entity:
|
||||
integration: versatile_thermostat
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"auto_start_stop": "Auto start and stop",
|
||||
"valve_regulation": "Valve regulation configuration",
|
||||
"sync_device_internal_temp": "Synchronize device temperature",
|
||||
"humidity": "Humidity",
|
||||
"lock": "Lock",
|
||||
"heating_failure_detection": "Heating failure detection",
|
||||
"auto_tpi_configuration": "Auto TPI - Configuration",
|
||||
@@ -110,6 +111,10 @@
|
||||
"auto_regulation_mode": "Self-regulation",
|
||||
"auto_regulation_dtemp": "Regulation threshold",
|
||||
"auto_regulation_periode_min": "Regulation minimum period",
|
||||
"opening_threshold_degree": "Opening threshold degree",
|
||||
"min_opening_degrees": "Min opening degrees",
|
||||
"max_opening_degrees": "Max opening degrees",
|
||||
"max_closing_degree": "Max closing degree",
|
||||
"auto_regulation_use_device_temp": "Use internal temperature of the underlying",
|
||||
"inverse_switch_command": "Inverse switch command",
|
||||
"auto_fan_mode": "Auto fan mode",
|
||||
@@ -127,6 +132,10 @@
|
||||
"auto_regulation_mode": "Auto adjustment of the target temperature",
|
||||
"auto_regulation_dtemp": "The threshold in ° (or % for valve) under which the temperature change will not be sent",
|
||||
"auto_regulation_periode_min": "Duration in minutes between two regulation update",
|
||||
"opening_threshold_degree": "Valve opening value under which the valve should be considered as closed (and then 'max_closing_degree' will apply)",
|
||||
"min_opening_degrees": "Opening degree minimum value for each underlying device when previous threshold is exceeded, comma separated. Default to 0. Example: 20, 25, 30",
|
||||
"max_opening_degrees": "Opening degree maximum value. The valve will never open more than this value",
|
||||
"max_closing_degree": "Closing degree maximum value. The valve will never be closed above this value. Set it to 100 to fully close the valve",
|
||||
"auto_regulation_use_device_temp": "Use the eventual internal temperature sensor of the underlying to speedup the self-regulation (not needed in most cases)",
|
||||
"inverse_switch_command": "For switch with pilot wire and diode you may need to inverse the command",
|
||||
"auto_fan_mode": "Automatically activate fan when huge heating/cooling is necessary",
|
||||
@@ -353,6 +362,18 @@
|
||||
"sync_entity_ids": "The list of the entities used to synchronize the internal temperature of the underlying devices. There should be one per underlying device. Should be a calibration entity if checkbox is selected or a temperature entity otherwise. Both are `number` entities."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Humidity",
|
||||
"description": "Use an external humidity sensor. Detected sensor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Use humidity sensor",
|
||||
"humidity_sensor_entity_id": "Humidity sensor"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Disable this option to use the underlying climate humidity only.",
|
||||
"humidity_sensor_entity_id": "Leave empty to automatically use the detected sensor."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Heating failure detection",
|
||||
"description": "Configure the heating failure detection feature. This detects anomalies when heating is expected but temperature doesn't increase, or when heating is off but temperature keeps rising.",
|
||||
@@ -386,6 +407,7 @@
|
||||
"sync_device_internal_temp_nb_entities_incorrect": "The number of entities for synchronize device internal temperature should be equal to the number of underlyings",
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "A comma separated list of positive integer between 0 and the max valve opening is expected. Example: 80, 85, 90",
|
||||
"valve_control_parameters_cardinality_incorrect": "The minimum and maximum opening degree lists cannot contain more values than the configured valves",
|
||||
"min_max_opening_degrees_inconsistent": "For each underlying device, max_opening_degrees must be strictly greater than min_opening_degrees. Please check your configuration.",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
@@ -424,6 +446,7 @@
|
||||
"auto_start_stop": "Auto start and stop",
|
||||
"valve_regulation": "Valve regulation configuration",
|
||||
"sync_device_internal_temp": "Synchronize device temperature",
|
||||
"humidity": "Humidity",
|
||||
"lock": "Lock",
|
||||
"heating_failure_detection": "Heating failure detection",
|
||||
"finalize": "All done",
|
||||
@@ -498,6 +521,10 @@
|
||||
"auto_regulation_mode": "Self-regulation",
|
||||
"auto_regulation_dtemp": "Regulation threshold",
|
||||
"auto_regulation_periode_min": "Regulation minimum period",
|
||||
"opening_threshold_degree": "Opening threshold degree",
|
||||
"min_opening_degrees": "Min opening degrees",
|
||||
"max_opening_degrees": "Max opening degrees",
|
||||
"max_closing_degree": "Max closing degree",
|
||||
"auto_regulation_use_device_temp": "Use internal temperature of the underlying",
|
||||
"inverse_switch_command": "Inverse switch command",
|
||||
"auto_fan_mode": "Auto fan mode",
|
||||
@@ -515,6 +542,10 @@
|
||||
"auto_regulation_mode": "Auto adjustment of the target temperature",
|
||||
"auto_regulation_dtemp": "The threshold in ° (or % for valve) under which the temperature change will not be sent",
|
||||
"auto_regulation_periode_min": "Duration in minutes between two regulation update",
|
||||
"opening_threshold_degree": "Valve opening value under which the valve should be considered as closed (and then 'max_closing_degree' will apply)",
|
||||
"min_opening_degrees": "Opening degree minimum value for each underlying device when previous threshold is exceeded, comma separated. Default to 0. Example: 20, 25, 30",
|
||||
"max_opening_degrees": "Opening degree maximum value. The valve will never open more than this value",
|
||||
"max_closing_degree": "Closing degree maximum value. The valve will never be closed above this value. Set it to 100 to fully close the valve",
|
||||
"auto_regulation_use_device_temp": "Use the eventual internal temperature sensor of the underlying to speedup the self-regulation (not needed in most cases)",
|
||||
"inverse_switch_command": "For switch with pilot wire and diode you may need to inverse the command",
|
||||
"auto_fan_mode": "Automatically activate fan when huge heating/cooling is necessary",
|
||||
@@ -697,6 +728,18 @@
|
||||
"sync_entity_ids": "The list of the entities used to synchronize the internal temperature of the underlying devices. There should be one per underlying device. Should be a calibration entity if checkbox is selected or a temperature entity otherwise. Both are `number` entities."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Humidity - {name}",
|
||||
"description": "Use an external humidity sensor. Detected sensor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Use humidity sensor",
|
||||
"humidity_sensor_entity_id": "Humidity sensor"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Disable this option to use the underlying climate humidity only.",
|
||||
"humidity_sensor_entity_id": "Leave empty to automatically use the detected sensor."
|
||||
}
|
||||
},
|
||||
"auto_tpi_configuration": {
|
||||
"title": "Auto TPI - Configuration - {name}",
|
||||
"description": "General settings for Auto TPI learning.",
|
||||
@@ -776,6 +819,7 @@
|
||||
"sync_device_internal_temp_nb_entities_incorrect": "The number of entities for synchronize device internal temperature should be equal to the number of underlyings",
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "A comma separated list of positive integer between 0 and the max value of the valve is expected. Example: 80, 85, 90",
|
||||
"valve_control_parameters_cardinality_incorrect": "The minimum and maximum opening degree lists cannot contain more values than the configured valves",
|
||||
"min_max_opening_degrees_inconsistent": "For each underlying device, max_opening_degrees must be strictly greater than min_opening_degrees. Please check your configuration.",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
@@ -963,6 +1007,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Set HVAC Mode to Sleep",
|
||||
"description": "Sets a VTherm to seasonal sleep. It is shown as off and, for over_climate with direct valve regulation and over_valve, sends a raw 100% valve-opening request. The physical opening remains subject to configured valve control and number entity limits."
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "Set Auto TPI mode",
|
||||
"description": "Enable or disable the Auto TPI learning mode",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# pylint: disable=line-too-long, too-many-lines, abstract-method
|
||||
""" A climate over climate classe """
|
||||
import logging
|
||||
"""A climate over climate classe"""
|
||||
|
||||
from vtherm_api.log_collector import get_vtherm_logger
|
||||
from typing import Optional
|
||||
|
||||
@@ -9,7 +9,7 @@ from datetime import timedelta, datetime
|
||||
from homeassistant.const import STATE_UNAVAILABLE, STATE_UNKNOWN
|
||||
from homeassistant.core import Event, HomeAssistant, State, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers.event import async_track_state_change_event, async_track_time_interval, EventStateChangedData, async_call_later
|
||||
from homeassistant.helpers.event import async_track_time_interval, async_call_later
|
||||
from homeassistant.components.climate import (
|
||||
HVACAction,
|
||||
ClimateEntityFeature,
|
||||
@@ -1158,6 +1158,8 @@ class ThermostatOverClimate(BaseThermostat[UnderlyingClimate]):
|
||||
@property
|
||||
def current_humidity(self) -> float | None:
|
||||
"""Return the humidity."""
|
||||
if self._humidity_manager.humidity_source != "none":
|
||||
return self._humidity_manager.current_humidity
|
||||
if self.underlying_entity(0):
|
||||
return self.underlying_entity(0).current_humidity
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# pylint: disable=line-too-long, abstract-method
|
||||
""" A climate over switch classe """
|
||||
import logging
|
||||
"""A climate over switch classe"""
|
||||
|
||||
from vtherm_api.log_collector import get_vtherm_logger
|
||||
from datetime import timedelta, datetime
|
||||
|
||||
@@ -20,7 +20,15 @@ from .commons import write_event_log
|
||||
|
||||
from .underlyings import UnderlyingValve
|
||||
from .cycle_scheduler import CycleScheduler
|
||||
from .vtherm_hvac_mode import VThermHvacMode_OFF
|
||||
from .vtherm_central_api import VersatileThermostatAPI
|
||||
from .vtherm_hvac_mode import (
|
||||
VThermHvacMode_OFF,
|
||||
VThermHvacMode_HEAT,
|
||||
VThermHvacMode_COOL,
|
||||
VThermHvacMode_SLEEP,
|
||||
)
|
||||
from homeassistant.components.climate import HVACAction
|
||||
from homeassistant.core import State
|
||||
|
||||
_LOGGER = get_vtherm_logger(__name__)
|
||||
|
||||
@@ -44,6 +52,11 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
self._last_calculation_timestamp: datetime | None = None
|
||||
self._auto_regulation_dpercent: float | None = None
|
||||
self._auto_regulation_period_min: int | None = None
|
||||
self._opening_threshold_degree: int = 0
|
||||
self._max_closing_degree: int = 100
|
||||
self._min_opening_degrees: list[int] = []
|
||||
self._max_opening_degrees: list[int] = []
|
||||
self._have_valve_control = False
|
||||
|
||||
# Call to super must be done after initialization because it calls post_init at the end
|
||||
super().__init__(hass, unique_id, name, config_entry)
|
||||
@@ -53,10 +66,96 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
"""True if the Thermostat is over_valve"""
|
||||
return True
|
||||
|
||||
@overrides
|
||||
def build_hvac_list(self) -> list[VThermHvacMode]:
|
||||
"""Build the hvac list depending on ac_mode"""
|
||||
if self._ac_mode:
|
||||
return [VThermHvacMode_COOL, VThermHvacMode_SLEEP, VThermHvacMode_OFF]
|
||||
else:
|
||||
return [VThermHvacMode_HEAT, VThermHvacMode_SLEEP, VThermHvacMode_OFF]
|
||||
|
||||
@overrides
|
||||
@property
|
||||
def is_sleeping(self) -> bool:
|
||||
"""True if the thermostat is in sleep mode"""
|
||||
return self.vtherm_hvac_mode == VThermHvacMode_SLEEP
|
||||
|
||||
@overrides
|
||||
async def service_set_hvac_mode_sleep(self):
|
||||
"""Set the hvac_mode to SLEEP mode (valid for over_valve and over_climate with valve regulation):
|
||||
service: versatile_thermostat.set_hvac_mode_sleep
|
||||
target:
|
||||
entity_id: climate.thermostat_1
|
||||
"""
|
||||
if self.lock_manager.check_is_locked("service_set_hvac_mode_sleep"):
|
||||
return
|
||||
write_event_log(_LOGGER, self, "Calling SERVICE_SET_HVAC_MODE_SLEEP")
|
||||
# Pre-inject the 100% raw demand to avoid a transitory window
|
||||
# displaying the previous valve position (issue 1938 - design Q2)
|
||||
self._valve_open_percent = 100
|
||||
await self.async_set_hvac_mode(hvac_mode=VThermHvacMode_SLEEP)
|
||||
|
||||
@overrides
|
||||
async def async_set_hvac_mode(self, hvac_mode: VThermHvacMode):
|
||||
"""Refresh central boiler accounting when entering or leaving sleep."""
|
||||
was_sleeping = self.is_sleeping
|
||||
await super().async_set_hvac_mode(hvac_mode)
|
||||
|
||||
if was_sleeping == self.is_sleeping or not self.is_used_by_central_boiler:
|
||||
return
|
||||
|
||||
central_boiler_manager = VersatileThermostatAPI.get_vtherm_api(self._hass).central_boiler_manager
|
||||
if central_boiler_manager is not None:
|
||||
await central_boiler_manager.refresh_active_devices()
|
||||
|
||||
@overrides
|
||||
def calculate_hvac_action(self, _: list = None) -> HVACAction | None:
|
||||
"""Calculate the HVAC action. Force OFF if sleeping (BR-009)."""
|
||||
if self.is_sleeping:
|
||||
self._attr_hvac_action = HVACAction.OFF
|
||||
else:
|
||||
super().calculate_hvac_action(None)
|
||||
|
||||
@overrides
|
||||
@property
|
||||
def should_device_be_active(self) -> bool:
|
||||
"""A sleeping VTherm never requires its devices to be active"""
|
||||
if self.is_sleeping:
|
||||
return False
|
||||
return super().should_device_be_active
|
||||
|
||||
@overrides
|
||||
@property
|
||||
def is_device_active(self) -> bool:
|
||||
"""A sleeping VTherm is never active"""
|
||||
if self.is_sleeping:
|
||||
return False
|
||||
return super().is_device_active
|
||||
|
||||
@overrides
|
||||
@property
|
||||
def device_actives(self) -> list[str]:
|
||||
"""Calculate the active devices.
|
||||
A sleeping over_valve VTherm must never trigger the central boiler,
|
||||
whatever the physical valve opening or the #1348 opening-parameter
|
||||
profile (invariant BR-009 / FR-007).
|
||||
"""
|
||||
if self.is_sleeping:
|
||||
return []
|
||||
return super().device_actives
|
||||
|
||||
@overrides
|
||||
def restore_specific_previous_state(self, old_state: State):
|
||||
"""Restore my specific attributes from previous state"""
|
||||
super().restore_specific_previous_state(old_state)
|
||||
|
||||
if self.is_sleeping:
|
||||
self.set_hvac_off_reason(HVAC_OFF_REASON_SLEEP_MODE)
|
||||
|
||||
@property
|
||||
def valve_open_percent(self) -> int:
|
||||
"""Gives the percentage of valve needed"""
|
||||
if self.vtherm_hvac_mode is VThermHvacMode_OFF:
|
||||
if (self.vtherm_hvac_mode is VThermHvacMode_OFF and not self.is_sleeping) or self._valve_open_percent is None:
|
||||
return 0
|
||||
else:
|
||||
return self._valve_open_percent
|
||||
@@ -78,11 +177,54 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
else 0
|
||||
)
|
||||
|
||||
self._opening_threshold_degree = config_entry.get(
|
||||
CONF_OPENING_THRESHOLD_DEGREE, 0
|
||||
)
|
||||
self._max_closing_degree = config_entry.get(CONF_MAX_CLOSING_DEGREE, 100)
|
||||
min_opening_degrees = config_entry.get(CONF_MIN_OPENING_DEGREES, "")
|
||||
max_opening_degrees = config_entry.get(CONF_MAX_OPENING_DEGREES, "")
|
||||
self._min_opening_degrees = (
|
||||
[int(value.strip()) for value in min_opening_degrees.split(",")]
|
||||
if min_opening_degrees
|
||||
else []
|
||||
)
|
||||
self._max_opening_degrees = (
|
||||
[int(value.strip()) for value in max_opening_degrees.split(",")]
|
||||
if max_opening_degrees
|
||||
else []
|
||||
)
|
||||
self._have_valve_control = (
|
||||
self._opening_threshold_degree != 0
|
||||
or self._max_closing_degree != 100
|
||||
or bool(self._min_opening_degrees)
|
||||
or bool(self._max_opening_degrees)
|
||||
)
|
||||
|
||||
lst_valves = config_entry.get(CONF_UNDERLYING_LIST)
|
||||
|
||||
for _, valve in enumerate(lst_valves):
|
||||
for index, valve in enumerate(lst_valves):
|
||||
valve_state = self._hass.states.get(valve)
|
||||
default_max = (
|
||||
valve_state.attributes.get("max", 100) if valve_state else 100
|
||||
)
|
||||
self._underlyings.append(
|
||||
UnderlyingValve(hass=self._hass, thermostat=self, valve_entity_id=valve)
|
||||
UnderlyingValve(
|
||||
hass=self._hass,
|
||||
thermostat=self,
|
||||
valve_entity_id=valve,
|
||||
min_opening_degree=(
|
||||
self._min_opening_degrees[index]
|
||||
if index < len(self._min_opening_degrees)
|
||||
else 0
|
||||
),
|
||||
max_opening_degree=(
|
||||
self._max_opening_degrees[index]
|
||||
if index < len(self._max_opening_degrees)
|
||||
else default_max
|
||||
),
|
||||
max_closing_degree=self._max_closing_degree,
|
||||
opening_threshold=self._opening_threshold_degree,
|
||||
)
|
||||
)
|
||||
|
||||
self._bind_scheduler(CycleScheduler(
|
||||
@@ -136,8 +278,7 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
"""Custom attributes"""
|
||||
super().update_custom_attributes()
|
||||
|
||||
self._attr_extra_state_attributes.update(
|
||||
{
|
||||
attributes = {
|
||||
"is_over_valve": self.is_over_valve,
|
||||
"on_percent": self.safe_on_percent,
|
||||
"power_percent": self.power_percent,
|
||||
@@ -163,7 +304,31 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
),
|
||||
},
|
||||
}
|
||||
)
|
||||
if self._have_valve_control:
|
||||
commands = [underlying.command_percent for underlying in self._underlyings]
|
||||
attributes["vtherm_over_valve"].update(
|
||||
{
|
||||
"have_valve_control": True,
|
||||
"opening_threshold_degree": self._opening_threshold_degree,
|
||||
"max_closing_degree": self._max_closing_degree,
|
||||
"min_opening_degrees": self._min_opening_degrees,
|
||||
"max_opening_degrees": self._max_opening_degrees,
|
||||
"underlying_valves": [
|
||||
{
|
||||
"entity_id": underlying.entity_id,
|
||||
"command_percent": underlying.command_percent,
|
||||
"last_sent_opening_value": underlying.last_sent_opening_value,
|
||||
}
|
||||
for underlying in self._underlyings
|
||||
],
|
||||
}
|
||||
)
|
||||
if len(commands) == 1:
|
||||
attributes["valve_command_percent"] = commands[0]
|
||||
else:
|
||||
attributes["valve_command_by_valve"] = commands
|
||||
|
||||
self._attr_extra_state_attributes.update(attributes)
|
||||
|
||||
# _LOGGER.debug("%s - Calling update_custom_attributes: %s", self, self._attr_extra_state_attributes)
|
||||
|
||||
@@ -176,6 +341,12 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
|
||||
self.stop_recalculate_later()
|
||||
|
||||
# Issue 1938 - during sleep the raw 100% demand must not be
|
||||
# recomputed by the TPI algorithm (FR-008 / BR-004)
|
||||
if self.is_sleeping:
|
||||
self.apply_valve_command_percent(1.0, force=True)
|
||||
return
|
||||
|
||||
if self._auto_regulation_period_min is None or self._auto_regulation_dpercent is None:
|
||||
_LOGGER.warning(
|
||||
"%s - auto_regulation_period_min or auto_regulation_dpercent is not set. Stopping TPI calculation.",
|
||||
@@ -226,6 +397,16 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
"""
|
||||
self.stop_recalculate_later()
|
||||
|
||||
# Issue 1938 - during sleep, the raw 100% demand is injected directly,
|
||||
# bypassing the dpercent / period_min filters which could otherwise
|
||||
# retain the previous TPI position (design decision D1/D2)
|
||||
if self.is_sleeping:
|
||||
self._valve_open_percent = 100
|
||||
self._last_calculation_timestamp = self.now
|
||||
self.update_custom_attributes()
|
||||
self.async_write_ha_state()
|
||||
return 1.0
|
||||
|
||||
if self._auto_regulation_period_min is None or self._auto_regulation_dpercent is None:
|
||||
_LOGGER.warning(
|
||||
"%s - auto_regulation_period_min or auto_regulation_dpercent is not set. Keeping current valve command.",
|
||||
@@ -307,6 +488,10 @@ class ThermostatOverValve(ThermostatProp[UnderlyingValve]): # pylint: disable=a
|
||||
@overrides
|
||||
def incremente_energy(self):
|
||||
"""increment the energy counter if device is active"""
|
||||
# Issue 1938 - no energy is counted while sleeping: no device is
|
||||
# considered active (H-004)
|
||||
if self.is_sleeping:
|
||||
return
|
||||
if self.vtherm_hvac_mode == VThermHvacMode_OFF:
|
||||
return
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"auto_start_stop": "Automatické spuštění a zastavení",
|
||||
"valve_regulation": "Konfigurace regulace ventilu",
|
||||
"sync_device_internal_temp": "Synchronizace teploty zařízení",
|
||||
"humidity": "Vlhkost",
|
||||
"heating_failure_detection": "Detekce poruchy vytápění",
|
||||
"lock": "Správa zámku",
|
||||
"finalize": "Vše hotovo",
|
||||
@@ -110,6 +111,10 @@
|
||||
"auto_regulation_mode": "Samoregulace",
|
||||
"auto_regulation_dtemp": "Práh regulace",
|
||||
"auto_regulation_periode_min": "Minimální perioda regulace",
|
||||
"opening_threshold_degree": "Prahová hodnota otevření",
|
||||
"min_opening_degrees": "Minimální stupně otevření",
|
||||
"max_opening_degrees": "Maximální stupeň otevření",
|
||||
"max_closing_degree": "Maximální stupeň zavření",
|
||||
"auto_regulation_use_device_temp": "Použít vnitřní teplotu podřízeného zařízení",
|
||||
"inverse_switch_command": "Invertovat příkaz spínače",
|
||||
"auto_fan_mode": "Automatický režim ventilátoru",
|
||||
@@ -127,6 +132,10 @@
|
||||
"auto_regulation_mode": "Automatické přizpůsobení cílové teploty",
|
||||
"auto_regulation_dtemp": "Práh v ° (nebo % pro ventil), pod kterým nebude změna teploty odeslána",
|
||||
"auto_regulation_periode_min": "Doba v minutách mezi dvěma aktualizacemi regulace",
|
||||
"opening_threshold_degree": "Hodnota otevření ventilu, pod kterou by měl být ventil považován za zavřený (a pak bude aplikován 'max_closing_degree')",
|
||||
"min_opening_degrees": "Minimální hodnota stupně otevření pro každé podřízené zařízení, oddělené čárkami. Výchozí je 0. Příklad: 20, 25, 30",
|
||||
"max_opening_degrees": "Maximální hodnota stupně otevření pro každé základní zařízení, oddělené čárkami. Výchozí hodnota je 100. Ventil se nikdy neotevře více než tato hodnota. Příklad: 80, 85, 90",
|
||||
"max_closing_degree": "Maximální hodnota stupně zavření. Ventil nebude nikdy uzavřen více než tato hodnota. Nastavte na 100 pro úplné zavření ventilu",
|
||||
"auto_regulation_use_device_temp": "Použít případný vnitřní teplotní senzor podřízeného zařízení pro zrychlení samoregulace",
|
||||
"inverse_switch_command": "Pro spínače s pilotem a diodou možná budete muset invertovat příkaz",
|
||||
"auto_fan_mode": "Automaticky aktivovat ventilátor při nutnosti velkého vytápění/chlazení",
|
||||
@@ -307,6 +316,18 @@
|
||||
"sync_entity_ids": "Seznam entit používaných k synchronizaci vnitřní teploty základních zařízení. Na každé základní zařízení by měl být jeden. Pokud je zaškrtnuto políčko, měla by to být kalibrační entita nebo jinak entita teploty. Oba jsou entity typu „číslo“."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Vlhkost",
|
||||
"description": "Použít externí senzor vlhkosti. Zjištěný senzor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Použít senzor vlhkosti",
|
||||
"humidity_sensor_entity_id": "Senzor vlhkosti"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Vypnutím této možnosti použijete pouze vlhkost podřízené klimatizace.",
|
||||
"humidity_sensor_entity_id": "Ponechte prázdné pro automatické použití zjištěného senzoru."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Detekce poruchy vytápění",
|
||||
"description": "Nakonfigurujte funkci detekce poruchy vytápění. To detekuje anomálie, když se očekává ohřev, ale teplota se nezvyšuje, nebo když je topení vypnuté, ale teplota stále stoupá.",
|
||||
@@ -383,6 +404,7 @@
|
||||
"no_central_config": "Nemůžete vybrat 'použít centrální konfiguraci', protože nebyla nalezena žádná centrální konfigurace. Pro její použití musíte vytvořit Versatile Thermostat typu 'Centrální konfigurace'.",
|
||||
"max_opening_degrees_format": "Seznam celých kladných čísel mezi 0 a 100 oddělených čárkou je očekáván. Příklad: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Pro každé základní zařízení musí být max_opening_degrees striktně větší než min_opening_degrees. Zkontrolujte prosím svou konfiguraci.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Seznamy minimálních a maximálních stupňů otevření nesmí obsahovat více hodnot než je nakonfigurovaných ventilů",
|
||||
"vswitch_configuration_incorrect": "Konfigurace virtuálního spínače je nesprávná. Jedna nebo více podřízených entit není správně nakonfigurována.",
|
||||
"service_configuration_format": "Formát konfigurace služby je nesprávný",
|
||||
"valve_regulation_nb_entities_incorrect": "Počet entit ventilů pro regulaci ventilů by měl být roven počtu podřízených zařízení",
|
||||
@@ -424,6 +446,7 @@
|
||||
"auto_start_stop": "Automatické spuštění a zastavení",
|
||||
"valve_regulation": "Konfigurace regulace ventilu",
|
||||
"sync_device_internal_temp": "Synchronizace teploty zařízení",
|
||||
"humidity": "Vlhkost",
|
||||
"heating_failure_detection": "Detekce poruchy vytápění",
|
||||
"lock": "Zámek",
|
||||
"finalize": "Vše hotovo",
|
||||
@@ -498,6 +521,10 @@
|
||||
"auto_regulation_mode": "Samoregulace",
|
||||
"auto_regulation_dtemp": "Práh regulace",
|
||||
"auto_regulation_periode_min": "Minimální perioda regulace",
|
||||
"opening_threshold_degree": "Prahová hodnota otevření",
|
||||
"min_opening_degrees": "Minimální stupně otevření",
|
||||
"max_opening_degrees": "Maximální stupeň otevření",
|
||||
"max_closing_degree": "Maximální stupeň zavření",
|
||||
"auto_regulation_use_device_temp": "Použít vnitřní teplotu podřízeného zařízení",
|
||||
"inverse_switch_command": "Invertovat příkaz spínače",
|
||||
"auto_fan_mode": "Automatický režim ventilátoru",
|
||||
@@ -515,6 +542,10 @@
|
||||
"auto_regulation_mode": "Automatické přizpůsobení cílové teploty",
|
||||
"auto_regulation_dtemp": "Práh v ° (nebo % pro ventil), pod kterým nebude změna teploty odeslána",
|
||||
"auto_regulation_periode_min": "Doba v minutách mezi dvěma aktualizacemi regulace",
|
||||
"opening_threshold_degree": "Hodnota otevření ventilu, pod kterou by měl být ventil považován za zavřený (a pak bude aplikován 'max_closing_degree')",
|
||||
"min_opening_degrees": "Minimální hodnota stupně otevření pro každé podřízené zařízení, oddělené čárkami. Výchozí je 0. Příklad: 20, 25, 30",
|
||||
"max_opening_degrees": "Maximální hodnota stupně otevření pro každé základní zařízení, oddělené čárkami. Výchozí hodnota je 100. Ventil se nikdy neotevře více než tato hodnota. Příklad: 80, 85, 90",
|
||||
"max_closing_degree": "Maximální hodnota stupně zavření. Ventil nebude nikdy uzavřen více než tato hodnota. Nastavte na 100 pro úplné zavření ventilu",
|
||||
"auto_regulation_use_device_temp": "Použít případný vnitřní teplotní senzor podřízeného zařízení pro zrychlení samoregulace",
|
||||
"inverse_switch_command": "Pro spínače s pilotem a diodou možná budete muset invertovat příkaz",
|
||||
"auto_fan_mode": "Automaticky aktivovat ventilátor při nutnosti velkého vytápění/chlazení",
|
||||
@@ -697,6 +728,18 @@
|
||||
"sync_entity_ids": "Seznam entit používaných k synchronizaci vnitřní teploty základních zařízení. Na každé základní zařízení by měl být jeden. Pokud je zaškrtnuto políčko, měla by to být kalibrační entita nebo jinak entita teploty. Oba jsou entity typu „číslo“."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Vlhkost - {name}",
|
||||
"description": "Použít externí senzor vlhkosti. Zjištěný senzor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Použít senzor vlhkosti",
|
||||
"humidity_sensor_entity_id": "Senzor vlhkosti"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Vypnutím této možnosti použijete pouze vlhkost podřízené klimatizace.",
|
||||
"humidity_sensor_entity_id": "Ponechte prázdné pro automatické použití zjištěného senzoru."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Detekce poruchy vytápění - {name}",
|
||||
"description": "Nakonfigurujte funkci detekce poruchy vytápění. To detekuje anomálie, když se očekává ohřev, ale teplota se nezvyšuje, nebo když je topení vypnuté, ale teplota stále stoupá.",
|
||||
@@ -773,6 +816,7 @@
|
||||
"no_central_config": "Nemůžete zaškrtnout 'použít centrální konfiguraci', protože nebyla nalezena žádná centrální konfigurace. Pro její použití musíte vytvořit Versatile Thermostat typu 'Centrální konfigurace'.",
|
||||
"max_opening_degrees_format": "Seznam celých kladných čísel mezi 0 a 100 oddělených čárkou je očekáván. Příklad: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Pro každé základní zařízení musí být max_opening_degrees striktně větší než min_opening_degrees. Zkontrolujte prosím svou konfiguraci.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Seznamy minimálních a maximálních stupňů otevření nesmí obsahovat více hodnot než je nakonfigurovaných ventilů",
|
||||
"vswitch_configuration_incorrect": "Konfigurace virtuálního spínače je nesprávná. Jedna nebo více podřízených entit není správně nakonfigurována.",
|
||||
"service_configuration_format": "Formát konfigurace služby je nesprávný",
|
||||
"valve_regulation_nb_entities_incorrect": "Počet entit ventilů pro regulaci ventilů by měl být roven počtu podřízených zařízení",
|
||||
@@ -953,6 +997,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Nastavit režim HVAC na spánek",
|
||||
"description": "Přepne VTherm do sezónního režimu spánku. Je zobrazen jako vypnutý a pro over_climate s přímým řízením ventilu a over_valve odešle hrubý požadavek na otevření ventilu 100 %. Fyzické otevření stále podléhá nastavenému řízení ventilu a limitům entity number."
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "Nastavte režim Auto TPI",
|
||||
"description": "Povolte nebo zakažte režim automatického učení TPI",
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"auto_start_stop": "Auto Start und Stop",
|
||||
"valve_regulation": "Konfiguration Ventilsteuerung",
|
||||
"sync_device_internal_temp": "Synchronisierung der Gerätetemperatur",
|
||||
"humidity": "Luftfeuchtigkeit",
|
||||
"lock": "Sperrenverwaltung",
|
||||
"heating_failure_detection": "Heizungsausfallerkennung",
|
||||
"auto_tpi_configuration": "Auto TPI - Konfiguration",
|
||||
@@ -110,6 +111,10 @@
|
||||
"auto_regulation_mode": "Selbstregelung",
|
||||
"auto_regulation_dtemp": "Regelungsschwelle",
|
||||
"auto_regulation_periode_min": "Mindestzeitraum Regelung",
|
||||
"opening_threshold_degree": "Öffnungsschwelle",
|
||||
"min_opening_degrees": "Minimaler Öffnungsweite",
|
||||
"max_opening_degrees": "Maximale Öffnungsweite",
|
||||
"max_closing_degree": "Maximale Schließweite",
|
||||
"auto_regulation_use_device_temp": "Interne Bezugstemperatur ausgleichen",
|
||||
"inverse_switch_command": "Umgekehrter Schalterbefehl",
|
||||
"auto_fan_mode": "Automatischer Lüftermodus",
|
||||
@@ -127,6 +132,10 @@
|
||||
"auto_regulation_mode": "Selbstregulierung durch VTherm verwenden",
|
||||
"auto_regulation_dtemp": "Schwellenwert in ° (oder % bei Ventilen), unterhalb dessen die Regelung nicht aktiviert wird",
|
||||
"auto_regulation_periode_min": "Dauer in Minuten zwischen zwei Regelungsaktualisierungen",
|
||||
"opening_threshold_degree": "Öffnungsschwelle des Ventils, unterhalb derer das Ventil als geschlossen gilt (und dann 'max_closing_degree' gilt)",
|
||||
"min_opening_degrees": "Eine kommaseparierte Liste der Mindestöffnung. Standardwert ist 0. Beispiel: 20, 25, 30",
|
||||
"max_opening_degrees": "Maximaler Öffnungsgrad für jedes zugeordnete Gerät, durch Kommas getrennt. Standardwert 100. Das Ventil öffnet sich niemals über diesen Wert hinaus. Beispiel: 80, 85, 90",
|
||||
"max_closing_degree": "Maximale Schließung. Das Ventil wird niemals über diesen Wert hinaus geschlossen. Zum vollständigen Schliessen auf 100 einstellen.",
|
||||
"auto_regulation_use_device_temp": "Geräteinnentemperatur ausgleichen, zur Selbstregulierungsbeschleunigung (in den meisten Fällen nicht erforderlich)",
|
||||
"inverse_switch_command": "Schaltersteuerung umkehren für Installationen mit Pilotdraht und Diode.",
|
||||
"auto_fan_mode": "Automatisch Belüftung bei großen Abweichungen",
|
||||
@@ -353,6 +362,18 @@
|
||||
"sync_entity_ids": "Entitie-Liste, die zur Synchronisierung der internen Temperatur der zugeordneten Geräte verwendet werden. Es muss eine pro zugeordnetem Gerät vorhanden sein. Wenn es aktiviert ist, muss eine Kalibrierungsentität vorhanden sein, ansonsten eine Temperaturentity. Beides sind Entities vom Typ `number`."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Luftfeuchtigkeit",
|
||||
"description": "Externen Luftfeuchtigkeitssensor verwenden. Erkannter Sensor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Luftfeuchtigkeitssensor verwenden",
|
||||
"humidity_sensor_entity_id": "Luftfeuchtigkeitssensor"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Deaktivieren Sie diese Option, um nur die Luftfeuchtigkeit der zugrunde liegenden Klimaanlage zu verwenden.",
|
||||
"humidity_sensor_entity_id": "Leer lassen, um den erkannten Sensor automatisch zu verwenden."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Erkennung von Heizungsausfällen",
|
||||
"description": "Konfiguration der Heizungsausfallerkennung. Diese Funktion erkennt Anomalien, wenn Heizleistung angefordert wird, die Temperatur jedoch nicht steigt, oder wenn die Heizung ausgeschaltet ist, die Temperatur jedoch weiter steigt.",
|
||||
@@ -387,6 +408,7 @@
|
||||
"min_opening_degrees_format": "Es wird eine Liste positiver Ganzzahlen erwartet, die durch Komma getrennte sind. Beispiel: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Es wird eine Liste positiver Ganzzahlen zwischen 0 und der maximalen Ventilöffnung erwartet, die durch Kommas getrennt sind. Beispiel: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Für jedes zugeordnete Gerät muss max_opening_degrees absolut größer als min_opening_degrees sein. Bitte die Konfiguration überprüfen.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Die Listen der minimalen und maximalen Öffnungsgrade dürfen nicht mehr Werte enthalten als Ventile konfiguriert sind",
|
||||
"vswitch_configuration_incorrect": "Die Konfiguration der Befehlsanpassung ist falsch. Sie ist für nicht umschaltbare Basiswerte erforderlich und muss das Format 'service_name[/attribut:wert]' haben. Weitere Informationen in der README-Datei."
|
||||
},
|
||||
"abort": {
|
||||
@@ -424,6 +446,7 @@
|
||||
"auto_start_stop": "Auto Start/Stopp",
|
||||
"valve_regulation": "Ventilsteuerung",
|
||||
"sync_device_internal_temp": "Synchronisierung der Gerätetemperatur",
|
||||
"humidity": "Luftfeuchtigkeit",
|
||||
"lock": "Sperrenverwaltung",
|
||||
"heating_failure_detection": "Heizungsausfallerkennung",
|
||||
"finalize": "Abschliessen",
|
||||
@@ -498,6 +521,10 @@
|
||||
"auto_regulation_mode": "Selbstregelnd",
|
||||
"auto_regulation_dtemp": "Regelschwelle",
|
||||
"auto_regulation_periode_min": "Minimale Regelzeit",
|
||||
"opening_threshold_degree": "Öffnungsschwelle",
|
||||
"min_opening_degrees": "Minimaler Öffnungsweite",
|
||||
"max_opening_degrees": "Maximale Öffnungsweite",
|
||||
"max_closing_degree": "Maximale Schließweite",
|
||||
"auto_regulation_use_device_temp": "Ausgleich der Innentemperatur vom Gerät",
|
||||
"inverse_switch_command": "Umgekehrter Schaltbefehl",
|
||||
"auto_fan_mode": "Automatischer Lüfterbetrieb",
|
||||
@@ -515,6 +542,10 @@
|
||||
"auto_regulation_mode": "Verwendung der Selbstregulierung durch VTherm",
|
||||
"auto_regulation_dtemp": "Der Schwellenwert in ° (oder % bei Ventilen), unter dem die Regelung nicht aktiviert wird",
|
||||
"auto_regulation_periode_min": "Dauer in Minuten zwischen zwei Regelungsaktualisierungen",
|
||||
"opening_threshold_degree": "Öffnungsschwelle des Ventils, unterhalb derer das Ventil als geschlossen gilt (und dann 'max_closing_degree' gilt)",
|
||||
"min_opening_degrees": "Eine kommaseparierte Liste der Mindestöffnung. Standardwert ist 0. Beispiel: 20, 25, 30",
|
||||
"max_opening_degrees": "Maximaler Öffnungsgrad für jedes zugeordnete Gerät, durch Kommas getrennt. Standardwert 100. Das Ventil öffnet sich niemals über diesen Wert hinaus. Beispiel: 80, 85, 90",
|
||||
"max_closing_degree": "Maximale Schließung. Das Ventil wird niemals über diesen Wert hinaus geschlossen. Zum vollständigen Schliessen auf 100 einstellen.",
|
||||
"auto_regulation_use_device_temp": "Ausgleich der eventuell vorhandenen Innentemperatur vom zugeordneten Gerät benutzen, zur Beschleunigung der Selbstregulierung (ist in den meisten Fällen nicht erforderlich)",
|
||||
"inverse_switch_command": "Kehrt die Schaltersteuerung bei Installationen mit Pilotdraht und Diode um.",
|
||||
"auto_fan_mode": "Aktiviert die Belüftung automatisch bei großen Abweichugnen.",
|
||||
@@ -697,6 +728,18 @@
|
||||
"sync_entity_ids": "Entitie-Liste, die zur Synchronisierung der internen Temperatur der zugeordneten Geräte verwendet werden. Es muss eine pro zugeordnetem Gerät vorhanden sein. Wenn es aktiviert ist, muss eine Kalibrierungsentität vorhanden sein, ansonsten eine Temperaturentity. Beides sind Entities vom Typ `number`."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Luftfeuchtigkeit - {name}",
|
||||
"description": "Externen Luftfeuchtigkeitssensor verwenden. Erkannter Sensor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Luftfeuchtigkeitssensor verwenden",
|
||||
"humidity_sensor_entity_id": "Luftfeuchtigkeitssensor"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Deaktivieren Sie diese Option, um nur die Luftfeuchtigkeit der zugrunde liegenden Klimaanlage zu verwenden.",
|
||||
"humidity_sensor_entity_id": "Leer lassen, um den erkannten Sensor automatisch zu verwenden."
|
||||
}
|
||||
},
|
||||
"auto_tpi_configuration": {
|
||||
"title": "Auto TPI - Konfiguration - {name}",
|
||||
"description": "Allgemeine Parameter für das Auto-TPI-Lernen.",
|
||||
@@ -777,6 +820,7 @@
|
||||
"min_opening_degrees_format": "Es wird eine Liste positiver Ganzzahlen erwartet, die durch Komma getrennte sind. Beispiel: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Es wird eine Liste positiver Ganzzahlen zwischen 0 und der maximalen Ventilöffnung erwartet, die durch Kommas getrennt sind. Beispiel: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Für jedes zugeordnete Gerät muss max_opening_degrees absolut größer als min_opening_degrees sein. Bitte die Konfiguration überprüfen.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Die Listen der minimalen und maximalen Öffnungsgrade dürfen nicht mehr Werte enthalten als Ventile konfiguriert sind",
|
||||
"vswitch_configuration_incorrect": "Die Konfiguration der Befehlsanpassung ist falsch. Sie ist für nicht umschaltbare Basiswerte erforderlich und muss das Format 'service_name[/attribut:wert]' haben. Weitere Informationen dazu in der README-Datei."
|
||||
},
|
||||
"abort": {
|
||||
@@ -953,6 +997,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "HVAC-Modus auf Ruhemodus setzen",
|
||||
"description": "Versetzt einen VTherm in den saisonalen Ruhemodus. Er wird als ausgeschaltet angezeigt und sendet bei over_climate mit direkter Ventilregelung und over_valve eine rohe Ventilöffnungsanforderung von 100 %. Die physische Öffnung unterliegt weiterhin der konfigurierten Ventilsteuerung und den Grenzen der number-Entity."
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "Auto-TPI-Modus einstellen",
|
||||
"description": "Aktiviert oder deaktiviert den Auto-TPI-Lernmodus.",
|
||||
|
||||
@@ -76,6 +76,10 @@
|
||||
"auto_regulation_mode": "Αυτόματη ρύθμιση",
|
||||
"auto_regulation_dtemp": "Όριο ρύθμισης",
|
||||
"auto_regulation_periode_min": "Ελάχιστη περίοδος ρύθμισης",
|
||||
"opening_threshold_degree": "Κατώφλι ανοίγματος",
|
||||
"min_opening_degrees": "Ελάχιστοι βαθμοί ανοίγματος",
|
||||
"max_opening_degrees": "Μέγιστος βαθμός ανοίγματος",
|
||||
"max_closing_degree": "Μέγιστος βαθμός κλεισίματος",
|
||||
"inverse_switch_command": "Αντίστροφη εντολή διακόπτη",
|
||||
"auto_fan_mode": "Auto fan mode"
|
||||
},
|
||||
@@ -98,6 +102,10 @@
|
||||
"auto_regulation_mode": "Αυτόματη προσαρμογή της στοχευμένης θερμοκρασίας",
|
||||
"auto_regulation_dtemp": "Το όριο σε ° κάτω από το οποίο η αλλαγή θερμοκρασίας δεν θα αποστέλλεται",
|
||||
"auto_regulation_periode_min": "Διάρκεια σε λεπτά μεταξύ δύο ενημερώσεων ρύθμισης",
|
||||
"opening_threshold_degree": "Τιμή ανοίγματος της βαλβίδας κάτω από την οποία η βαλβίδα πρέπει να θεωρείται κλειστή (και τότε θα ισχύει το 'max_closing_degree')",
|
||||
"min_opening_degrees": "Ελάχιστη τιμή βαθμού ανοίγματος για κάθε υποκείμενη συσκευή, διαχωρισμένη με κόμμα. Προεπιλεγμένη τιμή 0. Παράδειγμα: 20, 25, 30",
|
||||
"max_opening_degrees": "Μέγιστη τιμή του βαθμού ανοίγματος. Η βαλβίδα δεν θα ανοίξει ποτέ περισσότερο από αυτήν την τιμή",
|
||||
"max_closing_degree": "Μέγιστη τιμή του βαθμού κλεισίματος. Η βαλβίδα δεν θα κλείσει ποτέ περισσότερο από αυτήν την τιμή. Ορίστε το στο 100 για πλήρες κλείσιμο της βαλβίδας",
|
||||
"inverse_switch_command": "Για διακόπτη με πιλοτικό καλώδιο και δίοδο μπορεί να χρειαστεί να αντιστρέψετε την εντολή",
|
||||
"auto_fan_mode": "Automatically activate fan when huge heating/cooling is necessary"
|
||||
}
|
||||
@@ -274,6 +282,7 @@
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Αναμένεται μια λίστα θετικών ακεραίων μεταξύ 0 και 100 χωρισμένη με κόμματα. Παράδειγμα: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Για κάθε υποκείμενη συσκευή, το max_opening_degrees πρέπει να είναι αυστηρά μεγαλύτερο από το min_opening_degrees. Ελέγξτε τη διαμόρφωσή σας.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Οι λίστες ελάχιστου και μέγιστου βαθμού ανοίγματος δεν μπορούν να περιέχουν περισσότερες τιμές από τις διαμορφωμένες βαλβίδες",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -333,7 +342,11 @@
|
||||
"auto_regulation_dtemp": "Όριο ρύθμισης",
|
||||
"auto_regulation_periode_min": "Ελάχιστη περίοδος ρύθμισης",
|
||||
"inverse_switch_command": "Αντίστροφη εντολή διακόπτη",
|
||||
"auto_fan_mode": "Auto fan mode"
|
||||
"auto_fan_mode": "Auto fan mode",
|
||||
"opening_threshold_degree": "Κατώφλι ανοίγματος",
|
||||
"min_opening_degrees": "Ελάχιστοι βαθμοί ανοίγματος",
|
||||
"max_opening_degrees": "Μέγιστος βαθμός ανοίγματος",
|
||||
"max_closing_degree": "Μέγιστος βαθμός κλεισίματος"
|
||||
},
|
||||
"data_description": {
|
||||
"heater_entity_id": "Υποχρεωτική ταυτότητα οντότητας θερμαντήρα",
|
||||
@@ -355,7 +368,11 @@
|
||||
"auto_regulation_dtemp": "Το κατώφλι σε °C κάτω από το οποίο η αλλαγή της θερμοκρασίας δεν θα αποστέλλεται",
|
||||
"auto_regulation_periode_min": "Διάρκεια σε λεπτά μεταξύ δύο ενημερώσεων ρύθμισης",
|
||||
"inverse_switch_command": "Για διακόπτες με πιλοτικό καλώδιο και δίοδο μπορεί να χρειαστεί να αντιστραφεί η εντολή",
|
||||
"auto_fan_mode": "Automatically activate fan when huge heating/cooling is necessary"
|
||||
"auto_fan_mode": "Automatically activate fan when huge heating/cooling is necessary",
|
||||
"opening_threshold_degree": "Τιμή ανοίγματος της βαλβίδας κάτω από την οποία η βαλβίδα πρέπει να θεωρείται κλειστή (και τότε θα ισχύει το 'max_closing_degree')",
|
||||
"min_opening_degrees": "Ελάχιστη τιμή βαθμού ανοίγματος για κάθε υποκείμενη συσκευή, διαχωρισμένη με κόμμα. Προεπιλεγμένη τιμή 0. Παράδειγμα: 20, 25, 30",
|
||||
"max_opening_degrees": "Μέγιστη τιμή του βαθμού ανοίγματος. Η βαλβίδα δεν θα ανοίξει ποτέ περισσότερο από αυτήν την τιμή",
|
||||
"max_closing_degree": "Μέγιστη τιμή του βαθμού κλεισίματος. Η βαλβίδα δεν θα κλείσει ποτέ περισσότερο από αυτήν την τιμή. Ορίστε το στο 100 για πλήρες κλείσιμο της βαλβίδας"
|
||||
}
|
||||
},
|
||||
"tpi": {
|
||||
@@ -542,6 +559,7 @@
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Αναμένεται μια λίστα θετικών ακεραίων μεταξύ 0 και 100 χωρισμένη με κόμματα. Παράδειγμα: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Για κάθε υποκείμενη συσκευή, το max_opening_degrees πρέπει να είναι αυστηρά μεγαλύτερο από το min_opening_degrees. Ελέγξτε τη διαμόρφωσή σας.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Οι λίστες ελάχιστου και μέγιστου βαθμού ανοίγματος δεν μπορούν να περιέχουν περισσότερες τιμές από τις διαμορφωμένες βαλβίδες",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -603,5 +621,11 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Ρύθμιση λειτουργίας HVAC σε αναστολή",
|
||||
"description": "Θέτει ένα VTherm σε εποχική αναστολή. Εμφανίζεται ως απενεργοποιημένο και, για over_climate με άμεσο έλεγχο βαλβίδας και over_valve, στέλνει ακατέργαστο αίτημα ανοίγματος βαλβίδας 100%. Το φυσικό άνοιγμα εξακολουθεί να υπόκειται στον ρυθμισμένο έλεγχο βαλβίδας και στα όρια της οντότητας number."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,7 @@
|
||||
"auto_start_stop": "Auto start and stop",
|
||||
"valve_regulation": "Valve regulation configuration",
|
||||
"sync_device_internal_temp": "Synchronize device temperature",
|
||||
"humidity": "Humidity",
|
||||
"lock": "Lock",
|
||||
"heating_failure_detection": "Heating failure detection",
|
||||
"auto_tpi_configuration": "Auto TPI - Configuration",
|
||||
@@ -110,6 +111,10 @@
|
||||
"auto_regulation_mode": "Self-regulation",
|
||||
"auto_regulation_dtemp": "Regulation threshold",
|
||||
"auto_regulation_periode_min": "Regulation minimum period",
|
||||
"opening_threshold_degree": "Opening threshold degree",
|
||||
"min_opening_degrees": "Min opening degrees",
|
||||
"max_opening_degrees": "Max opening degrees",
|
||||
"max_closing_degree": "Max closing degree",
|
||||
"auto_regulation_use_device_temp": "Use internal temperature of the underlying",
|
||||
"inverse_switch_command": "Inverse switch command",
|
||||
"auto_fan_mode": "Auto fan mode",
|
||||
@@ -127,6 +132,10 @@
|
||||
"auto_regulation_mode": "Auto adjustment of the target temperature",
|
||||
"auto_regulation_dtemp": "The threshold in ° (or % for valve) under which the temperature change will not be sent",
|
||||
"auto_regulation_periode_min": "Duration in minutes between two regulation update",
|
||||
"opening_threshold_degree": "Valve opening value under which the valve should be considered as closed (and then 'max_closing_degree' will apply)",
|
||||
"min_opening_degrees": "Opening degree minimum value for each underlying device when previous threshold is exceeded, comma separated. Default to 0. Example: 20, 25, 30",
|
||||
"max_opening_degrees": "Opening degree maximum value. The valve will never open more than this value",
|
||||
"max_closing_degree": "Closing degree maximum value. The valve will never be closed above this value. Set it to 100 to fully close the valve",
|
||||
"auto_regulation_use_device_temp": "Use the eventual internal temperature sensor of the underlying to speedup the self-regulation (not needed in most cases)",
|
||||
"inverse_switch_command": "For switch with pilot wire and diode you may need to inverse the command",
|
||||
"auto_fan_mode": "Automatically activate fan when huge heating/cooling is necessary",
|
||||
@@ -353,6 +362,18 @@
|
||||
"sync_entity_ids": "The list of the entities used to synchronize the internal temperature of the underlying devices. There should be one per underlying device. Should be a calibration entity if checkbox is selected or a temperature entity otherwise. Both are `number` entities."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Humidity",
|
||||
"description": "Use an external humidity sensor. Detected sensor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Use humidity sensor",
|
||||
"humidity_sensor_entity_id": "Humidity sensor"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Disable this option to use the underlying climate humidity only.",
|
||||
"humidity_sensor_entity_id": "Leave empty to automatically use the detected sensor."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Heating failure detection",
|
||||
"description": "Configure the heating failure detection feature. This detects anomalies when heating is expected but temperature doesn't increase, or when heating is off but temperature keeps rising.",
|
||||
@@ -387,6 +408,7 @@
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "A comma separated list of positive integer between 0 and the max valve opening is expected. Example: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "For each underlying device, max_opening_degrees must be strictly greater than min_opening_degrees. Please check your configuration.",
|
||||
"valve_control_parameters_cardinality_incorrect": "The minimum and maximum opening degree lists cannot contain more values than the configured valves",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -424,6 +446,7 @@
|
||||
"auto_start_stop": "Auto start and stop",
|
||||
"valve_regulation": "Valve regulation configuration",
|
||||
"sync_device_internal_temp": "Synchronize device temperature",
|
||||
"humidity": "Humidity",
|
||||
"lock": "Lock",
|
||||
"heating_failure_detection": "Heating failure detection",
|
||||
"finalize": "All done",
|
||||
@@ -498,6 +521,10 @@
|
||||
"auto_regulation_mode": "Self-regulation",
|
||||
"auto_regulation_dtemp": "Regulation threshold",
|
||||
"auto_regulation_periode_min": "Regulation minimum period",
|
||||
"opening_threshold_degree": "Opening threshold degree",
|
||||
"min_opening_degrees": "Min opening degrees",
|
||||
"max_opening_degrees": "Max opening degrees",
|
||||
"max_closing_degree": "Max closing degree",
|
||||
"auto_regulation_use_device_temp": "Use internal temperature of the underlying",
|
||||
"inverse_switch_command": "Inverse switch command",
|
||||
"auto_fan_mode": "Auto fan mode",
|
||||
@@ -515,6 +542,10 @@
|
||||
"auto_regulation_mode": "Auto adjustment of the target temperature",
|
||||
"auto_regulation_dtemp": "The threshold in ° (or % for valve) under which the temperature change will not be sent",
|
||||
"auto_regulation_periode_min": "Duration in minutes between two regulation update",
|
||||
"opening_threshold_degree": "Valve opening value under which the valve should be considered as closed (and then 'max_closing_degree' will apply)",
|
||||
"min_opening_degrees": "Opening degree minimum value for each underlying device when previous threshold is exceeded, comma separated. Default to 0. Example: 20, 25, 30",
|
||||
"max_opening_degrees": "Opening degree maximum value. The valve will never open more than this value",
|
||||
"max_closing_degree": "Closing degree maximum value. The valve will never be closed above this value. Set it to 100 to fully close the valve",
|
||||
"auto_regulation_use_device_temp": "Use the eventual internal temperature sensor of the underlying to speedup the self-regulation (not needed in most cases)",
|
||||
"inverse_switch_command": "For switch with pilot wire and diode you may need to inverse the command",
|
||||
"auto_fan_mode": "Automatically activate fan when huge heating/cooling is necessary",
|
||||
@@ -697,6 +728,18 @@
|
||||
"sync_entity_ids": "The list of the entities used to synchronize the internal temperature of the underlying devices. There should be one per underlying device. Should be a calibration entity if checkbox is selected or a temperature entity otherwise. Both are `number` entities."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Humidity - {name}",
|
||||
"description": "Use an external humidity sensor. Detected sensor: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Use humidity sensor",
|
||||
"humidity_sensor_entity_id": "Humidity sensor"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Disable this option to use the underlying climate humidity only.",
|
||||
"humidity_sensor_entity_id": "Leave empty to automatically use the detected sensor."
|
||||
}
|
||||
},
|
||||
"auto_tpi_configuration": {
|
||||
"title": "Auto TPI - Configuration - {name}",
|
||||
"description": "General settings for Auto TPI learning.",
|
||||
@@ -777,6 +820,7 @@
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "A comma separated list of positive integer between 0 and the max value of the valve is expected. Example: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "For each underlying device, max_opening_degrees must be strictly greater than min_opening_degrees. Please check your configuration.",
|
||||
"valve_control_parameters_cardinality_incorrect": "The minimum and maximum opening degree lists cannot contain more values than the configured valves",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -963,6 +1007,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Set HVAC Mode to Sleep",
|
||||
"description": "Sets a VTherm to seasonal sleep. It is shown as off and, for over_climate with direct valve regulation and over_valve, sends a raw 100% valve-opening request. The physical opening remains subject to configured valve control and number entity limits."
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "Set Auto TPI mode",
|
||||
"description": "Enable or disable the Auto TPI learning mode",
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"auto_start_stop": "Allumage/extinction automatique",
|
||||
"valve_regulation": "Configuration de la regulation par vanne",
|
||||
"sync_device_internal_temp": "Synchronisation de la température de l'appareil",
|
||||
"humidity": "Humidité",
|
||||
"lock": "Gestion du verrouilage",
|
||||
"heating_failure_detection": "Détection de panne de chauffage",
|
||||
"auto_tpi_configuration": "Auto TPI - Configuration",
|
||||
@@ -111,6 +112,10 @@
|
||||
"auto_regulation_mode": "Auto-régulation",
|
||||
"auto_regulation_dtemp": "Seuil de régulation",
|
||||
"auto_regulation_periode_min": "Période minimale de régulation",
|
||||
"opening_threshold_degree": "Seuil d'ouverture",
|
||||
"min_opening_degrees": "Ouvertures minimales",
|
||||
"max_opening_degrees": "Ouvertures maximales",
|
||||
"max_closing_degree": "Fermetures maximale",
|
||||
"auto_regulation_use_device_temp": "Compenser la température interne du sous-jacent",
|
||||
"inverse_switch_command": "Inverser la commande",
|
||||
"auto_fan_mode": " Auto ventilation mode",
|
||||
@@ -128,6 +133,10 @@
|
||||
"auto_regulation_mode": "Utilisation de l'auto-régulation faite par VTherm",
|
||||
"auto_regulation_dtemp": "Le seuil en ° (ou % pour les vannes) en-dessous duquel la régulation ne sera pas envoyée",
|
||||
"auto_regulation_periode_min": "La durée en minutes entre deux mise à jour faites par la régulation",
|
||||
"opening_threshold_degree": "Seuil d'ouverture la vanne en dessous de laquelle la vanne est considérée comme devant être fermée (et alors 'max_closing_degree' s'appliquera)",
|
||||
"min_opening_degrees": "Ouverture minimale pour chaque vanne considérée comme chauffante, séparée par des virgules. Par défaut à 0. Exemple : 20, 25, 30",
|
||||
"max_opening_degrees": "Degré d'ouverture maximum pour chaque équipement sous-jacent, séparé par des virgules. Par défaut 100. La vanne ne s'ouvrira jamais plus que cette valeur. Exemple: 80, 85, 90",
|
||||
"max_closing_degree": "Fermeture maximale. La vanne ne sera jamais fermée au-delà de cette valeur. Mettez à 100 pour fermer complètement la vanne",
|
||||
"auto_regulation_use_device_temp": "Compenser la temperature interne du sous-jacent pour accélérer l'auto-régulation (n'est pas nécessaire dans la plupart des cas)",
|
||||
"inverse_switch_command": "Inverse la commande du switch pour une installation avec fil pilote et diode",
|
||||
"auto_fan_mode": "Active la ventilation automatiquement en cas d'écart important",
|
||||
@@ -354,6 +363,18 @@
|
||||
"sync_entity_ids": "La liste des entités utilisées pour synchroniser la température interne des appareils sous-jacents. Il doit y en avoir une par appareil sous-jacent. Doit être une entité de calibrage si la case est cochée ou une entité de température sinon. Les deux sont des entités de type `number`."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Humidité",
|
||||
"description": "Utilisez un capteur d'humidité externe. Capteur détecté : {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Utiliser un capteur d'humidité",
|
||||
"humidity_sensor_entity_id": "Capteur d'humidité"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Désactivez cette option pour utiliser uniquement l'humidité du climate sous-jacent.",
|
||||
"humidity_sensor_entity_id": "Laissez vide pour utiliser automatiquement le capteur détecté."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Détection de panne de chauffage",
|
||||
"description": "Configuration de la détection de panne de chauffage. Cette fonctionnalité détecte les anomalies lorsque le chauffage est demandé mais que la température n'augmente pas, ou lorsque le chauffage est éteint mais que la température continue de monter.",
|
||||
@@ -388,6 +409,7 @@
|
||||
"min_opening_degrees_format": "Une liste d'entiers positifs séparés par des ',' est attendu. Exemple : 20, 25, 30",
|
||||
"max_opening_degrees_format": "Une liste d'entiers positifs entre 0 et l'ouverture maximale de la vanne séparés par des ',' est attendu. Exemple : 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Pour chaque équipement sous-jacent, max_opening_degrees doit être strictement supérieur à min_opening_degrees. Veuillez vérifier votre configuration.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Les listes des degrés d'ouverture minimum et maximum ne peuvent pas contenir plus de valeurs que les vannes configurées",
|
||||
"vswitch_configuration_incorrect": "La configuration de la personnalisation des commandes est incorrecte. Elle est obligatoire pour les sous-jacents non switch et le format doit être 'service_name[/attribut:valeur]'. Plus d'informations dans le README."
|
||||
},
|
||||
"abort": {
|
||||
@@ -425,6 +447,7 @@
|
||||
"auto_start_stop": "Allumage/extinction automatique",
|
||||
"valve_regulation": "Configuration de la regulation par vanne",
|
||||
"sync_device_internal_temp": "Synchronisation de la température de l'appareil",
|
||||
"humidity": "Humidité",
|
||||
"lock": "Verrouillage",
|
||||
"heating_failure_detection": "Détection de panne de chauffage",
|
||||
"finalize": "Finaliser les modifications",
|
||||
@@ -500,6 +523,10 @@
|
||||
"auto_regulation_mode": "Auto-régulation",
|
||||
"auto_regulation_dtemp": "Seuil de régulation",
|
||||
"auto_regulation_periode_min": "Période minimale de régulation",
|
||||
"opening_threshold_degree": "Seuil d'ouverture",
|
||||
"min_opening_degrees": "Ouvertures minimales",
|
||||
"max_opening_degrees": "Ouvertures maximales",
|
||||
"max_closing_degree": "Fermetures maximale",
|
||||
"auto_regulation_use_device_temp": "Compenser la température interne du sous-jacent",
|
||||
"inverse_switch_command": "Inverser la commande",
|
||||
"auto_fan_mode": "Auto ventilation mode",
|
||||
@@ -517,6 +544,10 @@
|
||||
"auto_regulation_mode": "Utilisation de l'auto-régulation faite par VTherm",
|
||||
"auto_regulation_dtemp": "Le seuil en ° (ou % pour les vannes) en-dessous duquel la régulation ne sera pas envoyée",
|
||||
"auto_regulation_periode_min": "La durée en minutes entre deux mise à jour faites par la régulation",
|
||||
"opening_threshold_degree": "Seuil d'ouverture la vanne en dessous de laquelle la vanne est considérée comme devant être fermée (et alors 'max_closing_degree' s'appliquera)",
|
||||
"min_opening_degrees": "Ouverture minimale pour chaque vanne considérée comme chauffante, séparée par des virgules. Par défaut à 0. Exemple : 20, 25, 30",
|
||||
"max_opening_degrees": "Degré d'ouverture maximum pour chaque équipement sous-jacent, séparé par des virgules. Par défaut 100. La vanne ne s'ouvrira jamais plus que cette valeur. Exemple: 80, 85, 90",
|
||||
"max_closing_degree": "Fermeture maximale. La vanne ne sera jamais fermée au-delà de cette valeur. Mettez à 100 pour fermer complètement la vanne",
|
||||
"auto_regulation_use_device_temp": "Compenser la temperature interne du sous-jacent pour accélérer l'auto-régulation (n'est pas nécessaire dans la plupart des cas)",
|
||||
"inverse_switch_command": "Inverse la commande du switch pour une installation avec fil pilote et diode",
|
||||
"auto_fan_mode": "Active la ventilation automatiquement en cas d'écart important",
|
||||
@@ -745,6 +776,18 @@
|
||||
"sync_entity_ids": "La liste des entités utilisées pour synchroniser la température interne des appareils sous-jacents. Il doit y en avoir une par appareil sous-jacent. Doit être une entité de calibrage si la case est cochée ou une entité de température sinon. Les deux sont des entités de type `number`."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Humidité - {name}",
|
||||
"description": "Utilisez un capteur d'humidité externe. Capteur détecté : {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Utiliser un capteur d'humidité",
|
||||
"humidity_sensor_entity_id": "Capteur d'humidité"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Désactivez cette option pour utiliser uniquement l'humidité du climate sous-jacent.",
|
||||
"humidity_sensor_entity_id": "Laissez vide pour utiliser automatiquement le capteur détecté."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Détection de panne de chauffage - {name}",
|
||||
"description": "Configuration de la détection de panne de chauffage. Cette fonctionnalité détecte les anomalies lorsque le chauffage est demandé mais que la température n'augmente pas, ou lorsque le chauffage est éteint mais que la température continue de monter.",
|
||||
@@ -779,6 +822,7 @@
|
||||
"min_opening_degrees_format": "Une liste d'entiers positifs séparés par des ',' est attendu. Exemple : 20, 25, 30",
|
||||
"max_opening_degrees_format": "Une liste d'entiers positifs entre 0 et l'ouverture maximale de la vanne séparés par des ',' est attendu. Exemple : 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Pour chaque équipement sous-jacent, max_opening_degrees doit être strictement supérieur à min_opening_degrees. Veuillez vérifier votre configuration.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Les listes des degrés d'ouverture minimum et maximum ne peuvent pas contenir plus de valeurs que les vannes configurées",
|
||||
"vswitch_configuration_incorrect": "La configuration de la personnalisation des commandes est incorrecte. Elle est obligatoire pour les sous-jacents non switch et le format doit être 'service_name[/attribut:valeur]'. Plus d'informations dans le README."
|
||||
},
|
||||
"abort": {
|
||||
@@ -965,6 +1009,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Passer le mode HVAC en sommeil",
|
||||
"description": "Place un VTherm en sommeil saisonnier. Il est affiché comme arrêté et, pour over_climate avec régulation directe de vanne et over_valve, envoie une demande brute d'ouverture de vanne à 100 %. L'ouverture physique reste soumise au contrôle de vanne configuré et aux limites de l'entité number."
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "Définir le mode Auto TPI",
|
||||
"description": "Active ou désactive le mode d'apprentissage Auto TPI",
|
||||
|
||||
@@ -111,6 +111,10 @@
|
||||
"auto_regulation_mode": "Auto-regolazione",
|
||||
"auto_regulation_dtemp": "Regulazione soglia",
|
||||
"auto_regulation_periode_min": "Periodo minimo di regolazione",
|
||||
"opening_threshold_degree": "Soglia di apertura",
|
||||
"min_opening_degrees": "Gradi di apertura minima",
|
||||
"max_opening_degrees": "Grado di apertura massimo",
|
||||
"max_closing_degree": "Grado di chiusura massimo",
|
||||
"auto_regulation_use_device_temp": "Utilizzare la temperatura interna del sottostante",
|
||||
"inverse_switch_command": "Invertire il comando di commutazione",
|
||||
"auto_fan_mode": " Modo Auto fan",
|
||||
@@ -128,6 +132,10 @@
|
||||
"auto_regulation_mode": "Correzione automatica della temperatura desiderata",
|
||||
"auto_regulation_dtemp": "La soglia in ° (o % per la valvola) al di sotto della quale la variazione di temperatura non verrà inviata",
|
||||
"auto_regulation_periode_min": "Durata in minuti tra due aggiornamenti della regolazione",
|
||||
"opening_threshold_degree": "Valore di apertura della valvola al di sotto del quale la valvola deve essere considerata chiusa (e quindi si applicherà 'max_closing_degree')",
|
||||
"min_opening_degrees": "Valore minimo del grado di apertura per ciascun dispositivo sottostante, separato da virgola. Il valore predefinito è 0. Esempio: 20, 25, 30",
|
||||
"max_opening_degrees": "Valore massimo del grado di apertura per ogni dispositivo sottostante, separato da virgole. Il valore predefinito è 100. La valvola non si aprirà mai più di questo valore. Esempio: 80, 85, 90",
|
||||
"max_closing_degree": "Valore massimo del grado di chiusura. La valvola non sarà mai chiusa più di questo valore. Impostare a 100 per chiudere completamente la valvola",
|
||||
"auto_regulation_use_device_temp": "Utilizzare l'eventuale sensore di temperatura interno del sottostante per accelerare l'autoregolazione (non necessario nella maggior parte dei casi)",
|
||||
"inverse_switch_command": "Per gli interruttori con filo pilota e diodo potrebbe essere necessario invertire il comando",
|
||||
"auto_fan_mode": "Attivare automaticamente la ventilazione quando è necessario un riscaldamento/raffreddamento intenso",
|
||||
@@ -388,6 +396,7 @@
|
||||
"min_opening_degrees_format": "È richiesto un elenco di numeri interi positivi separati da virgola. Esempio: 20, 25, 30",
|
||||
"max_opening_degrees_format": "È previsto un elenco di numeri interi positivi tra 0 e 100 separati da virgola. Esempio: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Per ogni dispositivo sottostante, max_opening_degrees deve essere strettamente maggiore di min_opening_degrees. Verificare la configurazione.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Gli elenchi dei gradi di apertura minimi e massimi non possono contenere più valori delle valvole configurate",
|
||||
"vswitch_configuration_incorrect": "La configurazione della personalizzazione dei comandi non è corretta. È obbligatoria per i sottostanti non switch e il formato deve essere ‘nome_servizio[/attributo:valore]’. Maggiori informazioni nel README."
|
||||
},
|
||||
"abort": {
|
||||
@@ -500,6 +509,10 @@
|
||||
"auto_regulation_mode": "Auto-regolazione",
|
||||
"auto_regulation_dtemp": "Regulazione soglia",
|
||||
"auto_regulation_periode_min": "Periodo minimo di regulazione",
|
||||
"opening_threshold_degree": "Soglia di apertura",
|
||||
"min_opening_degrees": "Gradi di apertura minima",
|
||||
"max_opening_degrees": "Grado di apertura massimo",
|
||||
"max_closing_degree": "Grado di chiusura massimo",
|
||||
"auto_regulation_use_device_temp": "Utilizzare la temperatura interna del sottostante",
|
||||
"inverse_switch_command": "Invertire il comando di commutazione",
|
||||
"auto_fan_mode": "Modo Auto fan",
|
||||
@@ -517,6 +530,10 @@
|
||||
"auto_regulation_mode": "Correzione automatica della temperatura desiderata",
|
||||
"auto_regulation_dtemp": "La soglia in ° (o % per la valvola) al di sotto della quale la variazione di temperatura non verrà inviata",
|
||||
"auto_regulation_periode_min": "Durata in minuti tra due aggiornamenti della regolazione",
|
||||
"opening_threshold_degree": "Valore di apertura della valvola al di sotto del quale la valvola deve essere considerata chiusa (e quindi si applicherà 'max_closing_degree')",
|
||||
"min_opening_degrees": "Valore minimo del grado di apertura per ciascun dispositivo sottostante, separato da virgola. Il valore predefinito è 0. Esempio: 20, 25, 30",
|
||||
"max_opening_degrees": "Valore massimo del grado di apertura per ogni dispositivo sottostante, separato da virgole. Il valore predefinito è 100. La valvola non si aprirà mai più di questo valore. Esempio: 80, 85, 90",
|
||||
"max_closing_degree": "Valore massimo del grado di chiusura. La valvola non sarà mai chiusa più di questo valore. Impostare a 100 per chiudere completamente la valvola",
|
||||
"auto_regulation_use_device_temp": "Utilizzare l'eventuale sensore di temperatura interno del sottostante per accelerare l'autoregolazione (non necessario nella maggior parte dei casi)",
|
||||
"inverse_switch_command": "Per gli interruttori con filo pilota e diodo potrebbe essere necessario invertire il comando",
|
||||
"auto_fan_mode": "Attivare automaticamente la ventilazione quando è necessario un riscaldamento/raffreddamento intenso",
|
||||
@@ -779,6 +796,7 @@
|
||||
"min_opening_degrees_format": "È richiesto un elenco di numeri interi positivi separati da virgola. Esempio: 20, 25, 30",
|
||||
"max_opening_degrees_format": "È previsto un elenco di numeri interi positivi tra 0 e 100 separati da virgola. Esempio: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Per ogni dispositivo sottostante, max_opening_degrees deve essere strettamente maggiore di min_opening_degrees. Verificare la configurazione.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Gli elenchi dei gradi di apertura minimi e massimi non possono contenere più valori delle valvole configurate",
|
||||
"vswitch_configuration_incorrect": "La configurazione della personalizzazione dei comandi non è corretta. È obbligatoria per i sottostanti non switch e il formato deve essere ‘nome_servizio[/attributo:valore]’. Maggiori informazioni nel file README."
|
||||
},
|
||||
"abort": {
|
||||
@@ -955,6 +973,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Imposta la modalità HVAC su sospensione",
|
||||
"description": "Imposta un VTherm in sospensione stagionale. Viene mostrato come spento e, per over_climate con regolazione diretta della valvola e over_valve, invia una richiesta grezza di apertura della valvola al 100%. L'apertura fisica resta soggetta al controllo valvola configurato e ai limiti dell'entità number."
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "Imposta modo Auto TPI",
|
||||
"description": "Abilita o disabilita la modalità di apprendimento automatico TPI",
|
||||
@@ -1065,4 +1087,4 @@
|
||||
"message": "L'apprendimento automatico TPI per {name} è stato interrotto a causa di 3 errori consecutivi. Motivo: {reason}. Controllare la configurazione."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,7 @@
|
||||
"auto_start_stop": "AutoSTART i autoSTOP",
|
||||
"valve_regulation": "Konfiguracja regulacji zaworu",
|
||||
"sync_device_internal_temp": "Synchronizacja temperatury urządzenia",
|
||||
"humidity": "Wilgotność",
|
||||
"lock": "Zarządzanie blokadą",
|
||||
"finalize": "Wszystko zrobione",
|
||||
"configuration_not_complete": "Konfiguracja niekompletna",
|
||||
@@ -107,6 +108,10 @@
|
||||
"auto_regulation_mode": "Autoregulacja",
|
||||
"auto_regulation_dtemp": "Próg regulacji",
|
||||
"auto_regulation_periode_min": "Minimalny okres regulacji",
|
||||
"opening_threshold_degree": "Próg otwarcia zaworu",
|
||||
"min_opening_degrees": "Minimalny stopień otwarcia",
|
||||
"max_opening_degrees": "Maksymalny stopień otwarcia",
|
||||
"max_closing_degree": "Maksymalny stopień zamknięcia",
|
||||
"auto_regulation_use_device_temp": "Użyj temperatury wewnętrznej urządzenia",
|
||||
"inverse_switch_command": "Polecenie odwrócenia przełącznika",
|
||||
"auto_fan_mode": "Tryb autowentylacji",
|
||||
@@ -124,6 +129,10 @@
|
||||
"auto_regulation_mode": "Automatyczna regulacja temperatury docelowej",
|
||||
"auto_regulation_dtemp": "Próg otwarcia w ° (dla zaworu w %), poniżej którego zmiana temperatury nie będzie uwzględniana",
|
||||
"auto_regulation_periode_min": "Czas (w min.) między dwiema aktualizacjami regulacji",
|
||||
"opening_threshold_degree": "Próg otwarcia zaworu, poniżej którego zawór powinien być uważany za zamknięty (wówczas będzie obowiązywał parametr maksymalnego stopnia zamknięcia)",
|
||||
"min_opening_degrees": "Minimalne wartości stopnia otwarcia zaworu dla każdego urządzenia, oddzielone przecinkiem. Domyślnie: 0. Przykład: 20, 25, 30",
|
||||
"max_opening_degrees": "Maksymalna wartość stopnia otwarcia zaworu. Zawór nigdy się nie otworzy więcej niż ta wartość",
|
||||
"max_closing_degree": "Maksymalna wartość stopnia zamknięcia zaworu. Powyżej tej wartości zawór nigdy nie zostanie zamknięty. Ustaw wartość tego parametru na `100`, aby całkowicie zamknąć zawór, jeśli ogrzewanie jest już niepotrzebne",
|
||||
"auto_regulation_use_device_temp": "Użyj ewentualnego wewnętrznego czujnika temperatury urządzenia, aby przyspieszyć autoregulację (w większości przypadków nie jest to konieczne)",
|
||||
"inverse_switch_command": "W przypadku przełącznika z przewodem sterującym może być konieczne odwrócenie kolejności poleceń",
|
||||
"auto_fan_mode": "Automatycznie uruchom wentylator, gdy konieczne jest intensywne ogrzewanie/chłodzenie",
|
||||
@@ -304,6 +313,18 @@
|
||||
"sync_entity_ids": "Lista encji używanych do synchronizacji temperatury wewnętrznej urządzeń bazowych. Każde urządzenie bazowe musi mieć jedną taką encję. Jeśli pole wyboru jest zaznaczone, powinna to być encja kalibracji. W przeciwnym razie powinna to być encja temperatury. Obie encje mają typ numeryczny `number`."
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Wilgotność",
|
||||
"description": "Użyj zewnętrznego czujnika wilgotności. Wykryty czujnik: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Użyj czujnika wilgotności",
|
||||
"humidity_sensor_entity_id": "Czujnik wilgotności"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Wyłącz tę opcję, aby używać tylko wilgotności z bazowego termostatu climate.",
|
||||
"humidity_sensor_entity_id": "Pozostaw puste, aby automatycznie użyć wykrytego czujnika."
|
||||
}
|
||||
},
|
||||
"heating_failure_detection": {
|
||||
"title": "Wykrywanie awarii ogrzewania",
|
||||
"description": "Konfiguracja funkcji wykrywania awarii ogrzewania. Wykrywa anomalie, gdy ogrzewanie jest oczekiwane, ale temperatura nie wzrasta, lub gdy ogrzewanie jest wyłączone, ale temperatura nadal rośnie.",
|
||||
@@ -338,6 +359,7 @@
|
||||
"min_opening_degrees_format": "Oczekiwany separator przecinkowy listy lub dodatnia liczba całkowita. Przykład: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Oczekiwana jest lista dodatnich liczb całkowitych między 0 a 100 oddzielonych przecinkami. Przykład: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Dla każdego urządzenia bazowego max_opening_degrees musi być ściśle większy niż min_opening_degrees. Sprawdź swoją konfigurację.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Listy minimalnych i maksymalnych stopni otwarcia nie mogą zawierać więcej wartości niż skonfigurowane zawory",
|
||||
"vswitch_configuration_incorrect": "Błąd konfiguracji poleceń własnych. Wymagane są one dla urządzeń nie będących przełącznikami. Ich format musi być następujący: `service_name[/attribute:value]`. Więcej informacji znajdziesz w dokumentacji"
|
||||
},
|
||||
"abort": {
|
||||
@@ -375,6 +397,7 @@
|
||||
"auto_start_stop": "AutoSTART i autoSTOP",
|
||||
"valve_regulation": "Konfiguracja regulacji zaworu",
|
||||
"sync_device_internal_temp": "Synchronizacja temperatury urządzenia",
|
||||
"humidity": "Wilgotność",
|
||||
"lock": "Blokada",
|
||||
"auto_tpi_configuration": "Auto TPI - Ogólne",
|
||||
"auto_tpi_avg_settings": "Auto TPI - Średnia",
|
||||
@@ -452,6 +475,10 @@
|
||||
"auto_regulation_mode": "Autoregulacja",
|
||||
"auto_regulation_dtemp": "Próg regulacji",
|
||||
"auto_regulation_periode_min": "Minimalny okres regulacji",
|
||||
"opening_threshold_degree": "Próg otwarcia zaworu",
|
||||
"min_opening_degrees": "Minimalny stopień otwarcia",
|
||||
"max_opening_degrees": "Maksymalny stopień otwarcia",
|
||||
"max_closing_degree": "Maksymalny stopień zamknięcia",
|
||||
"auto_regulation_use_device_temp": "Użyj temperatury wewnętrznej z urządzenia",
|
||||
"inverse_switch_command": "Polecenie odwrócenia przełącznika",
|
||||
"auto_fan_mode": "Tryb autowentylacji",
|
||||
@@ -469,6 +496,10 @@
|
||||
"auto_regulation_mode": "Automatyczna regulacja temperatury docelowej",
|
||||
"auto_regulation_dtemp": "Próg otwarcia w ° (dla zaworu w %), poniżej którego zmiana temperatury nie będzie uwzględniana",
|
||||
"auto_regulation_periode_min": "Czas (w min.) między dwiema aktualizacjami regulacji",
|
||||
"opening_threshold_degree": "Próg otwarcia zaworu, poniżej którego zawór powinien być uważany za zamknięty (wówczas będzie obowiązywał parametr maksymalnego stopnia zamknięcia)",
|
||||
"min_opening_degrees": "Minimalne wartości stopnia otwarcia zaworu dla każdego urządzenia, oddzielone przecinkiem. Domyślnie: 0. Przykład: 20, 25, 30",
|
||||
"max_opening_degrees": "Maksymalna wartość stopnia otwarcia zaworu. Zawór nigdy się nie otworzy więcej niż ta wartość",
|
||||
"max_closing_degree": "Maksymalna wartość stopnia zamknięcia zaworu. Powyżej tej wartości zawór nigdy nie zostanie zamknięty. Ustaw wartość tego parametru na `100`, aby całkowicie zamknąć zawór, jeśli ogrzewanie jest już niepotrzebne",
|
||||
"auto_regulation_use_device_temp": "Użyj ewentualnego wewnętrznego sensora temperatury urządzenia, aby przyspieszyć autoregulację (w większości przypadków nie jest to konieczne)",
|
||||
"inverse_switch_command": "W przypadku przełącznika z przewodem sterującym może być konieczna odwrotna kolejność polecenia",
|
||||
"auto_fan_mode": "Automatycznie aktywuj wentylator, gdy konieczne jest intensywne ogrzewanie/chłodzenie",
|
||||
@@ -639,6 +670,18 @@
|
||||
"max_closing_degree": "Maksymalna wartość stopnia zamknięcia zaworu. Powyżej tej wartości zawór nigdy nie zostanie zamknięty. Ustaw wartość tego parametru na `100`, aby całkowicie zamknąć zawór, jeśli ogrzewanie jest już niepotrzebne"
|
||||
}
|
||||
},
|
||||
"humidity": {
|
||||
"title": "Wilgotność - {name}",
|
||||
"description": "Użyj zewnętrznego czujnika wilgotności. Wykryty czujnik: {humidity_detected}",
|
||||
"data": {
|
||||
"use_humidity_feature": "Użyj czujnika wilgotności",
|
||||
"humidity_sensor_entity_id": "Czujnik wilgotności"
|
||||
},
|
||||
"data_description": {
|
||||
"use_humidity_feature": "Wyłącz tę opcję, aby używać tylko wilgotności z bazowego termostatu climate.",
|
||||
"humidity_sensor_entity_id": "Pozostaw puste, aby automatycznie użyć wykrytego czujnika."
|
||||
}
|
||||
},
|
||||
"auto_tpi_configuration": {
|
||||
"title": "Auto TPI - Ogólne - {name}",
|
||||
"description": "Ogólne parametry nauki Auto TPI.",
|
||||
@@ -718,6 +761,7 @@
|
||||
"min_opening_degrees_format": "Oczekiwany separator przecinkowy listy lub dodatnia liczba całkowita. Przykład: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Oczekiwana jest lista dodatnich liczb całkowitych między 0 a 100 oddzielonych przecinkami. Przykład: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Dla każdego urządzenia bazowego max_opening_degrees musi być ściśle większy niż min_opening_degrees. Sprawdź swoją konfigurację.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Listy minimalnych i maksymalnych stopni otwarcia nie mogą zawierać więcej wartości niż skonfigurowane zawory",
|
||||
"vswitch_configuration_incorrect": "Błąd konfiguracji poleceń własnych. Wymagane są one dla urządzeń nie będących przełącznikami. Ich format musi być następujący: `service_name[/attribute:value]`. Więcej informacji znajdziesz w dokumentacji"
|
||||
},
|
||||
"abort": {
|
||||
@@ -862,6 +906,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Ustaw tryb HVAC na uśpienie",
|
||||
"description": "Przełącza VTherm w sezonowy tryb uśpienia. Jest wyświetlany jako wyłączony, a dla over_climate z bezpośrednim sterowaniem zaworem i over_valve wysyła surowe żądanie otwarcia zaworu na 100%. Fizyczne otwarcie nadal podlega skonfigurowanemu sterowaniu zaworem i ograniczeniom encji number."
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "Tryb Auto TPI",
|
||||
"description": "Załącz lub wyłącz tryb nauki Auto TPI",
|
||||
|
||||
@@ -104,6 +104,10 @@
|
||||
"auto_regulation_mode": "Саморегулирование",
|
||||
"auto_regulation_dtemp": "Порог регулирования",
|
||||
"auto_regulation_periode_min": "Минимальный период регулирования",
|
||||
"opening_threshold_degree": "Пороговое значение открытия",
|
||||
"min_opening_degrees": "Минимальные степени открытия",
|
||||
"max_opening_degrees": "Максимальная степень открытия",
|
||||
"max_closing_degree": "Максимальная степень закрытия",
|
||||
"auto_regulation_use_device_temp": "Использовать внутреннюю температуру устройства",
|
||||
"inverse_switch_command": "Инвертировать команду переключателя",
|
||||
"auto_fan_mode": "Авто режим вентилятора",
|
||||
@@ -121,6 +125,10 @@
|
||||
"auto_regulation_mode": "Автоматическая корректировка целевой температуры",
|
||||
"auto_regulation_dtemp": "Порог в ° (или % для клапана), ниже которого изменение температуры не будет отправлено",
|
||||
"auto_regulation_periode_min": "Время в минутах между двумя обновлениями регулирования",
|
||||
"opening_threshold_degree": "Значение открытия клапана, ниже которого клапан должен считаться закрытым (и тогда будет применено 'max_closing_degree')",
|
||||
"min_opening_degrees": "Минимальное значение степени открытия для каждого управляющего устройства, через запятую. По умолчанию 0. Пример: 20, 25, 30",
|
||||
"max_opening_degrees": "Максимальное значение степени открытия для каждого базового устройства, через запятую. По умолчанию 100. Клапан никогда не откроется больше этого значения. Пример: 80, 85, 90",
|
||||
"max_closing_degree": "Максимальное значение степени закрытия. Клапан никогда не закроется больше этого значения. Установите на 100, чтобы полностью закрыть клапан",
|
||||
"auto_regulation_use_device_temp": "Использовать внутренний датчик температуры устройства для ускорения саморегулирования (в большинстве случаев не требуется)",
|
||||
"inverse_switch_command": "Для переключателей с пилотным проводом и диодом может потребоваться инвертировать команду",
|
||||
"auto_fan_mode": "Автоматически активировать вентилятор при необходимости сильного обогрева/охлаждения",
|
||||
@@ -333,6 +341,7 @@
|
||||
"min_opening_degrees_format": "Ожидается список положительных целых чисел, разделенных запятыми. Пример: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Ожидается список положительных целых чисел от 0 до 100, разделенных запятыми. Пример: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Для каждого базового устройства max_opening_degrees должен быть строго больше min_opening_degrees. Проверьте вашу конфигурацию.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Списки минимальной и максимальной степени открытия не могут содержать больше значений, чем настроенных клапанов",
|
||||
"vswitch_configuration_incorrect": "Неверная конфигурация настройки команды. Она обязательна для базовых объектов, которые не являются переключателями, и формат должен быть service_name[/attribute:value]. Дополнительная информация доступна в README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -447,7 +456,11 @@
|
||||
"on_command_text": "Настройка команды включения",
|
||||
"vswitch_on_command": "Опциональные команды включения",
|
||||
"off_command_text": "Настройка команды выключения",
|
||||
"vswitch_off_command": "Опциональные команды выключения"
|
||||
"vswitch_off_command": "Опциональные команды выключения",
|
||||
"opening_threshold_degree": "Пороговое значение открытия",
|
||||
"min_opening_degrees": "Минимальные степени открытия",
|
||||
"max_opening_degrees": "Максимальная степень открытия",
|
||||
"max_closing_degree": "Максимальная степень закрытия"
|
||||
},
|
||||
"data_description": {
|
||||
"underlying_entity_ids": "Устройство(а) для управления - требуется 1",
|
||||
@@ -461,7 +474,11 @@
|
||||
"auto_regulation_use_device_temp": "Использовать внутренний датчик температуры устройства для ускорения саморегулирования (в большинстве случаев не требуется)",
|
||||
"inverse_switch_command": "Для переключателей с пилотным проводом и диодом может потребоваться инвертировать команду",
|
||||
"auto_fan_mode": "Автоматически активировать вентилятор при необходимости сильного обогрева/охлаждения",
|
||||
"on_command_text": "Для устройств типа `select` или `climate` необходимо настроить команды."
|
||||
"on_command_text": "Для устройств типа `select` или `climate` необходимо настроить команды.",
|
||||
"opening_threshold_degree": "Значение открытия клапана, ниже которого клапан должен считаться закрытым (и тогда будет применено 'max_closing_degree')",
|
||||
"min_opening_degrees": "Минимальное значение степени открытия для каждого управляющего устройства, через запятую. По умолчанию 0. Пример: 20, 25, 30",
|
||||
"max_opening_degrees": "Максимальное значение степени открытия для каждого базового устройства, через запятую. По умолчанию 100. Клапан никогда не откроется больше этого значения. Пример: 80, 85, 90",
|
||||
"max_closing_degree": "Максимальное значение степени закрытия. Клапан никогда не закроется больше этого значения. Установите на 100, чтобы полностью закрыть клапан"
|
||||
}
|
||||
},
|
||||
"tpi": {
|
||||
@@ -671,6 +688,7 @@
|
||||
"min_opening_degrees_format": "Ожидается список положительных целых чисел, разделенных запятыми. Пример: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Ожидается список положительных целых чисел от 0 до 100, разделенных запятыми. Пример: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Для каждого базового устройства max_opening_degrees должен быть строго больше min_opening_degrees. Проверьте вашу конфигурацию.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Списки минимальной и максимальной степени открытия не могут содержать больше значений, чем настроенных клапанов",
|
||||
"vswitch_configuration_incorrect": "Неверная конфигурация настройки команды. Она обязательна для базовых объектов, которые не являются переключателями, и формат должен быть service_name[/attribute:value]. Дополнительная информация доступна в README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -807,5 +825,11 @@
|
||||
"name": "Интенсивный AC (отсутствие)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Установить режим HVAC «Сон»",
|
||||
"description": "Переводит VTherm в сезонный режим сна. Он отображается как выключенный и для over_climate с прямым управлением клапаном и over_valve отправляет необработанный запрос на открытие клапана на 100 %. Физическое открытие по-прежнему ограничивается настроенным управлением клапаном и пределами сущности number."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -115,6 +115,10 @@
|
||||
"auto_regulation_mode": "Samoregulácia",
|
||||
"auto_regulation_dtemp": "Regulačný prah",
|
||||
"auto_regulation_periode_min": "Regulačné minimálne obdobie",
|
||||
"opening_threshold_degree": "Prah otvorenia",
|
||||
"min_opening_degrees": "Minimálne stupne otvorenia",
|
||||
"max_opening_degrees": "Maximálny stupeň otvorenia",
|
||||
"max_closing_degree": "Maximálny stupeň zatvorenia",
|
||||
"auto_regulation_use_device_temp": "Použite vnútornú teplotu podkladu",
|
||||
"inverse_switch_command": "Inverzný prepínací príkaz",
|
||||
"auto_fan_mode": "Režim automatického ventilátora"
|
||||
@@ -139,6 +143,10 @@
|
||||
"auto_regulation_mode": "Automatické nastavenie cieľovej teploty",
|
||||
"auto_regulation_dtemp": "Hranica v °, pod ktorou sa zmena teploty neodošle",
|
||||
"auto_regulation_periode_min": "Trvanie v minútach medzi dvoma aktualizáciami predpisov",
|
||||
"opening_threshold_degree": "Hodnota otvorenia ventilu, pod ktorou by mal byť ventil považovaný za zatvorený (a potom bude platný 'max_closing_degree')",
|
||||
"min_opening_degrees": "Minimálna hodnota stupňa otvorenia pre každé základné zariadenie, oddelená čiarkami. Predvolená hodnota je 0. Príklad: 20, 25, 30",
|
||||
"max_opening_degrees": "Maximálna hodnota stupňa otvorenia pre každé základné zariadenie, oddelené čiarkami. Predvolená hodnota je 100. Ventil sa nikdy neotvorí viac ako táto hodnota. Príklad: 80, 85, 90",
|
||||
"max_closing_degree": "Maximálna hodnota stupňa zatvorenia. Ventil sa nikdy nezatvorí viac ako táto hodnota. Nastavte na 100 pre úplné zatvorenie ventilu",
|
||||
"auto_regulation_use_device_temp": "Na urýchlenie samoregulácie použite prípadný vnútorný snímač teploty podkladu (vo väčšine prípadov nie je potrebné)",
|
||||
"inverse_switch_command": "V prípade spínača s pilotným vodičom a diódou možno budete musieť príkaz invertovať",
|
||||
"auto_fan_mode": "Automaticky aktivujte ventilátor, keď je potrebné veľké vykurovanie/chladenie"
|
||||
@@ -326,6 +334,7 @@
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Očakáva sa zoznam kladných celých čísel medzi 0 a 100 oddelených čiarkou. Príklad: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Pre každé základné zariadenie musí byť max_opening_degrees striktne väčší ako min_opening_degrees. Skontrolujte prosím svoju konfiguráciu.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Zoznamy minimálnych a maximálnych stupňov otvorenia nemôžu obsahovať viac hodnôt než nakonfigurované ventily",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -447,7 +456,11 @@
|
||||
"auto_regulation_periode_min": "Regulačné minimálne obdobie",
|
||||
"auto_regulation_use_device_temp": "Použite vnútornú teplotu podkladu",
|
||||
"inverse_switch_command": "Inverzný prepínací príkaz",
|
||||
"auto_fan_mode": "Režim automatického ventilátora"
|
||||
"auto_fan_mode": "Režim automatického ventilátora",
|
||||
"opening_threshold_degree": "Prah otvorenia",
|
||||
"min_opening_degrees": "Minimálne stupne otvorenia",
|
||||
"max_opening_degrees": "Maximálny stupeň otvorenia",
|
||||
"max_closing_degree": "Maximálny stupeň zatvorenia"
|
||||
},
|
||||
"data_description": {
|
||||
"heater_entity_id": "ID entity povinného ohrievača",
|
||||
@@ -471,7 +484,11 @@
|
||||
"auto_regulation_periode_min": "Trvanie v minútach medzi dvoma aktualizáciami predpisov",
|
||||
"auto_regulation_use_device_temp": "Na urýchlenie samoregulácie použite prípadný vnútorný snímač teploty podkladu (vo väčšine prípadov nie je potrebné)",
|
||||
"inverse_switch_command": "V prípade spínača s pilotným vodičom a diódou možno budete musieť príkaz invertovať",
|
||||
"auto_fan_mode": "Automaticky aktivujte ventilátor, keď je potrebné veľké vykurovanie/chladenie"
|
||||
"auto_fan_mode": "Automaticky aktivujte ventilátor, keď je potrebné veľké vykurovanie/chladenie",
|
||||
"opening_threshold_degree": "Hodnota otvorenia ventilu, pod ktorou by mal byť ventil považovaný za zatvorený (a potom bude platný 'max_closing_degree')",
|
||||
"min_opening_degrees": "Minimálna hodnota stupňa otvorenia pre každé základné zariadenie, oddelená čiarkami. Predvolená hodnota je 0. Príklad: 20, 25, 30",
|
||||
"max_opening_degrees": "Maximálna hodnota stupňa otvorenia pre každé základné zariadenie, oddelené čiarkami. Predvolená hodnota je 100. Ventil sa nikdy neotvorí viac ako táto hodnota. Príklad: 80, 85, 90",
|
||||
"max_closing_degree": "Maximálna hodnota stupňa zatvorenia. Ventil sa nikdy nezatvorí viac ako táto hodnota. Nastavte na 100 pre úplné zatvorenie ventilu"
|
||||
}
|
||||
},
|
||||
"tpi": {
|
||||
@@ -654,6 +671,7 @@
|
||||
"min_opening_degrees_format": "A comma separated list of positive integer is expected. Example: 20, 25, 30",
|
||||
"max_opening_degrees_format": "Očakáva sa zoznam kladných celých čísel medzi 0 a 100 oddelených čiarkou. Príklad: 80, 85, 90",
|
||||
"min_max_opening_degrees_inconsistent": "Pre každé základné zariadenie musí byť max_opening_degrees striktne väčší ako min_opening_degrees. Skontrolujte prosím svoju konfiguráciu.",
|
||||
"valve_control_parameters_cardinality_incorrect": "Zoznamy minimálnych a maximálnych stupňov otvorenia nemôžu obsahovať viac hodnôt než nakonfigurované ventily",
|
||||
"vswitch_configuration_incorrect": "The command customization configuration is incorrect. It is required for underlying entities that are not switches, and the format must be service_name[/attribute:value]. More information is available in the README"
|
||||
},
|
||||
"abort": {
|
||||
@@ -779,5 +797,11 @@
|
||||
"name": "Boost ac mimo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "Nastaviť režim HVAC na spánok",
|
||||
"description": "Prepne VTherm do sezónneho režimu spánku. Zobrazuje sa ako vypnutý a pre over_climate s priamym riadením ventilu a over_valve odošle hrubú požiadavku na otvorenie ventilu na 100 %. Fyzické otvorenie naďalej podlieha nastavenému riadeniu ventilu a limitom entity number."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -110,6 +110,10 @@
|
||||
"auto_regulation_mode": "自调节",
|
||||
"auto_regulation_dtemp": "调节阈值",
|
||||
"auto_regulation_periode_min": "调节最短周期",
|
||||
"opening_threshold_degree": "开启阈值度数",
|
||||
"min_opening_degrees": "最小开度",
|
||||
"max_opening_degrees": "最大开度",
|
||||
"max_closing_degree": "最大关闭度",
|
||||
"auto_regulation_use_device_temp": "使用底层内部温度",
|
||||
"inverse_switch_command": "反向开关指令",
|
||||
"auto_fan_mode": "自动风扇模式",
|
||||
@@ -127,6 +131,10 @@
|
||||
"auto_regulation_mode": "自动调节目标温度",
|
||||
"auto_regulation_dtemp": "以 °(或阀门的 %)为单位的阈值,低于该阈值将不会发送温度变化",
|
||||
"auto_regulation_periode_min": "两次调节更新之间的时间间隔(分钟)",
|
||||
"opening_threshold_degree": "阀门开度低于此值时应视为关闭(并应用 max_closing_degree)",
|
||||
"min_opening_degrees": "当超过先前阈值时每个底层设备的开度最小值,以逗号分隔。默认为 0。示例:20,25,30",
|
||||
"max_opening_degrees": "开度最大值。阀门的开度永远不会超过该值",
|
||||
"max_closing_degree": "关闭度最大值。阀门永远不会在高于该值时关闭。将其设置为 100 以完全关闭阀门",
|
||||
"auto_regulation_use_device_temp": "使用底层设备可能提供的内部温度传感器来加速自调节(大多数情况下不需要)",
|
||||
"inverse_switch_command": "对于带导引线和二极管的开关,可能需要反转命令",
|
||||
"auto_fan_mode": "当需要大量加热/冷却时自动启动风扇",
|
||||
@@ -387,6 +395,7 @@
|
||||
"min_opening_degrees_format": "需要逗号分隔的正整数列表。示例:20,25,30",
|
||||
"max_opening_degrees_format": "需要一个介于 0 和最大阀门开度之间的逗号分隔的正整数列表。示例:80,85,90",
|
||||
"min_max_opening_degrees_inconsistent": "对于每个底层设备,max_opening_degrees 必须严格大于 min_opening_degrees。请检查你的配置。",
|
||||
"valve_control_parameters_cardinality_incorrect": "最小和最大开度列表中的值不能多于已配置的阀门数量",
|
||||
"vswitch_configuration_incorrect": "命令自定义配置不正确。对于不是 switch 的底层实体,这是必需的,格式必须为 service_name[/attribute:value]。更多信息请参阅 README。"
|
||||
},
|
||||
"abort": {
|
||||
@@ -506,7 +515,11 @@
|
||||
"on_command_text": "开启命令自定义",
|
||||
"vswitch_on_command": "可选开启命令",
|
||||
"off_command_text": "关闭命令自定义",
|
||||
"vswitch_off_command": "可选关闭命令"
|
||||
"vswitch_off_command": "可选关闭命令",
|
||||
"opening_threshold_degree": "开启阈值度数",
|
||||
"min_opening_degrees": "最小开度",
|
||||
"max_opening_degrees": "最大开度",
|
||||
"max_closing_degree": "最大关闭度"
|
||||
},
|
||||
"data_description": {
|
||||
"underlying_entity_ids": "要控制的设备 - 1 为必填项",
|
||||
@@ -520,7 +533,11 @@
|
||||
"auto_regulation_use_device_temp": "使用底层设备可能提供的内部温度传感器来加速自调节(大多数情况下不需要)",
|
||||
"inverse_switch_command": "对于带导引线和二极管的开关,可能需要反转命令",
|
||||
"auto_fan_mode": "当需要大量加热/冷却时自动启动风扇",
|
||||
"on_command_text": "对于 `select` 或 `climate` 类型的底层,您必须自定义命令。"
|
||||
"on_command_text": "对于 `select` 或 `climate` 类型的底层,您必须自定义命令。",
|
||||
"opening_threshold_degree": "阀门开度低于此值时应视为关闭(并应用 max_closing_degree)",
|
||||
"min_opening_degrees": "当超过先前阈值时每个底层设备的开度最小值,以逗号分隔。默认为 0。示例:20,25,30",
|
||||
"max_opening_degrees": "开度最大值。阀门的开度永远不会超过该值",
|
||||
"max_closing_degree": "关闭度最大值。阀门永远不会在高于该值时关闭。将其设置为 100 以完全关闭阀门"
|
||||
}
|
||||
},
|
||||
"tpi": {
|
||||
@@ -779,6 +796,7 @@
|
||||
"min_opening_degrees_format": "需要逗号分隔的正整数列表。示例:20,25,30",
|
||||
"max_opening_degrees_format": "需要一个介于 0 和阀门最大值之间的逗号分隔的正整数列表。示例:80,85,90",
|
||||
"min_max_opening_degrees_inconsistent": "对于每个底层设备,max_opening_degrees 必须严格大于 min_opening_degrees。请检查你的配置。",
|
||||
"valve_control_parameters_cardinality_incorrect": "最小和最大开度列表中的值不能多于已配置的阀门数量",
|
||||
"vswitch_configuration_incorrect": "命令自定义配置不正确。对于不是 switch 的底层实体,这是必需的,格式必须为 service_name[/attribute:value]。更多信息请参阅 README。"
|
||||
},
|
||||
"abort": {
|
||||
@@ -955,6 +973,10 @@
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"set_hvac_mode_sleep": {
|
||||
"name": "将 HVAC 模式设为休眠",
|
||||
"description": "将 VTherm 设为季节性休眠。它会显示为关闭;对于采用直接阀门调节的 over_climate 和 over_valve,会发送原始的 100% 阀门开度请求。实际开度仍受已配置的阀门控制和 number 实体限制。"
|
||||
},
|
||||
"set_auto_tpi_mode": {
|
||||
"name": "设置自动 TPI 模式",
|
||||
"description": "启用或禁用自动 TPI 学习模式",
|
||||
@@ -1065,4 +1087,4 @@
|
||||
"message": "由于连续 3 次失败,{name} 的自动 TPI 学习已停止。原因:{reason}。请检查您的配置。"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1173,6 +1173,10 @@ class UnderlyingValve(UnderlyingEntity):
|
||||
thermostat: Any,
|
||||
valve_entity_id: str,
|
||||
entity_type: UnderlyingEntityType = UnderlyingEntityType.VALVE,
|
||||
min_opening_degree: int | None = None,
|
||||
max_opening_degree: int | None = None,
|
||||
max_closing_degree: int = 100,
|
||||
opening_threshold: int = 0,
|
||||
) -> None:
|
||||
"""Initialize the underlying valve"""
|
||||
|
||||
@@ -1188,6 +1192,10 @@ class UnderlyingValve(UnderlyingEntity):
|
||||
self._max_open: float | None = None
|
||||
self._last_sent_temperature = None
|
||||
self._last_sent_opening_value: int | None = None
|
||||
self._min_opening_degree = min_opening_degree
|
||||
self._max_opening_degree = max_opening_degree
|
||||
self._max_closing_degree = max_closing_degree
|
||||
self._opening_threshold = opening_threshold
|
||||
|
||||
def init_valve_state_min_max_open(self):
|
||||
"""Initialize the min and max open percent"""
|
||||
@@ -1250,7 +1258,7 @@ class UnderlyingValve(UnderlyingEntity):
|
||||
_LOGGER.debug("%s - Stopping underlying valve entity %s", self, self._entity_id)
|
||||
# Issue 341
|
||||
is_active = self.is_device_active
|
||||
self._percent_open = self.clamp_sent_value(0)
|
||||
self._percent_open = self._get_controlled_percent(0)
|
||||
if is_active:
|
||||
await self.send_percent_open()
|
||||
|
||||
@@ -1314,7 +1322,7 @@ class UnderlyingValve(UnderlyingEntity):
|
||||
|
||||
async def set_valve_open_percent(self):
|
||||
"""Update the valve open percent"""
|
||||
caped_val = self.clamp_sent_value(self._thermostat.valve_open_percent)
|
||||
caped_val = self._get_controlled_percent(self._thermostat.valve_open_percent)
|
||||
if self._percent_open == caped_val:
|
||||
# No changes
|
||||
return
|
||||
@@ -1329,6 +1337,23 @@ class UnderlyingValve(UnderlyingEntity):
|
||||
# self._hass.create_task(self.send_percent_open())
|
||||
await self.send_percent_open()
|
||||
|
||||
def _get_controlled_percent(self, raw_percent: int) -> int:
|
||||
"""Convert the raw TPI command to the effective valve command."""
|
||||
if self._min_opening_degree is None or self._max_opening_degree is None:
|
||||
return self.clamp_sent_value(raw_percent)
|
||||
|
||||
opening_degree, _ = OpeningClosingDegreeCalculation.calculate_opening_closing_degree(
|
||||
brut_valve_open_percent=raw_percent,
|
||||
min_opening_degree=self._min_opening_degree,
|
||||
max_closing_degree=self._max_closing_degree,
|
||||
max_opening_degree=self._max_opening_degree,
|
||||
opening_threshold=self._opening_threshold,
|
||||
)
|
||||
if not self.is_initialized:
|
||||
raise RuntimeError(f"{self} - cannot clamp sent value because underlying is not initialized")
|
||||
|
||||
return round(max(self._min_open, min(opening_degree, self._max_open)))
|
||||
|
||||
def remove_entity(self):
|
||||
"""Remove the entity"""
|
||||
super().remove_entity()
|
||||
@@ -1343,6 +1368,11 @@ class UnderlyingValve(UnderlyingEntity):
|
||||
"""Return the last sent value to the valve"""
|
||||
return self._last_sent_opening_value
|
||||
|
||||
@property
|
||||
def command_percent(self) -> int | None:
|
||||
"""Return the effective command sent to the valve."""
|
||||
return self._percent_open
|
||||
|
||||
@overrides
|
||||
async def check_and_repair(self) -> bool:
|
||||
"""Check if the valve opening matches the last sent value and repair if needed.
|
||||
@@ -1484,6 +1514,17 @@ class UnderlyingValveRegulation(UnderlyingValve):
|
||||
entities.append(self._closing_degree_entity_id)
|
||||
self._state_manager.add_underlying_entities(entities)
|
||||
|
||||
@overrides
|
||||
def _get_controlled_percent(self, raw_percent: int) -> int:
|
||||
"""Keep the raw TPI percentage until ``send_percent_open``.
|
||||
|
||||
``send_percent_open`` below already applies the opening/closing-degree
|
||||
calculation. The base implementation performs the same calculation for
|
||||
direct ``over_valve`` control, which would otherwise transform the
|
||||
value twice for valve-regulation underlyings.
|
||||
"""
|
||||
return raw_percent
|
||||
|
||||
async def send_percent_open(self, fixed_value: int = None):
|
||||
"""Send the percent open to the underlying valve"""
|
||||
# Caclulate percent_open
|
||||
|
||||
Reference in new issue
Block a user