89 files
This commit is contained in:
@@ -302,7 +302,7 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
minor_version=8,
|
minor_version=8,
|
||||||
)
|
)
|
||||||
_log.info(
|
_log.info(
|
||||||
"Migrated WashData entry from version %s.%s to 3.7", version, minor_version
|
"Migrated WashData entry from version %s.%s to 3.8", version, minor_version
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -646,6 +646,33 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
await async_load_panel_config(hass) # self-guards; safe to call repeatedly
|
await async_load_panel_config(hass) # self-guards; safe to call repeatedly
|
||||||
from . import store_account # pylint: disable=import-outside-toplevel
|
from . import store_account # pylint: disable=import-outside-toplevel
|
||||||
await store_account.async_load(hass) # integration-wide online flag + account
|
await store_account.async_load(hass) # integration-wide online flag + account
|
||||||
|
|
||||||
|
# Cache the integration version from HA's already-loaded manifest (no file IO).
|
||||||
|
# ws_get_constants reads it from hass.data; we can't do a module-level read_text
|
||||||
|
# in ws_api.py because the module is imported lazily inside this coroutine and the
|
||||||
|
# IO runs on the event loop (#328/#335).
|
||||||
|
if "ha_washdata_version" not in hass.data:
|
||||||
|
try:
|
||||||
|
from homeassistant.loader import async_get_integration as _aget_integration # pylint: disable=import-outside-toplevel
|
||||||
|
_integ = await _aget_integration(hass, DOMAIN)
|
||||||
|
hass.data["ha_washdata_version"] = _integ.manifest.get("version", "") or ""
|
||||||
|
except Exception as err: # pylint: disable=broad-exception-caught
|
||||||
|
_LOGGER.debug("Could not load ha_washdata version from manifest: %s", err)
|
||||||
|
# Fall back to reading manifest.json off the event loop. Only
|
||||||
|
# write the key when the read succeeds so that a double failure
|
||||||
|
# (loader + file) leaves the key absent rather than storing ""
|
||||||
|
# (which would shadow _INTEGRATION_VERSION in ws_get_constants).
|
||||||
|
def _read_manifest_version() -> str:
|
||||||
|
try:
|
||||||
|
return json.loads(
|
||||||
|
(Path(__file__).parent / "manifest.json").read_text(encoding="utf-8")
|
||||||
|
).get("version") or ""
|
||||||
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
|
return ""
|
||||||
|
_fallback_version = await hass.async_add_executor_job(_read_manifest_version)
|
||||||
|
if _fallback_version:
|
||||||
|
hass.data["ha_washdata_version"] = _fallback_version
|
||||||
|
|
||||||
async_register_commands(hass)
|
async_register_commands(hass)
|
||||||
hass.data["ha_washdata_ws_registered"] = True
|
hass.data["ha_washdata_ws_registered"] = True
|
||||||
|
|
||||||
|
|||||||
@@ -41,9 +41,23 @@ from .const import (
|
|||||||
MATCH_MAE_PEAK_FLOOR,
|
MATCH_MAE_PEAK_FLOOR,
|
||||||
MATCH_MAE_REF_PEAK,
|
MATCH_MAE_REF_PEAK,
|
||||||
MATCH_MAE_SCALE,
|
MATCH_MAE_SCALE,
|
||||||
|
STAGE4_INTEGRATED_ENERGY_DEVICE_TYPES,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def stage4_energy_mode(device_type: str | None) -> str:
|
||||||
|
"""Return the Stage-4 ``energy_mode`` for a device type.
|
||||||
|
|
||||||
|
``"integrated"`` for device types in
|
||||||
|
``STAGE4_INTEGRATED_ENERGY_DEVICE_TYPES`` (washing machine / washer-dryer),
|
||||||
|
where same-duration temperature/spin variants make integrated energy the
|
||||||
|
right discriminator; ``"mean"`` (the historical default) otherwise. Single
|
||||||
|
source of truth for the gate, used by the manager, Playground and matching
|
||||||
|
tuner so all three stay consistent with the live matcher.
|
||||||
|
"""
|
||||||
|
return "integrated" if device_type in STAGE4_INTEGRATED_ENERGY_DEVICE_TYPES else "mean"
|
||||||
|
|
||||||
|
|
||||||
def _agreement(observed: float, expected: float, scale: float) -> float:
|
def _agreement(observed: float, expected: float, scale: float) -> float:
|
||||||
"""1.0 when observed==expected, decaying with the |log-ratio| / scale."""
|
"""1.0 when observed==expected, decaying with the |log-ratio| / scale."""
|
||||||
if observed <= 0 or expected <= 0 or scale <= 0:
|
if observed <= 0 or expected <= 0 or scale <= 0:
|
||||||
@@ -426,12 +440,18 @@ def compute_matches_worker(
|
|||||||
dur_w, en_w = dur_w / de_sum, en_w / de_sum
|
dur_w, en_w = dur_w / de_sum, en_w / de_sum
|
||||||
shape_w = max(0.0, 1.0 - dur_w - en_w)
|
shape_w = max(0.0, 1.0 - dur_w - en_w)
|
||||||
if (dur_w > 0 or en_w > 0) and candidates and current_duration > 0:
|
if (dur_w > 0 or en_w > 0) and candidates and current_duration > 0:
|
||||||
cur_energy = float(np.mean(curr_arr)) # mean power (W) — no duration multiplication
|
# energy_mode: "mean" (default) compares whole-cycle mean power (W);
|
||||||
|
# "integrated" compares true integrated energy (mean x duration). Opt-in so
|
||||||
|
# the historical default is byte-for-byte preserved. See register item 99.
|
||||||
|
integrated = config.get("energy_mode", "mean") == "integrated"
|
||||||
|
cur_mean = float(np.mean(curr_arr))
|
||||||
|
cur_energy = cur_mean * current_duration if integrated else cur_mean
|
||||||
for cand in candidates:
|
for cand in candidates:
|
||||||
prof_dur = float(cand.get("profile_duration") or 0.0)
|
prof_dur = float(cand.get("profile_duration") or 0.0)
|
||||||
dur_ag = _agreement(current_duration, prof_dur, dur_scale)
|
dur_ag = _agreement(current_duration, prof_dur, dur_scale)
|
||||||
sample = cand.get("sample") or []
|
sample = cand.get("sample") or []
|
||||||
cand_energy = float(np.mean(sample)) if sample else 0.0
|
cand_mean = float(np.mean(sample)) if sample else 0.0
|
||||||
|
cand_energy = cand_mean * prof_dur if integrated else cand_mean
|
||||||
en_ag = _agreement(cur_energy, cand_energy, en_scale)
|
en_ag = _agreement(cur_energy, cand_energy, en_scale)
|
||||||
cand["shape_score"] = float(cand["score"])
|
cand["shape_score"] = float(cand["score"])
|
||||||
cand["score"] = float(
|
cand["score"] = float(
|
||||||
@@ -620,6 +640,27 @@ def compute_envelope_worker(
|
|||||||
if len(offsets) < 3:
|
if len(offsets) < 3:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Stored offsets are rounded to 0.1s, so two readings less than 0.1s apart
|
||||||
|
# collapse onto the same offset. A single such duplicate must not discard the
|
||||||
|
# whole trace (#377): drop the duplicate sample(s) instead of the cycle. Only
|
||||||
|
# exact duplicates are collapsed here; a genuinely out-of-order (decreasing)
|
||||||
|
# offset - which sorted storage never produces - is left for the strict check
|
||||||
|
# below to reject, exactly as before.
|
||||||
|
if offsets.size > 1:
|
||||||
|
diffs = np.diff(offsets)
|
||||||
|
if np.any(diffs == 0):
|
||||||
|
keep = np.concatenate(([True], diffs != 0))
|
||||||
|
dropped = int((~keep).sum())
|
||||||
|
offsets = offsets[keep]
|
||||||
|
values = values[keep]
|
||||||
|
_LOGGER.debug(
|
||||||
|
"compute_envelope_worker: dropped %d duplicate sample offset(s) "
|
||||||
|
"from a cycle trace (0.1s offset rounding)",
|
||||||
|
dropped,
|
||||||
|
)
|
||||||
|
if len(offsets) < 3:
|
||||||
|
continue
|
||||||
|
|
||||||
if not np.all(np.diff(offsets) > 0):
|
if not np.all(np.diff(offsets) > 0):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,10 @@ CONF_POWER_SENSOR = "power_sensor"
|
|||||||
CONF_NAME = "name"
|
CONF_NAME = "name"
|
||||||
CONF_MIN_POWER = "min_power"
|
CONF_MIN_POWER = "min_power"
|
||||||
CONF_OFF_DELAY = "off_delay"
|
CONF_OFF_DELAY = "off_delay"
|
||||||
|
# Bucket size (minutes) for the per-profile `power_profile` sensor attribute that
|
||||||
|
# external planners (EMHASS, tibber_prices) consume. Configurable so short sharp
|
||||||
|
# spikes are not blurred by the fixed 15-min default (#367). Read-time only.
|
||||||
|
CONF_POWER_PROFILE_INTERVAL_MIN = "power_profile_interval_min"
|
||||||
CONF_NOTIFY_SERVICE = "notify_service" # Deprecated - kept for migration only
|
CONF_NOTIFY_SERVICE = "notify_service" # Deprecated - kept for migration only
|
||||||
CONF_NOTIFY_ACTIONS = "notify_actions"
|
CONF_NOTIFY_ACTIONS = "notify_actions"
|
||||||
CONF_NOTIFY_PEOPLE = "notify_people"
|
CONF_NOTIFY_PEOPLE = "notify_people"
|
||||||
@@ -132,6 +136,7 @@ CONF_ANTI_WRINKLE_MAX_POWER = "anti_wrinkle_max_power" # W threshold for anti-w
|
|||||||
CONF_ANTI_WRINKLE_MAX_DURATION = "anti_wrinkle_max_duration" # Seconds to treat as anti-wrinkle
|
CONF_ANTI_WRINKLE_MAX_DURATION = "anti_wrinkle_max_duration" # Seconds to treat as anti-wrinkle
|
||||||
CONF_ANTI_WRINKLE_EXIT_POWER = "anti_wrinkle_exit_power" # W threshold for true-off exit
|
CONF_ANTI_WRINKLE_EXIT_POWER = "anti_wrinkle_exit_power" # W threshold for true-off exit
|
||||||
CONF_ANTI_WRINKLE_IDLE_TIMEOUT = "anti_wrinkle_idle_timeout" # Seconds below exit power before anti-wrinkle ends
|
CONF_ANTI_WRINKLE_IDLE_TIMEOUT = "anti_wrinkle_idle_timeout" # Seconds below exit power before anti-wrinkle ends
|
||||||
|
CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE = "dishwasher_end_spike_quiet_release" # Dishwasher: sustained-quiet seconds after expected duration that release the end-of-cycle drain wait early (#379)
|
||||||
CONF_DELAY_START_DETECT_ENABLED = "delay_start_detect_enabled" # Enable delayed-start detection
|
CONF_DELAY_START_DETECT_ENABLED = "delay_start_detect_enabled" # Enable delayed-start detection
|
||||||
CONF_DELAY_CONFIRM_SECONDS = "delay_confirm_seconds" # Seconds power must stay in standby band before DELAY_WAIT engages
|
CONF_DELAY_CONFIRM_SECONDS = "delay_confirm_seconds" # Seconds power must stay in standby band before DELAY_WAIT engages
|
||||||
CONF_DELAY_TIMEOUT_HOURS = "delay_timeout_hours" # Safety timeout (hours) while waiting to start
|
CONF_DELAY_TIMEOUT_HOURS = "delay_timeout_hours" # Safety timeout (hours) while waiting to start
|
||||||
@@ -153,6 +158,10 @@ CONF_NOTIFY_PRE_COMPLETE_MESSAGE = "notify_pre_complete_message"
|
|||||||
CONF_NOTIFY_LIVE_INTERVAL_SECONDS = "notify_live_interval_seconds"
|
CONF_NOTIFY_LIVE_INTERVAL_SECONDS = "notify_live_interval_seconds"
|
||||||
CONF_NOTIFY_LIVE_OVERRUN_PERCENT = "notify_live_overrun_percent"
|
CONF_NOTIFY_LIVE_OVERRUN_PERCENT = "notify_live_overrun_percent"
|
||||||
CONF_NOTIFY_LIVE_CHRONOMETER = "notify_live_chronometer"
|
CONF_NOTIFY_LIVE_CHRONOMETER = "notify_live_chronometer"
|
||||||
|
# Opt-in data keys on the EXISTING live progress notification (#347): keep-on-tap
|
||||||
|
# (sticky) and a tap target (clickAction). Not new notification types. Mobile-only.
|
||||||
|
CONF_NOTIFY_LIVE_STICKY = "notify_live_sticky"
|
||||||
|
CONF_NOTIFY_LIVE_CLICK_ACTION = "notify_live_click_action"
|
||||||
CONF_NOTIFY_REMINDER_MESSAGE = "notify_reminder_message" # Distinct one-time pre-end alert
|
CONF_NOTIFY_REMINDER_MESSAGE = "notify_reminder_message" # Distinct one-time pre-end alert
|
||||||
CONF_NOTIFY_TIMEOUT_SECONDS = "notify_timeout_seconds" # Auto-dismiss after N seconds (0 = never)
|
CONF_NOTIFY_TIMEOUT_SECONDS = "notify_timeout_seconds" # Auto-dismiss after N seconds (0 = never)
|
||||||
CONF_NOTIFY_CHANNEL = "notify_channel" # Android channel for status/live/reminder
|
CONF_NOTIFY_CHANNEL = "notify_channel" # Android channel for status/live/reminder
|
||||||
@@ -174,10 +183,19 @@ CONF_PEAK_RATE_MESSAGE = "peak_rate_message"
|
|||||||
|
|
||||||
# Door sensor & pause
|
# Door sensor & pause
|
||||||
CONF_DOOR_SENSOR_ENTITY = "door_sensor_entity" # Optional binary_sensor for machine door
|
CONF_DOOR_SENSOR_ENTITY = "door_sensor_entity" # Optional binary_sensor for machine door
|
||||||
|
# Auto-open dishwashers (AirDry etc.) pop the door at cycle end; a sustained
|
||||||
|
# door-open then means the cycle finished, not a mid-cycle pause (#342).
|
||||||
|
CONF_DOOR_OPENS_AT_END = "door_opens_at_end"
|
||||||
|
CONF_DOOR_END_DWELL_SECONDS = "door_end_dwell_seconds"
|
||||||
|
DEFAULT_DOOR_OPENS_AT_END = False
|
||||||
|
DEFAULT_DOOR_END_DWELL_SECONDS = 60 # door must stay open this long to finalize
|
||||||
CONF_PAUSE_CUTS_POWER = "pause_cuts_power" # Also turn off switch entity when pausing
|
CONF_PAUSE_CUTS_POWER = "pause_cuts_power" # Also turn off switch entity when pausing
|
||||||
CONF_SWITCH_ENTITY = "switch_entity" # Optional switch entity toggled on pause/resume
|
CONF_SWITCH_ENTITY = "switch_entity" # Optional switch entity toggled on pause/resume
|
||||||
CONF_NOTIFY_UNLOAD_DELAY_MINUTES = "notify_unload_delay_minutes" # Minutes before "laundry waiting" nag
|
CONF_NOTIFY_UNLOAD_DELAY_MINUTES = "notify_unload_delay_minutes" # Minutes before "laundry waiting" nag
|
||||||
CONF_NOTIFY_UNLOAD_MESSAGE = "notify_unload_message" # Template for the clean-laundry nag message
|
CONF_NOTIFY_UNLOAD_MESSAGE = "notify_unload_message" # Template for the clean-laundry nag message
|
||||||
|
# Repeat the unload reminder every delay-minutes until the door opens or the user
|
||||||
|
# taps the notification's "stop reminding" action (opt-in, #374).
|
||||||
|
CONF_NOTIFY_UNLOAD_REPEAT = "notify_unload_repeat"
|
||||||
|
|
||||||
# Quiet hours (do-not-disturb window). Both hours 0-23; unset/None (or start==end)
|
# Quiet hours (do-not-disturb window). Both hours 0-23; unset/None (or start==end)
|
||||||
# = feature off. When configured, finish-type notifications (finish, clean-laundry
|
# = feature off. When configured, finish-type notifications (finish, clean-laundry
|
||||||
@@ -209,11 +227,22 @@ DEFAULT_NOTIFY_FIRE_EVENTS = True
|
|||||||
DEFAULT_NOTIFY_LIVE_INTERVAL_SECONDS = 300
|
DEFAULT_NOTIFY_LIVE_INTERVAL_SECONDS = 300
|
||||||
DEFAULT_NOTIFY_LIVE_OVERRUN_PERCENT = 20
|
DEFAULT_NOTIFY_LIVE_OVERRUN_PERCENT = 20
|
||||||
DEFAULT_NOTIFY_LIVE_CHRONOMETER = False
|
DEFAULT_NOTIFY_LIVE_CHRONOMETER = False
|
||||||
|
DEFAULT_NOTIFY_LIVE_STICKY = False # #347: off = today's behaviour (tap dismisses)
|
||||||
|
DEFAULT_NOTIFY_LIVE_CLICK_ACTION = "" # #347: empty = no tap target (today's behaviour)
|
||||||
DEFAULT_NOTIFY_TIMEOUT_SECONDS = 0 # 0 = notifications never auto-dismiss
|
DEFAULT_NOTIFY_TIMEOUT_SECONDS = 0 # 0 = notifications never auto-dismiss
|
||||||
DEFAULT_NOTIFY_CHANNEL = "" # Empty = omit channel (companion app default)
|
DEFAULT_NOTIFY_CHANNEL = "" # Empty = omit channel (companion app default)
|
||||||
DEFAULT_NOTIFY_FINISH_CHANNEL = "" # Empty = reuse status channel
|
DEFAULT_NOTIFY_FINISH_CHANNEL = "" # Empty = reuse status channel
|
||||||
DEFAULT_NOTIFY_UNLOAD_DELAY_MINUTES = 60 # 1 hour before "still waiting" nag notification
|
DEFAULT_NOTIFY_UNLOAD_DELAY_MINUTES = 60 # 1 hour before "still waiting" nag notification
|
||||||
DEFAULT_NOTIFY_UNLOAD_MESSAGE = "{device} finished {duration}m ago - laundry is still inside."
|
DEFAULT_NOTIFY_UNLOAD_MESSAGE = "{device} finished {duration}m ago - laundry is still inside."
|
||||||
|
DEFAULT_NOTIFY_UNLOAD_REPEAT = False # opt-in: re-send the unload reminder until dismissed (#374)
|
||||||
|
# Safety bound on repeat mode (#374). The reminder is meant to run "until the door
|
||||||
|
# opens", and the in-notification "Stop reminding" button is mobile_app-only - so a
|
||||||
|
# user whose only notify target is non-mobile has the door sensor as their sole
|
||||||
|
# escape. If that sensor never reports open (offline, or nobody home), the reminder
|
||||||
|
# would re-fire forever AND pin the entity in Clean state, blocking the power-based
|
||||||
|
# Off detection indefinitely. 48 reminders is ~2 days at the 60-minute default, far
|
||||||
|
# past any legitimate reminder window, so normal use never reaches it.
|
||||||
|
NOTIFY_UNLOAD_REPEAT_MAX_REMINDERS = 48
|
||||||
DEFAULT_PEAK_RATE_MESSAGE = "Running at peak rate ({price}/kWh)."
|
DEFAULT_PEAK_RATE_MESSAGE = "Running at peak rate ({price}/kWh)."
|
||||||
|
|
||||||
# Quiet hours default: feature off (both hours unset). See CONF_NOTIFY_QUIET_*.
|
# Quiet hours default: feature off (both hours unset). See CONF_NOTIFY_QUIET_*.
|
||||||
@@ -227,6 +256,7 @@ DEFAULT_NOTIFY_MILESTONE_MESSAGE = "{device} has completed {cycle_count} cycles!
|
|||||||
# Defaults
|
# Defaults
|
||||||
DEFAULT_MIN_POWER = 2.0 # Watts
|
DEFAULT_MIN_POWER = 2.0 # Watts
|
||||||
DEFAULT_OFF_DELAY = 180 # Seconds (3 minutes, safer for 60s polling)
|
DEFAULT_OFF_DELAY = 180 # Seconds (3 minutes, safer for 60s polling)
|
||||||
|
DEFAULT_POWER_PROFILE_INTERVAL_MIN = 15 # power_profile attribute bucket (#367)
|
||||||
DEFAULT_NAME = "Washing Machine"
|
DEFAULT_NAME = "Washing Machine"
|
||||||
# Seconds without updates while active before forced stop (publish-on-change sockets)
|
# Seconds without updates while active before forced stop (publish-on-change sockets)
|
||||||
DEFAULT_NO_UPDATE_ACTIVE_TIMEOUT = 600 # 10 minutes
|
DEFAULT_NO_UPDATE_ACTIVE_TIMEOUT = 600 # 10 minutes
|
||||||
@@ -492,6 +522,7 @@ MATCH_ENERGY_WEIGHT = 0.22
|
|||||||
MATCH_DURATION_SCALE = 0.175 # ~ln ratio at which duration agreement halves
|
MATCH_DURATION_SCALE = 0.175 # ~ln ratio at which duration agreement halves
|
||||||
MATCH_ENERGY_SCALE = 0.25 # ~ln ratio at which energy agreement halves
|
MATCH_ENERGY_SCALE = 0.25 # ~ln ratio at which energy agreement halves
|
||||||
|
|
||||||
|
|
||||||
# States
|
# States
|
||||||
STATE_OFF = "off"
|
STATE_OFF = "off"
|
||||||
STATE_DELAY_WAIT = "delay_wait"
|
STATE_DELAY_WAIT = "delay_wait"
|
||||||
@@ -551,6 +582,21 @@ DEVICE_TYPE_GENERIC = "generic"
|
|||||||
# to this bucket on load (see __init__.py), preserving their tuned options.
|
# to this bucket on load (see __init__.py), preserving their tuned options.
|
||||||
DEVICE_TYPE_OTHER = "other"
|
DEVICE_TYPE_OTHER = "other"
|
||||||
|
|
||||||
|
# Device types whose Stage-4 "energy agreement" compares INTEGRATED energy
|
||||||
|
# (mean power x duration) instead of mean power. On these, same-base program
|
||||||
|
# variants differ mainly in temperature/spin at roughly equal duration, so
|
||||||
|
# integrated energy (which mean power dilutes) is the right discriminator -
|
||||||
|
# validated on real store data (washer top-1 +3.4pp, FP down). Other device
|
||||||
|
# types (dishwasher/dryer/...) keep mean power, because their programs are
|
||||||
|
# distinguished by duration and integrated energy would conflate the two axes
|
||||||
|
# (validated: it regresses there). See register item 99 / the cycle-variant
|
||||||
|
# discrimination spec. Defined from the device-type constants above (not string
|
||||||
|
# literals) so it can never drift from them.
|
||||||
|
STAGE4_INTEGRATED_ENERGY_DEVICE_TYPES = (
|
||||||
|
DEVICE_TYPE_WASHING_MACHINE,
|
||||||
|
DEVICE_TYPE_WASHER_DRYER,
|
||||||
|
)
|
||||||
|
|
||||||
DEVICE_TYPES = {
|
DEVICE_TYPES = {
|
||||||
DEVICE_TYPE_WASHING_MACHINE: "Washing Machine",
|
DEVICE_TYPE_WASHING_MACHINE: "Washing Machine",
|
||||||
DEVICE_TYPE_DRYER: "Dryer",
|
DEVICE_TYPE_DRYER: "Dryer",
|
||||||
@@ -1013,3 +1059,10 @@ PLAYGROUND_STRESS_MAX_SPARSE_STEPS: int = 15 # max sparse steps → max
|
|||||||
PLAYGROUND_STRESS_MAX_IDLE_W: float = 100000.0 # upper bound for a manual idle override
|
PLAYGROUND_STRESS_MAX_IDLE_W: float = 100000.0 # upper bound for a manual idle override
|
||||||
# (far beyond any appliance; guards against
|
# (far beyond any appliance; guards against
|
||||||
# inf/absurd values corrupting synthesis)
|
# inf/absurd values corrupting synthesis)
|
||||||
|
|
||||||
|
# ─── Playground setting presets (sandbox snapshots, per device) ────────────────
|
||||||
|
# Named snapshots of the Playground control panel's values, stored under the
|
||||||
|
# "playground_presets" store key. They never touch the live config: publishing a
|
||||||
|
# value to entry.options is always an explicit, per-setting user action.
|
||||||
|
PLAYGROUND_PRESET_MAX: int = 30 # per-device cap (keeps the store small)
|
||||||
|
PLAYGROUND_PRESET_NAME_MAX: int = 60 # preset name length cap
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ class CycleDetectorConfig:
|
|||||||
completion_min_seconds: int = 600
|
completion_min_seconds: int = 600
|
||||||
start_duration_threshold: float = 5.0
|
start_duration_threshold: float = 5.0
|
||||||
start_energy_threshold: float = 0.005
|
start_energy_threshold: float = 0.005
|
||||||
end_energy_threshold: float = 0.05 # 50 Wh threshold for "still active"
|
end_energy_threshold: float = 0.05 # 0.05 Wh (50 mWh) threshold for "still active"
|
||||||
end_repeat_count: int = 1
|
end_repeat_count: int = 1
|
||||||
min_off_gap: int = 60
|
min_off_gap: int = 60
|
||||||
start_threshold_w: float = 2.0
|
start_threshold_w: float = 2.0
|
||||||
@@ -141,6 +141,11 @@ class CycleDetectorConfig:
|
|||||||
anti_wrinkle_max_duration: float = 60.0
|
anti_wrinkle_max_duration: float = 60.0
|
||||||
anti_wrinkle_exit_power: float = 0.8
|
anti_wrinkle_exit_power: float = 0.8
|
||||||
anti_wrinkle_idle_timeout: float = 120.0
|
anti_wrinkle_idle_timeout: float = 120.0
|
||||||
|
# Dishwasher only: sustained-quiet seconds (after reaching expected duration)
|
||||||
|
# that release the end-of-cycle pump-out/drain wait early (#379). Defaults to
|
||||||
|
# the shipped constant; per-device configurable so a machine with a long silent
|
||||||
|
# passive-drying phase before its final drain can absorb profile drift.
|
||||||
|
dishwasher_end_spike_quiet_release: float = DISHWASHER_END_SPIKE_QUIET_RELEASE_SECONDS
|
||||||
delay_detect_enabled: bool = False
|
delay_detect_enabled: bool = False
|
||||||
# Sustained seconds power must stay in the standby band (between
|
# Sustained seconds power must stay in the standby band (between
|
||||||
# stop_threshold_w and start_threshold_w) before DELAY_WAIT engages.
|
# stop_threshold_w and start_threshold_w) before DELAY_WAIT engages.
|
||||||
@@ -221,7 +226,7 @@ class CycleDetector:
|
|||||||
profile_matcher: (
|
profile_matcher: (
|
||||||
Callable[
|
Callable[
|
||||||
[list[tuple[datetime, float]]],
|
[list[tuple[datetime, float]]],
|
||||||
tuple[str | None, float, float, str | None],
|
tuple[str | None, float, float, str | None] | None,
|
||||||
]
|
]
|
||||||
| None
|
| None
|
||||||
) = None,
|
) = None,
|
||||||
@@ -276,6 +281,11 @@ class CycleDetector:
|
|||||||
self._energy_since_idle_wh: float = 0.0
|
self._energy_since_idle_wh: float = 0.0
|
||||||
self._time_above_threshold: float = 0.0
|
self._time_above_threshold: float = 0.0
|
||||||
self._time_below_threshold: float = 0.0
|
self._time_below_threshold: float = 0.0
|
||||||
|
# As above, but restarts whenever an outage-sized gap breaks the observed
|
||||||
|
# quiet tail, so it counts only quiet WashData actually saw. Used by the
|
||||||
|
# dishwasher quiet-release gates so a single low sample after a telemetry
|
||||||
|
# dropout can't satisfy them without the quiet having been observed.
|
||||||
|
self._time_below_threshold_gapfree: float = 0.0
|
||||||
self._last_process_time: datetime | None = None
|
self._last_process_time: datetime | None = None
|
||||||
|
|
||||||
# New State Machine trackers
|
# New State Machine trackers
|
||||||
@@ -301,6 +311,7 @@ class CycleDetector:
|
|||||||
self._end_spike_duration: float = 0.0 # cycle duration (s) when _end_spike_seen was last set
|
self._end_spike_duration: float = 0.0 # cycle duration (s) when _end_spike_seen was last set
|
||||||
self._match_ambiguous: bool = False # last live match was ambiguous (gates predictive end)
|
self._match_ambiguous: bool = False # last live match was ambiguous (gates predictive end)
|
||||||
self._match_prefix_ambiguous: bool = False # longer candidate with good shape exists (prefix guard)
|
self._match_prefix_ambiguous: bool = False # longer candidate with good shape exists (prefix guard)
|
||||||
|
self._last_smart_term_block_reason: str | None = None # #346 diagnostic throttle
|
||||||
|
|
||||||
# Anti-wrinkle tracking (dryers only)
|
# Anti-wrinkle tracking (dryers only)
|
||||||
self._anti_wrinkle_candidate_start: datetime | None = None
|
self._anti_wrinkle_candidate_start: datetime | None = None
|
||||||
@@ -626,6 +637,7 @@ class CycleDetector:
|
|||||||
# (ANTI_WRINKLE needs to track idle time to determine true-off)
|
# (ANTI_WRINKLE needs to track idle time to determine true-off)
|
||||||
if target_state != STATE_ANTI_WRINKLE:
|
if target_state != STATE_ANTI_WRINKLE:
|
||||||
self._time_below_threshold = 0.0
|
self._time_below_threshold = 0.0
|
||||||
|
self._time_below_threshold_gapfree = 0.0
|
||||||
self._last_match_time = None
|
self._last_match_time = None
|
||||||
self._matched_profile = None
|
self._matched_profile = None
|
||||||
# Clear stale match state so the next cycle starts with clean defaults.
|
# Clear stale match state so the next cycle starts with clean defaults.
|
||||||
@@ -635,6 +647,11 @@ class CycleDetector:
|
|||||||
self._last_match_confidence = 0.0
|
self._last_match_confidence = 0.0
|
||||||
self._match_ambiguous = False
|
self._match_ambiguous = False
|
||||||
self._match_prefix_ambiguous = False
|
self._match_prefix_ambiguous = False
|
||||||
|
# Per-cycle diagnostic throttle (#346): the "Smart Termination not applied"
|
||||||
|
# line only logs when the reason CHANGES. Carrying the previous cycle's
|
||||||
|
# reason across a reset swallows the new cycle's very first diagnostic
|
||||||
|
# whenever it happens to be blocked for the same reason.
|
||||||
|
self._last_smart_term_block_reason = None
|
||||||
self._ignore_power_until_idle = False # Reset lockout
|
self._ignore_power_until_idle = False # Reset lockout
|
||||||
self._lockout_high_seconds = 0.0
|
self._lockout_high_seconds = 0.0
|
||||||
# Clear the verified-pause flag so it can't leak into the next cycle (B6):
|
# Clear the verified-pause flag so it can't leak into the next cycle (B6):
|
||||||
@@ -688,6 +705,35 @@ class CycleDetector:
|
|||||||
"""Return the expected duration of the current cycle in seconds."""
|
"""Return the expected duration of the current cycle in seconds."""
|
||||||
return self._expected_duration
|
return self._expected_duration
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _smart_term_block_reason(
|
||||||
|
current_duration: float,
|
||||||
|
expected: float,
|
||||||
|
smart_ratio: float,
|
||||||
|
is_confident: bool,
|
||||||
|
ambiguous: bool,
|
||||||
|
prefix_ambiguous: bool,
|
||||||
|
) -> str | None:
|
||||||
|
"""Why the Smart-Termination fast end-path did NOT fire, for diagnostics.
|
||||||
|
|
||||||
|
Returns None when the gate would pass, or when no expected duration is known
|
||||||
|
yet (nothing meaningful to report). Mirrors the gate's four conditions in
|
||||||
|
order so the first blocking reason is surfaced. Pure and side-effect-free;
|
||||||
|
the detector logs the result (throttled to reason changes) - no behaviour
|
||||||
|
change (#346).
|
||||||
|
"""
|
||||||
|
if expected <= 0:
|
||||||
|
return None
|
||||||
|
if current_duration < expected * smart_ratio:
|
||||||
|
return "duration_not_reached"
|
||||||
|
if not is_confident:
|
||||||
|
return "low_confidence"
|
||||||
|
if ambiguous:
|
||||||
|
return "match_ambiguous"
|
||||||
|
if prefix_ambiguous:
|
||||||
|
return "prefix_ambiguous"
|
||||||
|
return None
|
||||||
|
|
||||||
def process_reading(self, power: float, timestamp: datetime) -> None:
|
def process_reading(self, power: float, timestamp: datetime) -> None:
|
||||||
"""Process a new power reading using robust dt-aware logic."""
|
"""Process a new power reading using robust dt-aware logic."""
|
||||||
|
|
||||||
@@ -731,6 +777,12 @@ class CycleDetector:
|
|||||||
)
|
)
|
||||||
# Fall through: the state machine will start a new cycle.
|
# Fall through: the state machine will start a new cycle.
|
||||||
|
|
||||||
|
# Snapshot the cadence BEFORE folding this reading in: the gap-free tally
|
||||||
|
# below classifies `dt` against a ceiling derived from the cadence, and an
|
||||||
|
# outage that has already widened p95 would raise the very threshold that
|
||||||
|
# is supposed to catch it (a 120 s gap after a 10 s cadence lifts p95 to
|
||||||
|
# ~15.5 s -> ceiling 155 s -> the gap counts as observed quiet).
|
||||||
|
prior_p95_dt = self._p95_dt
|
||||||
self._update_cadence(dt)
|
self._update_cadence(dt)
|
||||||
self._last_process_time = timestamp
|
self._last_process_time = timestamp
|
||||||
|
|
||||||
@@ -751,6 +803,7 @@ class CycleDetector:
|
|||||||
if is_high:
|
if is_high:
|
||||||
self._time_above_threshold += dt
|
self._time_above_threshold += dt
|
||||||
self._time_below_threshold = 0.0
|
self._time_below_threshold = 0.0
|
||||||
|
self._time_below_threshold_gapfree = 0.0
|
||||||
# Energy integration (trapezoidal approx for this single step)
|
# Energy integration (trapezoidal approx for this single step)
|
||||||
# prev_p = self._last_power if self._last_power is not None else power
|
# prev_p = self._last_power if self._last_power is not None else power
|
||||||
# step_wh = ((power + prev_p) / 2.0) * (dt / 3600.0)
|
# step_wh = ((power + prev_p) / 2.0) * (dt / 3600.0)
|
||||||
@@ -762,6 +815,17 @@ class CycleDetector:
|
|||||||
self._last_active_time = timestamp
|
self._last_active_time = timestamp
|
||||||
else:
|
else:
|
||||||
self._time_below_threshold += dt
|
self._time_below_threshold += dt
|
||||||
|
# Gap-free tally: an outage-sized step is unobserved time, so restart
|
||||||
|
# the observed-quiet tally from this sample instead of crediting the
|
||||||
|
# gap. Ceiling mirrors energy_gap_threshold_s (clip(10x cadence, 60,
|
||||||
|
# 3600)) but reuses the maintained p95 cadence to stay O(1) in this
|
||||||
|
# per-reading hot path. Uses the cadence as it stood BEFORE this
|
||||||
|
# reading, so a gap cannot widen its own acceptance threshold.
|
||||||
|
outage_ceiling = min(3600.0, max(60.0, 10.0 * prior_p95_dt))
|
||||||
|
if dt > outage_ceiling:
|
||||||
|
self._time_below_threshold_gapfree = 0.0
|
||||||
|
else:
|
||||||
|
self._time_below_threshold_gapfree += dt
|
||||||
self._time_above_threshold = 0.0
|
self._time_above_threshold = 0.0
|
||||||
|
|
||||||
self._time_in_state += dt
|
self._time_in_state += dt
|
||||||
@@ -1347,6 +1411,31 @@ class CycleDetector:
|
|||||||
# waits for the fallback timeout instead of getting an early
|
# waits for the fallback timeout instead of getting an early
|
||||||
# close — an acceptable trade-off against the alternative of
|
# close — an acceptable trade-off against the alternative of
|
||||||
# splitting a Normal wash into two separate cycle records.
|
# splitting a Normal wash into two separate cycle records.
|
||||||
|
# Surface why the fast end-path is (not) firing, throttled to
|
||||||
|
# reason changes so a stuck cycle's cause is visible in the log
|
||||||
|
# without spamming every reading. Pure diagnostic (#346).
|
||||||
|
_block_reason = self._smart_term_block_reason(
|
||||||
|
current_duration,
|
||||||
|
self._expected_duration,
|
||||||
|
smart_ratio,
|
||||||
|
is_confident_match,
|
||||||
|
self._match_ambiguous,
|
||||||
|
self._match_prefix_ambiguous,
|
||||||
|
)
|
||||||
|
if _block_reason != self._last_smart_term_block_reason:
|
||||||
|
self._last_smart_term_block_reason = _block_reason
|
||||||
|
if _block_reason is not None:
|
||||||
|
self._logger.debug(
|
||||||
|
"Smart Termination not applied (%s): dur=%.0fs/%.0fs conf=%.2f "
|
||||||
|
"ambiguous=%s prefix_ambiguous=%s",
|
||||||
|
_block_reason,
|
||||||
|
current_duration,
|
||||||
|
self._expected_duration * smart_ratio,
|
||||||
|
getattr(self, "_last_match_confidence", 0.0),
|
||||||
|
self._match_ambiguous,
|
||||||
|
self._match_prefix_ambiguous,
|
||||||
|
)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
current_duration >= (self._expected_duration * smart_ratio)
|
current_duration >= (self._expected_duration * smart_ratio)
|
||||||
and is_confident_match
|
and is_confident_match
|
||||||
@@ -1421,8 +1510,8 @@ class CycleDetector:
|
|||||||
+ DISHWASHER_END_SPIKE_WAIT_SECONDS
|
+ DISHWASHER_END_SPIKE_WAIT_SECONDS
|
||||||
) or (
|
) or (
|
||||||
current_duration >= self._expected_duration
|
current_duration >= self._expected_duration
|
||||||
and self._time_below_threshold
|
and self._time_below_threshold_gapfree
|
||||||
>= DISHWASHER_END_SPIKE_QUIET_RELEASE_SECONDS
|
>= self._config.dishwasher_end_spike_quiet_release
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
self._config.device_type == "dishwasher"
|
self._config.device_type == "dishwasher"
|
||||||
@@ -2130,8 +2219,8 @@ class CycleDetector:
|
|||||||
# passive-drying phase that still precedes a late pump-out deferred.
|
# passive-drying phase that still precedes a late pump-out deferred.
|
||||||
quiet_released = (
|
quiet_released = (
|
||||||
duration >= self._expected_duration
|
duration >= self._expected_duration
|
||||||
and self._time_below_threshold
|
and self._time_below_threshold_gapfree
|
||||||
>= DISHWASHER_END_SPIKE_QUIET_RELEASE_SECONDS
|
>= self._config.dishwasher_end_spike_quiet_release
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
self._config.device_type == "dishwasher"
|
self._config.device_type == "dishwasher"
|
||||||
@@ -2142,13 +2231,18 @@ class CycleDetector:
|
|||||||
< (self._expected_duration + DISHWASHER_END_SPIKE_WAIT_SECONDS)
|
< (self._expected_duration + DISHWASHER_END_SPIKE_WAIT_SECONDS)
|
||||||
and not quiet_released
|
and not quiet_released
|
||||||
):
|
):
|
||||||
|
# Report the gap-free tally: that is what `quiet_released` above reads,
|
||||||
|
# and after a telemetry outage the two diverge - logging the plain one
|
||||||
|
# would show quiet time that played no part in the decision.
|
||||||
self._logger.debug(
|
self._logger.debug(
|
||||||
"Deferring cycle finish: dishwasher waiting for end-of-cycle "
|
"Deferring cycle finish: dishwasher waiting for end-of-cycle "
|
||||||
"pump-out (%.0fs < expected %.0fs + %.0fs wait, quiet %.0fs, profile: %s)",
|
"pump-out (%.0fs < expected %.0fs + %.0fs wait, observed quiet "
|
||||||
|
"%.0fs of %.0fs needed, profile: %s)",
|
||||||
duration,
|
duration,
|
||||||
self._expected_duration,
|
self._expected_duration,
|
||||||
DISHWASHER_END_SPIKE_WAIT_SECONDS,
|
DISHWASHER_END_SPIKE_WAIT_SECONDS,
|
||||||
self._time_below_threshold,
|
self._time_below_threshold_gapfree,
|
||||||
|
self._config.dishwasher_end_spike_quiet_release,
|
||||||
self._matched_profile,
|
self._matched_profile,
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
@@ -2247,9 +2341,13 @@ class CycleDetector:
|
|||||||
final_readings.append((end_time, last_p))
|
final_readings.append((end_time, last_p))
|
||||||
|
|
||||||
start_ts = self._current_cycle_start.timestamp()
|
start_ts = self._current_cycle_start.timestamp()
|
||||||
|
# Store timestamps in canonical UTC (#369). Reading timestamps arrive from
|
||||||
|
# dt_util.now() (HA-local-aware) while trim/split paths emit UTC, which left
|
||||||
|
# past_cycles with a mix of offsets. Normalizing here (instant-preserving)
|
||||||
|
# keeps stored cycles consistent and safe for cross-device/store transfer.
|
||||||
cycle_data: dict[str, Any] = {
|
cycle_data: dict[str, Any] = {
|
||||||
"start_time": self._current_cycle_start.isoformat(),
|
"start_time": dt_util.as_utc(self._current_cycle_start).isoformat(),
|
||||||
"end_time": end_time.isoformat(),
|
"end_time": dt_util.as_utc(end_time).isoformat(),
|
||||||
"duration": duration,
|
"duration": duration,
|
||||||
"max_power": self._cycle_max_power,
|
"max_power": self._cycle_max_power,
|
||||||
"status": status,
|
"status": status,
|
||||||
@@ -2329,6 +2427,7 @@ class CycleDetector:
|
|||||||
"accumulated_energy_wh": self._energy_since_idle_wh,
|
"accumulated_energy_wh": self._energy_since_idle_wh,
|
||||||
"time_above": self._time_above_threshold,
|
"time_above": self._time_above_threshold,
|
||||||
"time_below": self._time_below_threshold,
|
"time_below": self._time_below_threshold,
|
||||||
|
"time_below_gapfree": self._time_below_threshold_gapfree,
|
||||||
"cycle_max_power": self._cycle_max_power,
|
"cycle_max_power": self._cycle_max_power,
|
||||||
"last_active_time": (
|
"last_active_time": (
|
||||||
self._last_active_time.isoformat() if self._last_active_time else None
|
self._last_active_time.isoformat() if self._last_active_time else None
|
||||||
@@ -2366,6 +2465,15 @@ class CycleDetector:
|
|||||||
self._energy_since_idle_wh = snapshot.get("accumulated_energy_wh", 0.0)
|
self._energy_since_idle_wh = snapshot.get("accumulated_energy_wh", 0.0)
|
||||||
self._time_above_threshold = snapshot.get("time_above", 0.0)
|
self._time_above_threshold = snapshot.get("time_above", 0.0)
|
||||||
self._time_below_threshold = snapshot.get("time_below", 0.0)
|
self._time_below_threshold = snapshot.get("time_below", 0.0)
|
||||||
|
# Old snapshots lack the gap-free tally, and the plain value they do
|
||||||
|
# carry may already include outage-sized intervals — the exact
|
||||||
|
# contamination this field exists to exclude — so it must NOT be used
|
||||||
|
# as the fallback. 0.0 is also the honest value on a restore in
|
||||||
|
# general: the restart itself is unobserved time (the manager records
|
||||||
|
# it as a restart gap), so no quiet observed before it still counts.
|
||||||
|
self._time_below_threshold_gapfree = float(
|
||||||
|
snapshot.get("time_below_gapfree", 0.0) or 0.0
|
||||||
|
)
|
||||||
self._cycle_max_power = snapshot.get("cycle_max_power", 0.0)
|
self._cycle_max_power = snapshot.get("cycle_max_power", 0.0)
|
||||||
# Sanitize via the same helper as update_match so the class
|
# Sanitize via the same helper as update_match so the class
|
||||||
# invariant on _expected_duration holds across restarts and the
|
# invariant on _expected_duration holds across restarts and the
|
||||||
|
|||||||
@@ -161,8 +161,23 @@ class LearningManager:
|
|||||||
and (len(past_cycles) - last_apply_count) < MIN_SUGGESTION_COOLDOWN_CYCLES
|
and (len(past_cycles) - last_apply_count) < MIN_SUGGESTION_COOLDOWN_CYCLES
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Locked keys (#343): the user has told the auto-tuner to stop proposing
|
||||||
|
# these (e.g. thresholds that break an anti-crease-tuned device). Drop them
|
||||||
|
# from the pending map so they never re-surface until unlocked.
|
||||||
|
try:
|
||||||
|
locked = set(self.profile_store.get_locked_suggestions())
|
||||||
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
|
locked = set()
|
||||||
|
|
||||||
|
existing_suggestions = self.profile_store.get_suggestions()
|
||||||
filtered_suggestions: dict[str, Any] = {}
|
filtered_suggestions: dict[str, Any] = {}
|
||||||
|
any_deleted = False
|
||||||
for key, data in suggestions.items():
|
for key, data in suggestions.items():
|
||||||
|
if key in locked:
|
||||||
|
if key in existing_suggestions:
|
||||||
|
self.profile_store.delete_suggestion(key)
|
||||||
|
any_deleted = True
|
||||||
|
continue
|
||||||
if isinstance(data, dict) and "value" in data:
|
if isinstance(data, dict) and "value" in data:
|
||||||
current_val = current_options.get(key)
|
current_val = current_options.get(key)
|
||||||
suggested_val = data["value"]
|
suggested_val = data["value"]
|
||||||
@@ -174,6 +189,7 @@ class LearningManager:
|
|||||||
# Gate 1: exact equality → stale, delete so it doesn't linger.
|
# Gate 1: exact equality → stale, delete so it doesn't linger.
|
||||||
if abs_delta < 1e-9:
|
if abs_delta < 1e-9:
|
||||||
self.profile_store.delete_suggestion(key)
|
self.profile_store.delete_suggestion(key)
|
||||||
|
any_deleted = True
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Gate 2: change too small to be meaningful → delete (noise).
|
# Gate 2: change too small to be meaningful → delete (noise).
|
||||||
@@ -181,6 +197,7 @@ class LearningManager:
|
|||||||
if (rel_delta < MIN_SUGGESTION_REL_DELTA
|
if (rel_delta < MIN_SUGGESTION_REL_DELTA
|
||||||
and abs_delta < _suggestion_min_abs_delta(key)):
|
and abs_delta < _suggestion_min_abs_delta(key)):
|
||||||
self.profile_store.delete_suggestion(key)
|
self.profile_store.delete_suggestion(key)
|
||||||
|
any_deleted = True
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Gate 3: cooldown active → skip update without deleting.
|
# Gate 3: cooldown active → skip update without deleting.
|
||||||
@@ -195,6 +212,8 @@ class LearningManager:
|
|||||||
filtered_suggestions[key] = data
|
filtered_suggestions[key] = data
|
||||||
|
|
||||||
if not filtered_suggestions:
|
if not filtered_suggestions:
|
||||||
|
if any_deleted:
|
||||||
|
self.hass.async_create_task(self.profile_store.async_save())
|
||||||
return
|
return
|
||||||
|
|
||||||
self.suggestion_engine.apply_suggestions(filtered_suggestions)
|
self.suggestion_engine.apply_suggestions(filtered_suggestions)
|
||||||
@@ -295,8 +314,9 @@ class LearningManager:
|
|||||||
async def _async_run_batch_simulation(self, cycles: list[dict[str, Any]]) -> None:
|
async def _async_run_batch_simulation(self, cycles: list[dict[str, Any]]) -> None:
|
||||||
"""Run multi-cycle batch simulation asynchronously."""
|
"""Run multi-cycle batch simulation asynchronously."""
|
||||||
try:
|
try:
|
||||||
|
engine = self.suggestion_engine.for_job()
|
||||||
new_suggestions = await self.hass.async_add_executor_job(
|
new_suggestions = await self.hass.async_add_executor_job(
|
||||||
self.suggestion_engine.run_batch_simulation, cycles
|
engine.run_batch_simulation, cycles
|
||||||
)
|
)
|
||||||
if new_suggestions:
|
if new_suggestions:
|
||||||
self._apply_suggestions_and_notify(new_suggestions)
|
self._apply_suggestions_and_notify(new_suggestions)
|
||||||
@@ -313,8 +333,9 @@ class LearningManager:
|
|||||||
try:
|
try:
|
||||||
# Simulation runner derives optimal thresholds
|
# Simulation runner derives optimal thresholds
|
||||||
# Offload to executor since simulation can be heavy (CPU bound)
|
# Offload to executor since simulation can be heavy (CPU bound)
|
||||||
|
engine = self.suggestion_engine.for_job()
|
||||||
new_suggestions = await self.hass.async_add_executor_job(
|
new_suggestions = await self.hass.async_add_executor_job(
|
||||||
self.suggestion_engine.run_simulation, cycle_data
|
engine.run_simulation, cycle_data
|
||||||
)
|
)
|
||||||
if new_suggestions:
|
if new_suggestions:
|
||||||
self._apply_suggestions_and_notify(new_suggestions)
|
self._apply_suggestions_and_notify(new_suggestions)
|
||||||
@@ -342,8 +363,10 @@ class LearningManager:
|
|||||||
# Throttle before dispatching so repeated readings within the window do
|
# Throttle before dispatching so repeated readings within the window do
|
||||||
# not schedule overlapping passes.
|
# not schedule overlapping passes.
|
||||||
self._last_suggestion_update = now
|
self._last_suggestion_update = now
|
||||||
|
# Bind the config snapshot here, on the loop, not inside the executor job.
|
||||||
|
engine = self.suggestion_engine.for_job()
|
||||||
self._dispatch_scan_and_apply(
|
self._dispatch_scan_and_apply(
|
||||||
lambda: self.suggestion_engine.generate_operational_suggestions(p95, median),
|
lambda: engine.generate_operational_suggestions(p95, median),
|
||||||
"Operational",
|
"Operational",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -354,7 +377,7 @@ class LearningManager:
|
|||||||
offloaded to an executor thread by ``_dispatch_scan_and_apply``.
|
offloaded to an executor thread by ``_dispatch_scan_and_apply``.
|
||||||
"""
|
"""
|
||||||
self._dispatch_scan_and_apply(
|
self._dispatch_scan_and_apply(
|
||||||
self.suggestion_engine.generate_model_suggestions,
|
self.suggestion_engine.for_job().generate_model_suggestions,
|
||||||
"Model",
|
"Model",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -408,8 +431,9 @@ class LearningManager:
|
|||||||
async def _async_run_detection_suggestions(self) -> None:
|
async def _async_run_detection_suggestions(self) -> None:
|
||||||
"""Run the detection-suggestion pass off the event loop."""
|
"""Run the detection-suggestion pass off the event loop."""
|
||||||
try:
|
try:
|
||||||
|
engine = self.suggestion_engine.for_job()
|
||||||
new_suggestions = await self.hass.async_add_executor_job(
|
new_suggestions = await self.hass.async_add_executor_job(
|
||||||
self.suggestion_engine.generate_detection_suggestions
|
engine.generate_detection_suggestions
|
||||||
)
|
)
|
||||||
if new_suggestions:
|
if new_suggestions:
|
||||||
self._apply_suggestions_and_notify(new_suggestions)
|
self._apply_suggestions_and_notify(new_suggestions)
|
||||||
@@ -432,12 +456,13 @@ class LearningManager:
|
|||||||
if model.count >= 20 and model.p95 is not None and model.median is not None:
|
if model.count >= 20 and model.p95 is not None and model.median is not None:
|
||||||
p95, median = model.p95, model.median
|
p95, median = model.p95, model.median
|
||||||
op = await self.hass.async_add_executor_job(
|
op = await self.hass.async_add_executor_job(
|
||||||
self.suggestion_engine.generate_operational_suggestions, p95, median
|
self.suggestion_engine.for_job().generate_operational_suggestions,
|
||||||
|
p95, median
|
||||||
)
|
)
|
||||||
if op:
|
if op:
|
||||||
self._apply_suggestions_and_notify(op)
|
self._apply_suggestions_and_notify(op)
|
||||||
model_sug = await self.hass.async_add_executor_job(
|
model_sug = await self.hass.async_add_executor_job(
|
||||||
self.suggestion_engine.generate_model_suggestions
|
self.suggestion_engine.for_job().generate_model_suggestions
|
||||||
)
|
)
|
||||||
if model_sug:
|
if model_sug:
|
||||||
self._apply_suggestions_and_notify(model_sug)
|
self._apply_suggestions_and_notify(model_sug)
|
||||||
@@ -445,7 +470,7 @@ class LearningManager:
|
|||||||
# Snapshot the live cycles list before handing it to the executor.
|
# Snapshot the live cycles list before handing it to the executor.
|
||||||
cycles = list(self.profile_store.get_past_cycles())
|
cycles = list(self.profile_store.get_past_cycles())
|
||||||
batch = await self.hass.async_add_executor_job(
|
batch = await self.hass.async_add_executor_job(
|
||||||
self.suggestion_engine.run_batch_simulation, cycles
|
self.suggestion_engine.for_job().run_batch_simulation, cycles
|
||||||
)
|
)
|
||||||
if batch:
|
if batch:
|
||||||
self._apply_suggestions_and_notify(batch)
|
self._apply_suggestions_and_notify(batch)
|
||||||
@@ -844,10 +869,49 @@ class LearningManager:
|
|||||||
affected envelopes), so this only records the feedback response and removes
|
affected envelopes), so this only records the feedback response and removes
|
||||||
the pending entry - it deliberately does NOT re-label or rebuild again.
|
the pending entry - it deliberately does NOT re-label or rebuild again.
|
||||||
|
|
||||||
Returns True when a pending entry existed and was resolved.
|
Returns True when a pending entry existed and was resolved, OR when no
|
||||||
|
pending feedback was found but the cycle was sitting in the review queue
|
||||||
|
(uncertain quality / force_stopped / interrupted) and was marked reviewed.
|
||||||
|
Returns False when there was nothing to resolve or update.
|
||||||
"""
|
"""
|
||||||
pending = self.profile_store.get_pending_feedback().get(cycle_id)
|
pending = self.profile_store.get_pending_feedback().get(cycle_id)
|
||||||
if not pending:
|
if not pending:
|
||||||
|
# No detection feedback to resolve. A manual (re)label is still the user
|
||||||
|
# engaging with the cycle, so if it is sitting in the review queue only
|
||||||
|
# for an uncertain quality label or a force_stopped/interrupted status
|
||||||
|
# (no pending feedback, so it has no resolve buttons), stamp it reviewed
|
||||||
|
# to clear the red dot (#331 residual). The quality/label fields are left
|
||||||
|
# untouched, so no training signal is lost; normal cycles are not touched.
|
||||||
|
try:
|
||||||
|
cycle = next(
|
||||||
|
(c for c in self.profile_store.get_past_cycles() if c.get("id") == cycle_id),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
|
cycle = None
|
||||||
|
if cycle is not None:
|
||||||
|
rv = cycle.get("ml_review") if isinstance(cycle.get("ml_review"), dict) else {}
|
||||||
|
already_reviewed = bool(rv.get("reviewed_at"))
|
||||||
|
needs_review = (
|
||||||
|
rv.get("label") in ("uncertain", "review")
|
||||||
|
or rv.get("quality") in ("uncertain", "review")
|
||||||
|
or cycle.get("status") in ("force_stopped", "interrupted")
|
||||||
|
or (cycle.get("ml_health") or {}).get("label") in ("uncertain", "review")
|
||||||
|
)
|
||||||
|
if needs_review and not already_reviewed:
|
||||||
|
try:
|
||||||
|
await self.profile_store.set_cycle_review(cycle_id)
|
||||||
|
except Exception as err: # pylint: disable=broad-exception-caught
|
||||||
|
self._logger.debug(
|
||||||
|
"set_cycle_review failed for cycle %s: %s", cycle_id, err
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
async_dispatcher_send(self.hass, f"ha_washdata_update_{self.entry_id}")
|
||||||
|
self._logger.info(
|
||||||
|
"Marked cycle %s reviewed from manual label (no pending feedback; "
|
||||||
|
"cleared needs-review red dot)", cycle_id
|
||||||
|
)
|
||||||
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
detected = pending.get("detected_profile")
|
detected = pending.get("detected_profile")
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -21,5 +21,5 @@
|
|||||||
"requirements": [
|
"requirements": [
|
||||||
"numpy"
|
"numpy"
|
||||||
],
|
],
|
||||||
"version": "0.5.3"
|
"version": "0.5.4"
|
||||||
}
|
}
|
||||||
@@ -156,6 +156,7 @@ def _grid() -> list[dict[str, Any]]:
|
|||||||
|
|
||||||
def tune_matching_config(
|
def tune_matching_config(
|
||||||
cycles: list[dict[str, Any]],
|
cycles: list[dict[str, Any]],
|
||||||
|
device_type: str | None = None,
|
||||||
*,
|
*,
|
||||||
min_cycles: int = 25,
|
min_cycles: int = 25,
|
||||||
# Kept intentionally low so per-device tuning becomes useful early; the noise
|
# Kept intentionally low so per-device tuning becomes useful early; the noise
|
||||||
@@ -206,7 +207,9 @@ def tune_matching_config(
|
|||||||
if not holdout_pool:
|
if not holdout_pool:
|
||||||
return {"promoted": False, "reason": "too few targets", "n_targets": len(targets)}
|
return {"promoted": False, "reason": "too few targets", "n_targets": len(targets)}
|
||||||
|
|
||||||
base = {**_BASE_CFG}
|
# Tune under the same Stage-4 energy mode production uses for this device type,
|
||||||
|
# so promoted weights are consistent with the live matcher.
|
||||||
|
base = {**_BASE_CFG, "energy_mode": analysis.stage4_energy_mode(device_type)}
|
||||||
# Candidate: the grid config with the best top-1 on the SEARCH pool only.
|
# Candidate: the grid config with the best top-1 on the SEARCH pool only.
|
||||||
best_search = _top1(by_profile, search_pool, base)
|
best_search = _top1(by_profile, search_pool, base)
|
||||||
best_cfg = base
|
best_cfg = base
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ from .const import (
|
|||||||
CONF_ANTI_WRINKLE_ENABLED,
|
CONF_ANTI_WRINKLE_ENABLED,
|
||||||
CONF_ANTI_WRINKLE_EXIT_POWER,
|
CONF_ANTI_WRINKLE_EXIT_POWER,
|
||||||
CONF_ANTI_WRINKLE_IDLE_TIMEOUT,
|
CONF_ANTI_WRINKLE_IDLE_TIMEOUT,
|
||||||
|
CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE,
|
||||||
CONF_ANTI_WRINKLE_MAX_DURATION,
|
CONF_ANTI_WRINKLE_MAX_DURATION,
|
||||||
CONF_ANTI_WRINKLE_MAX_POWER,
|
CONF_ANTI_WRINKLE_MAX_POWER,
|
||||||
CONF_COMPLETION_MIN_SECONDS,
|
CONF_COMPLETION_MIN_SECONDS,
|
||||||
@@ -74,19 +75,24 @@ from .const import (
|
|||||||
CONF_STOP_THRESHOLD_W,
|
CONF_STOP_THRESHOLD_W,
|
||||||
CYCLE_OVERRUN_ANOMALY_RATIO,
|
CYCLE_OVERRUN_ANOMALY_RATIO,
|
||||||
CYCLE_UNDERRUN_ANOMALY_RATIO,
|
CYCLE_UNDERRUN_ANOMALY_RATIO,
|
||||||
|
DEFAULT_DTW_BANDWIDTH,
|
||||||
DEFAULT_MATCH_PERSISTENCE,
|
DEFAULT_MATCH_PERSISTENCE,
|
||||||
DEFAULT_NOTIFY_BEFORE_END_MINUTES,
|
DEFAULT_NOTIFY_BEFORE_END_MINUTES,
|
||||||
DEFAULT_NOTIFY_MILESTONES,
|
DEFAULT_NOTIFY_MILESTONES,
|
||||||
|
DEFAULT_PROFILE_MATCH_MAX_DURATION_RATIO,
|
||||||
|
DEFAULT_PROFILE_MATCH_MIN_DURATION_RATIO,
|
||||||
MATCH_CORR_WEIGHT,
|
MATCH_CORR_WEIGHT,
|
||||||
MATCH_DDTW_DIST_SCALE,
|
MATCH_DDTW_DIST_SCALE,
|
||||||
MATCH_DTW_BLEND,
|
MATCH_DTW_BLEND,
|
||||||
MATCH_DTW_DIST_SCALE,
|
MATCH_DTW_DIST_SCALE,
|
||||||
MATCH_DTW_ENSEMBLE_W,
|
MATCH_DTW_ENSEMBLE_W,
|
||||||
|
MATCH_DTW_REFINE_TOP_N,
|
||||||
MATCH_DTW_RESAMPLE_N,
|
MATCH_DTW_RESAMPLE_N,
|
||||||
MATCH_DURATION_SCALE,
|
MATCH_DURATION_SCALE,
|
||||||
MATCH_DURATION_WEIGHT,
|
MATCH_DURATION_WEIGHT,
|
||||||
MATCH_ENERGY_SCALE,
|
MATCH_ENERGY_SCALE,
|
||||||
MATCH_ENERGY_WEIGHT,
|
MATCH_ENERGY_WEIGHT,
|
||||||
|
MATCH_KEEP_MIN_SCORE,
|
||||||
MATCH_MAE_PEAK_FLOOR,
|
MATCH_MAE_PEAK_FLOOR,
|
||||||
MATCH_MAE_REF_PEAK,
|
MATCH_MAE_REF_PEAK,
|
||||||
MATCH_MAE_SCALE,
|
MATCH_MAE_SCALE,
|
||||||
@@ -161,6 +167,7 @@ _OVERRIDE_FIELD_MAP: dict[str, tuple[str, Callable[[Any], Any]]] = {
|
|||||||
CONF_ANTI_WRINKLE_MAX_DURATION: ("anti_wrinkle_max_duration", float),
|
CONF_ANTI_WRINKLE_MAX_DURATION: ("anti_wrinkle_max_duration", float),
|
||||||
CONF_ANTI_WRINKLE_EXIT_POWER: ("anti_wrinkle_exit_power", float),
|
CONF_ANTI_WRINKLE_EXIT_POWER: ("anti_wrinkle_exit_power", float),
|
||||||
CONF_ANTI_WRINKLE_IDLE_TIMEOUT: ("anti_wrinkle_idle_timeout", float),
|
CONF_ANTI_WRINKLE_IDLE_TIMEOUT: ("anti_wrinkle_idle_timeout", float),
|
||||||
|
CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE: ("dishwasher_end_spike_quiet_release", float),
|
||||||
CONF_OFF_DELAY: ("off_delay", int),
|
CONF_OFF_DELAY: ("off_delay", int),
|
||||||
CONF_MIN_OFF_GAP: ("min_off_gap", int),
|
CONF_MIN_OFF_GAP: ("min_off_gap", int),
|
||||||
CONF_COMPLETION_MIN_SECONDS: ("completion_min_seconds", int),
|
CONF_COMPLETION_MIN_SECONDS: ("completion_min_seconds", int),
|
||||||
@@ -200,6 +207,112 @@ _MATCH_OVERRIDE_KEYS: dict[str, tuple[str, Callable[[Any], Any]]] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Canonical default for every matching override key, keyed by the OPTION key the
|
||||||
|
# Playground uses. The Stage 2-4 entries are code constants (not stored options),
|
||||||
|
# so this table is the only place the panel can read them from; ``ws_get_constants``
|
||||||
|
# ships it as ``pg_match_defaults`` and ``effective_settings`` falls back to it for
|
||||||
|
# any key the live matcher config does not carry.
|
||||||
|
MATCH_DEFAULTS_BY_OPTION: dict[str, Any] = {
|
||||||
|
CONF_PROFILE_MATCH_MIN_DURATION_RATIO: DEFAULT_PROFILE_MATCH_MIN_DURATION_RATIO,
|
||||||
|
CONF_PROFILE_MATCH_MAX_DURATION_RATIO: DEFAULT_PROFILE_MATCH_MAX_DURATION_RATIO,
|
||||||
|
"corr_weight": MATCH_CORR_WEIGHT,
|
||||||
|
"keep_min_score": MATCH_KEEP_MIN_SCORE,
|
||||||
|
"dtw_bandwidth": DEFAULT_DTW_BANDWIDTH,
|
||||||
|
"dtw_blend": MATCH_DTW_BLEND,
|
||||||
|
"dtw_ensemble_w": MATCH_DTW_ENSEMBLE_W,
|
||||||
|
"dtw_ddtw_scale": MATCH_DDTW_DIST_SCALE,
|
||||||
|
"dtw_refine_top_n": MATCH_DTW_REFINE_TOP_N,
|
||||||
|
"duration_weight": MATCH_DURATION_WEIGHT,
|
||||||
|
"energy_weight": MATCH_ENERGY_WEIGHT,
|
||||||
|
"duration_scale": MATCH_DURATION_SCALE,
|
||||||
|
"energy_scale": MATCH_ENERGY_SCALE,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Every option key the Playground control panel may carry (detection + matching).
|
||||||
|
# This is the allow-list for a saved Playground preset: anything else submitted by
|
||||||
|
# a client is dropped rather than stored.
|
||||||
|
SETTING_KEYS: frozenset[str] = frozenset(_OVERRIDE_FIELD_MAP) | frozenset(_MATCH_OVERRIDE_KEYS)
|
||||||
|
|
||||||
|
# The subset a user may publish from the Playground back into the live config:
|
||||||
|
# exactly the override keys that are REAL config-entry options (``CONF_*``). The
|
||||||
|
# Stage 2-4 scoring knobs above are sandbox-only code constants - there is no
|
||||||
|
# option behind them, so writing them into ``entry.options`` would create dead
|
||||||
|
# keys the integration never reads. The panel gates its publish buttons on this
|
||||||
|
# list (shipped by ``get_playground_settings``).
|
||||||
|
PUBLISHABLE_SETTING_KEYS: frozenset[str] = frozenset(_OVERRIDE_FIELD_MAP) | {
|
||||||
|
CONF_PROFILE_MATCH_MIN_DURATION_RATIO,
|
||||||
|
CONF_PROFILE_MATCH_MAX_DURATION_RATIO,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def effective_settings(
|
||||||
|
base_config: CycleDetectorConfig, match_config: dict[str, Any] | None
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
"""Option-keyed view of the values a simulation runs with when NO override is
|
||||||
|
staged - i.e. the device's live, fully-resolved settings.
|
||||||
|
|
||||||
|
The exact inverse of ``build_sim_config`` / ``apply_match_overrides``: it reads
|
||||||
|
back the same fields those two write, so the Playground control panel shows the
|
||||||
|
values the integration actually uses (device-type defaults included) instead of
|
||||||
|
a static schema default that may have drifted. Never raises.
|
||||||
|
"""
|
||||||
|
out: dict[str, Any] = {}
|
||||||
|
for opt_key, (field, coerce) in _OVERRIDE_FIELD_MAP.items():
|
||||||
|
value = getattr(base_config, field, None)
|
||||||
|
if value is None:
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
out[opt_key] = coerce(value)
|
||||||
|
except (TypeError, ValueError): # pragma: no cover - defensive
|
||||||
|
continue
|
||||||
|
cfg = match_config or {}
|
||||||
|
for opt_key, (cfg_key, coerce) in _MATCH_OVERRIDE_KEYS.items():
|
||||||
|
value = cfg.get(cfg_key, MATCH_DEFAULTS_BY_OPTION.get(opt_key))
|
||||||
|
if value is None:
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
out[opt_key] = coerce(value)
|
||||||
|
except (TypeError, ValueError): # pragma: no cover - defensive
|
||||||
|
continue
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_setting_values(values: Any) -> dict[str, Any]:
|
||||||
|
"""Filter a client-supplied settings map down to storable Playground values.
|
||||||
|
|
||||||
|
Keeps only keys in :data:`SETTING_KEYS`, coerced with the same coercers the
|
||||||
|
simulation uses, so a preset can never carry an unknown key or a value that
|
||||||
|
would be silently ignored at replay time. Never raises.
|
||||||
|
"""
|
||||||
|
if not isinstance(values, dict):
|
||||||
|
return {}
|
||||||
|
out: dict[str, Any] = {}
|
||||||
|
for key, value in values.items():
|
||||||
|
if value is None:
|
||||||
|
continue
|
||||||
|
mapping = _OVERRIDE_FIELD_MAP.get(key) or _MATCH_OVERRIDE_KEYS.get(key)
|
||||||
|
if mapping is None:
|
||||||
|
continue
|
||||||
|
_target, coerce = mapping
|
||||||
|
try:
|
||||||
|
coerced = coerce(value)
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
continue
|
||||||
|
if isinstance(coerced, float) and not math.isfinite(coerced):
|
||||||
|
continue
|
||||||
|
# Every Playground setting is a physical quantity - watts, seconds, a
|
||||||
|
# count, or a ratio - so a negative value is structurally meaningless and
|
||||||
|
# would make the replayed detector behave in ways the live one never can
|
||||||
|
# (e.g. an off_delay that expires before it starts). Rejected rather than
|
||||||
|
# clamped: silently rewriting a value the user typed would make the sim
|
||||||
|
# disagree with the control panel showing it back.
|
||||||
|
if isinstance(coerced, (int, float)) and not isinstance(coerced, bool):
|
||||||
|
if coerced < 0:
|
||||||
|
continue
|
||||||
|
out[key] = coerced
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
def apply_match_overrides(
|
def apply_match_overrides(
|
||||||
match_config: dict[str, Any], settings_override: dict[str, Any] | None
|
match_config: dict[str, Any], settings_override: dict[str, Any] | None
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
@@ -207,7 +320,8 @@ def apply_match_overrides(
|
|||||||
``settings_override`` overlaid onto the matcher-config keys they drive.
|
``settings_override`` overlaid onto the matcher-config keys they drive.
|
||||||
Unknown/None/malformed values are ignored, so a detection-only override leaves
|
Unknown/None/malformed values are ignored, so a detection-only override leaves
|
||||||
matching byte-identical to the live config."""
|
matching byte-identical to the live config."""
|
||||||
if not settings_override:
|
settings_override = sanitize_setting_values(settings_override)
|
||||||
|
if not isinstance(settings_override, dict) or not settings_override:
|
||||||
return match_config
|
return match_config
|
||||||
out = dict(match_config)
|
out = dict(match_config)
|
||||||
for opt_key, (cfg_key, coerce) in _MATCH_OVERRIDE_KEYS.items():
|
for opt_key, (cfg_key, coerce) in _MATCH_OVERRIDE_KEYS.items():
|
||||||
@@ -229,6 +343,7 @@ def build_sim_config(
|
|||||||
Unknown keys and un-coercible values are ignored so a malformed override can
|
Unknown keys and un-coercible values are ignored so a malformed override can
|
||||||
never break a simulation. ``base`` is left untouched.
|
never break a simulation. ``base`` is left untouched.
|
||||||
"""
|
"""
|
||||||
|
settings_override = sanitize_setting_values(settings_override)
|
||||||
if not isinstance(settings_override, dict) or not settings_override:
|
if not isinstance(settings_override, dict) or not settings_override:
|
||||||
return base
|
return base
|
||||||
changes: dict[str, Any] = {}
|
changes: dict[str, Any] = {}
|
||||||
@@ -348,6 +463,8 @@ def _matching_config(store: Any) -> dict[str, Any]:
|
|||||||
"min_duration_ratio": float(getattr(store, "_min_duration_ratio", 0.07)),
|
"min_duration_ratio": float(getattr(store, "_min_duration_ratio", 0.07)),
|
||||||
"max_duration_ratio": float(getattr(store, "_max_duration_ratio", 1.5)),
|
"max_duration_ratio": float(getattr(store, "_max_duration_ratio", 1.5)),
|
||||||
"dtw_bandwidth": float(getattr(store, "dtw_bandwidth", 0.2)),
|
"dtw_bandwidth": float(getattr(store, "dtw_bandwidth", 0.2)),
|
||||||
|
# Mirror the live Stage-4 energy discriminator so the sim is byte-identical.
|
||||||
|
"energy_mode": str(getattr(store, "energy_mode", "mean")),
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
overrides = store._matching_overrides() # pylint: disable=protected-access
|
overrides = store._matching_overrides() # pylint: disable=protected-access
|
||||||
@@ -1238,6 +1355,7 @@ def _sim_config_summary(config: CycleDetectorConfig) -> dict[str, Any]:
|
|||||||
"anti_wrinkle_max_duration": getattr(config, "anti_wrinkle_max_duration", None),
|
"anti_wrinkle_max_duration": getattr(config, "anti_wrinkle_max_duration", None),
|
||||||
"anti_wrinkle_exit_power": getattr(config, "anti_wrinkle_exit_power", None),
|
"anti_wrinkle_exit_power": getattr(config, "anti_wrinkle_exit_power", None),
|
||||||
"anti_wrinkle_idle_timeout": getattr(config, "anti_wrinkle_idle_timeout", None),
|
"anti_wrinkle_idle_timeout": getattr(config, "anti_wrinkle_idle_timeout", None),
|
||||||
|
"dishwasher_end_spike_quiet_release": getattr(config, "dishwasher_end_spike_quiet_release", None),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ from .const import (
|
|||||||
PHASE_HEAT_CV_WARN,
|
PHASE_HEAT_CV_WARN,
|
||||||
PHASE_HEAT_OCC_MIXED_LO,
|
PHASE_HEAT_OCC_MIXED_LO,
|
||||||
PHASE_HEAT_OCC_MIXED_HI,
|
PHASE_HEAT_OCC_MIXED_HI,
|
||||||
|
PLAYGROUND_PRESET_MAX,
|
||||||
|
PLAYGROUND_PRESET_NAME_MAX,
|
||||||
REFERENCE_PROFILE_CURVE_POINTS,
|
REFERENCE_PROFILE_CURVE_POINTS,
|
||||||
SHAPE_DRIFT_MIN_CYCLES,
|
SHAPE_DRIFT_MIN_CYCLES,
|
||||||
SHAPE_DRIFT_RESAMPLE_N,
|
SHAPE_DRIFT_RESAMPLE_N,
|
||||||
@@ -95,6 +97,12 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
# and reference selection so degenerate cycles never become the matching template.
|
# and reference selection so degenerate cycles never become the matching template.
|
||||||
_DEGENERATE_POWER_FLOOR = 15.0 # watts
|
_DEGENERATE_POWER_FLOOR = 15.0 # watts
|
||||||
|
|
||||||
|
# How far outside the requested trim window a stored sample may still be snapped
|
||||||
|
# to. Trim boundaries arrive quantized to whole seconds (panel number input, the
|
||||||
|
# trim_cycle service), so one second is exactly the input's own resolution -- it
|
||||||
|
# absorbs that rounding without letting the kept window grow measurably.
|
||||||
|
_TRIM_SNAP_TOLERANCE_S = 1.0
|
||||||
|
|
||||||
JSONDict: TypeAlias = dict[str, Any]
|
JSONDict: TypeAlias = dict[str, Any]
|
||||||
CycleDict: TypeAlias = dict[str, Any]
|
CycleDict: TypeAlias = dict[str, Any]
|
||||||
|
|
||||||
@@ -1216,6 +1224,10 @@ class ProfileStore:
|
|||||||
self._match_threshold = match_threshold
|
self._match_threshold = match_threshold
|
||||||
self._unmatch_threshold = unmatch_threshold
|
self._unmatch_threshold = unmatch_threshold
|
||||||
self.dtw_bandwidth: float = DEFAULT_DTW_BANDWIDTH
|
self.dtw_bandwidth: float = DEFAULT_DTW_BANDWIDTH
|
||||||
|
# Stage-4 energy-agreement mode ("mean"|"integrated"); the manager sets it
|
||||||
|
# from the device type via analysis.stage4_energy_mode. Default "mean"
|
||||||
|
# keeps behaviour byte-identical until wired.
|
||||||
|
self.energy_mode: str = "mean"
|
||||||
self._save_debug_traces = save_debug_traces
|
self._save_debug_traces = save_debug_traces
|
||||||
|
|
||||||
# Cache for resampled sample segments: key=(cycle_id, dt)
|
# Cache for resampled sample segments: key=(cycle_id, dt)
|
||||||
@@ -1255,6 +1267,7 @@ class ProfileStore:
|
|||||||
"ml_model_versions": {}, # On-device trained model specs (Stage 4)
|
"ml_model_versions": {}, # On-device trained model specs (Stage 4)
|
||||||
"profile_groups": {}, # Named groups of near-duplicate profiles (Stage 5)
|
"profile_groups": {}, # Named groups of near-duplicate profiles (Stage 5)
|
||||||
"maintenance_log": [], # User-logged maintenance events (Group E)
|
"maintenance_log": [], # User-logged maintenance events (Group E)
|
||||||
|
"playground_presets": {}, # Named Playground setting snapshots (sandbox only)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1302,6 +1315,31 @@ class ProfileStore:
|
|||||||
suggestions: JSONDict = self._data.setdefault("suggestions", {})
|
suggestions: JSONDict = self._data.setdefault("suggestions", {})
|
||||||
suggestions.pop(key, None)
|
suggestions.pop(key, None)
|
||||||
|
|
||||||
|
def get_locked_suggestions(self) -> list[str]:
|
||||||
|
"""Return the setting keys the user has locked against auto-tuning (#343).
|
||||||
|
|
||||||
|
A locked key is never re-surfaced as a suggestion, so the auto-tuner stops
|
||||||
|
repeatedly proposing a value the user has rejected (e.g. a stop/start
|
||||||
|
threshold that breaks an anti-crease-tuned device). Never raises.
|
||||||
|
"""
|
||||||
|
raw = self._data.get("locked_suggestions")
|
||||||
|
return [str(k) for k in raw] if isinstance(raw, list) else []
|
||||||
|
|
||||||
|
async def set_suggestion_locked(self, key: str, locked: bool) -> None:
|
||||||
|
"""Lock or unlock a suggestion key and persist (#343).
|
||||||
|
|
||||||
|
Locking also drops any currently-pending suggestion for the key so it
|
||||||
|
disappears immediately; unlocking lets the auto-tuner surface it again.
|
||||||
|
"""
|
||||||
|
cur = set(self.get_locked_suggestions())
|
||||||
|
if locked:
|
||||||
|
cur.add(key)
|
||||||
|
self.delete_suggestion(key)
|
||||||
|
else:
|
||||||
|
cur.discard(key)
|
||||||
|
self._data["locked_suggestions"] = sorted(cur)
|
||||||
|
await self.async_save()
|
||||||
|
|
||||||
async def clear_suggestions(self) -> None:
|
async def clear_suggestions(self) -> None:
|
||||||
"""Clear all pending suggestions and persist."""
|
"""Clear all pending suggestions and persist."""
|
||||||
self._data["suggestions"] = {}
|
self._data["suggestions"] = {}
|
||||||
@@ -1746,7 +1784,7 @@ class ProfileStore:
|
|||||||
if pairs[0][0] != 0.0:
|
if pairs[0][0] != 0.0:
|
||||||
origin = pairs[0][0]
|
origin = pairs[0][0]
|
||||||
pairs = [[p[0] - origin, p[1]] for p in pairs]
|
pairs = [[p[0] - origin, p[1]] for p in pairs]
|
||||||
now = dt_util.now()
|
now = dt_util.as_utc(dt_util.now())
|
||||||
store_id = str(meta.get("store_cycle_id") or "")
|
store_id = str(meta.get("store_cycle_id") or "")
|
||||||
cycle: CycleDict = {
|
cycle: CycleDict = {
|
||||||
"profile_name": profile_name,
|
"profile_name": profile_name,
|
||||||
@@ -2010,14 +2048,31 @@ class ProfileStore:
|
|||||||
self, current_power: list[float], current_duration: float,
|
self, current_power: list[float], current_duration: float,
|
||||||
members: list[str], member_snaps: dict[str, dict[str, Any]],
|
members: list[str], member_snaps: dict[str, dict[str, Any]],
|
||||||
) -> tuple[str, float | None, float | None]:
|
) -> tuple[str, float | None, float | None]:
|
||||||
"""Within a winning group, pick the member whose duration + mean power +
|
"""Within a winning group, pick the member whose integrated ENERGY best
|
||||||
peak best match the cycle (temperature -> mean power, spin -> peak).
|
matches the cycle.
|
||||||
|
|
||||||
|
Group members already share shape and duration (that is what the cohesion
|
||||||
|
gate collapses them for), so the within-group discriminator is temperature
|
||||||
|
/ spin, and the clean signal for that is integrated energy (Sum P*dt) --
|
||||||
|
NOT whole-cycle mean power (diluted, because hotter cycles also run longer)
|
||||||
|
nor peak (dominated by the ~constant heating-element draw, so it is flat
|
||||||
|
across variants). Validated on real store data (leave-one-cycle-out member
|
||||||
|
pick, 196 cycles): energy-only 73.3% vs the old duration*mean*peak product
|
||||||
|
63.3%; adding any duration term back regressed it (grouped members are
|
||||||
|
duration-cohesive, so duration only adds noise). Duration is still returned
|
||||||
|
(for ETA and the overrun guard) but is intentionally not part of selection.
|
||||||
|
|
||||||
Returns (member_name, individual_fit_score, member_avg_duration). The fit
|
Returns (member_name, individual_fit_score, member_avg_duration). The fit
|
||||||
score is the chosen member's own alignment score, used as a sanity check."""
|
score is the chosen member's own alignment score, used as a sanity check."""
|
||||||
cur = np.asarray(current_power, dtype=float)
|
cur = np.asarray(current_power, dtype=float)
|
||||||
if cur.size == 0 or not members:
|
if cur.size == 0 or not members:
|
||||||
return (members[0] if members else ""), None, None
|
return (members[0] if members else ""), None, None
|
||||||
cur_mp = float(cur.mean()); cur_pk = float(cur.max())
|
# Energy proxy = mean power * duration; the 1/3600 Wh factor cancels in the
|
||||||
|
# log-ratio, so this is exact up to that constant. This proxy equals the
|
||||||
|
# true integral only because `current_power` is already resampled onto a
|
||||||
|
# uniform grid by the matcher; raw or irregular traces must use
|
||||||
|
# signal_processing.integrate_wh instead.
|
||||||
|
cur_energy = float(cur.mean()) * float(current_duration)
|
||||||
|
|
||||||
def agree(a: float, b: float, scale: float) -> float:
|
def agree(a: float, b: float, scale: float) -> float:
|
||||||
if a <= 0 or b <= 0:
|
if a <= 0 or b <= 0:
|
||||||
@@ -2033,9 +2088,9 @@ class ProfileStore:
|
|||||||
if sp.size == 0:
|
if sp.size == 0:
|
||||||
continue
|
continue
|
||||||
md = float(snap.get("avg_duration") or 0.0)
|
md = float(snap.get("avg_duration") or 0.0)
|
||||||
sc = (agree(current_duration, md, 0.15)
|
mem_energy = float(sp.mean()) * md
|
||||||
* agree(cur_mp, float(sp.mean()), 0.20)
|
# Scale 0.30 is validated as insensitive over 0.25-0.40 on real data.
|
||||||
* agree(cur_pk, float(sp.max()), 0.20))
|
sc = agree(cur_energy, mem_energy, 0.30)
|
||||||
if sc > best_sc:
|
if sc > best_sc:
|
||||||
best_sc, best_m, best_dur = sc, m, md
|
best_sc, best_m, best_dur = sc, m, md
|
||||||
fit = None
|
fit = None
|
||||||
@@ -2286,6 +2341,83 @@ class ProfileStore:
|
|||||||
await self.async_save()
|
await self.async_save()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# ─── Playground presets ────────────────────────────────────────────────────
|
||||||
|
# Named snapshots of the Playground's settings control panel. Sandbox data:
|
||||||
|
# nothing here ever reaches the live detector or matcher - the user publishes
|
||||||
|
# individual values to entry.options explicitly (ws_set_options) if they want
|
||||||
|
# them live. Stored per device because the values are device-scale (watts,
|
||||||
|
# seconds tuned for THIS appliance).
|
||||||
|
|
||||||
|
def get_playground_presets(self) -> dict[str, JSONDict]:
|
||||||
|
"""Return the mutable playground-presets mapping (name -> record).
|
||||||
|
|
||||||
|
Each record is ``{"values": {...}, "created_at": iso, "updated_at": iso}``.
|
||||||
|
Self-heals a corrupt/missing key to an empty mapping. Never raises.
|
||||||
|
"""
|
||||||
|
raw = self._data.setdefault("playground_presets", {})
|
||||||
|
if not isinstance(raw, dict):
|
||||||
|
self._data["playground_presets"] = {}
|
||||||
|
return cast(dict[str, JSONDict], self._data["playground_presets"])
|
||||||
|
return cast(dict[str, JSONDict], raw)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _playground_preset_key(name: str) -> str:
|
||||||
|
"""Canonical storage key for a Playground preset name.
|
||||||
|
|
||||||
|
Save and delete MUST derive the key the same way: truncating only on save
|
||||||
|
meant a name longer than the cap was stored truncated but looked up in
|
||||||
|
full, leaving a preset that could never be deleted. The trailing strip()
|
||||||
|
runs after the clamp so a cut landing mid-space cannot bake a trailing
|
||||||
|
space into the key.
|
||||||
|
"""
|
||||||
|
return (name or "").strip()[:PLAYGROUND_PRESET_NAME_MAX].strip()
|
||||||
|
|
||||||
|
async def async_save_playground_preset(
|
||||||
|
self, name: str, values: dict[str, Any]
|
||||||
|
) -> JSONDict:
|
||||||
|
"""Create or overwrite a named Playground preset and persist it.
|
||||||
|
|
||||||
|
``values`` must already be sanitized by ``playground.sanitize_setting_values``
|
||||||
|
(the store deliberately does not import the playground module - that would
|
||||||
|
be a cycle). Raises ``ValueError`` for an empty name, an empty value map, or
|
||||||
|
when the per-device preset cap is reached by a NEW name.
|
||||||
|
"""
|
||||||
|
name = self._playground_preset_key(name)
|
||||||
|
if not name:
|
||||||
|
raise ValueError("Preset name is required")
|
||||||
|
if not isinstance(values, dict) or not values:
|
||||||
|
raise ValueError("Preset has no settings to save")
|
||||||
|
presets = self.get_playground_presets()
|
||||||
|
existing = presets.get(name)
|
||||||
|
if existing is None and len(presets) >= PLAYGROUND_PRESET_MAX:
|
||||||
|
raise ValueError(
|
||||||
|
f"Preset limit reached ({PLAYGROUND_PRESET_MAX}); delete one first"
|
||||||
|
)
|
||||||
|
now = dt_util.now().isoformat()
|
||||||
|
created = now
|
||||||
|
if isinstance(existing, dict) and isinstance(existing.get("created_at"), str):
|
||||||
|
created = existing["created_at"]
|
||||||
|
record: JSONDict = {
|
||||||
|
"values": dict(values),
|
||||||
|
"created_at": created,
|
||||||
|
"updated_at": now,
|
||||||
|
}
|
||||||
|
presets[name] = record
|
||||||
|
await self.async_save()
|
||||||
|
self._logger.info(
|
||||||
|
"Saved playground preset %r with %d values", name, len(values)
|
||||||
|
)
|
||||||
|
return record
|
||||||
|
|
||||||
|
async def async_delete_playground_preset(self, name: str) -> bool:
|
||||||
|
"""Remove a Playground preset by name; report whether one was removed."""
|
||||||
|
presets = self.get_playground_presets()
|
||||||
|
if presets.pop(self._playground_preset_key(name), None) is None:
|
||||||
|
return False
|
||||||
|
await self.async_save()
|
||||||
|
self._logger.info("Deleted playground preset %r", name)
|
||||||
|
return True
|
||||||
|
|
||||||
def cycles_since_maintenance(self, event_type: str) -> int:
|
def cycles_since_maintenance(self, event_type: str) -> int:
|
||||||
"""Count completed cycles since the most recent maintenance event of a type.
|
"""Count completed cycles since the most recent maintenance event of a type.
|
||||||
|
|
||||||
@@ -3835,9 +3967,11 @@ class ProfileStore:
|
|||||||
if first_offset > 0:
|
if first_offset > 0:
|
||||||
# Leading zeros removed - Must shift start_time forward
|
# Leading zeros removed - Must shift start_time forward
|
||||||
try:
|
try:
|
||||||
start_dt = datetime.fromisoformat(cycle["start_time"])
|
start_dt = _parse_start_dt(cycle["start_time"])
|
||||||
|
if start_dt is None:
|
||||||
|
raise ValueError("unparseable start_time")
|
||||||
new_start = start_dt + timedelta(seconds=first_offset)
|
new_start = start_dt + timedelta(seconds=first_offset)
|
||||||
cycle["start_time"] = new_start.isoformat()
|
cycle["start_time"] = dt_util.as_utc(new_start).isoformat()
|
||||||
|
|
||||||
# Re-normalize offsets to 0
|
# Re-normalize offsets to 0
|
||||||
shifted_data: list[list[float]] = []
|
shifted_data: list[list[float]] = []
|
||||||
@@ -4501,6 +4635,92 @@ class ProfileStore:
|
|||||||
return cast(JSONDict, env) if isinstance(env, dict) else None
|
return cast(JSONDict, env) if isinstance(env, dict) else None
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _envelope_time_power(
|
||||||
|
envelope: JSONDict | None,
|
||||||
|
) -> tuple[list[float], list[float]] | None:
|
||||||
|
"""Extract (time_grid, power) from an envelope's ``avg`` curve, or None.
|
||||||
|
|
||||||
|
Handles both the new ``[[t, p], ...]`` and legacy ``[p, ...]`` formats
|
||||||
|
(reconstructing the grid from ``time_grid`` / ``target_duration`` / a 60 s
|
||||||
|
fallback). Single source of the envelope time axis for both the alignment
|
||||||
|
worker and the Smart-Termination release span (#348), so the mapped position
|
||||||
|
and the span it is compared against always live on the same grid.
|
||||||
|
"""
|
||||||
|
if not envelope:
|
||||||
|
return None
|
||||||
|
env_avg_raw = envelope.get("avg", [])
|
||||||
|
if not env_avg_raw:
|
||||||
|
return None
|
||||||
|
try:
|
||||||
|
if isinstance(env_avg_raw[0], (list, tuple)) and len(env_avg_raw[0]) >= 2:
|
||||||
|
env_points = cast(list[list[Any] | tuple[Any, ...]], env_avg_raw)
|
||||||
|
env_time = [float(p[0]) for p in env_points]
|
||||||
|
env_power = [float(p[1]) for p in env_points]
|
||||||
|
else:
|
||||||
|
env_values = cast(list[float | int], env_avg_raw)
|
||||||
|
env_power = [float(p) for p in env_values]
|
||||||
|
env_time_raw = envelope.get("time_grid")
|
||||||
|
env_time = cast(list[float], env_time_raw) if isinstance(env_time_raw, list) else None
|
||||||
|
if not env_time or len(env_time) != len(env_power):
|
||||||
|
target_dur = float(envelope.get("target_duration", 0.0) or 0.0)
|
||||||
|
if target_dur > 0:
|
||||||
|
env_time = cast(list[float], np.linspace(0, target_dur, len(env_power)).tolist())
|
||||||
|
else:
|
||||||
|
env_time = [float(i * 60) for i in range(len(env_power))]
|
||||||
|
# Inside the try: a stored time_grid with non-numeric entries must
|
||||||
|
# yield the safe None fallback, not propagate to async_verify_alignment.
|
||||||
|
return [float(t) for t in env_time], env_power
|
||||||
|
except (TypeError, ValueError, IndexError):
|
||||||
|
return None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _resample_trace_to_grid(
|
||||||
|
offsets: list[float], powers: list[float], env_time: list[float]
|
||||||
|
) -> list[float]:
|
||||||
|
"""Resample a live ``(offsets, powers)`` trace onto the envelope's uniform
|
||||||
|
time step, so its sample index maps to elapsed seconds on the envelope grid
|
||||||
|
(#350). Linear interpolation (matching the envelope build side), bounded at
|
||||||
|
2x the envelope length. Falls back to the raw powers when a grid cannot be
|
||||||
|
formed (too few points / non-positive step), leaving behavior unchanged.
|
||||||
|
"""
|
||||||
|
if len(offsets) < 2 or len(env_time) < 2:
|
||||||
|
return list(powers)
|
||||||
|
diffs = np.diff(np.asarray(env_time, dtype=float))
|
||||||
|
pos = diffs[diffs > 0]
|
||||||
|
if pos.size == 0:
|
||||||
|
return list(powers)
|
||||||
|
step = float(np.median(pos))
|
||||||
|
span = float(env_time[-1])
|
||||||
|
# Sort and deduplicate before computing t_max so the grid span reflects the
|
||||||
|
# true maximum offset even when the raw trace is non-monotonic.
|
||||||
|
off_arr = np.asarray(offsets, dtype=float)
|
||||||
|
pow_arr = np.asarray(powers, dtype=float)
|
||||||
|
order = np.argsort(off_arr, kind="stable")
|
||||||
|
off_arr, pow_arr = off_arr[order], pow_arr[order]
|
||||||
|
# Remove duplicate offsets; np.unique keeps the first occurrence after sorting.
|
||||||
|
off_arr, unique_idx = np.unique(off_arr, return_index=True)
|
||||||
|
pow_arr = pow_arr[unique_idx]
|
||||||
|
t_max = min(float(off_arr[-1]), 2.0 * span) if span > 0 else float(off_arr[-1])
|
||||||
|
if step <= 0 or t_max <= 0:
|
||||||
|
return list(powers)
|
||||||
|
n = max(2, round(t_max / step) + 1)
|
||||||
|
grid = np.arange(n, dtype=float) * step
|
||||||
|
return np.interp(grid, off_arr, pow_arr).tolist()
|
||||||
|
|
||||||
|
def envelope_time_span(self, profile_name: str) -> float:
|
||||||
|
"""Total time span (seconds) of a profile's envelope grid, 0 if unavailable.
|
||||||
|
|
||||||
|
This is exactly the maximum value ``async_verify_alignment`` maps onto, so
|
||||||
|
dividing a mapped position by it yields a true 0..1 fraction through the
|
||||||
|
cycle - unlike ``avg_duration`` (a differently-derived trimmed mean) which
|
||||||
|
could push the 0.95 Smart-Termination release threshold out of reach (#348).
|
||||||
|
"""
|
||||||
|
curves = self._envelope_time_power(self.get_envelope(profile_name))
|
||||||
|
if not curves or not curves[0]:
|
||||||
|
return 0.0
|
||||||
|
return float(curves[0][-1])
|
||||||
|
|
||||||
def reference_curve(
|
def reference_curve(
|
||||||
self, profile_name: str, n: int = REFERENCE_PROFILE_CURVE_POINTS
|
self, profile_name: str, n: int = REFERENCE_PROFILE_CURVE_POINTS
|
||||||
) -> JSONDict | None:
|
) -> JSONDict | None:
|
||||||
@@ -5099,6 +5319,7 @@ class ProfileStore:
|
|||||||
"min_duration_ratio": self._min_duration_ratio,
|
"min_duration_ratio": self._min_duration_ratio,
|
||||||
"max_duration_ratio": self._max_duration_ratio,
|
"max_duration_ratio": self._max_duration_ratio,
|
||||||
"dtw_bandwidth": self.dtw_bandwidth,
|
"dtw_bandwidth": self.dtw_bandwidth,
|
||||||
|
"energy_mode": self.energy_mode,
|
||||||
# On-device tuned scoring weights (opt-in); empty = shipped defaults.
|
# On-device tuned scoring weights (opt-in); empty = shipped defaults.
|
||||||
**self._matching_overrides(),
|
**self._matching_overrides(),
|
||||||
}
|
}
|
||||||
@@ -5203,48 +5424,50 @@ class ProfileStore:
|
|||||||
Verify if the current power trace aligns with an expected low-power region in the envelope.
|
Verify if the current power trace aligns with an expected low-power region in the envelope.
|
||||||
Returns: (is_confirmed_low_power, mapped_envelope_time, mapped_envelope_power)
|
Returns: (is_confirmed_low_power, mapped_envelope_time, mapped_envelope_power)
|
||||||
"""
|
"""
|
||||||
|
if not current_power_data:
|
||||||
|
return False, 0.0, 9999.0
|
||||||
|
|
||||||
|
# "avg" can be a list of [t, p] (new) or [p, ...] (legacy); the shared helper
|
||||||
|
# normalizes both to (time_grid, power) - identical to envelope_time_span so
|
||||||
|
# the mapped position and the release span live on the same grid (#348).
|
||||||
envelope = self.get_envelope(profile_name)
|
envelope = self.get_envelope(profile_name)
|
||||||
if not envelope or not envelope.get("avg") or not current_power_data:
|
curves = self._envelope_time_power(envelope)
|
||||||
return False, 0.0, 9999.0
|
if curves is None:
|
||||||
|
if envelope and envelope.get("avg"):
|
||||||
# Extract envelope curves
|
|
||||||
# "avg" can be list of [t, p] (new) or [p, ...] (legacy)
|
|
||||||
env_avg_raw = envelope.get("avg", [])
|
|
||||||
if not env_avg_raw:
|
|
||||||
return False, 0.0, 9999.0
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Handle both formats: [[t, y], ...] (new) or [y, ...] (legacy)
|
|
||||||
if isinstance(env_avg_raw[0], (list, tuple)) and len(env_avg_raw[0]) >= 2:
|
|
||||||
# New format: [[t, y], ...]
|
|
||||||
env_points = cast(list[list[Any] | tuple[Any, ...]], env_avg_raw)
|
|
||||||
env_time = [float(p[0]) for p in env_points]
|
|
||||||
env_power = [float(p[1]) for p in env_points]
|
|
||||||
else:
|
|
||||||
# Legacy format: [y, ...]
|
|
||||||
env_values = cast(list[float | int], env_avg_raw)
|
|
||||||
env_power = [float(p) for p in env_values]
|
|
||||||
# Reconstruct time grid from envelope if available, or assume 60s intervals
|
|
||||||
env_time_raw = envelope.get("time_grid")
|
|
||||||
env_time = cast(list[float], env_time_raw) if isinstance(env_time_raw, list) else None
|
|
||||||
if not env_time or len(env_time) != len(env_power):
|
|
||||||
target_dur = float(envelope.get("target_duration", 0.0) or 0.0)
|
|
||||||
if target_dur > 0:
|
|
||||||
env_time = cast(list[float], np.linspace(0, target_dur, len(env_power)).tolist())
|
|
||||||
else:
|
|
||||||
env_time = [float(i * 60) for i in range(len(env_power))]
|
|
||||||
except (TypeError, ValueError, IndexError) as e:
|
|
||||||
first_type_name = type(env_avg_raw[0]).__name__ if env_avg_raw else "None"
|
|
||||||
self._logger.error(
|
self._logger.error(
|
||||||
"Malformed envelope 'avg' data for %s. Type: %s, Length: %d, Error: %s",
|
"Malformed envelope 'avg' data for %s", profile_name
|
||||||
profile_name, first_type_name, len(env_avg_raw), e
|
|
||||||
)
|
)
|
||||||
return False, 0.0, 9999.0
|
return False, 0.0, 9999.0
|
||||||
|
env_time, env_power = curves
|
||||||
|
|
||||||
|
# Resample the live trace onto the envelope's own time step BEFORE alignment,
|
||||||
|
# so its sample index corresponds to elapsed SECONDS, not sample count (#350).
|
||||||
|
# The worker warps power-vs-power; with no shared time axis an irregularly or
|
||||||
|
# sparsely sampled tail (e.g. 0 W keepalives every off_delay) maps one grid
|
||||||
|
# step per sample regardless of wall-clock, so the position crawls - and a
|
||||||
|
# dense short prefix instead races to the end. Linear interpolation matches
|
||||||
|
# the envelope build side so the two curves stay comparable.
|
||||||
try:
|
try:
|
||||||
current_power_list = [float(x[1]) for x in current_power_data]
|
offsets = [float(x[0]) for x in current_power_data]
|
||||||
except Exception: # pylint: disable=broad-exception-caught
|
powers = [float(x[1]) for x in current_power_data]
|
||||||
|
except (TypeError, ValueError, IndexError):
|
||||||
|
# A legacy ISO-timestamped trace (x[0] is a string) lands here. The
|
||||||
|
# signature admits ``list[tuple[Any, ...]]``, so normalize through the
|
||||||
|
# shared helper instead of bailing out: returning early skipped
|
||||||
|
# alignment entirely, which silently reduced the legacy-envelope guard
|
||||||
|
# in tests/repro/test_issue_112.py to a no-op. Production callers pass
|
||||||
|
# offsets and never reach this branch, so the fast path is unchanged.
|
||||||
|
normalized = power_data_to_offsets(
|
||||||
|
cast(list[list[Any] | tuple[Any, ...]], current_power_data)
|
||||||
|
)
|
||||||
|
if not normalized:
|
||||||
return False, 0.0, 9999.0
|
return False, 0.0, 9999.0
|
||||||
|
try:
|
||||||
|
offsets = [float(x[0]) for x in normalized]
|
||||||
|
powers = [float(x[1]) for x in normalized]
|
||||||
|
except (TypeError, ValueError, IndexError):
|
||||||
|
return False, 0.0, 9999.0
|
||||||
|
current_power_list = self._resample_trace_to_grid(offsets, powers, env_time)
|
||||||
|
|
||||||
# Offload to worker
|
# Offload to worker
|
||||||
mapped_time, mapped_power, score = await self.hass.async_add_executor_job(
|
mapped_time, mapped_power, score = await self.hass.async_add_executor_job(
|
||||||
@@ -5593,6 +5816,7 @@ class ProfileStore:
|
|||||||
self._data["profiles"] = {}
|
self._data["profiles"] = {}
|
||||||
self._data["envelopes"] = {}
|
self._data["envelopes"] = {}
|
||||||
self._data["suggestions"] = {}
|
self._data["suggestions"] = {}
|
||||||
|
self._data["locked_suggestions"] = []
|
||||||
self._data["feedback_history"] = {}
|
self._data["feedback_history"] = {}
|
||||||
self._data["pending_feedback"] = {}
|
self._data["pending_feedback"] = {}
|
||||||
self._data["auto_adjustments"] = []
|
self._data["auto_adjustments"] = []
|
||||||
@@ -5604,6 +5828,7 @@ class ProfileStore:
|
|||||||
self._data["ml_model_versions"] = {}
|
self._data["ml_model_versions"] = {}
|
||||||
self._data["profile_groups"] = {}
|
self._data["profile_groups"] = {}
|
||||||
self._data["maintenance_log"] = []
|
self._data["maintenance_log"] = []
|
||||||
|
self._data["playground_presets"] = {}
|
||||||
self._data["matching_config"] = {}
|
self._data["matching_config"] = {}
|
||||||
self._data["match_ranking_history"] = []
|
self._data["match_ranking_history"] = []
|
||||||
self._data["ml_last_training_run"] = None
|
self._data["ml_last_training_run"] = None
|
||||||
@@ -6261,8 +6486,8 @@ class ProfileStore:
|
|||||||
for c in self._data.get("reference_cycles", []):
|
for c in self._data.get("reference_cycles", []):
|
||||||
if not isinstance(c, dict):
|
if not isinstance(c, dict):
|
||||||
continue
|
continue
|
||||||
meta = c.get("meta")
|
cyc_meta = c.get("meta")
|
||||||
src = meta.get("source") if isinstance(meta, dict) else None
|
src = cyc_meta.get("source") if isinstance(cyc_meta, dict) else None
|
||||||
if src:
|
if src:
|
||||||
existing_ref_sources.add(_ref_dedup_key(src))
|
existing_ref_sources.add(_ref_dedup_key(src))
|
||||||
|
|
||||||
@@ -6530,6 +6755,36 @@ class ProfileStore:
|
|||||||
new_start_s = max(0.0, float(new_start_s))
|
new_start_s = max(0.0, float(new_start_s))
|
||||||
new_end_s = float(new_end_s)
|
new_end_s = float(new_end_s)
|
||||||
|
|
||||||
|
# Guard against a destructive trim (#366): an inverted/empty window would
|
||||||
|
# produce a zero- or single-sample segment that collapses the cycle to
|
||||||
|
# duration 0 / energy 0. Reject before touching the cycle.
|
||||||
|
if new_end_s <= new_start_s:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Snap both boundaries to a real sample offset (#373). Trim inputs round
|
||||||
|
# to whole seconds, but sample offsets are frequently fractional -- a
|
||||||
|
# nominal 10 s cadence drifts, so ~3132.3 is the norm -- and the
|
||||||
|
# [start, end] filter below is inclusive, so a whole-second entry lands
|
||||||
|
# just below the sample the user aimed at and silently drops it. Snapping
|
||||||
|
# against the full-resolution stored trace (independent of any client-side
|
||||||
|
# curve decimation) makes the kept window land on the samples the
|
||||||
|
# boundaries name, on both ends.
|
||||||
|
#
|
||||||
|
# Snap *inward*, tolerating only the whole-second input quantization
|
||||||
|
# (_TRIM_SNAP_TOLERANCE_S). Nearest-in-either-direction snapping could
|
||||||
|
# widen the window by up to half a sample interval per side -- on a
|
||||||
|
# coarse trace (samples at 0 s and 100 s, request 40-60 s) that silently
|
||||||
|
# kept the entire cycle while meta["trim"] claimed a narrow window.
|
||||||
|
offsets = [float(offset) for offset, _ in p_data]
|
||||||
|
starts = [o for o in offsets if o >= new_start_s - _TRIM_SNAP_TOLERANCE_S]
|
||||||
|
ends = [o for o in offsets if o <= new_end_s + _TRIM_SNAP_TOLERANCE_S]
|
||||||
|
if not starts or not ends:
|
||||||
|
return False
|
||||||
|
new_start_s = min(starts)
|
||||||
|
new_end_s = max(ends)
|
||||||
|
if new_end_s <= new_start_s:
|
||||||
|
return False
|
||||||
|
|
||||||
kept = sorted(
|
kept = sorted(
|
||||||
(
|
(
|
||||||
(offset, power)
|
(offset, power)
|
||||||
@@ -6547,6 +6802,13 @@ class ProfileStore:
|
|||||||
[round(offset - base, 2), power] for offset, power in kept
|
[round(offset - base, 2), power] for offset, power in kept
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# A window that keeps fewer than two samples (or whose kept span is zero)
|
||||||
|
# would collapse the cycle to duration 0 with no recovery. Reject here,
|
||||||
|
# BEFORE the start_time mutation below, so the stored cycle is untouched
|
||||||
|
# and the caller reports a failure instead of destroying data (#366).
|
||||||
|
if len(renorm) < 2 or round(renorm[-1][0], 1) <= 0.0:
|
||||||
|
return False
|
||||||
|
|
||||||
# Advance start_time when trimming from the front
|
# Advance start_time when trimming from the front
|
||||||
if base > 0:
|
if base > 0:
|
||||||
start_ts = _value_to_timestamp(cycle.get("start_time"))
|
start_ts = _value_to_timestamp(cycle.get("start_time"))
|
||||||
@@ -6817,8 +7079,8 @@ class ProfileStore:
|
|||||||
|
|
||||||
# Create Cycle Record
|
# Create Cycle Record
|
||||||
new_cycle: dict[str, Any] = {
|
new_cycle: dict[str, Any] = {
|
||||||
"start_time": new_cycle_start.isoformat(),
|
"start_time": dt_util.as_utc(new_cycle_start).isoformat(),
|
||||||
"end_time": (new_cycle_start + timedelta(seconds=seg_dur)).isoformat(),
|
"end_time": dt_util.as_utc(new_cycle_start + timedelta(seconds=seg_dur)).isoformat(),
|
||||||
"duration": round(seg_dur, 1),
|
"duration": round(seg_dur, 1),
|
||||||
"status": "completed",
|
"status": "completed",
|
||||||
"power_data": p_data_abs,
|
"power_data": p_data_abs,
|
||||||
@@ -6860,6 +7122,10 @@ class ProfileStore:
|
|||||||
for name in touched:
|
for name in touched:
|
||||||
await self.async_rebuild_envelope(name)
|
await self.async_rebuild_envelope(name)
|
||||||
|
|
||||||
|
# The original cycle is gone; drop its now-orphaned pending feedback so the
|
||||||
|
# "needs review" badge stays consistent with the review list (#362).
|
||||||
|
self.prune_orphaned_feedback()
|
||||||
|
|
||||||
await self.async_save()
|
await self.async_save()
|
||||||
self._logger.info("Interactive Split Applied to %s -> %s", cycle_id, new_ids)
|
self._logger.info("Interactive Split Applied to %s -> %s", cycle_id, new_ids)
|
||||||
return new_ids
|
return new_ids
|
||||||
@@ -6995,7 +7261,8 @@ class ProfileStore:
|
|||||||
|
|
||||||
new_dur = (final_end_dt - c1_start_dt).total_seconds()
|
new_dur = (final_end_dt - c1_start_dt).total_seconds()
|
||||||
|
|
||||||
c1["end_time"] = final_end_dt.isoformat()
|
c1["start_time"] = dt_util.as_utc(c1_start_dt).isoformat()
|
||||||
|
c1["end_time"] = dt_util.as_utc(final_end_dt).isoformat()
|
||||||
c1["duration"] = round(new_dur, 1)
|
c1["duration"] = round(new_dur, 1)
|
||||||
c1["max_power"] = max_power
|
c1["max_power"] = max_power
|
||||||
c1["profile_name"] = target_profile
|
c1["profile_name"] = target_profile
|
||||||
@@ -7050,6 +7317,10 @@ class ProfileStore:
|
|||||||
except Exception as e: # pylint: disable=broad-exception-caught
|
except Exception as e: # pylint: disable=broad-exception-caught
|
||||||
self._logger.warning("Failed to update signature for merged cycle %s: %s", new_id, e)
|
self._logger.warning("Failed to update signature for merged cycle %s: %s", new_id, e)
|
||||||
|
|
||||||
|
# Consumed cycles are gone; drop any pending feedback that pointed at them so
|
||||||
|
# the "needs review" badge does not keep counting non-existent cycles (#362).
|
||||||
|
self.prune_orphaned_feedback()
|
||||||
|
|
||||||
await self.async_save()
|
await self.async_save()
|
||||||
self._logger.info("Interactive Merge Applied: %s -> %s", cycle_ids, new_id)
|
self._logger.info("Interactive Merge Applied: %s -> %s", cycle_ids, new_id)
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ from .const import (
|
|||||||
SIGNAL_WASHER_UPDATE,
|
SIGNAL_WASHER_UPDATE,
|
||||||
CONF_WATCHDOG_INTERVAL,
|
CONF_WATCHDOG_INTERVAL,
|
||||||
CONF_EXPOSE_DEBUG_ENTITIES,
|
CONF_EXPOSE_DEBUG_ENTITIES,
|
||||||
|
CONF_POWER_PROFILE_INTERVAL_MIN,
|
||||||
|
DEFAULT_POWER_PROFILE_INTERVAL_MIN,
|
||||||
DEVICE_TYPE_PUMP,
|
DEVICE_TYPE_PUMP,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
STATE_IDLE,
|
STATE_IDLE,
|
||||||
@@ -419,6 +421,7 @@ class WasherTimeRemainingSensor(WasherBaseSensor):
|
|||||||
# duration display-format options, even while the appliance is idle
|
# duration display-format options, even while the appliance is idle
|
||||||
# and the value is unknown (see issue #261).
|
# and the value is unknown (see issue #261).
|
||||||
native_unit_of_measurement="min",
|
native_unit_of_measurement="min",
|
||||||
|
suggested_display_precision=0,
|
||||||
icon="mdi:timer-sand",
|
icon="mdi:timer-sand",
|
||||||
)
|
)
|
||||||
super().__init__(manager, entry)
|
super().__init__(manager, entry)
|
||||||
@@ -444,6 +447,7 @@ class WasherTotalDurationSensor(WasherBaseSensor):
|
|||||||
# See WasherTimeRemainingSensor / issue #261: keep the unit static so
|
# See WasherTimeRemainingSensor / issue #261: keep the unit static so
|
||||||
# the duration display-format options are available even while idle.
|
# the duration display-format options are available even while idle.
|
||||||
native_unit_of_measurement="min",
|
native_unit_of_measurement="min",
|
||||||
|
suggested_display_precision=0,
|
||||||
icon="mdi:timer-check-outline",
|
icon="mdi:timer-check-outline",
|
||||||
)
|
)
|
||||||
super().__init__(manager, entry)
|
super().__init__(manager, entry)
|
||||||
@@ -529,6 +533,7 @@ class WasherElapsedTimeSensor(WasherBaseSensor):
|
|||||||
translation_key="elapsed_time",
|
translation_key="elapsed_time",
|
||||||
native_unit_of_measurement="s",
|
native_unit_of_measurement="s",
|
||||||
device_class=SensorDeviceClass.DURATION,
|
device_class=SensorDeviceClass.DURATION,
|
||||||
|
suggested_display_precision=0,
|
||||||
icon="mdi:timer-outline",
|
icon="mdi:timer-outline",
|
||||||
)
|
)
|
||||||
super().__init__(manager, entry)
|
super().__init__(manager, entry)
|
||||||
@@ -736,6 +741,19 @@ class WasherProfileCountSensor(WasherBaseSensor):
|
|||||||
def _to_min(sec: float) -> int:
|
def _to_min(sec: float) -> int:
|
||||||
return int(sec / 60) if sec else 0
|
return int(sec / 60) if sec else 0
|
||||||
|
|
||||||
|
# power_profile bucket size (minutes) is configurable (#367); default 15.
|
||||||
|
# Clamp to >=1 (get_profile_power_profile returns [] for interval <= 0).
|
||||||
|
interval_min = DEFAULT_POWER_PROFILE_INTERVAL_MIN
|
||||||
|
try:
|
||||||
|
interval_min = int(
|
||||||
|
self._entry.options.get(
|
||||||
|
CONF_POWER_PROFILE_INTERVAL_MIN, DEFAULT_POWER_PROFILE_INTERVAL_MIN
|
||||||
|
)
|
||||||
|
)
|
||||||
|
except (TypeError, ValueError, OverflowError):
|
||||||
|
interval_min = DEFAULT_POWER_PROFILE_INTERVAL_MIN
|
||||||
|
interval_min = max(1, interval_min)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"average_consumption_kwh": avg_energy,
|
"average_consumption_kwh": avg_energy,
|
||||||
"total_consumption_kwh": total_energy,
|
"total_consumption_kwh": total_energy,
|
||||||
@@ -744,16 +762,16 @@ class WasherProfileCountSensor(WasherBaseSensor):
|
|||||||
"min_length_min": _to_min(profile.get("min_duration", 0)),
|
"min_length_min": _to_min(profile.get("min_duration", 0)),
|
||||||
"max_length_min": _to_min(profile.get("max_duration", 0)),
|
"max_length_min": _to_min(profile.get("max_duration", 0)),
|
||||||
"consistency_min": consistency_min,
|
"consistency_min": consistency_min,
|
||||||
# Average power (W) per 15-min slot of this profile's learned shape,
|
# Average power (W) per configured interval of this profile's learned shape,
|
||||||
# e.g. [2200, 2200, 800, ...] - the flat array external planners such
|
# e.g. [2200, 2200, 800, ...] - the flat array external planners such
|
||||||
# as tibber_prices' `power_profile` consume to pick the cheapest run
|
# as tibber_prices' `power_profile` consume to pick the cheapest run
|
||||||
# window (issue #272). Empty until the profile has a learned envelope.
|
# window (issue #272). Empty until the profile has a learned envelope.
|
||||||
# Refreshes with the profile: the envelope is rebuilt on each new
|
# Refreshes with the profile: the envelope is rebuilt on each new
|
||||||
# labelled cycle, which bumps this sensor's cycle_count state.
|
# labelled cycle, which bumps this sensor's cycle_count state.
|
||||||
"power_profile": self._manager.profile_store.get_profile_power_profile(
|
"power_profile": self._manager.profile_store.get_profile_power_profile(
|
||||||
self._profile_name
|
self._profile_name, interval_s=interval_min * 60.0
|
||||||
),
|
),
|
||||||
"power_profile_interval_min": 15,
|
"power_profile_interval_min": interval_min,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData Setup",
|
"title": "WashData Setup",
|
||||||
"description": "Configure your washing machine or other appliance.\n\nPower sensor is required.",
|
"description": "Configure your washing machine or other appliance.\n\nPower sensor is required.\n\nAfter setup, open the WashData panel from the sidebar (or go to [/ha-washdata](/ha-washdata)) to view cycles, tune detection and manage profiles.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Update the device name, appliance type, or power sensor.\n\nThe WashData panel (sidebar, or [/ha-washdata](/ha-washdata)) is where detection, cycles, profiles and notifications are managed.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "Rename the device or change its core hardware settings. All detection, matching and notification settings are in the WashData panel.",
|
"description": "Rename the device or change its core hardware settings. All detection, matching and notification settings are in the [WashData panel](/ha-washdata) (also reachable from the sidebar).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -57,6 +57,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min timer",
|
"timer_default_message": "{device}: {minutes} min timer",
|
||||||
"timer_pause_action_title": "Resume Cycle",
|
"timer_pause_action_title": "Resume Cycle",
|
||||||
"timer_pause_body_suffix": "The cycle is paused. Open the WashData panel to resume.",
|
"timer_pause_body_suffix": "The cycle is paused. Open the WashData panel to resume.",
|
||||||
|
"unload_dismiss_action_title": "Stop reminding",
|
||||||
"vs_typical_longer": "{pct}% longer than usual",
|
"vs_typical_longer": "{pct}% longer than usual",
|
||||||
"vs_typical_shorter": "{pct}% shorter than usual",
|
"vs_typical_shorter": "{pct}% shorter than usual",
|
||||||
"notify_live_waiting_message": "{device}: No profile matched yet."
|
"notify_live_waiting_message": "{device}: No profile matched yet."
|
||||||
|
|||||||
@@ -18,12 +18,14 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import copy
|
||||||
import logging
|
import logging
|
||||||
|
import math
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Any, TYPE_CHECKING, cast
|
from typing import Any, TYPE_CHECKING, cast
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
CONF_WATCHDOG_INTERVAL,
|
CONF_WATCHDOG_INTERVAL,
|
||||||
@@ -51,6 +53,9 @@ from .const import (
|
|||||||
CONF_START_DURATION_THRESHOLD,
|
CONF_START_DURATION_THRESHOLD,
|
||||||
CONF_ANTI_WRINKLE_MAX_POWER,
|
CONF_ANTI_WRINKLE_MAX_POWER,
|
||||||
CONF_ANTI_WRINKLE_EXIT_POWER,
|
CONF_ANTI_WRINKLE_EXIT_POWER,
|
||||||
|
CONF_ANTI_WRINKLE_ENABLED,
|
||||||
|
DEFAULT_ANTI_WRINKLE_ENABLED,
|
||||||
|
DEFAULT_ANTI_WRINKLE_MAX_POWER,
|
||||||
CONF_DEVICE_TYPE,
|
CONF_DEVICE_TYPE,
|
||||||
CONF_PUMP_STUCK_DURATION,
|
CONF_PUMP_STUCK_DURATION,
|
||||||
DEVICE_TYPE_DRYER,
|
DEVICE_TYPE_DRYER,
|
||||||
@@ -88,6 +93,56 @@ _MAX_PAUSE_GAP_H = 1.0 # a gap > this (hours) between samples i
|
|||||||
_MIN_RESUME_ACTIVE_S = 120.0
|
_MIN_RESUME_ACTIVE_S = 120.0
|
||||||
|
|
||||||
|
|
||||||
|
def _measured_off_delay_floor(device_floor: int) -> int:
|
||||||
|
"""Lower bound for an off_delay suggestion backed by *measured* pauses.
|
||||||
|
|
||||||
|
``DEFAULT_OFF_DELAY_BY_DEVICE`` is a blind prior for devices we have no
|
||||||
|
traces for: the dishwasher entry (1800 s) is sized to bridge a passive
|
||||||
|
drying phase. Once real intra-cycle pauses have been measured that prior is
|
||||||
|
stale evidence, and clamping the measurement up to it is actively harmful -
|
||||||
|
off_delay is *never* what holds a cycle together (every finalize path in
|
||||||
|
``cycle_detector`` uses ``max(off_delay, min_off_gap)``, and min_off_gap
|
||||||
|
keeps its own 3600 s dishwasher floor). Solo uses of off_delay are the
|
||||||
|
end-gate energy lookback window, the watchdog's keepalive cadence and the
|
||||||
|
Rule-12 end_energy_threshold coupling - all of which get *worse* as it
|
||||||
|
grows: a 1800 s window sweeps standby blips into the end gate and holds the
|
||||||
|
cycle open long past the real end.
|
||||||
|
|
||||||
|
So a measured suggestion is floored at the generic ``DEFAULT_OFF_DELAY``,
|
||||||
|
while device priors that are *below* it (e.g. pumps at 20 s, which cut off
|
||||||
|
sharply) are still honoured.
|
||||||
|
"""
|
||||||
|
return min(int(device_floor), DEFAULT_OFF_DELAY)
|
||||||
|
|
||||||
|
|
||||||
|
#: Evidence bar for a *measured* ``min_off_gap`` proposal. Below this we keep the
|
||||||
|
#: conservative per-device prior rather than guess from a thin sample.
|
||||||
|
_MIN_GAP_MIN_TRACED_CYCLES = 5
|
||||||
|
_MIN_GAP_MIN_SPANS = 3
|
||||||
|
#: Absolute sanity cap, mirroring the inter-cycle-gap path.
|
||||||
|
_MIN_GAP_ABS_CAP = 3600
|
||||||
|
|
||||||
|
|
||||||
|
def _bridged_spans(
|
||||||
|
points: list[tuple[float, float]], active_thr: float, max_gap_s: float
|
||||||
|
) -> list[float]:
|
||||||
|
"""Quiet spans a cycle has to survive to stay whole, in seconds.
|
||||||
|
|
||||||
|
The mirror image of the off-delay pause scan: here *any* resumption counts
|
||||||
|
(``min_resume_active_s=0``), including a dishwasher's short terminal
|
||||||
|
pump-out. That blip is deliberately excluded from the off-delay statistic -
|
||||||
|
it must not inflate the end-gate window - but it is exactly what
|
||||||
|
``min_off_gap`` exists to bridge, because if the cycle closes before it
|
||||||
|
lands, the pump-out is recorded as a separate ghost cycle (#43).
|
||||||
|
"""
|
||||||
|
return [
|
||||||
|
points[resume_idx][0] - low_start
|
||||||
|
for low_start, resume_idx in _resumed_low_runs(
|
||||||
|
points, active_thr, max_gap_s, min_resume_active_s=0.0
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def _resumed_low_runs(
|
def _resumed_low_runs(
|
||||||
points: list[tuple[float, float]],
|
points: list[tuple[float, float]],
|
||||||
active_thr: float,
|
active_thr: float,
|
||||||
@@ -569,6 +624,32 @@ def reconcile_suggestions(
|
|||||||
else:
|
else:
|
||||||
adjust(CONF_PROFILE_MATCH_MIN_DURATION_RATIO, round(max_r * 0.5, 2), "the max duration ratio")
|
adjust(CONF_PROFILE_MATCH_MIN_DURATION_RATIO, round(max_r * 0.5, 2), "the max duration ratio")
|
||||||
|
|
||||||
|
# ── Rule 12: end_energy_threshold >= stop_threshold_w * off_delay / 3600 ──
|
||||||
|
# The energy end-gate is evaluated over an off_delay-long window, so it
|
||||||
|
# implies a wattage; below stop_threshold_w it forbids what the power gate
|
||||||
|
# allows and the cycle can only close via a fallback path (#376). Only ever
|
||||||
|
# RAISE end_energy to the implied floor (the safe direction that makes the
|
||||||
|
# end gate satisfiable); never lower stop_threshold_w, which would make
|
||||||
|
# start/end detection more aggressive.
|
||||||
|
stop_ee = eff(CONF_STOP_THRESHOLD_W)
|
||||||
|
off_delay_ee = eff(CONF_OFF_DELAY)
|
||||||
|
end_energy = eff(CONF_END_ENERGY_THRESHOLD)
|
||||||
|
if (
|
||||||
|
stop_ee is not None and off_delay_ee is not None and end_energy is not None
|
||||||
|
and off_delay_ee > 0 and end_energy < stop_ee * off_delay_ee / 3600.0
|
||||||
|
and in_out(CONF_END_ENERGY_THRESHOLD, CONF_STOP_THRESHOLD_W, CONF_OFF_DELAY)
|
||||||
|
):
|
||||||
|
# Round the floor UP at adjust()'s own 2-decimal precision. Rounding
|
||||||
|
# to-nearest would land *below* the floor (stop=2 W, off_delay=60 s ->
|
||||||
|
# 0.0333 Wh -> 0.03 Wh), the next fixpoint pass would then see the same
|
||||||
|
# violation, find the value unchanged, and return a map that still
|
||||||
|
# breaks Rule 12.
|
||||||
|
adjust(
|
||||||
|
CONF_END_ENERGY_THRESHOLD,
|
||||||
|
math.ceil(stop_ee * off_delay_ee / 36.0) / 100.0,
|
||||||
|
"the stop threshold and off delay",
|
||||||
|
)
|
||||||
|
|
||||||
if change_count[0] == prev_count:
|
if change_count[0] == prev_count:
|
||||||
break
|
break
|
||||||
|
|
||||||
@@ -605,22 +686,62 @@ class SuggestionEngine:
|
|||||||
self.entry_id = entry_id
|
self.entry_id = entry_id
|
||||||
self.profile_store = profile_store
|
self.profile_store = profile_store
|
||||||
self.device_type = device_type
|
self.device_type = device_type
|
||||||
|
# Loop-affine config snapshot, refreshed by refresh_options_snapshot()
|
||||||
|
# immediately before an executor dispatch. See _entry_options().
|
||||||
|
self._options_snapshot: dict[str, Any] | None = None
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def for_job(self, options: dict[str, Any] | None = None) -> "SuggestionEngine":
|
||||||
|
"""A throwaway engine bound to one config snapshot; loop-only.
|
||||||
|
|
||||||
|
Every generator below runs in an executor thread, but reading the config
|
||||||
|
entry is loop-affine: ``async_get_entry`` walks loop-owned state, and the
|
||||||
|
two-mapping merge in :meth:`_read_entry_options` can tear if
|
||||||
|
``async_update_entry`` replaces ``data``/``options`` between the reads.
|
||||||
|
|
||||||
|
The snapshot is bound to a **shallow copy** rather than to ``self`` so
|
||||||
|
concurrent jobs cannot overwrite each other's view, and so the shared
|
||||||
|
engine never holds a snapshot that a later loop-side caller would silently
|
||||||
|
read as stale. The copy shares ``profile_store``/``hass`` deliberately -
|
||||||
|
the generators only read them.
|
||||||
|
"""
|
||||||
|
job = copy.copy(self)
|
||||||
|
job._options_snapshot = (
|
||||||
|
dict(options) if options is not None else self._read_entry_options()
|
||||||
|
)
|
||||||
|
return job
|
||||||
|
|
||||||
def generate_operational_suggestions(self, p95_dt: float, median_dt: float) -> dict[str, Any]:
|
def generate_operational_suggestions(self, p95_dt: float, median_dt: float) -> dict[str, Any]:
|
||||||
"""Generate suggestions for operational parameters based on cadence."""
|
"""Generate suggestions for operational parameters based on cadence."""
|
||||||
suggestions: dict[str, dict[str, Any]] = {}
|
suggestions: dict[str, dict[str, Any]] = {}
|
||||||
|
|
||||||
# 1. Watchdog Interval
|
# 1. Watchdog Interval
|
||||||
# Goal: as LOW (responsive) as safely possible so a stalled cycle is
|
# This is only the *tick period* of the background timer - it is never
|
||||||
# caught quickly. The only hard constraint is that it must sit above the
|
# itself a staleness threshold, so it cannot cause a false stop (those
|
||||||
# normal update cadence to avoid false stops, so target just above p95
|
# are gated by no_update_active_timeout / the device low-power floor in
|
||||||
# (3x) rather than a very conservative multiple.
|
# ``manager._watchdog_check_stuck_cycle``). It does bound how late the
|
||||||
suggested_watchdog = int(max(30, round(p95_dt * 3)))
|
# 0 W keepalive injection and the timeout checks can fire, so every extra
|
||||||
|
# second is pure end-detection lag. Tick just past the p95 update gap -
|
||||||
|
# matching DEFAULT_WATCHDOG_INTERVAL's documented "2 x sampling + 1"
|
||||||
|
# derivation for a publish-on-change sensor that skips at most one
|
||||||
|
# sample. The old 3x multiple polled ~6x slower than the sensor updates
|
||||||
|
# and delayed end detection for no safety benefit.
|
||||||
|
# Floor at 2 x median + 1 so the suggestion pre-satisfies reconciler
|
||||||
|
# Rule 3a (watchdog >= 2 x sampling_interval) when CONF_SAMPLING_INTERVAL
|
||||||
|
# is suggested from the same median_dt. Without this, a regular sensor
|
||||||
|
# (p95 ≈ median) would produce ceil(p95)+1 which Rule 3a then silently
|
||||||
|
# overwrites, leaving a stored value whose reason text no longer matches.
|
||||||
|
suggested_watchdog = int(max(30, max(math.ceil(p95_dt) + 1,
|
||||||
|
2 * math.ceil(median_dt) + 1)))
|
||||||
suggestions[CONF_WATCHDOG_INTERVAL] = {
|
suggestions[CONF_WATCHDOG_INTERVAL] = {
|
||||||
"value": suggested_watchdog,
|
"value": suggested_watchdog,
|
||||||
"reason": f"Kept as low as safe (3x the p95 update gap of {p95_dt:.1f}s, min 30s) so stalls are caught quickly without false stops.",
|
"reason": (
|
||||||
|
f"Kept as low as safe (just above the p95 update gap of {p95_dt:.1f}s"
|
||||||
|
f" and at least 2x the sampling interval of {median_dt:.1f}s, min 30s)"
|
||||||
|
f" so stalls are caught quickly without false stops."
|
||||||
|
),
|
||||||
"reason_key": "suggestion.reason.watchdog",
|
"reason_key": "suggestion.reason.watchdog",
|
||||||
"reason_params": {"p95": f"{p95_dt:.1f}"},
|
"reason_params": {"p95": f"{p95_dt:.1f}", "median": f"{median_dt:.1f}"},
|
||||||
}
|
}
|
||||||
|
|
||||||
# 2. No Update Timeout
|
# 2. No Update Timeout
|
||||||
@@ -645,19 +766,32 @@ class SuggestionEngine:
|
|||||||
# cadence only sets a lower sanity bound, so fall back to it when we do
|
# cadence only sets a lower sanity bound, so fall back to it when we do
|
||||||
# not yet have enough traces to measure pauses.
|
# not yet have enough traces to measure pauses.
|
||||||
raw_cycles = self.profile_store.get_past_cycles()[-100:]
|
raw_cycles = self.profile_store.get_past_cycles()[-100:]
|
||||||
stop_thr = self._current_stop_threshold(self._entry_options())
|
# Resolve the config entry once (loop-affine; this runs in an executor) and
|
||||||
|
# reuse it for both the stop threshold and the anti-crease check below.
|
||||||
|
_op_opts = self._entry_options()
|
||||||
|
stop_thr = self._current_stop_threshold(_op_opts)
|
||||||
clean, _excl = select_clean_cycles(raw_cycles, stop_threshold_w=stop_thr)
|
clean, _excl = select_clean_cycles(raw_cycles, stop_threshold_w=stop_thr)
|
||||||
pause_based = self._suggest_off_delay_from_pauses(clean, stop_thr, device_floor)
|
pause_based = self._suggest_off_delay_from_pauses(
|
||||||
|
clean, stop_thr, device_floor, options=_op_opts
|
||||||
|
)
|
||||||
|
|
||||||
reason_off_key: str | None = None
|
|
||||||
reason_off_params: dict[str, Any] | None = None
|
|
||||||
if pause_based is not None:
|
if pause_based is not None:
|
||||||
suggested_off_delay, reason_off, reason_off_key, reason_off_params = pause_based
|
suggested_off_delay, reason_off, reason_off_key, reason_off_params = pause_based
|
||||||
else:
|
suggestions[CONF_OFF_DELAY] = {
|
||||||
|
"value": suggested_off_delay,
|
||||||
|
"reason": reason_off,
|
||||||
|
"reason_key": reason_off_key,
|
||||||
|
"reason_params": reason_off_params,
|
||||||
|
}
|
||||||
|
elif not self._is_anti_crease_enabled(_op_opts):
|
||||||
|
# Cadence fallback: p95_dt * 5. Safe for most devices, but on anti-crease
|
||||||
|
# devices the update gap is dominated by the inter-burst quiet period, so
|
||||||
|
# the result often exceeds the burst interval and resets the end timer on
|
||||||
|
# every tumble burst. Skip it when anti-crease is enabled (#343 gap B).
|
||||||
suggested_off_delay = int(max(device_floor, p95_dt * 5))
|
suggested_off_delay = int(max(device_floor, p95_dt * 5))
|
||||||
reason_off = f"Based on observed update cadence (p95={p95_dt:.1f}s) * 5"
|
reason_off = f"Based on observed update cadence (p95={p95_dt:.1f}s) * 5"
|
||||||
reason_off_key = "suggestion.reason.off_delay_cadence"
|
reason_off_key: str = "suggestion.reason.off_delay_cadence"
|
||||||
reason_off_params = {"p95": f"{p95_dt:.1f}"}
|
reason_off_params: dict[str, Any] = {"p95": f"{p95_dt:.1f}"}
|
||||||
if suggested_off_delay == device_floor:
|
if suggested_off_delay == device_floor:
|
||||||
if self.device_type and self.device_type in DEFAULT_OFF_DELAY_BY_DEVICE:
|
if self.device_type and self.device_type in DEFAULT_OFF_DELAY_BY_DEVICE:
|
||||||
reason_off = (
|
reason_off = (
|
||||||
@@ -669,7 +803,6 @@ class SuggestionEngine:
|
|||||||
reason_off = f"Used generic safe minimum ({DEFAULT_OFF_DELAY}s)."
|
reason_off = f"Used generic safe minimum ({DEFAULT_OFF_DELAY}s)."
|
||||||
reason_off_key = "suggestion.reason.off_delay_generic_floor"
|
reason_off_key = "suggestion.reason.off_delay_generic_floor"
|
||||||
reason_off_params = {"floor": DEFAULT_OFF_DELAY}
|
reason_off_params = {"floor": DEFAULT_OFF_DELAY}
|
||||||
|
|
||||||
suggestions[CONF_OFF_DELAY] = {
|
suggestions[CONF_OFF_DELAY] = {
|
||||||
"value": suggested_off_delay,
|
"value": suggested_off_delay,
|
||||||
"reason": reason_off,
|
"reason": reason_off,
|
||||||
@@ -791,14 +924,28 @@ class SuggestionEngine:
|
|||||||
"reason_params": {"p95": f"{p95_ratio:.2f}"},
|
"reason_params": {"p95": f"{p95_ratio:.2f}"},
|
||||||
}
|
}
|
||||||
|
|
||||||
# Min-off-gap: derived from observed inter-cycle gaps
|
# Min-off-gap: measured bridge requirement, capped by back-to-back headroom
|
||||||
min_off_gap = self._suggest_min_off_gap(cycles)
|
min_off_gap = self._suggest_min_off_gap(
|
||||||
|
cycles, stop_threshold_w=stop_thr, gap_cycles=raw_cycles
|
||||||
|
)
|
||||||
if min_off_gap is not None:
|
if min_off_gap is not None:
|
||||||
suggestions[CONF_MIN_OFF_GAP] = min_off_gap
|
suggestions[CONF_MIN_OFF_GAP] = min_off_gap
|
||||||
|
|
||||||
return suggestions
|
return suggestions
|
||||||
|
|
||||||
def _entry_options(self) -> dict[str, Any]:
|
def _entry_options(self) -> dict[str, Any]:
|
||||||
|
"""Config options for this pass: the job-bound snapshot when present.
|
||||||
|
|
||||||
|
Only a :meth:`for_job` copy carries a snapshot; on the shared engine this
|
||||||
|
is always ``None``, so loop-side callers (tests, direct calls) get a live
|
||||||
|
read and can never observe a stale snapshot left by a finished job.
|
||||||
|
"""
|
||||||
|
snapshot = self._options_snapshot
|
||||||
|
if snapshot is not None:
|
||||||
|
return snapshot
|
||||||
|
return self._read_entry_options()
|
||||||
|
|
||||||
|
def _read_entry_options(self) -> dict[str, Any]:
|
||||||
"""Best-effort read of the current config entry options."""
|
"""Best-effort read of the current config entry options."""
|
||||||
try:
|
try:
|
||||||
entry = self.hass.config_entries.async_get_entry(self.entry_id)
|
entry = self.hass.config_entries.async_get_entry(self.entry_id)
|
||||||
@@ -898,9 +1045,12 @@ class SuggestionEngine:
|
|||||||
}
|
}
|
||||||
|
|
||||||
# --- min_power: keep the noise gate below the lowest genuine draw ---
|
# --- min_power: keep the noise gate below the lowest genuine draw ---
|
||||||
|
# Strip the anti-crease tail before taking the per-cycle minimum so that the
|
||||||
|
# ~3 W between-burst baseline does not drag the p05 down on anti-crease
|
||||||
|
# devices and produce a noise gate below the real operating draw (#343 gap A).
|
||||||
lowest_active: list[float] = []
|
lowest_active: list[float] = []
|
||||||
for c in clean:
|
for c in clean:
|
||||||
readings = _cycle_readings(c)
|
readings = self._strip_anti_crease_readings(_cycle_readings(c), options=options)
|
||||||
if len(readings) < 5:
|
if len(readings) < 5:
|
||||||
continue
|
continue
|
||||||
active = np.array([p for _, p in readings if p > 0.5])
|
active = np.array([p for _, p in readings if p > 0.5])
|
||||||
@@ -1085,27 +1235,38 @@ class SuggestionEngine:
|
|||||||
cycles: list[dict[str, Any]],
|
cycles: list[dict[str, Any]],
|
||||||
stop_threshold_w: float,
|
stop_threshold_w: float,
|
||||||
device_floor: int,
|
device_floor: int,
|
||||||
|
options: dict[str, Any] | None = None,
|
||||||
) -> tuple[int, str, str, dict[str, Any]] | None:
|
) -> tuple[int, str, str, dict[str, Any]] | None:
|
||||||
"""Off-delay sized to outlast the longest genuine intra-cycle pause.
|
"""Off-delay sized to outlast the longest genuine intra-cycle pause.
|
||||||
|
|
||||||
Collects every low-power segment that *resumed* (a proven pause, not the
|
Collects every low-power segment that *resumed* (a proven pause, not the
|
||||||
trailing wind-down) across clean cycles and sets off_delay to the p95
|
trailing wind-down) across clean cycles and sets off_delay to the p95
|
||||||
pause length plus a 60 s buffer, floored by the device minimum. Returns
|
pause length plus a 60 s buffer. Returns ``None`` when too few traces
|
||||||
``None`` when too few traces exist, so the caller falls back to the
|
exist, so the caller falls back to the update-cadence heuristic.
|
||||||
update-cadence heuristic.
|
|
||||||
|
The floor is :func:`_measured_off_delay_floor` (the *generic* minimum),
|
||||||
|
not ``device_floor``: once real pauses have been measured the blind
|
||||||
|
per-device prior is stale evidence and must not override the
|
||||||
|
measurement. ``device_floor`` still applies on the caller's no-data
|
||||||
|
fallback path.
|
||||||
"""
|
"""
|
||||||
pause_durations: list[float] = []
|
pause_durations: list[float] = []
|
||||||
n_traced = 0
|
n_traced = 0
|
||||||
max_gap_s = _MAX_PAUSE_GAP_H * 3600
|
max_gap_s = _MAX_PAUSE_GAP_H * 3600
|
||||||
|
_anti_crease_opts = options if options is not None else self._entry_options()
|
||||||
for c in cycles:
|
for c in cycles:
|
||||||
readings = _cycle_readings(c)
|
# Strip the anti-crease tail before pause analysis so that the inter-burst
|
||||||
|
# quiet periods (up to 180-240 s on Miele/Bosch) are not counted as genuine
|
||||||
|
# intra-cycle pauses, which would inflate p95 beyond the burst interval and
|
||||||
|
# reset the end timer on every tumble burst (#343 gap C).
|
||||||
|
readings = self._strip_anti_crease_readings(_cycle_readings(c), options=_anti_crease_opts)
|
||||||
if len(readings) < 10:
|
if len(readings) < 10:
|
||||||
continue
|
continue
|
||||||
n_traced += 1
|
|
||||||
powers = [p for _, p in readings]
|
powers = [p for _, p in readings]
|
||||||
peak = max(powers) if powers else 0.0
|
peak = max(powers) if powers else 0.0
|
||||||
if peak <= 0:
|
if peak <= 0:
|
||||||
continue
|
continue
|
||||||
|
n_traced += 1
|
||||||
active_thr = max(stop_threshold_w, _CLEAN_ACTIVE_FLOOR_RATIO * peak)
|
active_thr = max(stop_threshold_w, _CLEAN_ACTIVE_FLOOR_RATIO * peak)
|
||||||
# Genuine intra-cycle pauses only: a low run that resumed into
|
# Genuine intra-cycle pauses only: a low run that resumed into
|
||||||
# sustained activity. A terminal drying/pump-out blip that does not
|
# sustained activity. A terminal drying/pump-out blip that does not
|
||||||
@@ -1120,11 +1281,12 @@ class SuggestionEngine:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
p95_pause = float(np.percentile(pause_durations, 95))
|
p95_pause = float(np.percentile(pause_durations, 95))
|
||||||
value = int(max(device_floor, round(p95_pause + 60.0)))
|
floor = _measured_off_delay_floor(device_floor)
|
||||||
|
value = int(max(floor, round(p95_pause + 60.0)))
|
||||||
reason = (
|
reason = (
|
||||||
f"Sized to outlast real pauses: p95 intra-cycle pause {p95_pause:.0f}s "
|
f"Sized to outlast real pauses: p95 intra-cycle pause {p95_pause:.0f}s "
|
||||||
f"+ 60s buffer, from {len(pause_durations)} pauses across {n_traced} "
|
f"+ 60s buffer, from {len(pause_durations)} pauses across {n_traced} "
|
||||||
f"clean cycles (floor {device_floor}s)."
|
f"clean cycles (floor {floor}s)."
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
value,
|
value,
|
||||||
@@ -1134,17 +1296,67 @@ class SuggestionEngine:
|
|||||||
"p95": f"{p95_pause:.0f}",
|
"p95": f"{p95_pause:.0f}",
|
||||||
"pauses": len(pause_durations),
|
"pauses": len(pause_durations),
|
||||||
"cycles": n_traced,
|
"cycles": n_traced,
|
||||||
"floor": device_floor,
|
"floor": floor,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
def _suggest_min_off_gap(
|
def _suggest_min_off_gap(
|
||||||
self, cycles: list[dict[str, Any]]
|
self,
|
||||||
|
cycles: list[dict[str, Any]],
|
||||||
|
stop_threshold_w: float | None = None,
|
||||||
|
gap_cycles: list[dict[str, Any]] | None = None,
|
||||||
) -> dict[str, Any] | None:
|
) -> dict[str, Any] | None:
|
||||||
"""Derive a min_off_gap suggestion from observed inter-cycle gaps."""
|
"""Size ``min_off_gap`` from what the cycles actually need to bridge.
|
||||||
|
|
||||||
|
``min_off_gap`` is bounded from two sides and both bounds are measurable:
|
||||||
|
|
||||||
|
* **must not split** - it has to outlast the longest quiet span *inside*
|
||||||
|
a cycle that is followed by more of that same cycle (see
|
||||||
|
:func:`_bridged_spans`). This is the requirement, so it sets the value.
|
||||||
|
* **must not merge** - it has to stay under the shortest gap the user
|
||||||
|
leaves between two separate loads, because a high reading while the
|
||||||
|
previous cycle is still in ENDING revives that cycle rather than
|
||||||
|
starting a new one (``cycle_detector`` STATE_ENDING). This is a
|
||||||
|
*ceiling*, not a target.
|
||||||
|
|
||||||
|
The previous implementation derived the value from the ceiling
|
||||||
|
(``p05_inter_cycle_gap * 0.8``) and then floored it with the blind
|
||||||
|
per-device prior. That proposed a value sitting right against the merge
|
||||||
|
boundary with no evidence any bridging was needed - on a real washer
|
||||||
|
export it lands at ~1748 s against a measured need of ~1271 s and a real
|
||||||
|
inter-load gap of 181 s, i.e. it guarantees back-to-back loads merge
|
||||||
|
(#296). It also suppressed itself whenever the result equalled the
|
||||||
|
device floor, so a dishwasher user was never told their 3600 s prior was
|
||||||
|
1.7x what their machine measurably needs.
|
||||||
|
|
||||||
|
When the two bounds conflict (the cycle needs more bridging than the
|
||||||
|
user's own turnaround allows) no suggestion is made: that machine cannot
|
||||||
|
be separated by a quiet-gap rule at all and needs the event-based
|
||||||
|
splitters instead (anti-crease finalize, dishwasher end-spike), so the
|
||||||
|
safe move is to leave the current value alone. Splitting a cycle
|
||||||
|
corrupts the learned profile; merging produces one visibly over-long
|
||||||
|
record the user can correct.
|
||||||
|
|
||||||
|
``cycles`` supplies the bridge measurement and must be clean;
|
||||||
|
``gap_cycles`` supplies the merge ceiling and must be the *unfiltered*
|
||||||
|
history (defaults to ``cycles``). The distinction matters: dropping a
|
||||||
|
mis-detected cycle silently fuses its two neighbouring gaps into one long
|
||||||
|
gap, which inflates the ceiling and would let the proposal sail past the
|
||||||
|
user's real turnaround. On a real washer export that is the difference
|
||||||
|
between a 1748 s and a 181 s ceiling.
|
||||||
|
|
||||||
|
Falls back to the historical inter-cycle-gap heuristic when there are too
|
||||||
|
few traces to measure a bridge requirement.
|
||||||
|
|
||||||
|
Validated with ``devtools/min_off_gap_eval.py``: replaying all 152 clean
|
||||||
|
cycles across the ``cycle_data/`` corpus through a real unmatched
|
||||||
|
``CycleDetector`` at the proposed value produces zero splits (the only
|
||||||
|
trace that splits is tron4r's known back-to-back *merged* 206-min cycle,
|
||||||
|
where splitting is the correct outcome).
|
||||||
|
"""
|
||||||
# Only consider completed, labeled cycles with valid timestamps
|
# Only consider completed, labeled cycles with valid timestamps
|
||||||
timed_cycles: list[tuple[float, float]] = []
|
timed_cycles: list[tuple[float, float]] = []
|
||||||
for c in cycles:
|
for c in (cycles if gap_cycles is None else gap_cycles):
|
||||||
if not isinstance(c, dict):
|
if not isinstance(c, dict):
|
||||||
continue
|
continue
|
||||||
if c.get("status") not in ("completed", "force_stopped"):
|
if c.get("status") not in ("completed", "force_stopped"):
|
||||||
@@ -1179,15 +1391,59 @@ class SuggestionEngine:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
gaps_arr = np.array(gaps)
|
gaps_arr = np.array(gaps)
|
||||||
# Use the 5th-percentile gap as the safe minimum, with device-type floor
|
# 5th percentile, kept only for the no-evidence fallback path's reason text.
|
||||||
p05_gap = float(np.percentile(gaps_arr, 5))
|
p05_gap = float(np.percentile(gaps_arr, 5))
|
||||||
device_floor = (
|
device_floor = (
|
||||||
DEFAULT_MIN_OFF_GAP_BY_DEVICE.get(self.device_type, DEFAULT_MIN_OFF_GAP)
|
DEFAULT_MIN_OFF_GAP_BY_DEVICE.get(self.device_type, DEFAULT_MIN_OFF_GAP)
|
||||||
if self.device_type is not None
|
if self.device_type is not None
|
||||||
else DEFAULT_MIN_OFF_GAP
|
else DEFAULT_MIN_OFF_GAP
|
||||||
)
|
)
|
||||||
# Add a 20% safety margin so we never split a real gap into two cycles
|
# Merge ceiling: the SHORTEST turnaround this user has actually run, less a
|
||||||
suggested = int(max(device_floor, min(p05_gap * 0.8, 3600)))
|
# 20% margin. Deliberately not a percentile - these distributions are
|
||||||
|
# strongly skewed (one 181 s turnaround, then a jump to 5000 s+), so p05
|
||||||
|
# interpolates straight past the single tight pair that is precisely the
|
||||||
|
# merge case we must not propose through. Tolerating it as an "outlier"
|
||||||
|
# would be tolerating the bug. Erring low only ever suppresses a
|
||||||
|
# suggestion, which leaves the user's current value in place.
|
||||||
|
ceiling = int(min(float(gaps_arr.min()) * 0.8, _MIN_GAP_ABS_CAP))
|
||||||
|
|
||||||
|
# --- Preferred: size from the measured bridge requirement ---------------
|
||||||
|
bridge = self._measured_bridge_requirement(cycles, stop_threshold_w)
|
||||||
|
if bridge is not None:
|
||||||
|
longest, n_spans, n_traced = bridge
|
||||||
|
needed = int(
|
||||||
|
min(
|
||||||
|
_MIN_GAP_ABS_CAP,
|
||||||
|
max(DEFAULT_MIN_OFF_GAP, round(longest + 60.0)),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if needed > ceiling:
|
||||||
|
# The cycle needs more bridging than this user's turnaround
|
||||||
|
# allows - no quiet-gap value satisfies both. Leave it alone.
|
||||||
|
return None
|
||||||
|
reason = (
|
||||||
|
f"Sized to bridge the longest quiet stretch inside a cycle: "
|
||||||
|
f"{longest:.0f}s + 60s buffer, from {n_spans} bridged gaps across "
|
||||||
|
f"{n_traced} clean cycles (stays under your {ceiling}s "
|
||||||
|
f"back-to-back headroom)."
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
"value": needed,
|
||||||
|
"reason": reason,
|
||||||
|
"reason_key": "suggestion.reason.min_off_gap_bridge",
|
||||||
|
"reason_params": {
|
||||||
|
"span": f"{longest:.0f}",
|
||||||
|
"spans": n_spans,
|
||||||
|
"cycles": n_traced,
|
||||||
|
"ceiling": ceiling,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Fallback: no trace evidence, keep the conservative prior ----------
|
||||||
|
# Unchanged from the historical heuristic (p05-based, device floor wins),
|
||||||
|
# because with no measured bridge requirement the blind prior is still the
|
||||||
|
# best evidence available.
|
||||||
|
suggested = int(max(device_floor, min(p05_gap * 0.8, _MIN_GAP_ABS_CAP)))
|
||||||
# When the data-derived value is equal to the device floor, we have no
|
# When the data-derived value is equal to the device floor, we have no
|
||||||
# useful signal to surface - return None to suppress a misleading suggestion.
|
# useful signal to surface - return None to suppress a misleading suggestion.
|
||||||
if suggested == device_floor:
|
if suggested == device_floor:
|
||||||
@@ -1207,6 +1463,139 @@ class SuggestionEngine:
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _measured_bridge_requirement(
|
||||||
|
self,
|
||||||
|
cycles: list[dict[str, Any]],
|
||||||
|
stop_threshold_w: float | None = None,
|
||||||
|
) -> tuple[float, int, int] | None:
|
||||||
|
"""Longest quiet span these cycles had to bridge to stay whole.
|
||||||
|
|
||||||
|
Returns ``(longest_span_s, n_spans, n_traced)`` or ``None`` when there is
|
||||||
|
not enough traced history to trust the measurement.
|
||||||
|
|
||||||
|
The statistic is the **maximum**, not a percentile: ``min_off_gap`` has to
|
||||||
|
outlast the *longest* gap a cycle ever has to survive, and a percentile
|
||||||
|
under-shoots it. On washers the bridged-span distribution is dominated by
|
||||||
|
thousands of sampling-jitter dips, so p95 collapses to ~100 s while the
|
||||||
|
real phase gap is ~1300 s. Outliers are bounded by construction:
|
||||||
|
``select_clean_cycles`` has already dropped mis-detected cycles,
|
||||||
|
:func:`_resumed_low_runs` abandons any run straddling an outage-sized
|
||||||
|
sampling gap, and the caller clamps the result under both
|
||||||
|
``_MIN_GAP_ABS_CAP`` and the user's own back-to-back headroom.
|
||||||
|
"""
|
||||||
|
stop_thr = (
|
||||||
|
float(stop_threshold_w)
|
||||||
|
if stop_threshold_w is not None
|
||||||
|
else self._current_stop_threshold(self._entry_options())
|
||||||
|
)
|
||||||
|
max_gap_s = _MAX_PAUSE_GAP_H * 3600
|
||||||
|
spans: list[float] = []
|
||||||
|
n_traced = 0
|
||||||
|
for c in cycles:
|
||||||
|
if not isinstance(c, dict):
|
||||||
|
continue
|
||||||
|
readings = _cycle_readings(c)
|
||||||
|
if len(readings) < 10:
|
||||||
|
continue
|
||||||
|
peak = max((p for _, p in readings), default=0.0)
|
||||||
|
if peak <= 0:
|
||||||
|
continue
|
||||||
|
n_traced += 1
|
||||||
|
active_thr = max(stop_thr, _CLEAN_ACTIVE_FLOOR_RATIO * peak)
|
||||||
|
spans.extend(_bridged_spans(readings, active_thr, max_gap_s))
|
||||||
|
|
||||||
|
if n_traced < _MIN_GAP_MIN_TRACED_CYCLES or len(spans) < _MIN_GAP_MIN_SPANS:
|
||||||
|
return None
|
||||||
|
return (max(spans), len(spans), n_traced)
|
||||||
|
|
||||||
|
#: Device types where the anti-crease/anti-wrinkle tail must be excluded from
|
||||||
|
#: the stop/start min-active statistic (#343).
|
||||||
|
_ANTI_CREASE_DEVICE_TYPES = (
|
||||||
|
DEVICE_TYPE_WASHING_MACHINE,
|
||||||
|
DEVICE_TYPE_DRYER,
|
||||||
|
DEVICE_TYPE_WASHER_DRYER,
|
||||||
|
)
|
||||||
|
|
||||||
|
def _strip_anti_crease_tail(
|
||||||
|
self,
|
||||||
|
ordered_powers: np.ndarray,
|
||||||
|
options: dict[str, Any] | None = None,
|
||||||
|
) -> np.ndarray:
|
||||||
|
"""Drop the post-cycle anti-crease tail from an ordered power trace (#343).
|
||||||
|
|
||||||
|
Stop/start thresholds detect the MAIN cycle; the anti-crease tumble-pulse
|
||||||
|
tail is governed by its own ``anti_wrinkle_*`` settings, but its near-zero
|
||||||
|
between-pulse baseline is the global minimum of the stored trace and used
|
||||||
|
to poison the min-active statistic (the tuner then proposes thresholds just
|
||||||
|
above that baseline, breaking end-detection).
|
||||||
|
|
||||||
|
The tail is everything after the last sample that reaches
|
||||||
|
``anti_wrinkle_max_power`` - by the config's own rule a pulse above that
|
||||||
|
ends anti-wrinkle, so nothing in the tail can reach it. Returns the trace
|
||||||
|
unchanged when anti-crease is off, the device type is ineligible, or no
|
||||||
|
sample reaches the ceiling (no identifiable main phase) - so it can never
|
||||||
|
over-exclude for a non-anti-crease device or a gentle program.
|
||||||
|
|
||||||
|
Pass ``options`` when calling from a loop to avoid repeated config-entry
|
||||||
|
reads (``hass.config_entries.async_get_entry`` is loop-affine).
|
||||||
|
"""
|
||||||
|
if self.device_type not in self._ANTI_CREASE_DEVICE_TYPES:
|
||||||
|
return ordered_powers
|
||||||
|
opts = options if options is not None else self._entry_options()
|
||||||
|
if not opts.get(CONF_ANTI_WRINKLE_ENABLED, DEFAULT_ANTI_WRINKLE_ENABLED):
|
||||||
|
return ordered_powers
|
||||||
|
try:
|
||||||
|
max_power = float(opts.get(CONF_ANTI_WRINKLE_MAX_POWER, DEFAULT_ANTI_WRINKLE_MAX_POWER))
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
max_power = DEFAULT_ANTI_WRINKLE_MAX_POWER
|
||||||
|
if max_power <= 0 or ordered_powers.size == 0:
|
||||||
|
return ordered_powers
|
||||||
|
above = np.flatnonzero(ordered_powers >= max_power)
|
||||||
|
if above.size == 0:
|
||||||
|
return ordered_powers # no main high-power phase -> nothing to strip
|
||||||
|
return ordered_powers[: int(above[-1]) + 1]
|
||||||
|
|
||||||
|
def _is_anti_crease_enabled(self, options: dict[str, Any] | None = None) -> bool:
|
||||||
|
"""True when anti-crease mode is active on an eligible device type."""
|
||||||
|
if self.device_type not in self._ANTI_CREASE_DEVICE_TYPES:
|
||||||
|
return False
|
||||||
|
opts = options if options is not None else self._entry_options()
|
||||||
|
return bool(opts.get(CONF_ANTI_WRINKLE_ENABLED, DEFAULT_ANTI_WRINKLE_ENABLED))
|
||||||
|
|
||||||
|
def _strip_anti_crease_readings(
|
||||||
|
self,
|
||||||
|
readings: list[tuple[float, float]],
|
||||||
|
options: dict[str, Any] | None = None,
|
||||||
|
) -> list[tuple[float, float]]:
|
||||||
|
"""Time-domain equivalent of _strip_anti_crease_tail for (offset, power) pairs.
|
||||||
|
|
||||||
|
Returns the readings list trimmed to the last sample >= anti_wrinkle_max_power
|
||||||
|
so that pause-duration and min-power statistics ignore the anti-crease tail
|
||||||
|
(#343 gap B/C). No-op when anti-crease is off, the device type is ineligible,
|
||||||
|
or no sample reaches the ceiling.
|
||||||
|
|
||||||
|
Pass ``options`` when calling from a loop to avoid repeated config-entry
|
||||||
|
reads (``hass.config_entries.async_get_entry`` is loop-affine).
|
||||||
|
"""
|
||||||
|
if not readings:
|
||||||
|
return readings
|
||||||
|
opts = options if options is not None else self._entry_options()
|
||||||
|
if not self._is_anti_crease_enabled(opts):
|
||||||
|
return readings
|
||||||
|
try:
|
||||||
|
max_power = float(opts.get(CONF_ANTI_WRINKLE_MAX_POWER, DEFAULT_ANTI_WRINKLE_MAX_POWER))
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
max_power = DEFAULT_ANTI_WRINKLE_MAX_POWER
|
||||||
|
if max_power <= 0:
|
||||||
|
return readings
|
||||||
|
last_above = -1
|
||||||
|
for i, (_, p) in enumerate(readings):
|
||||||
|
if p >= max_power:
|
||||||
|
last_above = i
|
||||||
|
if last_above < 0:
|
||||||
|
return readings # no main high-power phase identifiable
|
||||||
|
return readings[: last_above + 1]
|
||||||
|
|
||||||
def run_simulation(self, cycle_data: dict[str, Any]) -> dict[str, Any]:
|
def run_simulation(self, cycle_data: dict[str, Any]) -> dict[str, Any]:
|
||||||
"""Replay a single cycle with varied parameters to find optimal settings.
|
"""Replay a single cycle with varied parameters to find optimal settings.
|
||||||
|
|
||||||
@@ -1235,7 +1624,10 @@ class SuggestionEngine:
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
powers = np.array([p[1] for p in readings])
|
powers = np.array([p[1] for p in readings])
|
||||||
active_powers = powers[powers > 0.5]
|
# Exclude the anti-crease tail so its near-zero baseline does not poison the
|
||||||
|
# stop/start thresholds on anti-crease devices (#343). No-op otherwise.
|
||||||
|
main_powers = self._strip_anti_crease_tail(powers)
|
||||||
|
active_powers = main_powers[main_powers > 0.5]
|
||||||
|
|
||||||
if len(active_powers) < 5:
|
if len(active_powers) < 5:
|
||||||
return {}
|
return {}
|
||||||
@@ -1245,9 +1637,11 @@ class SuggestionEngine:
|
|||||||
suggested_stop = round(min_active * 0.8, 2)
|
suggested_stop = round(min_active * 0.8, 2)
|
||||||
suggested_start = round(min_active * 1.2, 2)
|
suggested_start = round(min_active * 1.2, 2)
|
||||||
|
|
||||||
# Energy suggestions
|
# end_energy_threshold is intentionally NOT suggested from a single cycle:
|
||||||
suggested_end_energy = 0.05
|
# a context-free 0.05 Wh was below the anti-crease baseline energy accumulated
|
||||||
|
# over the off_delay window, so the end gate never fired (#343 gap D). The
|
||||||
|
# batch path (run_batch_simulation) derives a cycle-energy-proportional floor
|
||||||
|
# from actual false-end events once 5+ cycles exist; use that instead.
|
||||||
return {
|
return {
|
||||||
CONF_STOP_THRESHOLD_W: {
|
CONF_STOP_THRESHOLD_W: {
|
||||||
"value": suggested_stop,
|
"value": suggested_stop,
|
||||||
@@ -1261,12 +1655,6 @@ class SuggestionEngine:
|
|||||||
"reason_key": "suggestion.reason.min_active",
|
"reason_key": "suggestion.reason.min_active",
|
||||||
"reason_params": {"min": f"{min_active:.1f}"},
|
"reason_params": {"min": f"{min_active:.1f}"},
|
||||||
},
|
},
|
||||||
CONF_END_ENERGY_THRESHOLD: {
|
|
||||||
"value": suggested_end_energy,
|
|
||||||
"reason": "Default recommended baseline for end-of-cycle noise gate.",
|
|
||||||
"reason_key": "suggestion.reason.end_energy_default",
|
|
||||||
"reason_params": {},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def run_batch_simulation(self, cycles: list[dict[str, Any]]) -> dict[str, Any]:
|
def run_batch_simulation(self, cycles: list[dict[str, Any]]) -> dict[str, Any]:
|
||||||
@@ -1289,7 +1677,11 @@ class SuggestionEngine:
|
|||||||
"""
|
"""
|
||||||
_BATCH_MIN_CYCLES = 5
|
_BATCH_MIN_CYCLES = 5
|
||||||
|
|
||||||
stop_thr = self._current_stop_threshold(self._entry_options())
|
_batch_opts = self._entry_options()
|
||||||
|
stop_thr = self._current_stop_threshold(_batch_opts)
|
||||||
|
# Keep the unfiltered list: the min_off_gap merge ceiling must see the
|
||||||
|
# user's real turnaround, which dropping a cycle would fuse away.
|
||||||
|
raw_cycles = list(cycles)
|
||||||
cycles, _excluded = select_clean_cycles(cycles, stop_threshold_w=stop_thr)
|
cycles, _excluded = select_clean_cycles(cycles, stop_threshold_w=stop_thr)
|
||||||
|
|
||||||
valid_cycles: list[list[tuple[float, float]]] = []
|
valid_cycles: list[list[tuple[float, float]]] = []
|
||||||
@@ -1326,7 +1718,13 @@ class SuggestionEngine:
|
|||||||
false_end_energies: list[float] = []
|
false_end_energies: list[float] = []
|
||||||
max_gap_s = _MAX_PAUSE_GAP_H * 3600
|
max_gap_s = _MAX_PAUSE_GAP_H * 3600
|
||||||
for readings in valid_cycles:
|
for readings in valid_cycles:
|
||||||
powers = np.array([p for _, p in readings])
|
# Exclude the post-cycle anti-crease tail before ANY per-cycle statistic
|
||||||
|
# so its low-power baseline drags neither the p05 min-active threshold nor
|
||||||
|
# the end-energy / false-end floors below the main cycle (#343). No-op for
|
||||||
|
# non-anti-crease devices. Trim the (offset, power) readings once so the
|
||||||
|
# threshold stat and the energy scan consume the same main-cycle data.
|
||||||
|
main_readings = self._strip_anti_crease_readings(readings, options=_batch_opts)
|
||||||
|
powers = np.array([p for _, p in main_readings])
|
||||||
active = powers[powers > 0.5]
|
active = powers[powers > 0.5]
|
||||||
peak = float(np.max(powers)) if powers.size else 0.0
|
peak = float(np.max(powers)) if powers.size else 0.0
|
||||||
active_thr = max(stop_thr, _CLEAN_ACTIVE_FLOOR_RATIO * peak)
|
active_thr = max(stop_thr, _CLEAN_ACTIVE_FLOOR_RATIO * peak)
|
||||||
@@ -1339,9 +1737,9 @@ class SuggestionEngine:
|
|||||||
in_pause = False
|
in_pause = False
|
||||||
pause_energy = 0.0
|
pause_energy = 0.0
|
||||||
stop_w = stop_thr
|
stop_w = stop_thr
|
||||||
for i in range(1, len(readings)):
|
for i in range(1, len(main_readings)):
|
||||||
t0, p0 = readings[i - 1]
|
t0, p0 = main_readings[i - 1]
|
||||||
t1, p1 = readings[i]
|
t1, p1 = main_readings[i]
|
||||||
dt_s = t1 - t0
|
dt_s = t1 - t0
|
||||||
# Guard against non-positive or excessively large time gaps
|
# Guard against non-positive or excessively large time gaps
|
||||||
if dt_s <= 0 or dt_s > max_gap_s:
|
if dt_s <= 0 or dt_s > max_gap_s:
|
||||||
@@ -1436,7 +1834,9 @@ class SuggestionEngine:
|
|||||||
"reason_params": reason_end_params,
|
"reason_params": reason_end_params,
|
||||||
}
|
}
|
||||||
|
|
||||||
min_off_gap = self._suggest_min_off_gap(cycles)
|
min_off_gap = self._suggest_min_off_gap(
|
||||||
|
cycles, stop_threshold_w=stop_thr, gap_cycles=raw_cycles
|
||||||
|
)
|
||||||
if min_off_gap is not None:
|
if min_off_gap is not None:
|
||||||
suggestions[CONF_MIN_OFF_GAP] = min_off_gap
|
suggestions[CONF_MIN_OFF_GAP] = min_off_gap
|
||||||
|
|
||||||
@@ -1626,7 +2026,12 @@ class MLSuggestionEngine:
|
|||||||
end_feat_fn: Any,
|
end_feat_fn: Any,
|
||||||
device_floor: int,
|
device_floor: int,
|
||||||
) -> dict[str, Any] | None:
|
) -> dict[str, Any] | None:
|
||||||
"""Off-delay from end-detector-confirmed pauses (P(end) < 0.4)."""
|
"""Off-delay from end-detector-confirmed pauses (P(end) < 0.4).
|
||||||
|
|
||||||
|
Floored by :func:`_measured_off_delay_floor` for the same reason as the
|
||||||
|
classic twin: a model-verified pause measurement outranks the blind
|
||||||
|
per-device prior.
|
||||||
|
"""
|
||||||
confirmed: list[float] = []
|
confirmed: list[float] = []
|
||||||
n_cycles = 0
|
n_cycles = 0
|
||||||
for c in clean:
|
for c in clean:
|
||||||
@@ -1643,20 +2048,21 @@ class MLSuggestionEngine:
|
|||||||
if n_cycles < 5 or len(confirmed) < 3:
|
if n_cycles < 5 or len(confirmed) < 3:
|
||||||
return None
|
return None
|
||||||
p95 = float(np.percentile(confirmed, 95))
|
p95 = float(np.percentile(confirmed, 95))
|
||||||
value = int(max(device_floor, round(p95 + 60.0)))
|
floor = _measured_off_delay_floor(device_floor)
|
||||||
|
value = int(max(floor, round(p95 + 60.0)))
|
||||||
return {
|
return {
|
||||||
"value": value,
|
"value": value,
|
||||||
"reason": (
|
"reason": (
|
||||||
f"End-detector-confirmed pauses: p95 {p95:.0f}s + 60s buffer, from "
|
f"End-detector-confirmed pauses: p95 {p95:.0f}s + 60s buffer, from "
|
||||||
f"{len(confirmed)} model-verified pauses across {n_cycles} cycles "
|
f"{len(confirmed)} model-verified pauses across {n_cycles} cycles "
|
||||||
f"(floor {device_floor}s)."
|
f"(floor {floor}s)."
|
||||||
),
|
),
|
||||||
"reason_key": "suggestion.reason.ml_off_delay",
|
"reason_key": "suggestion.reason.ml_off_delay",
|
||||||
"reason_params": {
|
"reason_params": {
|
||||||
"p95": f"{p95:.0f}",
|
"p95": f"{p95:.0f}",
|
||||||
"pauses": len(confirmed),
|
"pauses": len(confirmed),
|
||||||
"cycles": n_cycles,
|
"cycles": n_cycles,
|
||||||
"floor": device_floor,
|
"floor": floor,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Настройка на WashData",
|
"title": "Настройка на WashData",
|
||||||
"description": "Конфигурирайте вашата пералня или друг уред.\n\nНеобходим е сензор за мощност.\n\n**След това ще бъдете попитани дали искате да създадете своя първи профил.**",
|
"description": "Конфигурирайте вашата пералня или друг уред.\n\nНеобходим е сензор за мощност.\n\nСлед настройката отворете панела на WashData от страничната лента (или отидете на [/ha-washdata](/ha-washdata)), за да преглеждате цикли, да настроите откриването и да управлявате профили.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Име на устройството",
|
"name": "Име на устройството",
|
||||||
"device_type": "Тип устройство",
|
"device_type": "Тип устройство",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Обновяване на името на устройството, типа на уреда, или сензор за мощност.",
|
"description": "Обновете името на устройството, типа на уреда или сензора за мощност.\n\nПанелът на WashData (странична лента или [/ha-washdata](/ha-washdata)) е мястото, където се управляват откривате, циклите, профилите и известията.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "Всички настройки - откриване, съвпадение, време, уведомления, профили и цикли - са налични в панела на WashData. Използвайте този формуляр само за промяна на датчика за мощност, типа устройство или прага на готовност.",
|
"description": "Преименувайте устройството или променете основните му хардуерни настройки. Всички настройки за откриване, съвпадение и известия са в [панела на WashData](/ha-washdata) (достъпен и от страничната лента).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Име на устройството",
|
"name": "Име на устройството",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: таймер за {minutes} мин",
|
"timer_default_message": "{device}: таймер за {minutes} мин",
|
||||||
"timer_pause_action_title": "Възобновяване на цикъла",
|
"timer_pause_action_title": "Възобновяване на цикъла",
|
||||||
"timer_pause_body_suffix": "Цикълът е на пауза. Отворете панела на WashData, за да го възобновите.",
|
"timer_pause_body_suffix": "Цикълът е на пауза. Отворете панела на WashData, за да го възобновите.",
|
||||||
|
"unload_dismiss_action_title": "Спри напомнянията",
|
||||||
"notify_live_waiting_message": "{device}: Все още няма съвпадащ профил.",
|
"notify_live_waiting_message": "{device}: Все още няма съвпадащ профил.",
|
||||||
"vs_typical_longer": "{pct}% по-дълго от обичайното",
|
"vs_typical_longer": "{pct}% по-дълго от обичайното",
|
||||||
"vs_typical_shorter": "{pct}% по-кратко от обичайното",
|
"vs_typical_shorter": "{pct}% по-кратко от обичайното",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData Setup",
|
"title": "WashData Setup",
|
||||||
"description": "Konfigurišite svoju mašinu za pranje veša ili drugi uređaj.\n\nPotreban je senzor snage.\n\n**Slijedeće ćete biti upitani da li želite da kreirate svoj prvi profil.**",
|
"description": "Konfigurišite svoju mašinu za pranje veša ili drugi uređaj.\n\nSenzor snage je obavezan.\n\nNakon postavljanja otvorite WashData panel s bočne trake (ili idite na [/ha-washdata](/ha-washdata)) za pregled ciklusa, podešavanje otkrivanja i upravljanje profilima.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naziv uređaja",
|
"name": "Naziv uređaja",
|
||||||
"device_type": "Tip uređaja",
|
"device_type": "Tip uređaja",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Ažurirajte naziv uređaja, tip uređaja ili senzor snage.\n\nWashData panel (bočna traka ili [/ha-washdata](/ha-washdata)) služi za upravljanje otkrivanjem, ciklusima, profilima i obavještenjima.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Preimenujte uređaj ili promijenite njegove osnovne postavke hardvera. Sve postavke otkrivanja, podudaranja i obavještavanja nalaze se na [WashData panelu](/ha-washdata) (dostupan i s bočne trake).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naziv uređaja",
|
"name": "Naziv uređaja",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: tajmer od {minutes} min",
|
"timer_default_message": "{device}: tajmer od {minutes} min",
|
||||||
"timer_pause_action_title": "Nastavi ciklus",
|
"timer_pause_action_title": "Nastavi ciklus",
|
||||||
"timer_pause_body_suffix": "Ciklus je pauziran. Otvorite WashData panel da biste nastavili.",
|
"timer_pause_body_suffix": "Ciklus je pauziran. Otvorite WashData panel da biste nastavili.",
|
||||||
|
"unload_dismiss_action_title": "Prestani podsjećati",
|
||||||
"notify_live_waiting_message": "{device}: Nijedan profil još nije podudaran.",
|
"notify_live_waiting_message": "{device}: Nijedan profil još nije podudaran.",
|
||||||
"vs_typical_longer": "{pct}% duže nego obično",
|
"vs_typical_longer": "{pct}% duže nego obično",
|
||||||
"vs_typical_shorter": "{pct}% kraće nego obično",
|
"vs_typical_shorter": "{pct}% kraće nego obično",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Nastavení WashData",
|
"title": "Nastavení WashData",
|
||||||
"description": "Nakonfigurujte si pračku nebo jiný spotřebič.\n\nJe vyžadován snímač napájení.\n\n**Dále budete dotázáni, zda chcete vytvořit svůj první profil.**",
|
"description": "Nakonfigurujte si pračku nebo jiný spotřebič.\n\nSenzor výkonu je vyžadován.\n\nPo nastavení otevřete panel WashData z postranního panelu (nebo přejděte na [/ha-washdata](/ha-washdata)) pro zobrazení cyklů, ladění detekce a správu profilů.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Název zařízení",
|
"name": "Název zařízení",
|
||||||
"device_type": "Typ zařízení",
|
"device_type": "Typ zařízení",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Aktualizujte název zařízení, typ spotřebiče nebo senzor výkonu.\n\nPanel WashData (postranní panel nebo [/ha-washdata](/ha-washdata)) slouží ke správě detekce, cyklů, profilů a oznámení.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Přejmenujte zařízení nebo změňte jeho základní hardwarová nastavení. Veškerá nastavení detekce, porovnávání a oznámení jsou na [panelu WashData](/ha-washdata) (dostupný také z postranního panelu).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Název zařízení",
|
"name": "Název zařízení",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min časovač",
|
"timer_default_message": "{device}: {minutes} min časovač",
|
||||||
"timer_pause_action_title": "Obnovit cyklus",
|
"timer_pause_action_title": "Obnovit cyklus",
|
||||||
"timer_pause_body_suffix": "Cyklus je pozastaven. Pro pokračování otevřete panel WashData.",
|
"timer_pause_body_suffix": "Cyklus je pozastaven. Pro pokračování otevřete panel WashData.",
|
||||||
|
"unload_dismiss_action_title": "Přestat připomínat",
|
||||||
"notify_live_waiting_message": "{device}: Zatím nebyl rozpoznán žádný profil.",
|
"notify_live_waiting_message": "{device}: Zatím nebyl rozpoznán žádný profil.",
|
||||||
"vs_typical_longer": "o {pct}% déle než obvykle",
|
"vs_typical_longer": "o {pct}% déle než obvykle",
|
||||||
"vs_typical_shorter": "o {pct}% kratší než obvykle",
|
"vs_typical_shorter": "o {pct}% kratší než obvykle",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData opsætning",
|
"title": "WashData opsætning",
|
||||||
"description": "Konfigurer din vaskemaskine eller andet apparat.\n\nStrømsensor er påkrævet.\n\n**Derefter bliver du spurgt, om du vil oprette din første profil.**",
|
"description": "Konfigurer din vaskemaskine eller andet apparat.\n\nStrømsensor er påkrævet.\n\nEfter opsætning skal du åbne WashData-panelet fra sidebjælken (eller gå til [/ha-washdata](/ha-washdata)) for at se cyklusser, justere registrering og administrere profiler.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Enhedens navn",
|
"name": "Enhedens navn",
|
||||||
"device_type": "Enhedstype",
|
"device_type": "Enhedstype",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Opdater enhedsnavnet, apparattypen eller strømsensoren.\n\nWashData-panelet (sidebjælken eller [/ha-washdata](/ha-washdata)) er, hvor registrering, cyklusser, profiler og notifikationer administreres.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Omdøb enheden eller skift dens grundlæggende hardwareindstillinger. Alle indstillinger for registrering, matching og notifikationer findes i [WashData-panelet](/ha-washdata) (også tilgængeligt fra sidebjælken).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Enhedsnavn",
|
"name": "Enhedsnavn",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min timer",
|
"timer_default_message": "{device}: {minutes} min timer",
|
||||||
"timer_pause_action_title": "Genoptag cyklus",
|
"timer_pause_action_title": "Genoptag cyklus",
|
||||||
"timer_pause_body_suffix": "Cyklussen er sat på pause. Åbn WashData-panelet for at genoptage.",
|
"timer_pause_body_suffix": "Cyklussen er sat på pause. Åbn WashData-panelet for at genoptage.",
|
||||||
|
"unload_dismiss_action_title": "Stop påmindelser",
|
||||||
"notify_live_waiting_message": "{device}: Ingen profil genkendt endnu.",
|
"notify_live_waiting_message": "{device}: Ingen profil genkendt endnu.",
|
||||||
"vs_typical_longer": "{pct}% længere end normalt",
|
"vs_typical_longer": "{pct}% længere end normalt",
|
||||||
"vs_typical_shorter": "{pct}% kortere end normalt",
|
"vs_typical_shorter": "{pct}% kortere end normalt",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData-Setup",
|
"title": "WashData-Setup",
|
||||||
"description": "Konfigurieren Sie Ihre Waschmaschine oder ein anderes Gerät.\n\nLeistungssensor ist erforderlich.\n\n**Als nächstes werden Sie gefragt, ob Sie Ihr erstes Profil erstellen möchten.**",
|
"description": "Konfigurieren Sie Ihre Waschmaschine oder ein anderes Gerät.\n\nLeistungssensor ist erforderlich.\n\nNach der Einrichtung öffnen Sie das WashData-Panel über die Seitenleiste (oder gehen Sie zu [/ha-washdata](/ha-washdata)), um Zyklen anzuzeigen, die Erkennung anzupassen und Profile zu verwalten.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Gerätename",
|
"name": "Gerätename",
|
||||||
"device_type": "Gerätetyp",
|
"device_type": "Gerätetyp",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Aktualisieren Sie den Gerätenamen, den Gerätetyp oder den Leistungssensor.\n\nDas WashData-Panel (Seitenleiste oder [/ha-washdata](/ha-washdata)) ist der Ort, an dem Erkennung, Zyklen, Profile und Benachrichtigungen verwaltet werden.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Benennen Sie das Gerät um oder ändern Sie seine grundlegenden Hardware-Einstellungen. Alle Erkennungs-, Abgleich- und Benachrichtigungseinstellungen befinden sich im [WashData-Panel](/ha-washdata) (auch über die Seitenleiste erreichbar).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Name des Geräts",
|
"name": "Name des Geräts",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes}-Min.-Timer",
|
"timer_default_message": "{device}: {minutes}-Min.-Timer",
|
||||||
"timer_pause_action_title": "Zyklus fortsetzen",
|
"timer_pause_action_title": "Zyklus fortsetzen",
|
||||||
"timer_pause_body_suffix": "Der Zyklus ist angehalten. Öffnen Sie das WashData-Panel, um fortzufahren.",
|
"timer_pause_body_suffix": "Der Zyklus ist angehalten. Öffnen Sie das WashData-Panel, um fortzufahren.",
|
||||||
|
"unload_dismiss_action_title": "Nicht mehr erinnern",
|
||||||
"notify_live_waiting_message": "{device}: Noch kein Profil erkannt.",
|
"notify_live_waiting_message": "{device}: Noch kein Profil erkannt.",
|
||||||
"vs_typical_longer": "{pct}% länger als üblich",
|
"vs_typical_longer": "{pct}% länger als üblich",
|
||||||
"vs_typical_shorter": "{pct}% kürzer als üblich",
|
"vs_typical_shorter": "{pct}% kürzer als üblich",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Ρύθμιση WashData",
|
"title": "Ρύθμιση WashData",
|
||||||
"description": "Διαμορφώστε το πλυντήριο ή άλλη συσκευή σας.\n\nΑπαιτείται αισθητήρας ισχύος.\n\n**Στη συνέχεια, θα ερωτηθείτε αν θέλετε να δημιουργήσετε το πρώτο σας προφίλ.**",
|
"description": "Ρυθμίστε το πλυντήριο ρούχων ή άλλη συσκευή σας.\n\nΑπαιτείται αισθητήρας ισχύος.\n\nΜετά τη ρύθμιση, ανοίξτε τον πίνακα WashData από την πλευρική γραμμή (ή μεταβείτε στο [/ha-washdata](/ha-washdata)) για να δείτε κύκλους, να ρυθμίσετε την ανίχνευση και να διαχειριστείτε προφίλ.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Όνομα συσκευής",
|
"name": "Όνομα συσκευής",
|
||||||
"device_type": "Τύπος συσκευής",
|
"device_type": "Τύπος συσκευής",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Ενημέρωση του ονόματος της συσκευής, του τύπου συσκευής ή του αισθητήρα ισχύος.",
|
"description": "Ενημερώστε το όνομα της συσκευής, τον τύπο συσκευής ή τον αισθητήρα ισχύος.\n\nΟ πίνακας WashData (πλευρική γραμμή ή [/ha-washdata](/ha-washdata)) είναι το μέρος όπου διαχειρίζεται η ανίχνευση, οι κύκλοι, τα προφίλ και οι ειδοποιήσεις.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "Όλες οι ρυθμίσεις -- ανίχνευση, ταίριασμα, συγχρονισμός, ειδοποιήσεις, προφίλ και κύκλοι -- είναι διαθέσιμες στον πίνακα WashData. Χρησιμοποιήστε αυτή τη φόρμα μόνο για να αλλάξετε τον αισθητήρα ισχύος, τον τύπο της συσκευής, ή το κατώφλι αναμονής.",
|
"description": "Μετονομάστε τη συσκευή ή αλλάξτε τις βασικές ρυθμίσεις υλικού. Όλες οι ρυθμίσεις ανίχνευσης, αντιστοίχισης και ειδοποιήσεων βρίσκονται στον [πίνακα WashData](/ha-washdata) (επίσης προσβάσιμος από την πλευρική γραμμή).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Όνομα συσκευής",
|
"name": "Όνομα συσκευής",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: χρονόμετρο {minutes} λεπτών",
|
"timer_default_message": "{device}: χρονόμετρο {minutes} λεπτών",
|
||||||
"timer_pause_action_title": "Συνέχιση κύκλου",
|
"timer_pause_action_title": "Συνέχιση κύκλου",
|
||||||
"timer_pause_body_suffix": "Ο κύκλος είναι σε παύση. Ανοίξτε τον πίνακα WashData για να συνεχίσετε.",
|
"timer_pause_body_suffix": "Ο κύκλος είναι σε παύση. Ανοίξτε τον πίνακα WashData για να συνεχίσετε.",
|
||||||
|
"unload_dismiss_action_title": "Διακοπή υπενθυμίσεων",
|
||||||
"notify_live_waiting_message": "{device}: Δεν έχει αναγνωριστεί ακόμη κανένα προφίλ.",
|
"notify_live_waiting_message": "{device}: Δεν έχει αναγνωριστεί ακόμη κανένα προφίλ.",
|
||||||
"vs_typical_longer": "{pct}% περισσότερο από το συνηθισμένο",
|
"vs_typical_longer": "{pct}% περισσότερο από το συνηθισμένο",
|
||||||
"vs_typical_shorter": "{pct}% λιγότερο από το συνηθισμένο",
|
"vs_typical_shorter": "{pct}% λιγότερο από το συνηθισμένο",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData Setup",
|
"title": "WashData Setup",
|
||||||
"description": "Configure your washing machine or other appliance.\n\nPower sensor is required.",
|
"description": "Configure your washing machine or other appliance.\n\nPower sensor is required.\n\nAfter setup, open the WashData panel from the sidebar (or go to [/ha-washdata](/ha-washdata)) to view cycles, tune detection and manage profiles.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Update the device name, appliance type, or power sensor.\n\nThe WashData panel (sidebar, or [/ha-washdata](/ha-washdata)) is where detection, cycles, profiles and notifications are managed.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "Rename the device or change its core hardware settings. All detection, matching and notification settings are in the WashData panel.",
|
"description": "Rename the device or change its core hardware settings. All detection, matching and notification settings are in the [WashData panel](/ha-washdata) (also reachable from the sidebar).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -57,6 +57,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min timer",
|
"timer_default_message": "{device}: {minutes} min timer",
|
||||||
"timer_pause_action_title": "Resume Cycle",
|
"timer_pause_action_title": "Resume Cycle",
|
||||||
"timer_pause_body_suffix": "The cycle is paused. Open the WashData panel to resume.",
|
"timer_pause_body_suffix": "The cycle is paused. Open the WashData panel to resume.",
|
||||||
|
"unload_dismiss_action_title": "Stop reminding",
|
||||||
"vs_typical_longer": "{pct}% longer than usual",
|
"vs_typical_longer": "{pct}% longer than usual",
|
||||||
"vs_typical_shorter": "{pct}% shorter than usual",
|
"vs_typical_shorter": "{pct}% shorter than usual",
|
||||||
"notify_live_waiting_message": "{device}: No profile matched yet."
|
"notify_live_waiting_message": "{device}: No profile matched yet."
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Configuración de WashData",
|
"title": "Configuración de WashData",
|
||||||
"description": "Configura tu lavadora u otro electrodoméstico.\n\nSe requiere un sensor de potencia.\n\n**A continuación, se te preguntará si deseas crear tu primer perfil.**",
|
"description": "Configura tu lavadora u otro electrodoméstico.\n\nSe requiere un sensor de potencia.\n\nTras la configuración, abre el panel de WashData desde la barra lateral (o ve a [/ha-washdata](/ha-washdata)) para ver los ciclos, ajustar la detección y gestionar los perfiles.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nombre del dispositivo",
|
"name": "Nombre del dispositivo",
|
||||||
"device_type": "Tipo de dispositivo",
|
"device_type": "Tipo de dispositivo",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigurar WashData",
|
"title": "Reconfigurar WashData",
|
||||||
"description": "Actualiza el nombre del dispositivo, el tipo de electrodoméstico o el sensor de potencia.",
|
"description": "Actualiza el nombre del dispositivo, el tipo de electrodoméstico o el sensor de potencia.\n\nEl panel de WashData (barra lateral, o [/ha-washdata](/ha-washdata)) es donde se gestionan la detección, los ciclos, los perfiles y las notificaciones.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nombre del dispositivo",
|
"name": "Nombre del dispositivo",
|
||||||
"device_type": "Tipo de dispositivo",
|
"device_type": "Tipo de dispositivo",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Ajustes de WashData",
|
"title": "Ajustes de WashData",
|
||||||
"description": "Todos los ajustes — detección, coincidencia, temporización, notificaciones, perfiles y ciclos — están disponibles en el panel de WashData. Usa este formulario solo para cambiar el sensor de potencia, el tipo de dispositivo o el umbral en espera.",
|
"description": "Cambia el nombre del dispositivo o su configuración de hardware principal. Todos los ajustes de detección, coincidencia y notificaciones están en el [panel de WashData](/ha-washdata) (también accesible desde la barra lateral).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nombre del dispositivo",
|
"name": "Nombre del dispositivo",
|
||||||
"device_type": "Tipo de dispositivo",
|
"device_type": "Tipo de dispositivo",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: temporizador de {minutes} min",
|
"timer_default_message": "{device}: temporizador de {minutes} min",
|
||||||
"timer_pause_action_title": "Reanudar ciclo",
|
"timer_pause_action_title": "Reanudar ciclo",
|
||||||
"timer_pause_body_suffix": "El ciclo está en pausa. Abre el panel de WashData para reanudarlo.",
|
"timer_pause_body_suffix": "El ciclo está en pausa. Abre el panel de WashData para reanudarlo.",
|
||||||
|
"unload_dismiss_action_title": "Dejar de recordar",
|
||||||
"notify_live_waiting_message": "{device}: todavía no se ha reconocido ningún perfil.",
|
"notify_live_waiting_message": "{device}: todavía no se ha reconocido ningún perfil.",
|
||||||
"vs_typical_longer": "{pct}% más largo de lo habitual",
|
"vs_typical_longer": "{pct}% más largo de lo habitual",
|
||||||
"vs_typical_shorter": "{pct}% más corto de lo habitual",
|
"vs_typical_shorter": "{pct}% más corto de lo habitual",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData häälestus",
|
"title": "WashData häälestus",
|
||||||
"description": "Seadistage oma pesumasin või muu seade.\n\nVajalik on võimsusandur.\n\n**Järgmisena küsitakse teilt, kas soovite luua oma esimese profiili.**",
|
"description": "Seadistage oma pesumasin või muu seade.\n\nVajalik on võimsusandur.\n\nPärast seadistamist avage WashData paneel külgribalt (või minge [/ha-washdata](/ha-washdata)), et vaadata tsükleid, häälestada tuvastust ja hallata profiile.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Seadme nimi",
|
"name": "Seadme nimi",
|
||||||
"device_type": "Seadme tüüp",
|
"device_type": "Seadme tüüp",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "WashData uuesti seadistamine",
|
"title": "WashData uuesti seadistamine",
|
||||||
"description": "Uuendage seadme nime, seadmetüüpi või võimsusandurit.",
|
"description": "Uuendage seadme nime, seadmetüüpi või võimsusandurit.\n\nWashData paneelis (külgriba või [/ha-washdata](/ha-washdata)) hallatakse tuvastust, tsükleid, profiile ja teavitusi.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Seadme nimi",
|
"name": "Seadme nimi",
|
||||||
"device_type": "Seadme tüüp",
|
"device_type": "Seadme tüüp",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData seadistused",
|
"title": "WashData seadistused",
|
||||||
"description": "Kõik seadistused — tuvastamine, sobitamine, ajastamine, teated, profiilid ja tsüklid — on saadaval WashData paneelil. Kasutage seda vormi ainult võimsusanduri, seadmetüübi või ooterežiimi läve muutmiseks.",
|
"description": "Nimetage seade ümber või muutke selle põhilisi riistvara seadeid. Kõik tuvastus-, sobitamis- ja teavitusseaded asuvad [WashData paneelil](/ha-washdata) (ligipääsetav ka külgribalt).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Seadme nimi",
|
"name": "Seadme nimi",
|
||||||
"device_type": "Seadme tüüp",
|
"device_type": "Seadme tüüp",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min taimer",
|
"timer_default_message": "{device}: {minutes} min taimer",
|
||||||
"timer_pause_action_title": "Tsükli jätkamine",
|
"timer_pause_action_title": "Tsükli jätkamine",
|
||||||
"timer_pause_body_suffix": "Tsükkel on peatatud. Jätkamiseks avage WashData paneel.",
|
"timer_pause_body_suffix": "Tsükkel on peatatud. Jätkamiseks avage WashData paneel.",
|
||||||
|
"unload_dismiss_action_title": "Lõpeta meeldetuletused",
|
||||||
"notify_live_waiting_message": "{device}: Ühtki profiili pole veel tuvastatud.",
|
"notify_live_waiting_message": "{device}: Ühtki profiili pole veel tuvastatud.",
|
||||||
"vs_typical_longer": "{pct}% tavapärasest pikem",
|
"vs_typical_longer": "{pct}% tavapärasest pikem",
|
||||||
"vs_typical_shorter": "{pct}% tavapärasest lühem",
|
"vs_typical_shorter": "{pct}% tavapärasest lühem",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData-asetukset",
|
"title": "WashData-asetukset",
|
||||||
"description": "Määritä pesukoneesi tai muu laite.\n\nTehoanturi tarvitaan.\n\n**Seuraavaksi sinulta kysytään, haluatko luoda ensimmäisen profiilisi.**",
|
"description": "Määritä pesukoneesi tai muu laite.\n\nTehoanturi tarvitaan.\n\nAsetuksen jälkeen avaa WashData-paneeli sivupalkista (tai siirry osoitteeseen [/ha-washdata](/ha-washdata)) nähdäksesi syklit, säätääksesi tunnistuksen ja hallitaksesi profiileja.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Laitteen nimi",
|
"name": "Laitteen nimi",
|
||||||
"device_type": "Laitteen tyyppi",
|
"device_type": "Laitteen tyyppi",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Konfiguroi WashData uudelleen",
|
"title": "Konfiguroi WashData uudelleen",
|
||||||
"description": "Päivitä laitteen nimi, laitteen tyyppi tai tehoanturi.",
|
"description": "Päivitä laitteen nimi, laitteen tyyppi tai tehoanturi.\n\nWashData-paneelissa (sivupalkki tai [/ha-washdata](/ha-washdata)) hallitaan tunnistusta, syklejä, profiileja ja ilmoituksia.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Laitteen nimi",
|
"name": "Laitteen nimi",
|
||||||
"device_type": "Laitteen tyyppi",
|
"device_type": "Laitteen tyyppi",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData-asetukset",
|
"title": "WashData-asetukset",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Nimeä laite uudelleen tai muuta sen ydinlaitteiston asetuksia. Kaikki tunnistus-, täsmäytys- ja ilmoitusasetukset ovat [WashData-paneelissa](/ha-washdata) (saavutettavissa myös sivupalkista).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Laitteen nimi",
|
"name": "Laitteen nimi",
|
||||||
"device_type": "Laitteen tyyppi",
|
"device_type": "Laitteen tyyppi",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min ajastin",
|
"timer_default_message": "{device}: {minutes} min ajastin",
|
||||||
"timer_pause_action_title": "Jatka sykliä",
|
"timer_pause_action_title": "Jatka sykliä",
|
||||||
"timer_pause_body_suffix": "Sykli on keskeytetty. Avaa WashData-paneeli jatkaaksesi.",
|
"timer_pause_body_suffix": "Sykli on keskeytetty. Avaa WashData-paneeli jatkaaksesi.",
|
||||||
|
"unload_dismiss_action_title": "Lopeta muistuttaminen",
|
||||||
"notify_live_waiting_message": "{device}: Yhtään profiilia ei ole vielä tunnistettu.",
|
"notify_live_waiting_message": "{device}: Yhtään profiilia ei ole vielä tunnistettu.",
|
||||||
"vs_typical_longer": "{pct}% tavallista pidempi",
|
"vs_typical_longer": "{pct}% tavallista pidempi",
|
||||||
"vs_typical_shorter": "{pct}% tavallista lyhyempi",
|
"vs_typical_shorter": "{pct}% tavallista lyhyempi",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Configuration des données de lavage",
|
"title": "Configuration des données de lavage",
|
||||||
"description": "Configurez votre lave-linge ou autre appareil.\n\nUn capteur de puissance est requis.\n\n**Ensuite, il vous sera demandé si vous souhaitez créer votre premier profil.**",
|
"description": "Configurez votre lave-linge ou autre appareil.\n\nUn capteur de puissance est requis.\n\nUne fois la configuration terminée, ouvrez le panneau WashData depuis la barre latérale (ou accédez à [/ha-washdata](/ha-washdata)) pour consulter les cycles, affiner la détection et gérer les profils.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nom de l'appareil",
|
"name": "Nom de l'appareil",
|
||||||
"device_type": "Type d'appareil",
|
"device_type": "Type d'appareil",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigurer WashData",
|
"title": "Reconfigurer WashData",
|
||||||
"description": "Mettez à jour le nom de l'appareil, le type d'appareil ou le capteur de puissance.",
|
"description": "Mettez à jour le nom de l'appareil, le type d'appareil ou le capteur de puissance.\n\nLe panneau WashData (barre latérale ou [/ha-washdata](/ha-washdata)) permet de gérer la détection, les cycles, les profils et les notifications.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nom de l'appareil",
|
"name": "Nom de l'appareil",
|
||||||
"device_type": "Type d'appareil",
|
"device_type": "Type d'appareil",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Paramètres WashData",
|
"title": "Paramètres WashData",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Renommez l'appareil ou modifiez ses paramètres matériels de base. Tous les paramètres de détection, de correspondance et de notification se trouvent dans le [panneau WashData](/ha-washdata) (également accessible depuis la barre latérale).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nom du périphérique",
|
"name": "Nom du périphérique",
|
||||||
"device_type": "Type d'appareil",
|
"device_type": "Type d'appareil",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device} : minuterie de {minutes} min",
|
"timer_default_message": "{device} : minuterie de {minutes} min",
|
||||||
"timer_pause_action_title": "Reprendre le cycle",
|
"timer_pause_action_title": "Reprendre le cycle",
|
||||||
"timer_pause_body_suffix": "Le cycle est en pause. Ouvrez le panneau WashData pour reprendre.",
|
"timer_pause_body_suffix": "Le cycle est en pause. Ouvrez le panneau WashData pour reprendre.",
|
||||||
|
"unload_dismiss_action_title": "Arrêter les rappels",
|
||||||
"notify_live_waiting_message": "{device} : aucun profil reconnu pour le moment.",
|
"notify_live_waiting_message": "{device} : aucun profil reconnu pour le moment.",
|
||||||
"vs_typical_longer": "{pct}% plus long que d'habitude",
|
"vs_typical_longer": "{pct}% plus long que d'habitude",
|
||||||
"vs_typical_shorter": "{pct}% plus court que d'habitude",
|
"vs_typical_shorter": "{pct}% plus court que d'habitude",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Postavljanje WashData",
|
"title": "Postavljanje WashData",
|
||||||
"description": "Konfigurirajte svoju perilicu rublja ili neki drugi uređaj.\n\nPotreban je senzor snage.\n\n**Potom ćete biti upitani želite li izraditi svoj prvi profil.**",
|
"description": "Konfigurirajte svoju perilicu rublja ili neki drugi uređaj.\n\nSenzor snage je obavezan.\n\nNakon postavljanja otvorite WashData panel s bočne trake (ili idite na [/ha-washdata](/ha-washdata)) za pregled ciklusa, podešavanje otkrivanja i upravljanje profilima.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naziv uređaja",
|
"name": "Naziv uređaja",
|
||||||
"device_type": "Vrsta uređaja",
|
"device_type": "Vrsta uređaja",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Ažurirajte naziv uređaja, vrstu uređaja ili senzor snage.\n\nWashData panel (bočna traka ili [/ha-washdata](/ha-washdata)) služi za upravljanje otkrivanjem, ciklusima, profilima i obavijestima.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Preimenujte uređaj ili promijenite njegove osnovne postavke hardvera. Sve postavke otkrivanja, podudaranja i obavijesti nalaze se na [WashData panelu](/ha-washdata) (dostupan i s bočne trake).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naziv uređaja",
|
"name": "Naziv uređaja",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min tajmer",
|
"timer_default_message": "{device}: {minutes} min tajmer",
|
||||||
"timer_pause_action_title": "Nastavi ciklus",
|
"timer_pause_action_title": "Nastavi ciklus",
|
||||||
"timer_pause_body_suffix": "Ciklus je pauziran. Otvorite WashData panel za nastavak.",
|
"timer_pause_body_suffix": "Ciklus je pauziran. Otvorite WashData panel za nastavak.",
|
||||||
|
"unload_dismiss_action_title": "Prestani podsjećati",
|
||||||
"notify_live_waiting_message": "{device}: Nijedan profil još nije podudaran.",
|
"notify_live_waiting_message": "{device}: Nijedan profil još nije podudaran.",
|
||||||
"vs_typical_longer": "{pct}% dulje nego obično",
|
"vs_typical_longer": "{pct}% dulje nego obično",
|
||||||
"vs_typical_shorter": "{pct}% kraće nego obično",
|
"vs_typical_shorter": "{pct}% kraće nego obično",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData beállítása",
|
"title": "WashData beállítása",
|
||||||
"description": "Állítsa be a mosógépet vagy más készüléket.\n\nTeljesítményérzékelő szükséges.\n\n**Ezután a rendszer megkérdezi, hogy szeretné-e létrehozni első profilját.**",
|
"description": "Állítsa be a mosógépet vagy más készüléket.\n\nTeljesítményérzékelő szükséges.\n\nA beállítás után nyissa meg a WashData panelt az oldalsávból (vagy lépjen ide: [/ha-washdata](/ha-washdata)), ahol megtekintheti a ciklusokat, finomhangolhatja a felismerést és kezelheti a profilokat.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Eszköz neve",
|
"name": "Eszköz neve",
|
||||||
"device_type": "Eszköz típusa",
|
"device_type": "Eszköz típusa",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Frissítse az eszköz nevét, a készülék típusát vagy a teljesítményérzékelőt.\n\nA WashData panel (oldalsáv vagy [/ha-washdata](/ha-washdata)) a felismerés, ciklusok, profilok és értesítések kezelésére szolgál.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Nevezze át az eszközt, vagy módosítsa az alap hardverbeállításait. Az összes felismerési, egyeztetési és értesítési beállítás a [WashData panelen](/ha-washdata) található (az oldalsávból is elérhető).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Eszköz neve",
|
"name": "Eszköz neve",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} perces időzítő",
|
"timer_default_message": "{device}: {minutes} perces időzítő",
|
||||||
"timer_pause_action_title": "Ciklus folytatása",
|
"timer_pause_action_title": "Ciklus folytatása",
|
||||||
"timer_pause_body_suffix": "A ciklus szünetel. A folytatáshoz nyissa meg a WashData-panelt.",
|
"timer_pause_body_suffix": "A ciklus szünetel. A folytatáshoz nyissa meg a WashData-panelt.",
|
||||||
|
"unload_dismiss_action_title": "Emlékeztetés leállítása",
|
||||||
"notify_live_waiting_message": "{device}: Még nincs illeszkedő profil.",
|
"notify_live_waiting_message": "{device}: Még nincs illeszkedő profil.",
|
||||||
"vs_typical_longer": "{pct}%-kal hosszabb a szokásosnál",
|
"vs_typical_longer": "{pct}%-kal hosszabb a szokásosnál",
|
||||||
"vs_typical_shorter": "{pct}%-kal rövidebb a szokásosnál",
|
"vs_typical_shorter": "{pct}%-kal rövidebb a szokásosnál",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData uppsetning",
|
"title": "WashData uppsetning",
|
||||||
"description": "Stilltu þvottavélina þína eða annað tæki.\n\nKraftur skynjari er nauðsynlegur.\n\n**Þá verður þú spurður hvort þú viljir búa til fyrsta prófílinn þinn.**",
|
"description": "Stilltu þvottavélina þína eða annað tæki.\n\nKraftskynjari er nauðsynlegur.\n\nEftir uppsetningu skaltu opna WashData-spjaldið frá hliðarstikunni (eða fara á [/ha-washdata](/ha-washdata)) til að skoða hringrás, stilla skynjun og stjórna sniðum.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nafn tækis",
|
"name": "Nafn tækis",
|
||||||
"device_type": "Tegund tækis",
|
"device_type": "Tegund tækis",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Uppfærðu heiti tækisins, tegund tækis eða kraftskynjara.\n\nWashData-spjaldið (hliðarstikan eða [/ha-washdata](/ha-washdata)) er þar sem skynjun, hringrás, sniðmát og tilkynningar eru stjórnað.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Endurnefndu tækið eða breyttu grunnstillingum vélbúnaðar. Allar stillingar fyrir skynjun, samsvörun og tilkynningar eru í [WashData-spjaldinu](/ha-washdata) (einnig aðgengilegt frá hliðarstikunni).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nafn tækis",
|
"name": "Nafn tækis",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} mín tímataki",
|
"timer_default_message": "{device}: {minutes} mín tímataki",
|
||||||
"timer_pause_action_title": "Halda áfram hringrás",
|
"timer_pause_action_title": "Halda áfram hringrás",
|
||||||
"timer_pause_body_suffix": "Hringrásin er í bið. Opnaðu WashData-gluggann til að halda áfram.",
|
"timer_pause_body_suffix": "Hringrásin er í bið. Opnaðu WashData-gluggann til að halda áfram.",
|
||||||
|
"unload_dismiss_action_title": "Hætta að minna",
|
||||||
"notify_live_waiting_message": "{device}: Ekkert snið hefur enn verið greint.",
|
"notify_live_waiting_message": "{device}: Ekkert snið hefur enn verið greint.",
|
||||||
"vs_typical_longer": "{pct}% lengri en venjulega",
|
"vs_typical_longer": "{pct}% lengri en venjulega",
|
||||||
"vs_typical_shorter": "{pct}% styttri en venjulega",
|
"vs_typical_shorter": "{pct}% styttri en venjulega",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Configurazione WashData",
|
"title": "Configurazione WashData",
|
||||||
"description": "Configura la tua lavatrice o altro elettrodomestico.\n\nÈ richiesto il sensore di potenza.\n\n**Successivamente ti verrà chiesto se desideri creare il tuo primo profilo.**",
|
"description": "Configura la tua lavatrice o altro elettrodomestico.\n\nÈ richiesto il sensore di potenza.\n\nDopo la configurazione, apri il pannello WashData dalla barra laterale (o vai su [/ha-washdata](/ha-washdata)) per visualizzare i cicli, regolare il rilevamento e gestire i profili.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome dispositivo",
|
"name": "Nome dispositivo",
|
||||||
"device_type": "Tipo di dispositivo",
|
"device_type": "Tipo di dispositivo",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Aggiorna il nome del dispositivo, il tipo di elettrodomestico o il sensore di potenza.\n\nIl pannello WashData (barra laterale, o [/ha-washdata](/ha-washdata)) è dove vengono gestiti rilevamento, cicli, profili e notifiche.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Rinomina il dispositivo o modifica le sue impostazioni hardware principali. Tutte le impostazioni di rilevamento, corrispondenza e notifica si trovano nel [pannello WashData](/ha-washdata) (accessibile anche dalla barra laterale).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome del dispositivo",
|
"name": "Nome del dispositivo",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: timer di {minutes} min",
|
"timer_default_message": "{device}: timer di {minutes} min",
|
||||||
"timer_pause_action_title": "Riprendi ciclo",
|
"timer_pause_action_title": "Riprendi ciclo",
|
||||||
"timer_pause_body_suffix": "Il ciclo è in pausa. Apri il pannello WashData per riprendere.",
|
"timer_pause_body_suffix": "Il ciclo è in pausa. Apri il pannello WashData per riprendere.",
|
||||||
|
"unload_dismiss_action_title": "Interrompi promemoria",
|
||||||
"notify_live_waiting_message": "{device}: nessun profilo ancora riconosciuto.",
|
"notify_live_waiting_message": "{device}: nessun profilo ancora riconosciuto.",
|
||||||
"vs_typical_longer": "{pct}% più lungo del solito",
|
"vs_typical_longer": "{pct}% più lungo del solito",
|
||||||
"vs_typical_shorter": "{pct}% più corto del solito",
|
"vs_typical_shorter": "{pct}% più corto del solito",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData セットアップ",
|
"title": "WashData セットアップ",
|
||||||
"description": "洗濯機またはその他の家電製品を設定します。\n\n電力センサーが必要です。\n\n**次に、最初のプロファイルを作成するかどうか確認されます。**",
|
"description": "洗濯機またはその他の家電製品を設定します。\n\n電力センサーが必要です。\n\nセットアップ後、サイドバーの WashData パネルを開くか(または [/ha-washdata](/ha-washdata) にアクセスして)、サイクルの確認、検出の調整、プロファイルの管理を行ってください。",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "デバイス名",
|
"name": "デバイス名",
|
||||||
"device_type": "デバイスの種類",
|
"device_type": "デバイスの種類",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "デバイス名、アプライアンスのタイプ、または電力センサーを更新します。",
|
"description": "デバイス名、家電の種類、または電力センサーを更新します。\n\nWashData パネル(サイドバー、または [/ha-washdata](/ha-washdata))で、検出、サイクル、プロファイル、通知を管理できます。",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "すべての設定 (検出、マッチング、タイミング、通知、プロファイル、サイクル) は、WashData パネルで利用できます。このフォームは、パワー センサー、デバイス タイプ、またはスタンバイしきい値を変更する場合にのみ使用してください。",
|
"description": "デバイス名を変更するか、主要なハードウェア設定を変更します。すべての検出・照合・通知の設定は [WashData パネル](/ha-washdata) で確認できます(サイドバーからもアクセス可能)。",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "デバイス名",
|
"name": "デバイス名",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} 分タイマー",
|
"timer_default_message": "{device}: {minutes} 分タイマー",
|
||||||
"timer_pause_action_title": "サイクルを再開する",
|
"timer_pause_action_title": "サイクルを再開する",
|
||||||
"timer_pause_body_suffix": "サイクルが一時停止中です。再開するには WashData パネルを開いてください。",
|
"timer_pause_body_suffix": "サイクルが一時停止中です。再開するには WashData パネルを開いてください。",
|
||||||
|
"unload_dismiss_action_title": "リマインダーを停止",
|
||||||
"notify_live_waiting_message": "{device}: まだ一致するプロファイルがありません。",
|
"notify_live_waiting_message": "{device}: まだ一致するプロファイルがありません。",
|
||||||
"vs_typical_longer": "通常より {pct}% 長い",
|
"vs_typical_longer": "通常より {pct}% 長い",
|
||||||
"vs_typical_shorter": "通常より {pct}% 短い",
|
"vs_typical_shorter": "通常より {pct}% 短い",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData 설정",
|
"title": "WashData 설정",
|
||||||
"description": "세탁기 또는 기타 가전제품을 구성하세요.\n\n전력 센서가 필요합니다.\n\n**다음으로 첫 번째 프로필을 만들지 여부를 묻는 메시지가 표시됩니다.**",
|
"description": "세탁기 또는 기타 가전제품을 구성하세요.\n\n전력 센서가 필요합니다.\n\n설정 후, 사이드바에서 WashData 패널을 열거나 [/ha-washdata](/ha-washdata)로 이동하여 사이클 확인, 검출 조정 및 프로파일 관리를 하세요.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "장치 이름",
|
"name": "장치 이름",
|
||||||
"device_type": "장치 유형",
|
"device_type": "장치 유형",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "장치 이름, 기기 유형 또는 전원 센서를 업데이트합니다.",
|
"description": "장치 이름, 가전 유형 또는 전력 센서를 업데이트합니다.\n\nWashData 패널(사이드바 또는 [/ha-washdata](/ha-washdata))에서 검출, 사이클, 프로파일 및 알림을 관리합니다.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "감지, 매칭, 타이밍, 알림, 프로필, 주기 등 모든 설정을 WashData 패널에서 사용할 수 있습니다. 전원 센서, 장치 유형 또는 대기 임계값을 변경하는 경우에만 이 양식을 사용하십시오.",
|
"description": "장치 이름을 변경하거나 핵심 하드웨어 설정을 변경합니다. 모든 검출, 매칭 및 알림 설정은 [WashData 패널](/ha-washdata)에서 확인할 수 있습니다(사이드바에서도 접근 가능).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "장치 이름",
|
"name": "장치 이름",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes}분 타이머",
|
"timer_default_message": "{device}: {minutes}분 타이머",
|
||||||
"timer_pause_action_title": "사이클 재개",
|
"timer_pause_action_title": "사이클 재개",
|
||||||
"timer_pause_body_suffix": "사이클이 일시 정지되었습니다. 재개하려면 WashData 패널을 여세요.",
|
"timer_pause_body_suffix": "사이클이 일시 정지되었습니다. 재개하려면 WashData 패널을 여세요.",
|
||||||
|
"unload_dismiss_action_title": "알림 중지",
|
||||||
"notify_live_waiting_message": "{device}: 아직 일치하는 프로필이 없습니다.",
|
"notify_live_waiting_message": "{device}: 아직 일치하는 프로필이 없습니다.",
|
||||||
"vs_typical_longer": "평소보다 {pct}% 더 김",
|
"vs_typical_longer": "평소보다 {pct}% 더 김",
|
||||||
"vs_typical_shorter": "평소보다 {pct}% 더 짧음",
|
"vs_typical_shorter": "평소보다 {pct}% 더 짧음",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData sąranka",
|
"title": "WashData sąranka",
|
||||||
"description": "Sukonfigūruokite skalbimo mašiną ar kitą prietaisą.\n\nReikalingas galios jutiklis.\n\n**Toliau jūsų paklaus, ar norite susikurti pirmąjį profilį.**",
|
"description": "Sukonfigūruokite skalbimo mašiną ar kitą prietaisą.\n\nReikalingas galios jutiklis.\n\nBaigę sąranką, atidarykite WashData skydelį iš šoninės juostos (arba eikite į [/ha-washdata](/ha-washdata)), kad peržiūrėtumėte ciklus, sureguliuotumėte aptikimą ir tvarkytumėte profilius.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Įrenginio pavadinimas",
|
"name": "Įrenginio pavadinimas",
|
||||||
"device_type": "Įrenginio tipas",
|
"device_type": "Įrenginio tipas",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "WashData rekonfigūracija",
|
"title": "WashData rekonfigūracija",
|
||||||
"description": "Atnaujinkite įrenginio pavadinimą, prietaiso tipą arba galios jutiklį.",
|
"description": "Atnaujinkite įrenginio pavadinimą, prietaiso tipą arba galios jutiklį.\n\nWashData skydelyje (šoninė juosta arba [/ha-washdata](/ha-washdata)) tvarkomas aptikimas, ciklai, profiliai ir pranešimai.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Įrenginio pavadinimas",
|
"name": "Įrenginio pavadinimas",
|
||||||
"device_type": "Įrenginio tipas",
|
"device_type": "Įrenginio tipas",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData nustatymai",
|
"title": "WashData nustatymai",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Pervadinkite įrenginį arba pakeiskite pagrindinius aparatinės įrangos nustatymus. Visi aptikimo, atitikimo ir pranešimų nustatymai yra [WashData skydelyje](/ha-washdata) (taip pat pasiekiami iš šoninės juostos).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Įrenginio pavadinimas",
|
"name": "Įrenginio pavadinimas",
|
||||||
"device_type": "Įrenginio tipas",
|
"device_type": "Įrenginio tipas",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min. laikmatis",
|
"timer_default_message": "{device}: {minutes} min. laikmatis",
|
||||||
"timer_pause_action_title": "Tęsti ciklą",
|
"timer_pause_action_title": "Tęsti ciklą",
|
||||||
"timer_pause_body_suffix": "Ciklas pristabdytas. Atidarykite WashData skydelį, kad tęstumėte.",
|
"timer_pause_body_suffix": "Ciklas pristabdytas. Atidarykite WashData skydelį, kad tęstumėte.",
|
||||||
|
"unload_dismiss_action_title": "Nustoti priminti",
|
||||||
"notify_live_waiting_message": "{device}: Kol kas neatpažintas joks profilis.",
|
"notify_live_waiting_message": "{device}: Kol kas neatpažintas joks profilis.",
|
||||||
"vs_typical_longer": "{pct}% ilgiau nei įprastai",
|
"vs_typical_longer": "{pct}% ilgiau nei įprastai",
|
||||||
"vs_typical_shorter": "{pct}% trumpiau nei įprastai",
|
"vs_typical_shorter": "{pct}% trumpiau nei įprastai",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData iestatīšana",
|
"title": "WashData iestatīšana",
|
||||||
"description": "Konfigurējiet veļas mašīnu vai citu ierīci.\n\nNepieciešams jaudas sensors.\n\n**Pēc tam jums tiks jautāts, vai vēlaties izveidot savu pirmo profilu.**",
|
"description": "Konfigurējiet veļas mašīnu vai citu ierīci.\n\nNepieciešams jaudas sensors.\n\nPēc iestatīšanas atveriet WashData paneli no sānjoslas (vai dodieties uz [/ha-washdata](/ha-washdata)), lai skatītu ciklus, pielāgotu noteikšanu un pārvaldītu profilus.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Ierīces nosaukums",
|
"name": "Ierīces nosaukums",
|
||||||
"device_type": "Ierīces veids",
|
"device_type": "Ierīces veids",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "WashData pārkonfigurēšana",
|
"title": "WashData pārkonfigurēšana",
|
||||||
"description": "Atjauniniet ierīces nosaukumu, ierīces veidu vai jaudas sensoru.",
|
"description": "Atjauniniet ierīces nosaukumu, ierīces veidu vai jaudas sensoru.\n\nWashData panelī (sānjosla vai [/ha-washdata](/ha-washdata)) tiek pārvaldīta noteikšana, cikli, profili un paziņojumi.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Ierīces nosaukums",
|
"name": "Ierīces nosaukums",
|
||||||
"device_type": "Ierīces veids",
|
"device_type": "Ierīces veids",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData iestatījumi",
|
"title": "WashData iestatījumi",
|
||||||
"description": "Visi iestatījumi -- noteikšana, saskaņošana, laiks, paziņojumi, profili un cikli -- ir pieejami WashData panelī. Izmantojiet šo veidlapu tikai, lai mainītu jaudas sensoru, ierīces veidu vai gaidstāves slieksni.",
|
"description": "Pārdēvējiet ierīci vai mainiet tās galvenos aparatūras iestatījumus. Visi noteikšanas, saskaņošanas un paziņojumu iestatījumi atrodas [WashData panelī](/ha-washdata) (pieejams arī no sānjoslas).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Ierīces nosaukums",
|
"name": "Ierīces nosaukums",
|
||||||
"device_type": "Ierīces veids",
|
"device_type": "Ierīces veids",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min. taimeris",
|
"timer_default_message": "{device}: {minutes} min. taimeris",
|
||||||
"timer_pause_action_title": "Atsākt ciklu",
|
"timer_pause_action_title": "Atsākt ciklu",
|
||||||
"timer_pause_body_suffix": "Cikls ir apturēts. Atveriet WashData paneli, lai atsāktu.",
|
"timer_pause_body_suffix": "Cikls ir apturēts. Atveriet WashData paneli, lai atsāktu.",
|
||||||
|
"unload_dismiss_action_title": "Pārtraukt atgādināšanu",
|
||||||
"notify_live_waiting_message": "{device}: Vēl nav atpazīts neviens profils.",
|
"notify_live_waiting_message": "{device}: Vēl nav atpazīts neviens profils.",
|
||||||
"vs_typical_longer": "{pct}% ilgāk nekā parasti",
|
"vs_typical_longer": "{pct}% ilgāk nekā parasti",
|
||||||
"vs_typical_shorter": "{pct}% īsāk nekā parasti",
|
"vs_typical_shorter": "{pct}% īsāk nekā parasti",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Поставување податоци за перење",
|
"title": "Поставување податоци за перење",
|
||||||
"description": "Конфигурирајте ја вашата машина за перење или друг уред.\n\nПотребен е сензор за напојување.\n\n**Следно, ќе бидете прашани дали сакате да го креирате вашиот прв профил.**",
|
"description": "Конфигурирајте ја вашата машина за перење или друг уред.\n\nПотребен е сензор за напојување.\n\nПо поставувањето, отворете го панелот на WashData од страничната лента (или одете на [/ha-washdata](/ha-washdata)) за преглед на циклусите, подесување на откривањето и управување со профили.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Име на уред",
|
"name": "Име на уред",
|
||||||
"device_type": "Тип на уред",
|
"device_type": "Тип на уред",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Реконфигурирај WashData",
|
"title": "Реконфигурирај WashData",
|
||||||
"description": "Ажурирајте го името на уредот, типот на апаратот или сензорот за напојување.",
|
"description": "Ажурирајте го името на уредот, типот на апаратот или сензорот за напојување.\n\nПанелот на WashData (странична лента или [/ha-washdata](/ha-washdata)) е местото каде се управуваат откривањето, циклусите, профилите и известувањата.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Име на уред",
|
"name": "Име на уред",
|
||||||
"device_type": "Тип на уред",
|
"device_type": "Тип на уред",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "Сите поставки -- откривање, совпаѓање, време, известувања, профили и циклуси -- се достапни во панелот WashData. Користете го овој формулар само за да го промените сензорот за напојување, типот на уредот или прагот на подготвеност.",
|
"description": "Преименувајте го уредот или сменете ги неговите основни хардверски поставки. Сите поставки за откривање, совпаѓање и известување се во [панелот на WashData](/ha-washdata) (достапен и од страничната лента).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Име на уред",
|
"name": "Име на уред",
|
||||||
"device_type": "Тип на уред",
|
"device_type": "Тип на уред",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: тајмер од {minutes} мин.",
|
"timer_default_message": "{device}: тајмер од {minutes} мин.",
|
||||||
"timer_pause_action_title": "Продолжи со циклусот",
|
"timer_pause_action_title": "Продолжи со циклусот",
|
||||||
"timer_pause_body_suffix": "Циклусот е паузиран. Отворете го WashData панелот за да продолжите.",
|
"timer_pause_body_suffix": "Циклусот е паузиран. Отворете го WashData панелот за да продолжите.",
|
||||||
|
"unload_dismiss_action_title": "Престани да потсетуваш",
|
||||||
"notify_live_waiting_message": "{device}: Сè уште нема совпаднат профил.",
|
"notify_live_waiting_message": "{device}: Сè уште нема совпаднат профил.",
|
||||||
"vs_typical_longer": "{pct}% подолго од вообичаено",
|
"vs_typical_longer": "{pct}% подолго од вообичаено",
|
||||||
"vs_typical_shorter": "{pct}% пократко од вообичаено",
|
"vs_typical_shorter": "{pct}% пократко од вообичаено",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData-oppsett",
|
"title": "WashData-oppsett",
|
||||||
"description": "Konfigurer vaskemaskinen eller annet apparat.\n\nStrømsensor er nødvendig.\n\n**Deretter vil du bli spurt om du vil opprette din første profil.**",
|
"description": "Konfigurer vaskemaskinen din eller et annet apparat.\n\nStrømsensor er nødvendig.\n\nEtter oppsett åpner du WashData-panelet fra sidefeltet (eller gå til [/ha-washdata](/ha-washdata)) for å se sykluser, justere registrering og administrere profiler.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Enhetsnavn",
|
"name": "Enhetsnavn",
|
||||||
"device_type": "Enhetstype",
|
"device_type": "Enhetstype",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Rekonfigurer WashData",
|
"title": "Rekonfigurer WashData",
|
||||||
"description": "Oppdater enhetsnavnet, apparattype eller strømsensor.",
|
"description": "Oppdater enhetsnavnet, apparattypen eller strømsensoren.\n\nWashData-panelet (sidefeltet eller [/ha-washdata](/ha-washdata)) er der registrering, sykluser, profiler og varsler administreres.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Enhetsnavn",
|
"name": "Enhetsnavn",
|
||||||
"device_type": "Enhetstype",
|
"device_type": "Enhetstype",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData-innstillinger",
|
"title": "WashData-innstillinger",
|
||||||
"description": "Alle innstillinger -- deteksjon, samsvar, timing, varsler, profiler og sykluser -- er tilgjengelige i WashData-panelet. Bruk dette skjemaet kun til å endre strømsensoren, enhetstype eller standbyterskelen.",
|
"description": "Gi enheten nytt navn eller endre de grunnleggende maskinvareinnstillingene. Alle innstillinger for registrering, matching og varsler finnes i [WashData-panelet](/ha-washdata) (også tilgjengelig fra sidefeltet).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Enhetsnavn",
|
"name": "Enhetsnavn",
|
||||||
"device_type": "Enhetstype",
|
"device_type": "Enhetstype",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} min. timer",
|
"timer_default_message": "{device}: {minutes} min. timer",
|
||||||
"timer_pause_action_title": "Fortsett syklus",
|
"timer_pause_action_title": "Fortsett syklus",
|
||||||
"timer_pause_body_suffix": "Syklusen er satt på pause. Åpne WashData-panelet for å fortsette.",
|
"timer_pause_body_suffix": "Syklusen er satt på pause. Åpne WashData-panelet for å fortsette.",
|
||||||
|
"unload_dismiss_action_title": "Stopp påminnelser",
|
||||||
"notify_live_waiting_message": "{device}: Ingen profil gjenkjent ennå.",
|
"notify_live_waiting_message": "{device}: Ingen profil gjenkjent ennå.",
|
||||||
"vs_typical_longer": "{pct}% lengre enn vanlig",
|
"vs_typical_longer": "{pct}% lengre enn vanlig",
|
||||||
"vs_typical_shorter": "{pct}% kortere enn vanlig",
|
"vs_typical_shorter": "{pct}% kortere enn vanlig",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData-instellingen",
|
"title": "WashData-instellingen",
|
||||||
"description": "Configureer uw wasmachine of ander apparaat.\n\nVermogenssensor is vereist.\n\n**Vervolgens wordt u gevraagd of u uw eerste profiel wilt aanmaken.**",
|
"description": "Configureer uw wasmachine of ander apparaat.\n\nVermogenssensor is vereist.\n\nNa de installatie opent u het WashData-paneel via de zijbalk (of ga naar [/ha-washdata](/ha-washdata)) om cycli te bekijken, detectie af te stellen en profielen te beheren.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Apparaatnaam",
|
"name": "Apparaatnaam",
|
||||||
"device_type": "Apparaattype",
|
"device_type": "Apparaattype",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "WashData opnieuw configureren",
|
"title": "WashData opnieuw configureren",
|
||||||
"description": "Werk de apparaatnaam, het type apparaat of de vermogenssensor bij.",
|
"description": "Werk de apparaatnaam, het type apparaat of de vermogenssensor bij.\n\nHet WashData-paneel (zijbalk of [/ha-washdata](/ha-washdata)) is waar detectie, cycli, profielen en meldingen worden beheerd.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Apparaatnaam",
|
"name": "Apparaatnaam",
|
||||||
"device_type": "Apparaattype",
|
"device_type": "Apparaattype",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData-instellingen",
|
"title": "WashData-instellingen",
|
||||||
"description": "Alle instellingen -- detectie, overeenkomst, timing, meldingen, profielen en cycli -- zijn beschikbaar in het WashData-paneel. Gebruik dit formulier alleen om de vermogenssensor, het apparaattype of de standbydrempel te wijzigen.",
|
"description": "Geef het apparaat een nieuwe naam of wijzig de basishardware-instellingen. Alle instellingen voor detectie, matching en meldingen bevinden zich in het [WashData-paneel](/ha-washdata) (ook bereikbaar via de zijbalk).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Apparaatnaam",
|
"name": "Apparaatnaam",
|
||||||
"device_type": "Apparaattype",
|
"device_type": "Apparaattype",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: timer van {minutes} min.",
|
"timer_default_message": "{device}: timer van {minutes} min.",
|
||||||
"timer_pause_action_title": "Hervat cyclus",
|
"timer_pause_action_title": "Hervat cyclus",
|
||||||
"timer_pause_body_suffix": "De cyclus is gepauzeerd. Open het WashData-paneel om te hervatten.",
|
"timer_pause_body_suffix": "De cyclus is gepauzeerd. Open het WashData-paneel om te hervatten.",
|
||||||
|
"unload_dismiss_action_title": "Stop met herinneren",
|
||||||
"notify_live_waiting_message": "{device}: nog geen profiel herkend.",
|
"notify_live_waiting_message": "{device}: nog geen profiel herkend.",
|
||||||
"vs_typical_longer": "{pct}% langer dan gebruikelijk",
|
"vs_typical_longer": "{pct}% langer dan gebruikelijk",
|
||||||
"vs_typical_shorter": "{pct}% korter dan gebruikelijk",
|
"vs_typical_shorter": "{pct}% korter dan gebruikelijk",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "мин",
|
||||||
|
"entity_not_found": "Обектът не е намерен",
|
||||||
|
"running_long": "Работи дълго",
|
||||||
|
"remaining": "остават",
|
||||||
|
"progress": "напредък",
|
||||||
|
"show_time_remaining": "Показване на оставащото време",
|
||||||
|
"show_percentage": "Показване на процент",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Плочка (компактна)",
|
||||||
|
"detail": "Подробно (разширено)",
|
||||||
|
"glance": "Преглед (няколко устройства)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Пауза",
|
||||||
|
"resume": "Възобновяване",
|
||||||
|
"terminate": "Край на цикъла",
|
||||||
|
"record_start": "Стартиране на запис",
|
||||||
|
"record_stop": "Спиране на запис",
|
||||||
|
"program": "Програма",
|
||||||
|
"open_panel": "Отваряне на WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Оформление",
|
||||||
|
"entity": "Обект на уреда",
|
||||||
|
"entities": "Уреди",
|
||||||
|
"title": "Заглавие",
|
||||||
|
"icon": "Икона",
|
||||||
|
"show_state": "Показване на състоянието",
|
||||||
|
"show_program": "Показване на програмата",
|
||||||
|
"show_progress_bar": "Показване на лента за напредък",
|
||||||
|
"spin_icon": "Въртене на иконата по време на работа",
|
||||||
|
"display_mode": "Ред с подробности",
|
||||||
|
"active_color": "Замяна на активния цвят",
|
||||||
|
"show_phase": "Показване на фазата",
|
||||||
|
"show_energy": "Показване на енергия и разходи",
|
||||||
|
"show_anomaly": "Показване на предупреждение за превишаване",
|
||||||
|
"show_sparkline": "Показване на графика на мощността на живо",
|
||||||
|
"buttons": "Бутони за действие",
|
||||||
|
"program_entity": "Обект на програмата (замяна)",
|
||||||
|
"time_entity": "Обект на времето (замяна)",
|
||||||
|
"pct_entity": "Обект на напредъка (замяна)",
|
||||||
|
"power_entity": "Обект на мощността (замяна)",
|
||||||
|
"tap_action": "Действие при докосване",
|
||||||
|
"hold_action": "Действие при задържане",
|
||||||
|
"double_tap_action": "Действие при двойно докосване"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} открити аномалии (напр. отворена врата по средата на цикъла) – отворете, за да ги видите на графиката",
|
"artifact_tip": "{n} открити аномалии (напр. отворена врата по средата на цикъла) – отворете, за да ги видите на графиката",
|
||||||
"auto": "(автоматично разпознато)",
|
"auto": "(автоматично разпознато)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Изхвърлете",
|
"discard": "Изхвърлете",
|
||||||
"discard_tip": "Изхвърли записаната следа без запазване",
|
"discard_tip": "Изхвърли записаната следа без запазване",
|
||||||
"dismiss": "Отхвърляне",
|
"dismiss": "Отхвърляне",
|
||||||
|
"mute_suggestion": "Спрете да предлагате тази настройка",
|
||||||
|
"pg_load_calibrated": "Зареди калибрирани (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Зареди ML-калибрираните настройки като замени в тестовата среда",
|
||||||
|
"pg_load_live": "Зареди активните настройки",
|
||||||
|
"pg_load_live_tip": "Повторно прочитане на текущите настройки на интеграцията и отхвърляне на всички промени в тестовата среда",
|
||||||
|
"pg_load_suggested": "Зареди предложени ({n})",
|
||||||
|
"pg_load_suggested_tip": "Зареди текущите предложения на автоматичния настройчик като замени в тестовата среда",
|
||||||
|
"pg_preset_delete": "Изтриване на конфигурация",
|
||||||
|
"pg_preset_load": "Зареди конфигурация",
|
||||||
|
"pg_preset_load_tip": "Заменяне на стойностите в тестовата среда с тази конфигурация (активните настройки остават непроменени)",
|
||||||
|
"pg_preset_save": "Запазване като конфигурация",
|
||||||
|
"pg_preset_save_tip": "Запазване на всички стойности по-долу като именувана конфигурация за това устройство",
|
||||||
|
"pg_publish_all": "Приложи {n} към интеграцията",
|
||||||
|
"pg_publish_one": "Приложи {label} към интеграцията",
|
||||||
|
"reset_muted": "Нулиране на заглушените",
|
||||||
"done": "Готово",
|
"done": "Готово",
|
||||||
"edit": "Редактиране",
|
"edit": "Редактиране",
|
||||||
"export": "Експортиране",
|
"export": "Експортиране",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Все още няма автоматизации, които да споменават това устройство.",
|
"no_automations": "Все още няма автоматизации, които да споменават това устройство.",
|
||||||
"panel_settings": "Настройки на панела",
|
"panel_settings": "Настройки на панела",
|
||||||
"param_sweep": "Обхождане на параметър",
|
"param_sweep": "Обхождане на параметър",
|
||||||
|
"pg_settings_source": "Източник на настройките",
|
||||||
"phase_catalog": "Фазов каталог",
|
"phase_catalog": "Фазов каталог",
|
||||||
"playground": "Тестова среда",
|
"playground": "Тестова среда",
|
||||||
"process_history": "История на процеса",
|
"process_history": "История на процеса",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Ниво по подразбиране за потребители, които не са изброени по-долу",
|
"default_access_level": "Ниво по подразбиране за потребители, които не са изброени по-долу",
|
||||||
"default_other": "По подразбиране (други устройства)",
|
"default_other": "По подразбиране (други устройства)",
|
||||||
"default_tab": "Раздел по подразбиране при отваряне на панела",
|
"default_tab": "Раздел по подразбиране при отваряне на панела",
|
||||||
|
"font_size": "Размер на шрифта на панела",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Описание",
|
"description": "Описание",
|
||||||
"dtw_blend_w": "Тегло на смесване",
|
"dtw_blend_w": "Тегло на смесване",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Оценка на съвпадение",
|
"pg_match_score": "Оценка на съвпадение",
|
||||||
"pg_pct_of": "{p}% от {total}",
|
"pg_pct_of": "{p}% от {total}",
|
||||||
"pg_poor_match": "Лошо съвпадение",
|
"pg_poor_match": "Лошо съвпадение",
|
||||||
|
"pg_preset": "Конфигурация на тестовата среда",
|
||||||
|
"pg_preset_name": "Име на новата конфигурация",
|
||||||
|
"pg_preset_none": "Изберете конфигурация…",
|
||||||
"pg_strong_match": "Силно съвпадение",
|
"pg_strong_match": "Силно съвпадение",
|
||||||
"pg_tile_ambiguous": "Двусмислени",
|
"pg_tile_ambiguous": "Двусмислени",
|
||||||
"pg_tile_ambiguous_tip": "Цикли с почти равно съвпадение между две програми",
|
"pg_tile_ambiguous_tip": "Цикли с почти равно съвпадение между две програми",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Прилагане на най-добрата стойност: {label} = {value}?",
|
"pg_apply_confirm": "Прилагане на най-добрата стойност: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Изберете цикъл по-горе, след което натиснете „Зареди“, за да видите неговата крива на мощността.",
|
"pg_canvas_empty": "Изберете цикъл по-горе, след което натиснете „Зареди“, за да видите неговата крива на мощността.",
|
||||||
"pg_chart_caption": "Дял на откриване/съвпадение по стойности на {param}",
|
"pg_chart_caption": "Дял на откриване/съвпадение по стойности на {param}",
|
||||||
|
"pg_ctrl_intro": "Стойностите тръгват от активните настройки на интеграцията за това устройство. Промените остават в тестовата среда, докато не ги приложите.",
|
||||||
|
"pg_live_unavailable": "Активните настройки не са налични, показани са стойностите по подразбиране.",
|
||||||
|
"pg_load_live_confirm": "Да се отхвърлят ли промените в тестовата среда ({n}) и да се заредят текущите настройки на интеграцията?",
|
||||||
"pg_match_rate": "{pct}% съвпадения върху {total} цикъла",
|
"pg_match_rate": "{pct}% съвпадения върху {total} цикъла",
|
||||||
|
"pg_matches_live": "Съвпада с активните настройки",
|
||||||
|
"pg_n_changed": "Промени спрямо активните настройки: {n}",
|
||||||
|
"pg_sugg_none": "Всички предложения вече съответстват на текущите настройки",
|
||||||
|
"pg_preset_delete_confirm": "Да се изтрие ли конфигурацията „{name}“?",
|
||||||
|
"pg_preset_limit": "Достигнат е лимитът на конфигурации ({n})",
|
||||||
|
"pg_preset_overwrite": "Да се презапише ли конфигурацията „{name}“?",
|
||||||
|
"pg_publish_one_confirm": "Да се запази ли {label} = {value} в настройките на това устройство?",
|
||||||
"pg_restart_note": "Рестартирайте Home Assistant, за да активирате инструментите за симулация.",
|
"pg_restart_note": "Рестартирайте Home Assistant, за да активирате инструментите за симулация.",
|
||||||
"pg_sim_progress": "{done} / {total} цикъла",
|
"pg_sim_progress": "{done} / {total} цикъла",
|
||||||
"pg_starting": "Стартиране…",
|
"pg_starting": "Стартиране…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Предпочитания, панел и контрол на достъпа",
|
"preferences_admin": "Предпочитания, панел и контрол на достъпа",
|
||||||
"preferences_adv": "Предпочитания",
|
"preferences_adv": "Предпочитания",
|
||||||
"prefs_personal": "Те се отнасят само за вашия акаунт в Home Assistant.",
|
"prefs_personal": "Те се отнасят само за вашия акаунт в Home Assistant.",
|
||||||
|
"font_size_hint": "Направете всичко в този панел по-голямо или по-малко. Прилага се за вашия акаунт на това устройство.",
|
||||||
"process_history_hint": "Повторно стартирайте съпоставяне за всички съхранени цикли, обновете предложенията за настройка, обучете отново ML моделите (ако е активирано) и преизчислете качеството на цикъла. Стартирайте след пакетни прегледи.",
|
"process_history_hint": "Повторно стартирайте съпоставяне за всички съхранени цикли, обновете предложенията за настройка, обучете отново ML моделите (ако е активирано) и преизчислете качеството на цикъла. Стартирайте след пакетни прегледи.",
|
||||||
"profile_deleted": "Профилът е изтрит",
|
"profile_deleted": "Профилът е изтрит",
|
||||||
"profile_poor_health_detail": "Циклите, присвоени на този профил, имат непоследователни форми или ниска степен на доверие. Помислете за повторно изграждане на обвивката или преглед на циклите с етикети.",
|
"profile_poor_health_detail": "Циклите, присвоени на този профил, имат непоследователни форми или ниска степен на доверие. Помислете за повторно изграждане на обвивката или преглед на циклите с етикети.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Щракнете върху графиката, за да добавите или премахнете точка на разделяне или автоматично откриване по неактивни празнини. Всеки получен сегмент може да получи свой собствен профил.",
|
"split_intro": "Щракнете върху графиката, за да добавите или премахнете точка на разделяне или автоматично откриване по неактивни празнини. Всеки получен сегмент може да получи свой собствен профил.",
|
||||||
"storage_diagnostics": "Статистика за съхранение, поддръжка, експорт/импорт",
|
"storage_diagnostics": "Статистика за съхранение, поддръжка, експорт/импорт",
|
||||||
"sug_staged": "Зададено {key} = {val}. Запазете, за да приложите.",
|
"sug_staged": "Зададено {key} = {val}. Запазете, за да приложите.",
|
||||||
|
"sug_muted": "Тази настройка няма да се предлага повече",
|
||||||
|
"sug_mute_failed": "Настройката не можа да бъде заглушена",
|
||||||
|
"sug_unmuted_all": "Заглушените предложения са нулирани",
|
||||||
|
"n_suggestions_muted": "{count} заглушени; авто-настройката няма да предлага тези.",
|
||||||
"toast_auto_detect_enabled": "Автоматичното разпознаване е активирано",
|
"toast_auto_detect_enabled": "Автоматичното разпознаване е активирано",
|
||||||
"toast_auto_label_complete": "Автоматичното етикетиране е завършено",
|
"toast_auto_label_complete": "Автоматичното етикетиране е завършено",
|
||||||
"toast_auto_label_failed": "Автоматичното етикетиране е неуспешно: {error}",
|
"toast_auto_label_failed": "Автоматичното етикетиране е неуспешно: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Продължителността се понижава ({pct}%/цикъл) – скорошно средно {avg}",
|
"trend_duration_shorter": "Продължителността се понижава ({pct}%/цикъл) – скорошно средно {avg}",
|
||||||
"trend_energy_down": "Енергията намалява ({pct}%/цикъл)",
|
"trend_energy_down": "Енергията намалява ({pct}%/цикъл)",
|
||||||
"trend_energy_up": "Тенденция към нарастване на енергията ({pct}%/цикъл) – скорошно средно {avg}",
|
"trend_energy_up": "Тенденция към нарастване на енергията ({pct}%/цикъл) – скорошно средно {avg}",
|
||||||
|
"trim_destructive_confirm": "Това запазва само {pct}% от цикъла и не може да бъде отменено. Да се продължи ли?",
|
||||||
"trim_intro": "Плъзнете червените манипулатори или въведете стойности. Всичко извън прозореца се премахва.",
|
"trim_intro": "Плъзнете червените манипулатори или въведете стойности. Всичко извън прозореца се премахва.",
|
||||||
"tuning_suggestions_available": "{count} предложение за настройка налично от наблюдавани цикли. Те се появяват до съответните полета.",
|
"tuning_suggestions_available": "{count} предложение за настройка налично от наблюдавани цикли. Те се появяват до съответните полета.",
|
||||||
"unsure_detected_prefix": "WashData не е сигурен, че е открит",
|
"unsure_detected_prefix": "WashData не е сигурен, че е открит",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Неизползваем"
|
"unusable": "Неизползваем"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"intro": "Обработка на края на цикъла за съдомиялни машини, които обикновено завършват с дълга фаза на сушене почти без консумация на енергия преди кратко финално източване.",
|
||||||
|
"label": "Съдомиялна машина"
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Режимът против бръчки/против набръчкване открива импулси на ниска мощност след основната фаза и ги прикрепя към завършения цикъл.",
|
"intro": "Режимът против бръчки/против набръчкване открива импулси на ниска мощност след основната фаза и ги прикрепя към завършения цикъл.",
|
||||||
"label": "Против бръчки"
|
"label": "Против бръчки"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"doc": "След като цикълът надхвърли очакваната си продължителност, колко дълго съдомиялната машина трябва да остане неактивна (под «Праг на спиране»), преди WashData да спре да чака финално източване и да завърши цикъла. Увеличете го, ако вашата машина има дълга тиха фаза на сушене преди късно финално източване, което се пропуска - по-широк прозорец позволява на научената продължителност да следва сезонните промени (по-студена входяща вода = по-дълги цикли), вместо да се фиксира към старата средна стойност. То само съкращава изчакването спрямо вътрешния 30-минутен лимит за изчакване на финалния пик (източване на вода), но никога не го удължава.",
|
||||||
|
"label": "Тихо завършване на пасивното сушене"
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Разпознайте кратките импулси на сушене с ниска мощност, които сушилнята излъчва след основната топлинна фаза, и ги запазете прикрепени към завършения цикъл, вместо да ги четете като нови цикли.",
|
"doc": "Разпознайте кратките импулси на сушене с ниска мощност, които сушилнята излъчва след основната топлинна фаза, и ги запазете прикрепени към завършения цикъл, вместо да ги четете като нови цикли.",
|
||||||
"label": "Активиране на антибръчково засичане"
|
"label": "Активиране на антибръчково засичане"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Минути след края на цикъла преди изпращане на все още чакащото напомняне за „разтоварване на машината“. Задайте 0, за да деактивирате напомнянето.",
|
"doc": "Минути след края на цикъла преди изпращане на все още чакащото напомняне за „разтоварване на машината“. Задайте 0, за да деактивирате напомнянето.",
|
||||||
"label": "Закъснение на напомнянето за разтоварване"
|
"label": "Закъснение на напомнянето за разтоварване"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Продължава да изпраща напомнянето за разтоварване на всеки \"Закъснение на напомнянето за разтоварване\" минути, докато не отворите вратата или не докоснете \"Спри напомнянията\" в известието. Изисква Обект на сензор за врата (както и самото напомняне). Бутонът за отхвърляне работи в известията на мобилното приложение на Home Assistant (companion).",
|
||||||
|
"label": "Повтаряне до отваряне на вратата"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Време за изчакване след падане на захранването, преди да се обяви цикълът за завършен. Ако захранването се възобнови в рамките на този прозорец, цикълът продължава безпроблемно - това свързва паузите между етапите на пране. Съдомиялните машини имат дълги фази на сушене (изключени за 20-60 минути), така че времето за изключване трябва да надвишава това, за да поддържа цялото измиване+сушене като един цикъл.",
|
"doc": "Време за изчакване след падане на захранването, преди да се обяви цикълът за завършен. Ако захранването се възобнови в рамките на този прозорец, цикълът продължава безпроблемно - това свързва паузите между етапите на пране. Съдомиялните машини имат дълги фази на сушене (изключени за 20-60 минути), така че времето за изключване трябва да надвишава това, за да поддържа цялото измиване+сушене като един цикъл.",
|
||||||
"label": "Закъснение при изключване"
|
"label": "Закъснение при изключване"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Острота на енергия",
|
"label": "Острота на енергия",
|
||||||
"doc": "Острота на санкцията за несъответствие на енергията в Етап 4. По-малко = по-строго: несъответствието на енергията снижава резултата повече. Стойността по подразбиране 0,25 е умишлено по-щедра от Остротата на продължителността, тъй като енергията варира с натоварването. Комбинирайте с Тежестта на енергията."
|
"doc": "Острота на санкцията за несъответствие на енергията в Етап 4. По-малко = по-строго: несъответствието на енергията снижава резултата повече. Стойността по подразбиране 0,25 е умишлено по-щедра от Остротата на продължителността, тъй като енергията варира с натоварването. Комбинирайте с Тежестта на енергията."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Интервал на профила на мощността",
|
||||||
|
"doc": "Размер на кофата за атрибута на сензора power_profile за всеки профил (плоски средни стойности в Вт за слот, използвани от външни планировчици като EMHASS и tibber_prices). По-малките кофи запазват кратките пикове на мощността остри; по-голямата кофа изглажда формата. По подразбиране 15 мин. Само за четене; не засяга откриването."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Запазване на живото известие при докосване",
|
||||||
|
"doc": "Само за Android. Направете известието за ход на живо постоянно (закачено), за да не го откажете при докосване. Изключено запазва поведението по подразбиране, при което докосването го откажва."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Цел при докосване на живото известие",
|
||||||
|
"doc": "Само за Android. Накъде отваря докосването на известието за ход на живо (напр. /lovelace/laundry или пълен URL адрес), вместо началната страница на приложението. Оставете празно за поведението по подразбиране."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Вратата се отваря автоматично в края",
|
||||||
|
"doc": "За съдомиялни, при които вратата се отваря в края на цикъла за сушене (AirDry и подобни). При включено, отварянето на вратата по време на работещ цикъл вече не го поставя на пауза завинаги; вместо това, ако вратата остане отворена за времето за изчакване по-долу, WashData третира цикъла като завършен. Краткото отваряне (добавяне на артикул) се игнорира. Изисква се обект на сензор за врата."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Изчакване при отворена врата",
|
||||||
|
"doc": "Колко дълго трябва вратата да остане отворена, преди WashData да приключи цикъла, когато \"Вратата се отваря автоматично в края\" е включено. Достатъчно дълго, за да игнорира бързото добавяне на съд (по подразбиране 60 с), достатъчно кратко, за да приключи бързо, когато машината отвори вратата."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Изисква се име",
|
"name_required": "Изисква се име",
|
||||||
"no_split_found": "Няма открити празни места, на които да се разцепи",
|
"no_split_found": "Няма открити празни места, на които да се разцепи",
|
||||||
"panel_settings_saved": "Настройките на панела са запазени",
|
"panel_settings_saved": "Настройките на панела са запазени",
|
||||||
|
"pg_preset_loaded": "Конфигурацията „{name}“ е заредена",
|
||||||
|
"pg_preset_saved": "Конфигурацията „{name}“ е запазена",
|
||||||
|
"pg_sugg_loaded": "Заредени {n} предложени стойности - стартирайте тестовата среда за сравнение",
|
||||||
|
"pg_sugg_ml_loaded": "Заредени {n} ML-калибрирани стойности - стартирайте тестовата среда за сравнение",
|
||||||
"phase_name_required": "Изисква се име на фаза",
|
"phase_name_required": "Изисква се име на фаза",
|
||||||
"phase_updated": "Фазата е актуализирана",
|
"phase_updated": "Фазата е актуализирана",
|
||||||
"phases_saved": "Фазите са запазени",
|
"phases_saved": "Фазите са запазени",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "Въз основа на минималната работна мощност ({min}W), наблюдавана в последния цикъл.",
|
"min_active": "Въз основа на минималната работна мощност ({min}W), наблюдавана в последния цикъл.",
|
||||||
"min_duration_ratio": "Задържано възможно най-ниско, за да се разпознае програмата рано в цикъла; праговете на достоверност и нееднозначност предотвратяват преждевременни потвърждения.",
|
"min_duration_ratio": "Задържано възможно най-ниско, за да се разпознае програмата рано в цикъла; праговете на достоверност и нееднозначност предотвратяват преждевременни потвърждения.",
|
||||||
"min_off_gap": "Въз основа на {gaps} наблюдавани интервала между циклите (p05={p05}s). Долна граница на уреда: {floor}s.",
|
"min_off_gap": "Въз основа на {gaps} наблюдавани интервала между циклите (p05={p05}s). Долна граница на уреда: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Оразмерено да покрие най-дългия тих участък в рамките на цикъла: {span}s + 60s буфер, от {spans} покрити интервала за {cycles} чисти цикъла (остава под вашия най-кратък интервал между две последователни стартирания, който е {ceiling}s).",
|
||||||
"min_power": "40 % от най-ниската работна мощност p05 ({p05}W) за {cycles} чисти цикъла, за да остане прагът на изключване под реалната консумация.{excl}",
|
"min_power": "40 % от най-ниската работна мощност p05 ({p05}W) за {cycles} чисти цикъла, за да остане прагът на изключване под реалната консумация.{excl}",
|
||||||
"ml_auto_label": "Най-ниската достоверност, която моделът за качество все още е оценил като чиста (p10 от {cycles} чисти цикъла = {p10}).",
|
"ml_auto_label": "Най-ниската достоверност, която моделът за качество все още е оценил като чиста (p10 от {cycles} чисти цикъла = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} цикъла ({pct}%) са имали пауза, оценена от детектора за край над 50 %; изисквай {val} потвърждение(я) за край.",
|
"ml_end_repeat": "{false}/{total} цикъла ({pct}%) са имали пауза, оценена от детектора за край над 50 %; изисквай {val} потвърждение(я) за край.",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Задържано точно над най-ниската работна мощност p05 за {cycles} цикъла ({p05}W), за да се улови стартът възможно най-рано и прагът на спиране да остане под най-ниската работна мощност на машината.",
|
"thr_batch": "Задържано точно над най-ниската работна мощност p05 за {cycles} цикъла ({p05}W), за да се улови стартът възможно най-рано и прагът на спиране да остане под най-ниската работна мощност на машината.",
|
||||||
"tol_per_profile": "p75 на дисперсията на продължителността по профил за {profiles} профила ({cycles} цикъла); стриктните профили не се санкционират.",
|
"tol_per_profile": "p75 на дисперсията на продължителността по профил за {profiles} профила ({cycles} цикъла); стриктните профили не се санкционират.",
|
||||||
"tol_pooled": "Въз основа на обединената дисперсия на продължителността на {cycles} скорошни етикетирани цикъла (p95 отклонение={dev}).",
|
"tol_pooled": "Въз основа на обединената дисперсия на продължителността на {cycles} скорошни етикетирани цикъла (p95 отклонение={dev}).",
|
||||||
"watchdog": "Задържано възможно най-ниско при запазена безопасност (3x интервала на обновяване p95 от {p95}s, мин. 30s), за да се улавят бързо блокиранията без фалшиви спирания."
|
"watchdog": "Задържано възможно най-ниско при запазена безопасност (малко над интервала на обновяване p95 от {p95}s, мин. 30s), за да се улавят бързо блокиранията без фалшиви спирания."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Изключени са {total} грешно открити цикъла: {parts}.",
|
"summary": "Изключени са {total} грешно открити цикъла: {parts}.",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Друго"
|
"other": "Друго"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Съдомиялна машина: секунди неактивност след очакваната продължителност, преди да се освободи изчакването за източване в края на цикъла",
|
||||||
"completion_min_seconds": "Най-краткото изпълнение, което се счита за истински цикъл",
|
"completion_min_seconds": "Най-краткото изпълнение, което се счита за истински цикъл",
|
||||||
"end_repeat_count": "Ниски отчитания поред преди приключване",
|
"end_repeat_count": "Ниски отчитания поред преди приключване",
|
||||||
"interrupted_min_seconds": "Кратки цикли се отбелязват като прекъснати",
|
"interrupted_min_seconds": "Кратки цикли се отбелязват като прекъснати",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entitet nije pronađen",
|
||||||
|
"running_long": "Traje predugo",
|
||||||
|
"remaining": "preostalo",
|
||||||
|
"progress": "napredak",
|
||||||
|
"show_time_remaining": "Prikaži preostalo vrijeme",
|
||||||
|
"show_percentage": "Prikaži postotak",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Pločica (kompaktno)",
|
||||||
|
"detail": "Detaljno (bogato)",
|
||||||
|
"glance": "Pregled (više uređaja)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pauziraj",
|
||||||
|
"resume": "Nastavi",
|
||||||
|
"terminate": "Završi ciklus",
|
||||||
|
"record_start": "Započni snimanje",
|
||||||
|
"record_stop": "Zaustavi snimanje",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Otvori WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Izgled",
|
||||||
|
"entity": "Entitet uređaja",
|
||||||
|
"entities": "Uređaji",
|
||||||
|
"title": "Naslov",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Prikaži stanje",
|
||||||
|
"show_program": "Prikaži program",
|
||||||
|
"show_progress_bar": "Prikaži traku napretka",
|
||||||
|
"spin_icon": "Vrti ikonu tokom rada",
|
||||||
|
"display_mode": "Red s detaljima",
|
||||||
|
"active_color": "Zamjena aktivne boje",
|
||||||
|
"show_phase": "Prikaži fazu",
|
||||||
|
"show_energy": "Prikaži energiju i trošak",
|
||||||
|
"show_anomaly": "Prikaži upozorenje o produženju",
|
||||||
|
"show_sparkline": "Prikaži grafikon snage uživo",
|
||||||
|
"buttons": "Dugmad za radnje",
|
||||||
|
"program_entity": "Entitet programa (zamjena)",
|
||||||
|
"time_entity": "Entitet vremena (zamjena)",
|
||||||
|
"pct_entity": "Entitet napretka (zamjena)",
|
||||||
|
"power_entity": "Entitet snage (zamjena)",
|
||||||
|
"tap_action": "Radnja dodira",
|
||||||
|
"hold_action": "Radnja držanja",
|
||||||
|
"double_tap_action": "Radnja dvostrukog dodira"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Otkrivene su {n} anomalije (npr. vrata otvorena sredinom ciklusa) – otvorite da ih vidite na grafikonu",
|
"artifact_tip": "Otkrivene su {n} anomalije (npr. vrata otvorena sredinom ciklusa) – otvorite da ih vidite na grafikonu",
|
||||||
"auto": "(automatski otkriveno)",
|
"auto": "(automatski otkriveno)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Odbaci",
|
"discard": "Odbaci",
|
||||||
"discard_tip": "Odbaci snimljeni trag bez pohrane",
|
"discard_tip": "Odbaci snimljeni trag bez pohrane",
|
||||||
"dismiss": "Odbaci",
|
"dismiss": "Odbaci",
|
||||||
|
"mute_suggestion": "Prestani predlagati ovu postavku",
|
||||||
|
"pg_load_calibrated": "Učitaj kalibrirano (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Učitava ML kalibrirane postavke kao zamjene u testnom okruženju",
|
||||||
|
"pg_load_live": "Učitaj aktivne postavke",
|
||||||
|
"pg_load_live_tip": "Ponovo pročitaj trenutne postavke integracije i odbaci sve izmjene u testnom okruženju",
|
||||||
|
"pg_load_suggested": "Učitaj prijedloge ({n})",
|
||||||
|
"pg_load_suggested_tip": "Učitava trenutne prijedloge automatskog podešavača kao zamjene u testnom okruženju",
|
||||||
|
"pg_preset_delete": "Izbriši konfiguraciju",
|
||||||
|
"pg_preset_load": "Učitaj konfiguraciju",
|
||||||
|
"pg_preset_load_tip": "Zamijeni vrijednosti u testnom okruženju ovom konfiguracijom (aktivne postavke ostaju netaknute)",
|
||||||
|
"pg_preset_save": "Sačuvaj kao konfiguraciju",
|
||||||
|
"pg_preset_save_tip": "Sačuvaj sve vrijednosti ispod kao imenovanu konfiguraciju za ovaj uređaj",
|
||||||
|
"pg_publish_all": "Primijeni {n} na integraciju",
|
||||||
|
"pg_publish_one": "Primijeni {label} na integraciju",
|
||||||
|
"reset_muted": "Poništi utišane",
|
||||||
"done": "Gotovo",
|
"done": "Gotovo",
|
||||||
"edit": "Uredi",
|
"edit": "Uredi",
|
||||||
"export": "Izvoz",
|
"export": "Izvoz",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Još nijedna automatizacija ne spominje ovaj uređaj.",
|
"no_automations": "Još nijedna automatizacija ne spominje ovaj uređaj.",
|
||||||
"panel_settings": "Postavke panela",
|
"panel_settings": "Postavke panela",
|
||||||
"param_sweep": "Ispitivanje parametra",
|
"param_sweep": "Ispitivanje parametra",
|
||||||
|
"pg_settings_source": "Izvor postavki",
|
||||||
"phase_catalog": "Katalog faza",
|
"phase_catalog": "Katalog faza",
|
||||||
"playground": "Testno okruženje",
|
"playground": "Testno okruženje",
|
||||||
"process_history": "Istorija procesa",
|
"process_history": "Istorija procesa",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Zadani nivo za korisnike koji nisu navedeni ispod",
|
"default_access_level": "Zadani nivo za korisnike koji nisu navedeni ispod",
|
||||||
"default_other": "Zadano (ostali uređaji)",
|
"default_other": "Zadano (ostali uređaji)",
|
||||||
"default_tab": "Podrazumevana kartica prilikom otvaranja panela",
|
"default_tab": "Podrazumevana kartica prilikom otvaranja panela",
|
||||||
|
"font_size": "Veličina fonta ploče",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Opis",
|
"description": "Opis",
|
||||||
"dtw_blend_w": "Težina miješanja",
|
"dtw_blend_w": "Težina miješanja",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Ocjena podudaranja",
|
"pg_match_score": "Ocjena podudaranja",
|
||||||
"pg_pct_of": "{p}% od {total}",
|
"pg_pct_of": "{p}% od {total}",
|
||||||
"pg_poor_match": "Loše podudaranje",
|
"pg_poor_match": "Loše podudaranje",
|
||||||
|
"pg_preset": "Konfiguracija testnog okruženja",
|
||||||
|
"pg_preset_name": "Naziv nove konfiguracije",
|
||||||
|
"pg_preset_none": "Odaberite konfiguraciju…",
|
||||||
"pg_strong_match": "Snažno podudaranje",
|
"pg_strong_match": "Snažno podudaranje",
|
||||||
"pg_tile_ambiguous": "Dvosmisleno",
|
"pg_tile_ambiguous": "Dvosmisleno",
|
||||||
"pg_tile_ambiguous_tip": "Ciklusi s gotovo izjednačenim podudaranjem između dva programa",
|
"pg_tile_ambiguous_tip": "Ciklusi s gotovo izjednačenim podudaranjem između dva programa",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Primijeniti najbolju vrijednost: {label} = {value}?",
|
"pg_apply_confirm": "Primijeniti najbolju vrijednost: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Odaberite ciklus iznad, zatim pritisnite „Učitaj“ da vidite njegovu krivu snage.",
|
"pg_canvas_empty": "Odaberite ciklus iznad, zatim pritisnite „Učitaj“ da vidite njegovu krivu snage.",
|
||||||
"pg_chart_caption": "Stopa detekcije/podudaranja po vrijednostima {param}",
|
"pg_chart_caption": "Stopa detekcije/podudaranja po vrijednostima {param}",
|
||||||
|
"pg_ctrl_intro": "Vrijednosti polaze od aktivnih postavki integracije za ovaj uređaj. Izmjene ostaju u testnom okruženju dok ih ne primijenite.",
|
||||||
|
"pg_live_unavailable": "Aktivne postavke nisu dostupne, prikazane su zadane vrijednosti.",
|
||||||
|
"pg_load_live_confirm": "Odbaciti izmjene u testnom okruženju ({n}) i ponovo učitati trenutne postavke integracije?",
|
||||||
"pg_match_rate": "{pct}% podudaranja na {total} ciklusa",
|
"pg_match_rate": "{pct}% podudaranja na {total} ciklusa",
|
||||||
|
"pg_matches_live": "Odgovara aktivnim postavkama",
|
||||||
|
"pg_n_changed": "Promjene u odnosu na aktivne postavke: {n}",
|
||||||
|
"pg_sugg_none": "Svi prijedlozi već odgovaraju trenutnim postavkama",
|
||||||
|
"pg_preset_delete_confirm": "Izbrisati konfiguraciju \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Dostignut limit konfiguracija ({n})",
|
||||||
|
"pg_preset_overwrite": "Prepisati konfiguraciju \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Sačuvati {label} = {value} u postavke ovog uređaja?",
|
||||||
"pg_restart_note": "Ponovo pokrenite Home Assistant da omogućite alate za simulaciju.",
|
"pg_restart_note": "Ponovo pokrenite Home Assistant da omogućite alate za simulaciju.",
|
||||||
"pg_sim_progress": "{done} / {total} ciklusa",
|
"pg_sim_progress": "{done} / {total} ciklusa",
|
||||||
"pg_starting": "Pokretanje…",
|
"pg_starting": "Pokretanje…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Preference, panel i kontrola pristupa",
|
"preferences_admin": "Preference, panel i kontrola pristupa",
|
||||||
"preferences_adv": "Postavke",
|
"preferences_adv": "Postavke",
|
||||||
"prefs_personal": "Ovo se odnosi samo na vaš račun Home Assistant.",
|
"prefs_personal": "Ovo se odnosi samo na vaš račun Home Assistant.",
|
||||||
|
"font_size_hint": "Povećajte ili smanjite sve u ovoj ploči. Primjenjuje se na vaš račun na ovom uređaju.",
|
||||||
"process_history_hint": "Ponovo pokrenite uparivanje na svim pohranjenim ciklusima, osvježite prijedloge podešavanja, ponovo trenirajte ML modele (ako su omogućeni) i preračunajte zdravlje ciklusa. Pokrenite nakon niza recenzija.",
|
"process_history_hint": "Ponovo pokrenite uparivanje na svim pohranjenim ciklusima, osvježite prijedloge podešavanja, ponovo trenirajte ML modele (ako su omogućeni) i preračunajte zdravlje ciklusa. Pokrenite nakon niza recenzija.",
|
||||||
"profile_deleted": "Profil izbrisan",
|
"profile_deleted": "Profil izbrisan",
|
||||||
"profile_poor_health_detail": "Ciklusi koji su dodijeljeni ovom profilu imaju nedosljedne oblike ili nisku pouzdanost. Razmislite o ponovnoj izgradnji omotača ili pregledu označenih ciklusa.",
|
"profile_poor_health_detail": "Ciklusi koji su dodijeljeni ovom profilu imaju nedosljedne oblike ili nisku pouzdanost. Razmislite o ponovnoj izgradnji omotača ili pregledu označenih ciklusa.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Kliknite na grafikon da biste dodali ili uklonili tačku razdvajanja, ili automatsko otkrivanje po prazninama u mirovanju. Svaki rezultujući segment može dobiti svoj profil.",
|
"split_intro": "Kliknite na grafikon da biste dodali ili uklonili tačku razdvajanja, ili automatsko otkrivanje po prazninama u mirovanju. Svaki rezultujući segment može dobiti svoj profil.",
|
||||||
"storage_diagnostics": "Statistika pohrane, održavanje, izvoz/uvoz",
|
"storage_diagnostics": "Statistika pohrane, održavanje, izvoz/uvoz",
|
||||||
"sug_staged": "Postavljeno {key} = {val}. Sačuvajte za primjenu.",
|
"sug_staged": "Postavljeno {key} = {val}. Sačuvajte za primjenu.",
|
||||||
|
"sug_muted": "Ova postavka više neće biti predlagana",
|
||||||
|
"sug_mute_failed": "Nije moguće utišati prijedlog",
|
||||||
|
"sug_unmuted_all": "Utišani prijedlozi poništeni",
|
||||||
|
"n_suggestions_muted": "{count} utišano; automatski podešavač neće predlagati ove postavke.",
|
||||||
"toast_auto_detect_enabled": "Automatsko prepoznavanje omogućeno",
|
"toast_auto_detect_enabled": "Automatsko prepoznavanje omogućeno",
|
||||||
"toast_auto_label_complete": "Automatsko označavanje završeno",
|
"toast_auto_label_complete": "Automatsko označavanje završeno",
|
||||||
"toast_auto_label_failed": "Automatsko označavanje neuspješno: {error}",
|
"toast_auto_label_failed": "Automatsko označavanje neuspješno: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Trajanje trenda kraće ({pct}%/ciklus) – nedavno prosječno {avg}",
|
"trend_duration_shorter": "Trajanje trenda kraće ({pct}%/ciklus) – nedavno prosječno {avg}",
|
||||||
"trend_energy_down": "Opadanje energije ({pct}%/ciklus)",
|
"trend_energy_down": "Opadanje energije ({pct}%/ciklus)",
|
||||||
"trend_energy_up": "Energetski trend porasta ({pct}%/ciklus) – nedavni prosjek {avg}",
|
"trend_energy_up": "Energetski trend porasta ({pct}%/ciklus) – nedavni prosjek {avg}",
|
||||||
|
"trim_destructive_confirm": "Ovo zadržava samo {pct}% ciklusa i ne može se poništiti. Nastaviti?",
|
||||||
"trim_intro": "Prevucite crvene ručke ili unesite vrijednosti. Sve van prozora je uklonjeno.",
|
"trim_intro": "Prevucite crvene ručke ili unesite vrijednosti. Sve van prozora je uklonjeno.",
|
||||||
"tuning_suggestions_available": "{count} prijedlog podešavanja dostupan je iz posmatranih ciklusa. Pojavljuju se pored relevantnih polja.",
|
"tuning_suggestions_available": "{count} prijedlog podešavanja dostupan je iz posmatranih ciklusa. Pojavljuju se pored relevantnih polja.",
|
||||||
"unsure_detected_prefix": "WashData nije siguran da je otkriven",
|
"unsure_detected_prefix": "WashData nije siguran da je otkriven",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Neupotrebljivo"
|
"unusable": "Neupotrebljivo"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Mašina za pranje posuđa",
|
||||||
|
"intro": "Obrada kraja ciklusa za mašine za pranje posuđa, koje obično završavaju dugom, gotovo tihom fazom sušenja prije kratkog završnog ispumpavanja vode."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Mod anti-gužvanja/anti-nabora otkriva impulse bubnjevanja niske snage nakon glavne faze i drži ih vezane za završeni ciklus.",
|
"intro": "Mod anti-gužvanja/anti-nabora otkriva impulse bubnjevanja niske snage nakon glavne faze i drži ih vezane za završeni ciklus.",
|
||||||
"label": "Anti-gužvanje"
|
"label": "Anti-gužvanje"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Otpuštanje nakon tihe faze sušenja",
|
||||||
|
"doc": "Kada ciklus pređe svoje očekivano trajanje, koliko dugo mašina mora ostati tiha (ispod Praga zaustavljanja) prije nego što WashData prestane čekati na završno ispumpavanje vode i završi ciklus. Povećajte ako vaš uređaj ima dugu tihu fazu sušenja prije kasnog završnog ispumpavanja koje se propušta - šire okno omogućava da naučeno trajanje prati sezonske promjene (hladnija dovodna voda = duži ciklusi) umjesto da ostane zaključano na staroj prosječnoj vrijednosti. Čekanje samo skraćuje u odnosu na interno ograničenje završnog ispumpavanja od 30 minuta, nikada ga ne produžava."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Prepoznajte kratke impulse male snage koje sušilica emituje nakon glavne faze zagrijavanja i držite ih priključene na završeni ciklus umjesto da ih čitate kao nove cikluse.",
|
"doc": "Prepoznajte kratke impulse male snage koje sušilica emituje nakon glavne faze zagrijavanja i držite ih priključene na završeni ciklus umjesto da ih čitate kao nove cikluse.",
|
||||||
"label": "Omogućiti detekciju anti-gužvanja"
|
"label": "Omogućiti detekciju anti-gužvanja"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Nekoliko minuta nakon završetka ciklusa prije slanja podsjetnika \"istovarite mašinu\" koji još uvijek čeka. Postavite 0 da onemogućite podsjetnik.",
|
"doc": "Nekoliko minuta nakon završetka ciklusa prije slanja podsjetnika \"istovarite mašinu\" koji još uvijek čeka. Postavite 0 da onemogućite podsjetnik.",
|
||||||
"label": "Kašnjenje podsjetnika za istovar"
|
"label": "Kašnjenje podsjetnika za istovar"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Ponovo šalje podsjetnik za istovar svakih \"Kašnjenje podsjetnika za istovar\" minuta dok ne otvorite vrata ili ne dodirnete \"Prestani podsjećati\" na obavijesti. Zahtijeva Entitet senzora vrata (kao i sam podsjetnik). Dugme za odbacivanje radi na obavijestima mobilne aplikacije Home Assistant (companion app).",
|
||||||
|
"label": "Ponavljaj dok se vrata ne otvore"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Vrijeme čekanja nakon pada struje prije nego što se ciklus proglasi završenim. Ako se napajanje nastavi unutar ovog prozora, ciklus se nastavlja neometano - ovo premošćuje pauze između faza pranja. Mašine za pranje posuđa imaju duge faze sušenja (isključenje na 20-60 min) tako da kašnjenje isključenja mora premašiti to da bi se cijelo pranje+sušilo kao jedan ciklus.",
|
"doc": "Vrijeme čekanja nakon pada struje prije nego što se ciklus proglasi završenim. Ako se napajanje nastavi unutar ovog prozora, ciklus se nastavlja neometano - ovo premošćuje pauze između faza pranja. Mašine za pranje posuđa imaju duge faze sušenja (isključenje na 20-60 min) tako da kašnjenje isključenja mora premašiti to da bi se cijelo pranje+sušilo kao jedan ciklus.",
|
||||||
"label": "Kašnjenje isključivanja"
|
"label": "Kašnjenje isključivanja"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Ostrina energije",
|
"label": "Ostrina energije",
|
||||||
"doc": "Oštrina kazne za nepodudaranje energije u Fazi 4. Manje = strože: nepodudaranje energije više snižava ocjenu. Zadana vrijednost 0,25 je namjerno blaža od Oštrine trajanja jer energija varira s opterećenjem. Koristite zajedno s Težinom energije."
|
"doc": "Oštrina kazne za nepodudaranje energije u Fazi 4. Manje = strože: nepodudaranje energije više snižava ocjenu. Zadana vrijednost 0,25 je namjerno blaža od Oštrine trajanja jer energija varira s opterećenjem. Koristite zajedno s Težinom energije."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interval profila snage",
|
||||||
|
"doc": "Veličina segmenta za atribut senzora power_profile po profilu (polje prosječnih vata po slotu koje koriste vanjski planeri poput EMHASS i tibber_prices). Manji segmenti zadržavaju kratke skokove snage oštrima; veći segmenti zaglađuju oblik. Zadano 15 min. Samo za čitanje; ne utječe na otkrivanje."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Zadrži živo obavještenje pri dodiru",
|
||||||
|
"doc": "Samo Android. Živo obavještenje o napretku postavite kao trajno (prikvačeno) kako dodir ne bi odbacio aktivnu nit. Isključeno zadržava zadano ponašanje gdje dodir odbacuje obavještenje."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Odredište dodira na živom obavještenju",
|
||||||
|
"doc": "Samo Android. Gdje dodir na živo obavještenje o napretku otvara (npr. /lovelace/laundry ili cijeli URL) umjesto početne stranice aplikacije. Ostavite prazno za zadano."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Vrata se automatski otvaraju na kraju",
|
||||||
|
"doc": "Za mašine za pranje sudova koje na kraju ciklusa otvaraju vrata radi sušenja (AirDry i slično). Kada je uključeno, otvaranje vrata za vrijeme pokrenuta ciklusa više ne zaustavlja ciklus zauvijek; ako vrata ostanu otvorena koliko je navedeno ispod, WashData smatra ciklus završenim. Kratko otvaranje (dodavanje predmeta) se zanemaruje. Zahtijeva entitet senzora vrata."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Zadržavanje otvorenih vrata za završetak",
|
||||||
|
"doc": "Koliko dugo vrata moraju ostati otvorena prije nego WashData završi ciklus, kada je uključena postavka \"Vrata se automatski otvaraju na kraju\". Dovoljno dugo da se ignorira brzo dodavanje posuđa (zadano 60 s), dovoljno kratko za brz završetak kad mašina otvori vrata."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1592,6 +1708,7 @@
|
|||||||
"min_active": "Na osnovu najmanje radne snage ({min}W) uočene u posljednjem ciklusu.",
|
"min_active": "Na osnovu najmanje radne snage ({min}W) uočene u posljednjem ciklusu.",
|
||||||
"min_duration_ratio": "Zadržano što nižim kako bi se program prepoznao rano u ciklusu; pragovi pouzdanosti i dvosmislenosti sprečavaju prijevremene potvrde.",
|
"min_duration_ratio": "Zadržano što nižim kako bi se program prepoznao rano u ciklusu; pragovi pouzdanosti i dvosmislenosti sprečavaju prijevremene potvrde.",
|
||||||
"min_off_gap": "Na osnovu {gaps} uočenih razmaka između ciklusa (p05={p05}s). Donja granica uređaja: {floor}s.",
|
"min_off_gap": "Na osnovu {gaps} uočenih razmaka između ciklusa (p05={p05}s). Donja granica uređaja: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Postavljeno tako da premosti najduži tihi odsječak unutar ciklusa: {span}s + 60s rezerve, iz {spans} premoštenih razmaka kroz {cycles} čistih ciklusa (ostaje ispod vašeg najkraćeg razmaka između dva uzastopna pokretanja, koji iznosi {ceiling}s).",
|
||||||
"min_power": "40 % najniže radne snage p05 ({p05}W) kroz {cycles} čistih ciklusa, čime prag isključenja ostaje ispod stvarne potrošnje.{excl}",
|
"min_power": "40 % najniže radne snage p05 ({p05}W) kroz {cycles} čistih ciklusa, čime prag isključenja ostaje ispod stvarne potrošnje.{excl}",
|
||||||
"ml_auto_label": "Najniža pouzdanost koju je model kvaliteta još ocijenio čistom (p10 od {cycles} čistih ciklusa = {p10}).",
|
"ml_auto_label": "Najniža pouzdanost koju je model kvaliteta još ocijenio čistom (p10 od {cycles} čistih ciklusa = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciklusa ({pct}%) imalo je pauzu koju je detektor kraja ocijenio sa >50 %; zahtijevaj {val} potvrdu(e) kraja.",
|
"ml_end_repeat": "{false}/{total} ciklusa ({pct}%) imalo je pauzu koju je detektor kraja ocijenio sa >50 %; zahtijevaj {val} potvrdu(e) kraja.",
|
||||||
@@ -1608,7 +1725,7 @@
|
|||||||
"thr_batch": "Zadržano tik iznad najniže radne snage p05 kroz {cycles} ciklusa ({p05}W) kako bi se početak uhvatio što ranije, a prag zaustavljanja ostao ispod najniže radne snage mašine.",
|
"thr_batch": "Zadržano tik iznad najniže radne snage p05 kroz {cycles} ciklusa ({p05}W) kako bi se početak uhvatio što ranije, a prag zaustavljanja ostao ispod najniže radne snage mašine.",
|
||||||
"tol_per_profile": "p75 varijanse trajanja po profilu kroz {profiles} profila ({cycles} ciklusa); dosljedni profili nisu kažnjeni.",
|
"tol_per_profile": "p75 varijanse trajanja po profilu kroz {profiles} profila ({cycles} ciklusa); dosljedni profili nisu kažnjeni.",
|
||||||
"tol_pooled": "Na osnovu objedinjene varijanse trajanja {cycles} novijih označenih ciklusa (p95 odstupanje={dev}).",
|
"tol_pooled": "Na osnovu objedinjene varijanse trajanja {cycles} novijih označenih ciklusa (p95 odstupanje={dev}).",
|
||||||
"watchdog": "Zadržano što nižim uz sigurnost (3x razmak ažuriranja p95 od {p95}s, najmanje 30s) kako bi se zastoji brzo uhvatili bez lažnih zaustavljanja."
|
"watchdog": "Zadržano što nižim uz sigurnost (tik iznad razmaka ažuriranja p95 od {p95}s, najmanje 30s) kako bi se zastoji brzo uhvatili bez lažnih zaustavljanja."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Isključeno {total} pogrešno otkrivenih ciklusa: {parts}.",
|
"summary": "Isključeno {total} pogrešno otkrivenih ciklusa: {parts}.",
|
||||||
@@ -1688,6 +1805,10 @@
|
|||||||
"name_required": "Potrebno je ime",
|
"name_required": "Potrebno je ime",
|
||||||
"no_split_found": "Nisu pronađeni praznini u praznom hodu za razdvajanje",
|
"no_split_found": "Nisu pronađeni praznini u praznom hodu za razdvajanje",
|
||||||
"panel_settings_saved": "Postavke panela su sačuvane",
|
"panel_settings_saved": "Postavke panela su sačuvane",
|
||||||
|
"pg_preset_loaded": "Konfiguracija \"{name}\" učitana",
|
||||||
|
"pg_preset_saved": "Konfiguracija \"{name}\" sačuvana",
|
||||||
|
"pg_sugg_loaded": "Učitano {n} predloženih vrijednosti - pokrenite testno okruženje za usporedbu",
|
||||||
|
"pg_sugg_ml_loaded": "Učitano {n} ML kalibriranih vrijednosti - pokrenite testno okruženje za usporedbu",
|
||||||
"phase_name_required": "Naziv faze je obavezan",
|
"phase_name_required": "Naziv faze je obavezan",
|
||||||
"phase_updated": "Faza ažurirana",
|
"phase_updated": "Faza ažurirana",
|
||||||
"phases_saved": "Faze su sačuvane",
|
"phases_saved": "Faze su sačuvane",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Ostalo"
|
"other": "Ostalo"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Mašina za pranje posuđa: sekunde tišine nakon očekivanog trajanja prije nego što se otpusti čekanje na završno ispumpavanje vode",
|
||||||
"anti_wrinkle_enabled": "Upij impulse bubnja nakon glavne faze, a ne čitaj ih kao nove cikluse",
|
"anti_wrinkle_enabled": "Upij impulse bubnja nakon glavne faze, a ne čitaj ih kao nove cikluse",
|
||||||
"anti_wrinkle_exit_power": "Snaga mora pasti ispod ove vrijednosti između impulsa da bi anti-gužvanje ostalo aktivno",
|
"anti_wrinkle_exit_power": "Snaga mora pasti ispod ove vrijednosti između impulsa da bi anti-gužvanje ostalo aktivno",
|
||||||
"anti_wrinkle_idle_timeout": "Dozvoljeno vrijeme mirovanja između dva impulsa bubnja prije nego što se anti-gužvanje završi",
|
"anti_wrinkle_idle_timeout": "Dozvoljeno vrijeme mirovanja između dva impulsa bubnja prije nego što se anti-gužvanje završi",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entita nenalezena",
|
||||||
|
"running_long": "Běží dlouho",
|
||||||
|
"remaining": "zbývá",
|
||||||
|
"progress": "postup",
|
||||||
|
"show_time_remaining": "Zobrazit zbývající čas",
|
||||||
|
"show_percentage": "Zobrazit procenta",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Dlaždice (kompaktní)",
|
||||||
|
"detail": "Detail (podrobný)",
|
||||||
|
"glance": "Přehled (více zařízení)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pozastavit",
|
||||||
|
"resume": "Pokračovat",
|
||||||
|
"terminate": "Ukončit cyklus",
|
||||||
|
"record_start": "Spustit záznam",
|
||||||
|
"record_stop": "Zastavit záznam",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Otevřít WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Rozvržení",
|
||||||
|
"entity": "Entita spotřebiče",
|
||||||
|
"entities": "Spotřebiče",
|
||||||
|
"title": "Název",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Zobrazit stav",
|
||||||
|
"show_program": "Zobrazit program",
|
||||||
|
"show_progress_bar": "Zobrazit ukazatel průběhu",
|
||||||
|
"spin_icon": "Otáčet ikonu během běhu",
|
||||||
|
"display_mode": "Řádek s detaily",
|
||||||
|
"active_color": "Přepsání aktivní barvy",
|
||||||
|
"show_phase": "Zobrazit fázi",
|
||||||
|
"show_energy": "Zobrazit energii a náklady",
|
||||||
|
"show_anomaly": "Zobrazit varování o překročení",
|
||||||
|
"show_sparkline": "Zobrazit živý graf výkonu",
|
||||||
|
"buttons": "Akční tlačítka",
|
||||||
|
"program_entity": "Entita programu (přepsání)",
|
||||||
|
"time_entity": "Entita času (přepsání)",
|
||||||
|
"pct_entity": "Entita postupu (přepsání)",
|
||||||
|
"power_entity": "Entita výkonu (přepsání)",
|
||||||
|
"tap_action": "Akce klepnutí",
|
||||||
|
"hold_action": "Akce podržení",
|
||||||
|
"double_tap_action": "Akce dvojitého klepnutí"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Zjištěno {n} anomálií (např. dveře otevřené uprostřed cyklu) – otevřete, abyste je viděli na grafu",
|
"artifact_tip": "Zjištěno {n} anomálií (např. dveře otevřené uprostřed cyklu) – otevřete, abyste je viděli na grafu",
|
||||||
"auto": "(automaticky zjištěno)",
|
"auto": "(automaticky zjištěno)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Vyřadit",
|
"discard": "Vyřadit",
|
||||||
"discard_tip": "Vyřadit zaznamenaný průběh bez uložení",
|
"discard_tip": "Vyřadit zaznamenaný průběh bez uložení",
|
||||||
"dismiss": "Propustit",
|
"dismiss": "Propustit",
|
||||||
|
"mute_suggestion": "Přestat navrhovat toto nastavení",
|
||||||
|
"pg_load_calibrated": "Načíst kalibrované (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Načíst nastavení kalibrovaná ML jako přepsání v testovacím prostředí",
|
||||||
|
"pg_load_live": "Načíst aktivní nastavení",
|
||||||
|
"pg_load_live_tip": "Znovu načíst aktuální nastavení integrace a zahodit všechny úpravy v testovacím prostředí",
|
||||||
|
"pg_load_suggested": "Načíst navrhované ({n})",
|
||||||
|
"pg_load_suggested_tip": "Načíst aktuální návrhy automatického ladění jako přepsání v testovacím prostředí",
|
||||||
|
"pg_preset_delete": "Smazat přednastavení",
|
||||||
|
"pg_preset_load": "Načíst přednastavení",
|
||||||
|
"pg_preset_load_tip": "Nahradit hodnoty v testovacím prostředí tímto přednastavením (aktivní nastavení zůstane beze změny)",
|
||||||
|
"pg_preset_save": "Uložit jako přednastavení",
|
||||||
|
"pg_preset_save_tip": "Uložit všechny hodnoty níže jako pojmenované přednastavení pro toto zařízení",
|
||||||
|
"pg_publish_all": "Uložit do integrace ({n})",
|
||||||
|
"pg_publish_one": "Uložit {label} do integrace",
|
||||||
|
"reset_muted": "Obnovit skryté",
|
||||||
"done": "Hotovo",
|
"done": "Hotovo",
|
||||||
"edit": "Upravit",
|
"edit": "Upravit",
|
||||||
"export": "Exportovat",
|
"export": "Exportovat",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Na toto zařízení zatím neodkazuje žádná automatizace.",
|
"no_automations": "Na toto zařízení zatím neodkazuje žádná automatizace.",
|
||||||
"panel_settings": "Nastavení panelu",
|
"panel_settings": "Nastavení panelu",
|
||||||
"param_sweep": "Prohledávání parametru",
|
"param_sweep": "Prohledávání parametru",
|
||||||
|
"pg_settings_source": "Zdroj nastavení",
|
||||||
"phase_catalog": "Katalog fází",
|
"phase_catalog": "Katalog fází",
|
||||||
"playground": "Testovací prostředí",
|
"playground": "Testovací prostředí",
|
||||||
"process_history": "Historie procesu",
|
"process_history": "Historie procesu",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Výchozí úroveň pro uživatele, kteří nejsou uvedeni níže",
|
"default_access_level": "Výchozí úroveň pro uživatele, kteří nejsou uvedeni níže",
|
||||||
"default_other": "Výchozí (ostatní zařízení)",
|
"default_other": "Výchozí (ostatní zařízení)",
|
||||||
"default_tab": "Výchozí karta při otevření panelu",
|
"default_tab": "Výchozí karta při otevření panelu",
|
||||||
|
"font_size": "Velikost písma panelu",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Popis",
|
"description": "Popis",
|
||||||
"dtw_blend_w": "Váha směsi",
|
"dtw_blend_w": "Váha směsi",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Skóre shody",
|
"pg_match_score": "Skóre shody",
|
||||||
"pg_pct_of": "{p}% z {total}",
|
"pg_pct_of": "{p}% z {total}",
|
||||||
"pg_poor_match": "Špatná shoda",
|
"pg_poor_match": "Špatná shoda",
|
||||||
|
"pg_preset": "Přednastavení testovacího prostředí",
|
||||||
|
"pg_preset_name": "Název nového přednastavení",
|
||||||
|
"pg_preset_none": "Vyberte přednastavení…",
|
||||||
"pg_strong_match": "Silná shoda",
|
"pg_strong_match": "Silná shoda",
|
||||||
"pg_tile_ambiguous": "Nejednoznačné",
|
"pg_tile_ambiguous": "Nejednoznačné",
|
||||||
"pg_tile_ambiguous_tip": "Cykly s téměř shodným výsledkem mezi dvěma programy",
|
"pg_tile_ambiguous_tip": "Cykly s téměř shodným výsledkem mezi dvěma programy",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Použít nejlepší hodnotu: {label} = {value}?",
|
"pg_apply_confirm": "Použít nejlepší hodnotu: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Vyberte cyklus výše a poté stiskněte Načíst pro zobrazení jeho průběhu výkonu.",
|
"pg_canvas_empty": "Vyberte cyklus výše a poté stiskněte Načíst pro zobrazení jeho průběhu výkonu.",
|
||||||
"pg_chart_caption": "Míra detekce/shody v závislosti na hodnotách {param}",
|
"pg_chart_caption": "Míra detekce/shody v závislosti na hodnotách {param}",
|
||||||
|
"pg_ctrl_intro": "Hodnoty vycházejí z aktivního nastavení integrace pro toto zařízení. Úpravy zůstávají v testovacím prostředí, dokud je neuložíte do integrace.",
|
||||||
|
"pg_live_unavailable": "Aktivní nastavení není k dispozici, zobrazují se výchozí hodnoty.",
|
||||||
|
"pg_load_live_confirm": "Zahodit úpravy v testovacím prostředí ({n}) a znovu načíst aktuální nastavení integrace?",
|
||||||
"pg_match_rate": "{pct}% míra shody na {total} cyklech",
|
"pg_match_rate": "{pct}% míra shody na {total} cyklech",
|
||||||
|
"pg_matches_live": "Odpovídá aktivnímu nastavení",
|
||||||
|
"pg_n_changed": "Změněno oproti aktivnímu nastavení: {n}",
|
||||||
|
"pg_sugg_none": "Všechny návrhy již odpovídají aktuálnímu nastavení",
|
||||||
|
"pg_preset_delete_confirm": "Smazat přednastavení \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Dosažen limit přednastavení ({n})",
|
||||||
|
"pg_preset_overwrite": "Přepsat přednastavení \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Uložit {label} = {value} do nastavení tohoto zařízení?",
|
||||||
"pg_restart_note": "Restartujte Home Assistant, abyste povolili nástroje simulace.",
|
"pg_restart_note": "Restartujte Home Assistant, abyste povolili nástroje simulace.",
|
||||||
"pg_sim_progress": "{done} / {total} cyklů",
|
"pg_sim_progress": "{done} / {total} cyklů",
|
||||||
"pg_starting": "Spouštění…",
|
"pg_starting": "Spouštění…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Předvolby, panel a řízení přístupu",
|
"preferences_admin": "Předvolby, panel a řízení přístupu",
|
||||||
"preferences_adv": "Předvolby",
|
"preferences_adv": "Předvolby",
|
||||||
"prefs_personal": "Platí pouze pro váš účet Home Assistant.",
|
"prefs_personal": "Platí pouze pro váš účet Home Assistant.",
|
||||||
|
"font_size_hint": "Zvětšete nebo zmenšete vše v tomto panelu. Platí pro váš účet na tomto zařízení.",
|
||||||
"process_history_hint": "Znovu spustí párování na všech uložených cyklech, obnoví návrhy ladění, přetrénuje modely ML (je-li povoleno) a přepočítá zdraví cyklů. Spusťte po skupině revizí.",
|
"process_history_hint": "Znovu spustí párování na všech uložených cyklech, obnoví návrhy ladění, přetrénuje modely ML (je-li povoleno) a přepočítá zdraví cyklů. Spusťte po skupině revizí.",
|
||||||
"profile_deleted": "Profil smazán",
|
"profile_deleted": "Profil smazán",
|
||||||
"profile_poor_health_detail": "Cykly přiřazené k tomuto profilu mají nekonzistentní tvary nebo nízkou spolehlivost. Zvažte přestavbu obálky nebo revizi označených cyklů.",
|
"profile_poor_health_detail": "Cykly přiřazené k tomuto profilu mají nekonzistentní tvary nebo nízkou spolehlivost. Zvažte přestavbu obálky nebo revizi označených cyklů.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Kliknutím na graf přidáte nebo odstraníte dělicí bod nebo automaticky rozpoznáte mezery v nečinnosti. Každý výsledný segment může získat svůj vlastní profil.",
|
"split_intro": "Kliknutím na graf přidáte nebo odstraníte dělicí bod nebo automaticky rozpoznáte mezery v nečinnosti. Každý výsledný segment může získat svůj vlastní profil.",
|
||||||
"storage_diagnostics": "Statistiky úložiště, údržba, export/import",
|
"storage_diagnostics": "Statistiky úložiště, údržba, export/import",
|
||||||
"sug_staged": "Nastaveno {key} = {val}. Uložte pro použití.",
|
"sug_staged": "Nastaveno {key} = {val}. Uložte pro použití.",
|
||||||
|
"sug_muted": "Toto nastavení již nebude navrhováno",
|
||||||
|
"sug_mute_failed": "Skrytí návrhu se nezdařilo",
|
||||||
|
"sug_unmuted_all": "Skryté návrhy obnoveny",
|
||||||
|
"n_suggestions_muted": "{count} skrytých; automatický ladicí nástroj tato nastavení nebude navrhovat.",
|
||||||
"toast_auto_detect_enabled": "Automatické rozpoznávání povoleno",
|
"toast_auto_detect_enabled": "Automatické rozpoznávání povoleno",
|
||||||
"toast_auto_label_complete": "Automatické označování dokončeno",
|
"toast_auto_label_complete": "Automatické označování dokončeno",
|
||||||
"toast_auto_label_failed": "Automatické označování selhalo: {error}",
|
"toast_auto_label_failed": "Automatické označování selhalo: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Trendy kratší ({pct} %/cyklus) – poslední průměr {avg}",
|
"trend_duration_shorter": "Trendy kratší ({pct} %/cyklus) – poslední průměr {avg}",
|
||||||
"trend_energy_down": "Energetický trend klesá ({pct} %/cyklus)",
|
"trend_energy_down": "Energetický trend klesá ({pct} %/cyklus)",
|
||||||
"trend_energy_up": "Trend energie stoupá ({pct} %/cyklus) – poslední průměr {avg}",
|
"trend_energy_up": "Trend energie stoupá ({pct} %/cyklus) – poslední průměr {avg}",
|
||||||
|
"trim_destructive_confirm": "Tímto zůstane jen {pct}% cyklu a akci nelze vrátit zpět. Pokračovat?",
|
||||||
"trim_intro": "Přetáhněte červené úchyty nebo zadejte hodnoty. Vše mimo okno je odstraněno.",
|
"trim_intro": "Přetáhněte červené úchyty nebo zadejte hodnoty. Vše mimo okno je odstraněno.",
|
||||||
"tuning_suggestions_available": "{count} návrh ladění dostupný z pozorovaných cyklů. Zobrazují se vedle příslušných polí.",
|
"tuning_suggestions_available": "{count} návrh ladění dostupný z pozorovaných cyklů. Zobrazují se vedle příslušných polí.",
|
||||||
"unsure_detected_prefix": "WashData si není jistý, zda jej detekoval",
|
"unsure_detected_prefix": "WashData si není jistý, zda jej detekoval",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Nepoužitelný"
|
"unusable": "Nepoužitelný"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Myčka nádobí",
|
||||||
|
"intro": "Zpracování konce cyklu u myček nádobí, které obvykle končí dlouhou téměř tichou fází sušení před krátkým závěrečným odčerpáním vody."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Režim ochrany před zmačkáním detekuje krátké pulzy nízkého výkonu po hlavní fázi a připojuje je k dokončenému cyklu.",
|
"intro": "Režim ochrany před zmačkáním detekuje krátké pulzy nízkého výkonu po hlavní fázi a připojuje je k dokončenému cyklu.",
|
||||||
"label": "Ochrana před zmačkáním"
|
"label": "Ochrana před zmačkáním"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Uvolnění po tiché fázi sušení",
|
||||||
|
"doc": "Jakmile cyklus překročí svou očekávanou dobu trvání, jak dlouho musí myčka zůstat v klidu (pod Prahem zastavení), než WashData přestane čekat na závěrečné odčerpání vody a ukončí cyklus. Zvyšte hodnotu, pokud má váš spotřebič dlouhou tichou fázi sušení před pozdním závěrečným odčerpáním, které uniká detekci - širší okno umožňuje, aby naučená doba trvání sledovala sezonní posun (studenější přiváděná voda = delší cykly) místo toho, aby zůstala uzamčená na starém průměru. Čekání pouze zkracuje vzhledem k internímu 30minutovému limitu čekání na závěrečné odčerpání, nikdy jej neprodlužuje."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Rozpoznejte krátké impulzy s nízkým příkonem, které sušič emituje po hlavní tepelné fázi, a udržte je připojené k dokončenému cyklu místo čtení jako nové cykly.",
|
"doc": "Rozpoznejte krátké impulzy s nízkým příkonem, které sušič emituje po hlavní tepelné fázi, a udržte je připojené k dokončenému cyklu místo čtení jako nové cykly.",
|
||||||
"label": "Povolit detekci ochrany před zmačkáním"
|
"label": "Povolit detekci ochrany před zmačkáním"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Minuty po ukončení cyklu před odesláním stále čekající připomínky \"vyloučit stroj\". Nastavte 0 pro vypnutí připomínky.",
|
"doc": "Minuty po ukončení cyklu před odesláním stále čekající připomínky \"vyloučit stroj\". Nastavte 0 pro vypnutí připomínky.",
|
||||||
"label": "Zpoždění připomínky vyložení"
|
"label": "Zpoždění připomínky vyložení"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Znovu odesílá připomínku vyložení každých \"Zpoždění připomínky vyložení\" minut, dokud neotevřete dveře nebo v oznámení neklepnete na \"Přestat připomínat\". Vyžaduje Entitu senzoru dveří (stejně jako samotná připomínka). Tlačítko pro zrušení funguje u oznámení mobilní aplikace Home Assistant (companion app).",
|
||||||
|
"label": "Opakovat, dokud se neotevřou dveře"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Čas čekání po poklesu příkonu před vyhlášením ukončení cyklu. Pokud se příkon obnoví v tomto okně, cyklus plynule pokračuje – to přemostí pauzy mezi fázemi praní. Myčky nádobí mají dlouhé fáze sušení (příkon vypnut po dobu 20–60 minut), takže zpozdění vypnutí musí tuto dobu překročit, aby byl celkový cyklus mytí+sušení zachován jako jeden.",
|
"doc": "Čas čekání po poklesu příkonu před vyhlášením ukončení cyklu. Pokud se příkon obnoví v tomto okně, cyklus plynule pokračuje – to přemostí pauzy mezi fázemi praní. Myčky nádobí mají dlouhé fáze sušení (příkon vypnut po dobu 20–60 minut), takže zpozdění vypnutí musí tuto dobu překročit, aby byl celkový cyklus mytí+sušení zachován jako jeden.",
|
||||||
"label": "Zpoždění vypnutí"
|
"label": "Zpoždění vypnutí"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Ostrost energie",
|
"label": "Ostrost energie",
|
||||||
"doc": "Ostrost penalizace za neshodu energie ve Fázi 4. Menší = přísnější: neshoda energie více snižuje skóre. Výchozí hodnota 0,25 je záměrně benevolentnější než Ostrost délky trvání, protože energie se liší podle zátěže. Kombinujte s Váhou energie."
|
"doc": "Ostrost penalizace za neshodu energie ve Fázi 4. Menší = přísnější: neshoda energie více snižuje skóre. Výchozí hodnota 0,25 je záměrně benevolentnější než Ostrost délky trvání, protože energie se liší podle zátěže. Kombinujte s Váhou energie."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interval výkonového profilu",
|
||||||
|
"doc": "Velikost segmentu pro atribut senzoru power_profile pro daný profil (plochá sada průměrných wattů za slot spotřebovaná externími plánovači jako EMHASS a tibber_prices). Menší segmenty zachovávají krátké výkonové špičky ostré; větší segmenty vyhlazují tvar. Výchozí 15 min. Pouze při načítání; neovlivňuje detekci."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Zachovat živé oznámení po klepnutí",
|
||||||
|
"doc": "Pouze Android. Živé oznámení průběhu nastavte jako trvalé (přilepené), aby jeho klepnutím nedošlo k zavření průběžného vlákna. Vypnuto zachovává výchozí chování, kdy klepnutí oznámení zavře."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Cíl klepnutí na živé oznámení",
|
||||||
|
"doc": "Pouze Android. Kam klepnutí na živé oznámení průběhu otevře (např. /lovelace/laundry nebo celá URL) namísto vstupní stránky aplikace. Ponechte prázdné pro výchozí nastavení."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Dveře se na konci automaticky otevřou",
|
||||||
|
"doc": "Pro myčky nádobí, které na konci cyklu otevřou dveře za účelem sušení (AirDry a podobné). Při zapnuté funkci otevření dveří za běhu cyklu již nezastaví cyklus natrvalo; pokud dveře zůstanou otevřené po dobu čekání níže, WashData cyklus ukončí. Krátké otevření (přidání předmětu) je ignorováno. Vyžaduje entitu senzoru dveří."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Čekání na otevření dveří pro ukončení",
|
||||||
|
"doc": "Jak dlouho musí dveře zůstat otevřené, než WashData ukončí cyklus, pokud je zapnuta funkce \"Dveře se na konci automaticky otevřou\". Dostatečně dlouhé k ignorování rychlého přidání nádobí (výchozí 60 s), dostatečně krátké pro rychlé ukončení po otevření dveří spotřebičem."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1592,6 +1708,7 @@
|
|||||||
"min_active": "Na základě minimálního činného výkonu ({min}W) zaznamenaného v posledním cyklu.",
|
"min_active": "Na základě minimálního činného výkonu ({min}W) zaznamenaného v posledním cyklu.",
|
||||||
"min_duration_ratio": "Ponecháno co nejnižší, aby byl program rozpoznán brzy v cyklu; prahy jistoty a nejednoznačnosti brání předčasnému potvrzení.",
|
"min_duration_ratio": "Ponecháno co nejnižší, aby byl program rozpoznán brzy v cyklu; prahy jistoty a nejednoznačnosti brání předčasnému potvrzení.",
|
||||||
"min_off_gap": "Na základě {gaps} pozorovaných mezer mezi cykly (p05={p05}s). Minimum zařízení: {floor}s.",
|
"min_off_gap": "Na základě {gaps} pozorovaných mezer mezi cykly (p05={p05}s). Minimum zařízení: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Nastaveno tak, aby překlenulo nejdelší tichý úsek uvnitř cyklu: {span}s + rezerva 60s, z {spans} překlenutých mezer napříč {cycles} čistými cykly (zůstává pod {ceiling}s, nejkratší mezerou, kterou necháváte mezi dvěma dávkami).",
|
||||||
"min_power": "40% nejnižšího činného výkonu p05 ({p05}W) napříč {cycles} čistými cykly, aby práh vypnutí zůstal pod skutečným odběrem.{excl}",
|
"min_power": "40% nejnižšího činného výkonu p05 ({p05}W) napříč {cycles} čistými cykly, aby práh vypnutí zůstal pod skutečným odběrem.{excl}",
|
||||||
"ml_auto_label": "Nejnižší jistota, při které model kvality stále hodnotil cyklus jako čistý (p10 z {cycles} čistých cyklů = {p10}).",
|
"ml_auto_label": "Nejnižší jistota, při které model kvality stále hodnotil cyklus jako čistý (p10 z {cycles} čistých cyklů = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cyklů ({pct}%) mělo pauzu, kterou detektor konce ohodnotil nad 50%; vyžadovat {val} potvrzení konce.",
|
"ml_end_repeat": "{false}/{total} cyklů ({pct}%) mělo pauzu, kterou detektor konce ohodnotil nad 50%; vyžadovat {val} potvrzení konce.",
|
||||||
@@ -1608,7 +1725,7 @@
|
|||||||
"thr_batch": "Ponecháno těsně nad nejnižším činným výkonem p05 napříč {cycles} cykly ({p05}W), aby byl start zachycen co nejdříve a práh zastavení zůstal pod nejnižším provozním výkonem stroje.",
|
"thr_batch": "Ponecháno těsně nad nejnižším činným výkonem p05 napříč {cycles} cykly ({p05}W), aby byl start zachycen co nejdříve a práh zastavení zůstal pod nejnižším provozním výkonem stroje.",
|
||||||
"tol_per_profile": "p75 rozptylu délky podle profilu napříč {profiles} profily ({cycles} cyklů); konzistentní profily nejsou penalizovány.",
|
"tol_per_profile": "p75 rozptylu délky podle profilu napříč {profiles} profily ({cycles} cyklů); konzistentní profily nejsou penalizovány.",
|
||||||
"tol_pooled": "Na základě sloučeného rozptylu délky {cycles} nedávných označených cyklů (odchylka p95={dev}).",
|
"tol_pooled": "Na základě sloučeného rozptylu délky {cycles} nedávných označených cyklů (odchylka p95={dev}).",
|
||||||
"watchdog": "Ponecháno co nejnižší při zachování bezpečnosti (3x interval aktualizace p95 ve výši {p95}s, min. 30s), aby byla zaseknutí rychle odhalena bez falešných zastavení."
|
"watchdog": "Ponecháno co nejnižší při zachování bezpečnosti (těsně nad intervalem aktualizace p95 ve výši {p95}s, min. 30s), aby byla zaseknutí rychle odhalena bez falešných zastavení."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Vyloučeno {total} chybně detekovaných cyklů: {parts}.",
|
"summary": "Vyloučeno {total} chybně detekovaných cyklů: {parts}.",
|
||||||
@@ -1688,6 +1805,10 @@
|
|||||||
"name_required": "Jméno je povinné",
|
"name_required": "Jméno je povinné",
|
||||||
"no_split_found": "Nebyly nalezeny žádné volné mezery, které by se daly rozdělit",
|
"no_split_found": "Nebyly nalezeny žádné volné mezery, které by se daly rozdělit",
|
||||||
"panel_settings_saved": "Nastavení panelu uloženo",
|
"panel_settings_saved": "Nastavení panelu uloženo",
|
||||||
|
"pg_preset_loaded": "Přednastavení \"{name}\" načteno",
|
||||||
|
"pg_preset_saved": "Přednastavení \"{name}\" uloženo",
|
||||||
|
"pg_sugg_loaded": "Načteno {n} navrhovaných hodnot - spusťte testovací prostředí pro porovnání",
|
||||||
|
"pg_sugg_ml_loaded": "Načteno {n} hodnot kalibrovaných ML - spusťte testovací prostředí pro porovnání",
|
||||||
"phase_name_required": "Název fáze je povinný",
|
"phase_name_required": "Název fáze je povinný",
|
||||||
"phase_updated": "Fáze aktualizována",
|
"phase_updated": "Fáze aktualizována",
|
||||||
"phases_saved": "Fáze uloženy",
|
"phases_saved": "Fáze uloženy",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Jiné"
|
"other": "Jiné"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Myčka: tiché sekundy po očekávané době trvání, než se uvolní čekání na závěrečné odčerpání vody",
|
||||||
"anti_wrinkle_enabled": "Pohltit impulzy bubnu po hlavní fázi místo čtení jako nové cykly",
|
"anti_wrinkle_enabled": "Pohltit impulzy bubnu po hlavní fázi místo čtení jako nové cykly",
|
||||||
"anti_wrinkle_exit_power": "Výkon musí mezi impulzy klesnout pod tuto hodnotu, aby ochrana před zmačkáním zůstala aktivní",
|
"anti_wrinkle_exit_power": "Výkon musí mezi impulzy klesnout pod tuto hodnotu, aby ochrana před zmačkáním zůstala aktivní",
|
||||||
"anti_wrinkle_idle_timeout": "Povolený klid mezi dvěma impulzy bubnu, než ochrana před zmačkáním skončí",
|
"anti_wrinkle_idle_timeout": "Povolený klid mezi dvěma impulzy bubnu, než ochrana před zmačkáním skončí",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entitet ikke fundet",
|
||||||
|
"running_long": "Kører længere",
|
||||||
|
"remaining": "tilbage",
|
||||||
|
"progress": "fremgang",
|
||||||
|
"show_time_remaining": "Vis resterende tid",
|
||||||
|
"show_percentage": "Vis procent",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Felt (kompakt)",
|
||||||
|
"detail": "Detalje (detaljeret)",
|
||||||
|
"glance": "Overblik (flere enheder)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pause",
|
||||||
|
"resume": "Genoptag",
|
||||||
|
"terminate": "Afslut cyklus",
|
||||||
|
"record_start": "Start optagelse",
|
||||||
|
"record_stop": "Stop optagelse",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Åbn WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Layout",
|
||||||
|
"entity": "Apparatentitet",
|
||||||
|
"entities": "Apparater",
|
||||||
|
"title": "Titel",
|
||||||
|
"icon": "Ikon",
|
||||||
|
"show_state": "Vis tilstand",
|
||||||
|
"show_program": "Vis program",
|
||||||
|
"show_progress_bar": "Vis fremgangslinje",
|
||||||
|
"spin_icon": "Roter ikon under kørsel",
|
||||||
|
"display_mode": "Detaljelinje",
|
||||||
|
"active_color": "Tilsidesæt aktiv farve",
|
||||||
|
"show_phase": "Vis fase",
|
||||||
|
"show_energy": "Vis energi og omkostninger",
|
||||||
|
"show_anomaly": "Vis advarsel om lang kørsel",
|
||||||
|
"show_sparkline": "Vis live effektgraf",
|
||||||
|
"buttons": "Handlingsknapper",
|
||||||
|
"program_entity": "Programentitet (tilsidesæt)",
|
||||||
|
"time_entity": "Tidsentitet (tilsidesæt)",
|
||||||
|
"pct_entity": "Fremgangsentitet (tilsidesæt)",
|
||||||
|
"power_entity": "Effektentitet (tilsidesæt)",
|
||||||
|
"tap_action": "Tryk-handling",
|
||||||
|
"hold_action": "Hold-handling",
|
||||||
|
"double_tap_action": "Dobbelttryk-handling"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} registrerede anomalier (f.eks. dør åbnet midt i cyklus) – åben for at se dem på grafen",
|
"artifact_tip": "{n} registrerede anomalier (f.eks. dør åbnet midt i cyklus) – åben for at se dem på grafen",
|
||||||
"auto": "(auto-detekteret)",
|
"auto": "(auto-detekteret)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Sæt den kørende cyklus på pause – apparatet genoptager, hvor det slap",
|
"pause_cycle_tip": "Sæt den kørende cyklus på pause – apparatet genoptager, hvor det slap",
|
||||||
"pg_apply_device": "Anvend på enhed",
|
"pg_apply_device": "Anvend på enhed",
|
||||||
"pg_autofill": "Autoudfyld",
|
"pg_autofill": "Autoudfyld",
|
||||||
|
"pg_load_calibrated": "Indlæs kalibrerede (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Indlæser ML-kalibrerede indstillinger som legeplads-tilsidesættelser",
|
||||||
|
"pg_load_live": "Indlæs aktive indstillinger",
|
||||||
|
"pg_load_live_tip": "Genindlæs integrationens aktuelle indstillinger, og kassér alle ændringer i legepladsen",
|
||||||
|
"pg_load_suggested": "Indlæs forslag ({n})",
|
||||||
|
"pg_load_suggested_tip": "Indlæser auto-tunerens aktuelle forslag som legeplads-tilsidesættelser",
|
||||||
|
"pg_preset_delete": "Slet forudindstilling",
|
||||||
|
"pg_preset_load": "Indlæs forudindstilling",
|
||||||
|
"pg_preset_load_tip": "Erstat værdierne i legepladsen med denne forudindstilling (de aktive indstillinger røres ikke)",
|
||||||
|
"pg_preset_save": "Gem som forudindstilling",
|
||||||
|
"pg_preset_save_tip": "Gem alle værdier nedenfor som en navngiven forudindstilling for denne enhed",
|
||||||
|
"pg_publish_all": "Gem {n} i integrationen",
|
||||||
|
"pg_publish_one": "Gem {label} i integrationen",
|
||||||
"play": "Afspil",
|
"play": "Afspil",
|
||||||
"process": "Behandl",
|
"process": "Behandl",
|
||||||
"process_history": "Behandl nu",
|
"process_history": "Behandl nu",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Download eksport",
|
"download_export": "Download eksport",
|
||||||
"analyze_import": "Analysér fil",
|
"analyze_import": "Analysér fil",
|
||||||
"import_selected": "Importér valgte",
|
"import_selected": "Importér valgte",
|
||||||
"back": "Tilbage"
|
"back": "Tilbage",
|
||||||
|
"mute_suggestion": "Stop med at foreslå denne indstilling",
|
||||||
|
"reset_muted": "Nulstil undertrykte forslag"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Ingen automatiseringer refererer til denne enhed endnu.",
|
"no_automations": "Ingen automatiseringer refererer til denne enhed endnu.",
|
||||||
"panel_settings": "Panelindstillinger",
|
"panel_settings": "Panelindstillinger",
|
||||||
"param_sweep": "Parametersweep",
|
"param_sweep": "Parametersweep",
|
||||||
|
"pg_settings_source": "Indstillingernes kilde",
|
||||||
"phase_catalog": "Fasekatalog",
|
"phase_catalog": "Fasekatalog",
|
||||||
"playground": "Legeplads",
|
"playground": "Legeplads",
|
||||||
"process_history": "Proceshistorie",
|
"process_history": "Proceshistorie",
|
||||||
@@ -410,6 +474,9 @@
|
|||||||
"pg_group_detection": "Registreringsudløsere",
|
"pg_group_detection": "Registreringsudløsere",
|
||||||
"pg_group_timing": "Tidsregler",
|
"pg_group_timing": "Tidsregler",
|
||||||
"pg_idle": "Inaktiv",
|
"pg_idle": "Inaktiv",
|
||||||
|
"pg_preset": "Forudindstilling til legepladsen",
|
||||||
|
"pg_preset_name": "Navn på ny forudindstilling",
|
||||||
|
"pg_preset_none": "Vælg en forudindstilling…",
|
||||||
"pg_stress_group": "Test af inaktiv afslutning",
|
"pg_stress_group": "Test af inaktiv afslutning",
|
||||||
"pg_stress_idle_auto": "Auto",
|
"pg_stress_idle_auto": "Auto",
|
||||||
"pg_stress_idle_w": "Inaktivt niveau (W)",
|
"pg_stress_idle_w": "Inaktivt niveau (W)",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_import_copy": "Importér som kopi",
|
"conflict_import_copy": "Importér som kopi",
|
||||||
"conflict_keep_mine": "Behold mine",
|
"conflict_keep_mine": "Behold mine",
|
||||||
"conflict_overwrite": "Overskriv",
|
"conflict_overwrite": "Overskriv",
|
||||||
"pg_anti_wrinkle": "Anti-rynke"
|
"pg_anti_wrinkle": "Anti-rynke",
|
||||||
|
"font_size": "Panel-skriftstørrelse"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Alle niveauer",
|
"all_levels": "Alle niveauer",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Anvend bedste værdi: {label} = {value}?",
|
"pg_apply_confirm": "Anvend bedste værdi: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Vælg en cyklus ovenfor, og tryk derefter på Indlæs for at se dens effektkurve.",
|
"pg_canvas_empty": "Vælg en cyklus ovenfor, og tryk derefter på Indlæs for at se dens effektkurve.",
|
||||||
"pg_chart_caption": "Registrerings-/matchrate på tværs af værdier for {param}",
|
"pg_chart_caption": "Registrerings-/matchrate på tværs af værdier for {param}",
|
||||||
|
"pg_ctrl_intro": "Værdierne tager udgangspunkt i denne enheds aktive indstillinger i integrationen. Ændringer bliver i legepladsen, indtil du gemmer dem i integrationen.",
|
||||||
|
"pg_live_unavailable": "Aktive indstillinger er ikke tilgængelige, viser standardværdier.",
|
||||||
|
"pg_load_live_confirm": "Kassér {n} ændring(er) i legepladsen, og genindlæs integrationens aktuelle indstillinger?",
|
||||||
"pg_match_rate": "{pct}% matchrate på {total} cyklusser",
|
"pg_match_rate": "{pct}% matchrate på {total} cyklusser",
|
||||||
|
"pg_matches_live": "Svarer til de aktive indstillinger",
|
||||||
|
"pg_n_changed": "{n} ændret i forhold til de aktive indstillinger",
|
||||||
|
"pg_sugg_none": "Alle forslag stemmer allerede overens med de aktive indstillinger",
|
||||||
|
"pg_preset_delete_confirm": "Slet forudindstillingen \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Grænsen for forudindstillinger er nået ({n})",
|
||||||
|
"pg_preset_overwrite": "Overskriv forudindstillingen \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Gem {label} = {value} i denne enheds indstillinger?",
|
||||||
"pg_restart_note": "Genstart Home Assistant for at aktivere simuleringsværktøjerne.",
|
"pg_restart_note": "Genstart Home Assistant for at aktivere simuleringsværktøjerne.",
|
||||||
"pg_sim_progress": "{done} / {total} cyklusser",
|
"pg_sim_progress": "{done} / {total} cyklusser",
|
||||||
"pg_starting": "Starter…",
|
"pg_starting": "Starter…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Varighed, der trender kortere ({pct}%/cyklus) – seneste gennemsnit {avg}",
|
"trend_duration_shorter": "Varighed, der trender kortere ({pct}%/cyklus) – seneste gennemsnit {avg}",
|
||||||
"trend_energy_down": "Energi på vej ned ({pct} %/cyklus)",
|
"trend_energy_down": "Energi på vej ned ({pct} %/cyklus)",
|
||||||
"trend_energy_up": "Energitrends op ({pct} %/cyklus) – seneste gennemsnit {avg}",
|
"trend_energy_up": "Energitrends op ({pct} %/cyklus) – seneste gennemsnit {avg}",
|
||||||
|
"trim_destructive_confirm": "Dermed bevares kun {pct}% af cyklussen. Dette kan ikke fortrydes. Fortsæt?",
|
||||||
"trim_intro": "Træk i de røde håndtag, eller indtast værdier. Alt uden for vinduet fjernes.",
|
"trim_intro": "Træk i de røde håndtag, eller indtast værdier. Alt uden for vinduet fjernes.",
|
||||||
"tuning_suggestions_available": "{count} indstillingsforslag tilgængeligt fra observerede cyklusser. De vises ved siden af de relevante felter.",
|
"tuning_suggestions_available": "{count} indstillingsforslag tilgængeligt fra observerede cyklusser. De vises ved siden af de relevante felter.",
|
||||||
"unsure_detected_prefix": "WashData er usikker på, om det er registreret",
|
"unsure_detected_prefix": "WashData er usikker på, om det er registreret",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Importerede elementer tilføjes; intet lokalt går tabt. Navnekonflikter løses nedenfor.",
|
"merge_hint": "Importerede elementer tilføjes; intet lokalt går tabt. Navnekonflikter løses nedenfor.",
|
||||||
"replace_warn": "Hver markeret kategori slettes og erstattes fra filen. Ikke-markerede kategorier forbliver uændrede.",
|
"replace_warn": "Hver markeret kategori slettes og erstattes fra filen. Ikke-markerede kategorier forbliver uændrede.",
|
||||||
"dest_reference_hint": "Importerede cyklusser forbedrer kun programgenkendelse og påvirker aldrig forbrugs-/energistatistik.",
|
"dest_reference_hint": "Importerede cyklusser forbedrer kun programgenkendelse og påvirker aldrig forbrugs-/energistatistik.",
|
||||||
"dest_real_history_hint": "Importerede cyklusser tæller som dette apparats egen historik og indgår i energi-/forbrugsstatistik. Brug dette til at flytte ét apparat til en ny installation."
|
"dest_real_history_hint": "Importerede cyklusser tæller som dette apparats egen historik og indgår i energi-/forbrugsstatistik. Brug dette til at flytte ét apparat til en ny installation.",
|
||||||
|
"sug_muted": "Vil ikke foreslå denne indstilling igen",
|
||||||
|
"sug_mute_failed": "Kunne ikke undertrykke forslaget",
|
||||||
|
"sug_unmuted_all": "Undertrykte forslag nulstillet",
|
||||||
|
"n_suggestions_muted": "{count} undertrykt; autotuner vil ikke foreslå disse.",
|
||||||
|
"font_size_hint": "Gør alt i dette panel større eller mindre. Gælder for din konto på denne enhed."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Opvaskemaskine: stille sekunder efter den forventede varighed, før ventetiden på udpumpning ved cyklusslut frigives",
|
||||||
"completion_min_seconds": "Korteste kørsel, der tæller som en rigtig cyklus",
|
"completion_min_seconds": "Korteste kørsel, der tæller som en rigtig cyklus",
|
||||||
"end_repeat_count": "Lave målinger i træk før afslutning",
|
"end_repeat_count": "Lave målinger i træk før afslutning",
|
||||||
"interrupted_min_seconds": "Korte cyklusser markeres som afbrudt",
|
"interrupted_min_seconds": "Korte cyklusser markeres som afbrudt",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Ubrugelig"
|
"unusable": "Ubrugelig"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Opvaskemaskine",
|
||||||
|
"intro": "Håndtering af cyklusafslutning for opvaskemaskiner, der typisk slutter med en lang, næsten lydløs tørrefase før en kort sidste udpumpning."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Anti-rynke-tilstand registrerer tumble-pulser med lav effekt efter den vigtigste fase og holder dem tilknyttet den afsluttede cyklus.",
|
"intro": "Anti-rynke-tilstand registrerer tumble-pulser med lav effekt efter den vigtigste fase og holder dem tilknyttet den afsluttede cyklus.",
|
||||||
"label": "Anti-rynke"
|
"label": "Anti-rynke"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Frigivelse efter stille tørrefase",
|
||||||
|
"doc": "Når cyklussen overskrider sin forventede varighed: hvor længe opvaskemaskinen skal forblive stille (under Stoptærskel), før WashData holder op med at vente på en sidste udpumpning og afslutter cyklussen. Hæv den, hvis din maskine har en lang stille tørrefase før en sen sidste udpumpning, der bliver overset - et bredere vindue lader den indlærte varighed følge sæsonudsving (koldere indløbsvand = længere cyklusser) i stedet for at låse sig til det gamle gennemsnit. Den forkorter kun ventetiden i forhold til den interne grænse på 30 minutter for slutspidsen, aldrig forlænger den."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Genkend de korte tørretumblerimpulser med lav effekt, som en tørretumbler udsender efter hovedvarmefasen, og hold dem fastgjort til den færdige cyklus i stedet for at læse dem som nye cyklusser.",
|
"doc": "Genkend de korte tørretumblerimpulser med lav effekt, som en tørretumbler udsender efter hovedvarmefasen, og hold dem fastgjort til den færdige cyklus i stedet for at læse dem som nye cyklusser.",
|
||||||
"label": "Aktivér anti-rynke registrering"
|
"label": "Aktivér anti-rynke registrering"
|
||||||
@@ -1260,6 +1353,10 @@
|
|||||||
"doc": "Minutter efter en cyklus er afsluttet, før du sender den stadig ventende påmindelse om \"aflæs maskinen\". Indstil 0 for at deaktivere påmindelsen.",
|
"doc": "Minutter efter en cyklus er afsluttet, før du sender den stadig ventende påmindelse om \"aflæs maskinen\". Indstil 0 for at deaktivere påmindelsen.",
|
||||||
"label": "Forsinkelse for aflæsningspåmindelse"
|
"label": "Forsinkelse for aflæsningspåmindelse"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Bliv ved med at gensende aflæsningspåmindelsen hvert \"Forsinkelse for aflæsningspåmindelse\" minutter, indtil du åbner døren eller trykker på \"Stop påmindelser\" i notifikationen. Kræver en Dørsensorenhed (det gør selve påmindelsen). Knappen til at afvise virker på notifikationer fra Home Assistant companion-appen (mobil).",
|
||||||
|
"label": "Gentag indtil døren åbnes"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Tid til at vente efter strømfald, før cyklussen erklæres afsluttet. Hvis strømmen genoptages inden for dette vindue, fortsætter cyklussen problemfrit - dette slår bro mellem pauser mellem vasketrinene. Opvaskemaskiner har lange tørrefaser (strøm fra i 20-60 min), så slukningsforsinkelsen skal overstige det for at holde hele vask+tør som én cyklus.",
|
"doc": "Tid til at vente efter strømfald, før cyklussen erklæres afsluttet. Hvis strømmen genoptages inden for dette vindue, fortsætter cyklussen problemfrit - dette slår bro mellem pauser mellem vasketrinene. Opvaskemaskiner har lange tørrefaser (strøm fra i 20-60 min), så slukningsforsinkelsen skal overstige det for at holde hele vask+tør som én cyklus.",
|
||||||
"label": "Slukkeforsinkelse"
|
"label": "Slukkeforsinkelse"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energiskarphed",
|
"label": "Energiskarphed",
|
||||||
"doc": "Skarphed i Trin 4's straf for energioverensstemmelse. Lavere = strengere: et energiafvigelse skader mere. Standard 0,25 er bevidst mere tillåtende end varighedsskarphed fordi energi varierer med belastning. Par med Energivægt."
|
"doc": "Skarphed i Trin 4's straf for energioverensstemmelse. Lavere = strengere: et energiafvigelse skader mere. Standard 0,25 er bevidst mere tillåtende end varighedsskarphed fordi energi varierer med belastning. Par med Energivægt."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Effektprofil-interval",
|
||||||
|
"doc": "Bucket-størrelse for effektprofilsensorens attribut power_profile (det flade array af gennemsnitlige watt-værdier pr. slot, der bruges af eksterne planlæggere som EMHASS og tibber_prices). Mindre buckets holder korte effektspidser skarpe; større buckets glatter kurven. Standard 15 min. Kun til visning; påvirker ikke detektering."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Behold live-notifikation ved tryk",
|
||||||
|
"doc": "Kun Android. Gør live-forløbsnotifikationen vedvarende (sticky), så et tryk ikke afviser den. Slukket: standardadfærd, hvor et tryk afviser notifikationen."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Trykdestination for live-notifikation",
|
||||||
|
"doc": "Kun Android. Hvor et tryk på live-forløbsnotifikationen åbner (f.eks. /lovelace/laundry eller en fuld URL) i stedet for app-startsiden. Lad stå blank for standard."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Dør åbner automatisk ved afslutning",
|
||||||
|
"doc": "Til opvaskemaskiner, der springer døren op ved afslutningen af cyklussen for at tørre (AirDry og lignende). Når dette er aktiveret, sætter en døråbning under en aktiv cyklus den ikke på pause for evigt; hvis døren forbliver åben i den konfigurerede opholdsperiode, betragter WashData cyklussen som afsluttet. En kort åbning (tilføjelse af en tallerken) ignoreres. Kræver en dørsensorenhed."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Dørens åbningstid ved afslutning",
|
||||||
|
"doc": "Hvor længe døren skal forblive åben, før WashData afslutter cyklussen, når \"Dør åbner automatisk ved afslutning\" er aktiveret. Lang nok til at ignorere hurtig tilføjelse af en tallerken (standard 60 s), kort nok til at afslutte hurtigt, når maskinen springer døren op."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1620,6 +1737,7 @@
|
|||||||
"min_active": "Baseret på laveste aktive effekt ({min}W) observeret i sidste cyklus.",
|
"min_active": "Baseret på laveste aktive effekt ({min}W) observeret i sidste cyklus.",
|
||||||
"min_duration_ratio": "Holdt så lav som muligt, så et program genkendes tidligt i cyklussen; konfidens- og tvetydighedsgrænserne forhindrer forhastede beslutninger.",
|
"min_duration_ratio": "Holdt så lav som muligt, så et program genkendes tidligt i cyklussen; konfidens- og tvetydighedsgrænserne forhindrer forhastede beslutninger.",
|
||||||
"min_off_gap": "Baseret på {gaps} observerede mellemrum mellem cyklusser (p05={p05}s). Enhedsgulv: {floor}s.",
|
"min_off_gap": "Baseret på {gaps} observerede mellemrum mellem cyklusser (p05={p05}s). Enhedsgulv: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensioneret til at bygge bro over den længste stille periode i en cyklus: {span}s + 60s buffer, fra {spans} dækkede mellemrum på tværs af {cycles} rene cyklusser (holder sig under dit korteste mellemrum på {ceiling}s mellem to kørsler).",
|
||||||
"min_power": "40% af den laveste aktive effekt ved p05 ({p05}W) på tværs af {cycles} rene cyklusser, hvilket holder sluk-tærsklen under reelt forbrug.{excl}",
|
"min_power": "40% af den laveste aktive effekt ved p05 ({p05}W) på tværs af {cycles} rene cyklusser, hvilket holder sluk-tærsklen under reelt forbrug.{excl}",
|
||||||
"ml_auto_label": "Laveste konfidens, som kvalitetsmodellen stadig vurderede som ren (p10 af {cycles} rene cyklusser = {p10}).",
|
"ml_auto_label": "Laveste konfidens, som kvalitetsmodellen stadig vurderede som ren (p10 af {cycles} rene cyklusser = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cyklusser ({pct}%) havde en pause, som slutdetektoren vurderede til >50%; kræver {val} slutbekræftelse(r).",
|
"ml_end_repeat": "{false}/{total} cyklusser ({pct}%) havde en pause, som slutdetektoren vurderede til >50%; kræver {val} slutbekræftelse(r).",
|
||||||
@@ -1636,7 +1754,7 @@
|
|||||||
"thr_batch": "Holdt lige over den laveste aktive effekt ved p05 på tværs af {cycles} cyklusser ({p05}W), så en start fanges så tidligt som muligt, og stoptærsklen forbliver under maskinens laveste driftseffekt.",
|
"thr_batch": "Holdt lige over den laveste aktive effekt ved p05 på tværs af {cycles} cyklusser ({p05}W), så en start fanges så tidligt som muligt, og stoptærsklen forbliver under maskinens laveste driftseffekt.",
|
||||||
"tol_per_profile": "p75 for varighedsvariansen pr. profil på tværs af {profiles} profiler ({cycles} cyklusser); stramme profiler straffes ikke.",
|
"tol_per_profile": "p75 for varighedsvariansen pr. profil på tværs af {profiles} profiler ({cycles} cyklusser); stramme profiler straffes ikke.",
|
||||||
"tol_pooled": "Baseret på samlet varighedsvarians for {cycles} seneste mærkede cyklusser (p95 afvigelse={dev}).",
|
"tol_pooled": "Baseret på samlet varighedsvarians for {cycles} seneste mærkede cyklusser (p95 afvigelse={dev}).",
|
||||||
"watchdog": "Holdt så lavt som forsvarligt (3x p95-opdateringsmellemrummet på {p95}s, min 30s), så stilstande fanges hurtigt uden falske stop."
|
"watchdog": "Holdt så lavt som forsvarligt (lige over p95-opdateringsmellemrummet på {p95}s, min 30s), så stilstande fanges hurtigt uden falske stop."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "{total} fejldetekterede cyklus(ser) udelukket: {parts}.",
|
"summary": "{total} fejldetekterede cyklus(ser) udelukket: {parts}.",
|
||||||
@@ -1716,6 +1834,10 @@
|
|||||||
"name_required": "Navn påkrævet",
|
"name_required": "Navn påkrævet",
|
||||||
"no_split_found": "Ingen ledige mellemrum fundet at dele på",
|
"no_split_found": "Ingen ledige mellemrum fundet at dele på",
|
||||||
"panel_settings_saved": "Panelindstillinger gemt",
|
"panel_settings_saved": "Panelindstillinger gemt",
|
||||||
|
"pg_preset_loaded": "Forudindstillingen \"{name}\" er indlæst",
|
||||||
|
"pg_preset_saved": "Forudindstillingen \"{name}\" er gemt",
|
||||||
|
"pg_sugg_loaded": "{n} foreslåede(t) værdi(er) indlæst - kør legepladsen for at sammenligne",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-kalibrerede(t) værdi(er) indlæst - kør legepladsen for at sammenligne",
|
||||||
"phase_name_required": "Fasenavn er påkrævet",
|
"phase_name_required": "Fasenavn er påkrævet",
|
||||||
"phase_updated": "Fase opdateret",
|
"phase_updated": "Fase opdateret",
|
||||||
"phases_saved": "Faser gemt",
|
"phases_saved": "Faser gemt",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "Min.",
|
||||||
|
"entity_not_found": "Entität nicht gefunden",
|
||||||
|
"running_long": "Läuft länger",
|
||||||
|
"remaining": "verbleibend",
|
||||||
|
"progress": "Fortschritt",
|
||||||
|
"show_time_remaining": "Verbleibende Zeit anzeigen",
|
||||||
|
"show_percentage": "Prozentsatz anzeigen",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Kachel (kompakt)",
|
||||||
|
"detail": "Detail (ausführlich)",
|
||||||
|
"glance": "Überblick (mehrere Geräte)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pausieren",
|
||||||
|
"resume": "Fortsetzen",
|
||||||
|
"terminate": "Zyklus beenden",
|
||||||
|
"record_start": "Aufnahme starten",
|
||||||
|
"record_stop": "Aufnahme stoppen",
|
||||||
|
"program": "Programm",
|
||||||
|
"open_panel": "WashData öffnen"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Layout",
|
||||||
|
"entity": "Geräteentität",
|
||||||
|
"entities": "Geräte",
|
||||||
|
"title": "Titel",
|
||||||
|
"icon": "Symbol",
|
||||||
|
"show_state": "Status anzeigen",
|
||||||
|
"show_program": "Programm anzeigen",
|
||||||
|
"show_progress_bar": "Fortschrittsbalken anzeigen",
|
||||||
|
"spin_icon": "Symbol während des Betriebs drehen",
|
||||||
|
"display_mode": "Detailzeile",
|
||||||
|
"active_color": "Aktivfarbe überschreiben",
|
||||||
|
"show_phase": "Phase anzeigen",
|
||||||
|
"show_energy": "Energie und Kosten anzeigen",
|
||||||
|
"show_anomaly": "Warnung bei Überlänge anzeigen",
|
||||||
|
"show_sparkline": "Live-Leistungsdiagramm anzeigen",
|
||||||
|
"buttons": "Aktionsschaltflächen",
|
||||||
|
"program_entity": "Programmentität (überschreiben)",
|
||||||
|
"time_entity": "Zeitentität (überschreiben)",
|
||||||
|
"pct_entity": "Fortschrittsentität (überschreiben)",
|
||||||
|
"power_entity": "Leistungsentität (überschreiben)",
|
||||||
|
"tap_action": "Tippen-Aktion",
|
||||||
|
"hold_action": "Halten-Aktion",
|
||||||
|
"double_tap_action": "Doppeltippen-Aktion"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} Anomalien erkannt (z. B. Tür mitten im Zyklus geöffnet) – öffnen Sie sie, um sie in der Grafik anzuzeigen",
|
"artifact_tip": "{n} Anomalien erkannt (z. B. Tür mitten im Zyklus geöffnet) – öffnen Sie sie, um sie in der Grafik anzuzeigen",
|
||||||
"auto": "(automatisch erkannt)",
|
"auto": "(automatisch erkannt)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Laufenden Zyklus anhalten – das Gerät setzt dort fort, wo es aufgehört hat",
|
"pause_cycle_tip": "Laufenden Zyklus anhalten – das Gerät setzt dort fort, wo es aufgehört hat",
|
||||||
"pg_apply_device": "Auf Gerät anwenden",
|
"pg_apply_device": "Auf Gerät anwenden",
|
||||||
"pg_autofill": "Automatisch ausfüllen",
|
"pg_autofill": "Automatisch ausfüllen",
|
||||||
|
"pg_load_calibrated": "Kalibrierte (ML) laden ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Lädt ML-kalibrierte Einstellungen als Testbereich-Überschreibungen",
|
||||||
|
"pg_load_live": "Aktive Einstellungen laden",
|
||||||
|
"pg_load_live_tip": "Die aktuellen Einstellungen der Integration neu einlesen und alle Änderungen im Testbereich verwerfen",
|
||||||
|
"pg_load_suggested": "Vorschläge laden ({n})",
|
||||||
|
"pg_load_suggested_tip": "Lädt die aktuellen Vorschläge des Auto-Tuners als Testbereich-Überschreibungen",
|
||||||
|
"pg_preset_delete": "Voreinstellung löschen",
|
||||||
|
"pg_preset_load": "Voreinstellung laden",
|
||||||
|
"pg_preset_load_tip": "Die Werte im Testbereich durch diese Voreinstellung ersetzen (die aktiven Einstellungen bleiben unverändert)",
|
||||||
|
"pg_preset_save": "Als Voreinstellung speichern",
|
||||||
|
"pg_preset_save_tip": "Alle Werte unten als benannte Voreinstellung für dieses Gerät speichern",
|
||||||
|
"pg_publish_all": "{n} in Integration übernehmen",
|
||||||
|
"pg_publish_one": "{label} in die Integration übernehmen",
|
||||||
"play": "Abspielen",
|
"play": "Abspielen",
|
||||||
"process": "Verarbeiten",
|
"process": "Verarbeiten",
|
||||||
"process_history": "Jetzt verarbeiten",
|
"process_history": "Jetzt verarbeiten",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Export herunterladen",
|
"download_export": "Export herunterladen",
|
||||||
"analyze_import": "Datei analysieren",
|
"analyze_import": "Datei analysieren",
|
||||||
"import_selected": "Auswahl importieren",
|
"import_selected": "Auswahl importieren",
|
||||||
"back": "Zurück"
|
"back": "Zurück",
|
||||||
|
"mute_suggestion": "Diese Einstellung nicht mehr vorschlagen",
|
||||||
|
"reset_muted": "Stummschaltungen zurücksetzen"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Noch keine Automatisierungen verweisen auf dieses Gerät.",
|
"no_automations": "Noch keine Automatisierungen verweisen auf dieses Gerät.",
|
||||||
"panel_settings": "Panel-Einstellungen",
|
"panel_settings": "Panel-Einstellungen",
|
||||||
"param_sweep": "Parameter-Sweep",
|
"param_sweep": "Parameter-Sweep",
|
||||||
|
"pg_settings_source": "Herkunft der Einstellungen",
|
||||||
"phase_catalog": "Phasenkatalog",
|
"phase_catalog": "Phasenkatalog",
|
||||||
"playground": "Testbereich",
|
"playground": "Testbereich",
|
||||||
"process_history": "Prozesshistorie",
|
"process_history": "Prozesshistorie",
|
||||||
@@ -410,6 +474,9 @@
|
|||||||
"pg_group_detection": "Erkennungsauslöser",
|
"pg_group_detection": "Erkennungsauslöser",
|
||||||
"pg_group_timing": "Zeitregeln",
|
"pg_group_timing": "Zeitregeln",
|
||||||
"pg_idle": "Leerlauf",
|
"pg_idle": "Leerlauf",
|
||||||
|
"pg_preset": "Testbereich-Voreinstellung",
|
||||||
|
"pg_preset_name": "Name der neuen Voreinstellung",
|
||||||
|
"pg_preset_none": "Voreinstellung auswählen…",
|
||||||
"pg_stress_group": "Leerlauferkennungstest",
|
"pg_stress_group": "Leerlauferkennungstest",
|
||||||
"pg_stress_idle_auto": "Auto",
|
"pg_stress_idle_auto": "Auto",
|
||||||
"pg_stress_idle_w": "Leerlaufpegel (W)",
|
"pg_stress_idle_w": "Leerlaufpegel (W)",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_import_copy": "Als Kopie importieren",
|
"conflict_import_copy": "Als Kopie importieren",
|
||||||
"conflict_keep_mine": "Meine behalten",
|
"conflict_keep_mine": "Meine behalten",
|
||||||
"conflict_overwrite": "Überschreiben",
|
"conflict_overwrite": "Überschreiben",
|
||||||
"pg_anti_wrinkle": "Knitterschutz"
|
"pg_anti_wrinkle": "Knitterschutz",
|
||||||
|
"font_size": "Panel-Schriftgröße"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Alle Ebenen",
|
"all_levels": "Alle Ebenen",
|
||||||
@@ -711,7 +779,7 @@
|
|||||||
"cycles_deleted": "{count} Zyklen gelöscht",
|
"cycles_deleted": "{count} Zyklen gelöscht",
|
||||||
"enough_data": "Genügend Daten zum Lernen ({current}/{min} Zyklen).",
|
"enough_data": "Genügend Daten zum Lernen ({current}/{min} Zyklen).",
|
||||||
"export_description": "Wählen Sie genau aus, welche Profile, Zyklen, Einstellungen und mehr nach JSON exportiert werden sollen, oder analysieren Sie eine Datei und importieren Sie nur die gewünschten Teile.",
|
"export_description": "Wählen Sie genau aus, welche Profile, Zyklen, Einstellungen und mehr nach JSON exportiert werden sollen, oder analysieren Sie eine Datei und importieren Sie nur die gewünschten Teile.",
|
||||||
"feedback_cycles_pending": "{n} Zyklus{s} zur Überprüfung",
|
"feedback_cycles_pending": "Zu überprüfen: {n}",
|
||||||
"feedback_prompt": "Bestätigen Sie, dass es richtig war, korrigieren Sie das Programm oder ignorieren Sie es.",
|
"feedback_prompt": "Bestätigen Sie, dass es richtig war, korrigieren Sie das Programm oder ignorieren Sie es.",
|
||||||
"feedback_relabel_hint": "Das erneute Beschriften dieses Zyklus erledigt die Überprüfung ebenfalls.",
|
"feedback_relabel_hint": "Das erneute Beschriften dieses Zyklus erledigt die Überprüfung ebenfalls.",
|
||||||
"filter_by_profile": "Nach Profil filtern…",
|
"filter_by_profile": "Nach Profil filtern…",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Besten Wert anwenden: {label} = {value}?",
|
"pg_apply_confirm": "Besten Wert anwenden: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Wählen Sie oben einen Zyklus aus und drücken Sie dann auf Laden, um seine Leistungskurve anzuzeigen.",
|
"pg_canvas_empty": "Wählen Sie oben einen Zyklus aus und drücken Sie dann auf Laden, um seine Leistungskurve anzuzeigen.",
|
||||||
"pg_chart_caption": "Erkennungs-/Zuordnungsrate über die Werte von {param}",
|
"pg_chart_caption": "Erkennungs-/Zuordnungsrate über die Werte von {param}",
|
||||||
|
"pg_ctrl_intro": "Die Werte stammen zunächst aus den aktiven Einstellungen dieses Geräts in der Integration. Änderungen bleiben im Testbereich, bis sie in die Integration übernommen werden.",
|
||||||
|
"pg_live_unavailable": "Aktive Einstellungen nicht verfügbar, es werden Standardwerte angezeigt.",
|
||||||
|
"pg_load_live_confirm": "{n} Änderung(en) im Testbereich verwerfen und die aktuellen Einstellungen der Integration neu laden?",
|
||||||
"pg_match_rate": "{pct}% Zuordnungsrate bei {total} Zyklen",
|
"pg_match_rate": "{pct}% Zuordnungsrate bei {total} Zyklen",
|
||||||
|
"pg_matches_live": "Stimmt mit den aktiven Einstellungen überein",
|
||||||
|
"pg_n_changed": "{n} gegenüber den aktiven Einstellungen geändert",
|
||||||
|
"pg_sugg_none": "Alle Vorschläge stimmen bereits mit den aktuellen Einstellungen überein",
|
||||||
|
"pg_preset_delete_confirm": "Die Voreinstellung \"{name}\" löschen?",
|
||||||
|
"pg_preset_limit": "Maximale Anzahl an Voreinstellungen erreicht ({n})",
|
||||||
|
"pg_preset_overwrite": "Die Voreinstellung \"{name}\" überschreiben?",
|
||||||
|
"pg_publish_one_confirm": "{label} = {value} in den Einstellungen dieses Geräts speichern?",
|
||||||
"pg_restart_note": "Starten Sie Home Assistant neu, um die Simulationstools zu aktivieren.",
|
"pg_restart_note": "Starten Sie Home Assistant neu, um die Simulationstools zu aktivieren.",
|
||||||
"pg_sim_progress": "{done} / {total} Zyklen",
|
"pg_sim_progress": "{done} / {total} Zyklen",
|
||||||
"pg_starting": "Wird gestartet…",
|
"pg_starting": "Wird gestartet…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Dauer tendenziell kürzer ({pct} %/Zyklus) – aktueller Durchschnitt {avg}",
|
"trend_duration_shorter": "Dauer tendenziell kürzer ({pct} %/Zyklus) – aktueller Durchschnitt {avg}",
|
||||||
"trend_energy_down": "Energie tendiert nach unten ({pct} %/Zyklus)",
|
"trend_energy_down": "Energie tendiert nach unten ({pct} %/Zyklus)",
|
||||||
"trend_energy_up": "Energietrend steigt ({pct} %/Zyklus) – aktueller Durchschnitt {avg}",
|
"trend_energy_up": "Energietrend steigt ({pct} %/Zyklus) – aktueller Durchschnitt {avg}",
|
||||||
|
"trim_destructive_confirm": "Dadurch werden nur {pct}% des Zyklus behalten. Dies kann nicht rückgängig gemacht werden. Fortfahren?",
|
||||||
"trim_intro": "Ziehen Sie die roten Ziehpunkte oder geben Sie Werte ein. Alles außerhalb des Fensters wird entfernt.",
|
"trim_intro": "Ziehen Sie die roten Ziehpunkte oder geben Sie Werte ein. Alles außerhalb des Fensters wird entfernt.",
|
||||||
"tuning_suggestions_available": "{count} Optimierungsvorschlag aus beobachteten Zyklen verfügbar. Sie erscheinen neben den relevanten Feldern.",
|
"tuning_suggestions_available": "{count} Optimierungsvorschlag aus beobachteten Zyklen verfügbar. Sie erscheinen neben den relevanten Feldern.",
|
||||||
"unsure_detected_prefix": "WashData ist sich nicht sicher, ob es erkannt wurde",
|
"unsure_detected_prefix": "WashData ist sich nicht sicher, ob es erkannt wurde",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Importierte Elemente werden hinzugefügt; nichts Lokales geht verloren. Namenskonflikte werden unten aufgelöst.",
|
"merge_hint": "Importierte Elemente werden hinzugefügt; nichts Lokales geht verloren. Namenskonflikte werden unten aufgelöst.",
|
||||||
"replace_warn": "Jede angekreuzte Kategorie wird gelöscht und aus der Datei ersetzt. Nicht angekreuzte Kategorien bleiben unverändert.",
|
"replace_warn": "Jede angekreuzte Kategorie wird gelöscht und aus der Datei ersetzt. Nicht angekreuzte Kategorien bleiben unverändert.",
|
||||||
"dest_reference_hint": "Importierte Zyklen verbessern nur die Programmerkennung und beeinflussen niemals die Nutzungs-/Energiestatistik.",
|
"dest_reference_hint": "Importierte Zyklen verbessern nur die Programmerkennung und beeinflussen niemals die Nutzungs-/Energiestatistik.",
|
||||||
"dest_real_history_hint": "Importierte Zyklen zählen als eigener Verlauf dieses Geräts und fließen in die Energie-/Nutzungsstatistik ein. Verwenden Sie dies, um ein Gerät in eine neue Installation zu übertragen."
|
"dest_real_history_hint": "Importierte Zyklen zählen als eigener Verlauf dieses Geräts und fließen in die Energie-/Nutzungsstatistik ein. Verwenden Sie dies, um ein Gerät in eine neue Installation zu übertragen.",
|
||||||
|
"sug_muted": "Diese Einstellung wird nicht mehr vorgeschlagen",
|
||||||
|
"sug_mute_failed": "Einstellung konnte nicht stummgeschaltet werden",
|
||||||
|
"sug_unmuted_all": "Stummgeschaltete Vorschläge zurückgesetzt",
|
||||||
|
"n_suggestions_muted": "{count} stummgeschaltet; der Autotuner schlägt diese nicht mehr vor.",
|
||||||
|
"font_size_hint": "Alles in diesem Panel vergrößern oder verkleinern. Gilt für Ihr Konto auf diesem Gerät."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Geschirrspüler: Ruhesekunden nach der erwarteten Dauer, bevor die Wartezeit auf das Abpumpen am Zyklusende freigegeben wird",
|
||||||
"completion_min_seconds": "Kürzester Lauf, der als echter Zyklus zählt",
|
"completion_min_seconds": "Kürzester Lauf, der als echter Zyklus zählt",
|
||||||
"end_repeat_count": "Aufeinanderfolgende niedrige Messwerte vor dem Ende",
|
"end_repeat_count": "Aufeinanderfolgende niedrige Messwerte vor dem Ende",
|
||||||
"interrupted_min_seconds": "Kurze Zyklen werden als unterbrochen markiert",
|
"interrupted_min_seconds": "Kurze Zyklen werden als unterbrochen markiert",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Unbrauchbar"
|
"unusable": "Unbrauchbar"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Geschirrspüler",
|
||||||
|
"intro": "Behandlung des Zyklusendes für Geschirrspüler, die typischerweise mit einer langen, nahezu stillen Trocknungsphase vor einem kurzen letzten Abpumpen enden."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Knitterschutz-Modus erkennt Tumble-Impulse mit geringer Leistung nach der Hauptphase und hält sie dem abgeschlossenen Zyklus zugeordnet.",
|
"intro": "Knitterschutz-Modus erkennt Tumble-Impulse mit geringer Leistung nach der Hauptphase und hält sie dem abgeschlossenen Zyklus zugeordnet.",
|
||||||
"label": "Knitterschutz"
|
"label": "Knitterschutz"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Ruhefreigabe nach Passivtrocknung",
|
||||||
|
"doc": "Sobald der Zyklus seine erwartete Dauer überschreitet: wie lange der Geschirrspüler ruhig bleiben muss (unter dem Stoppschwellenwert), bevor WashData nicht mehr auf ein letztes Abpumpen wartet und den Zyklus beendet. Erhöhen Sie den Wert, wenn Ihre Maschine eine lange, stille Trocknungsphase vor einem späten letzten Abpumpen hat, das übersehen wird - ein größeres Fenster lässt die erlernte Dauer der saisonalen Drift folgen (kälteres Zulaufwasser = längere Zyklen), statt sich auf den alten Mittelwert festzulegen. Er verkürzt die Wartezeit gegenüber der internen 30-minütigen Obergrenze für die Endspitze nur, verlängert sie aber nie."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Erkennen Sie die kurzen, stromsparenden Wäscheimpulse, die ein Trockner nach der Hauptheizphase abgibt, und behalten Sie im Zusammenhang mit dem abgeschlossenen Zyklus bei, anstatt sie als neue Zyklen zu lesen.",
|
"doc": "Erkennen Sie die kurzen, stromsparenden Wäscheimpulse, die ein Trockner nach der Hauptheizphase abgibt, und behalten Sie im Zusammenhang mit dem abgeschlossenen Zyklus bei, anstatt sie als neue Zyklen zu lesen.",
|
||||||
"label": "Knitterschutzerkennung aktivieren"
|
"label": "Knitterschutzerkennung aktivieren"
|
||||||
@@ -1256,6 +1349,10 @@
|
|||||||
"doc": "Minuten nach dem Ende eines Zyklus, bevor die noch wartende Erinnerung „Maschine entladen“ gesendet wird. Stellen Sie 0 ein, um die Erinnerung zu deaktivieren.",
|
"doc": "Minuten nach dem Ende eines Zyklus, bevor die noch wartende Erinnerung „Maschine entladen“ gesendet wird. Stellen Sie 0 ein, um die Erinnerung zu deaktivieren.",
|
||||||
"label": "Verzögerung der Entladeerinnerung"
|
"label": "Verzögerung der Entladeerinnerung"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Die Entladeerinnerung wird alle \"Verzögerung der Entladeerinnerung\" Minuten erneut gesendet, bis Sie die Tür öffnen oder in der Benachrichtigung auf \"Nicht mehr erinnern\" tippen. Erfordert eine Türsensor-Entität (die Erinnerung selbst benötigt sie ohnehin). Die Schaltfläche zum Verwerfen funktioniert bei Benachrichtigungen der Home Assistant Companion-App (mobil).",
|
||||||
|
"label": "Wiederholen, bis die Tür geöffnet wird"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Zeit, die nach einem Stromausfall gewartet werden muss, bevor der Zyklus als beendet erklärt wird. Wenn die Stromversorgung innerhalb dieses Fensters wiederhergestellt wird, läuft der Zyklus nahtlos weiter – dies überbrückt Pausen zwischen den Waschphasen. Geschirrspüler haben lange Trocknungsphasen (Ausschalten für 20–60 Minuten), daher muss die Ausschaltverzögerung länger sein, damit der gesamte Spül- und Trockenvorgang als ein Zyklus erfolgt.",
|
"doc": "Zeit, die nach einem Stromausfall gewartet werden muss, bevor der Zyklus als beendet erklärt wird. Wenn die Stromversorgung innerhalb dieses Fensters wiederhergestellt wird, läuft der Zyklus nahtlos weiter – dies überbrückt Pausen zwischen den Waschphasen. Geschirrspüler haben lange Trocknungsphasen (Ausschalten für 20–60 Minuten), daher muss die Ausschaltverzögerung länger sein, damit der gesamte Spül- und Trockenvorgang als ein Zyklus erfolgt.",
|
||||||
"label": "Abschaltverzögerung"
|
"label": "Abschaltverzögerung"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"anti_wrinkle_idle_timeout": {
|
"anti_wrinkle_idle_timeout": {
|
||||||
"label": "Maximale Impulspause",
|
"label": "Maximale Impulspause",
|
||||||
"doc": "Wie lange das Gerät zwischen zwei Trommelimpulsen still bleiben darf, bevor der Knitterschutz-Modus endet. Höher setzen als die längste Pause, die Ihr Trockner zwischen zwei Impulsen lässt – sonst wird jeder weitere Impuls als Fehlstart gewertet."
|
"doc": "Wie lange das Gerät zwischen zwei Trommelimpulsen still bleiben darf, bevor der Knitterschutz-Modus endet. Höher setzen als die längste Pause, die Ihr Trockner zwischen zwei Impulsen lässt – sonst wird jeder weitere Impuls als Fehlstart gewertet."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Leistungsprofil-Intervall",
|
||||||
|
"doc": "Bucket-Größe für das Attribut power_profile des profilbezogenen Sensors (ein flaches Array der durchschnittlichen Wattzahl pro Slot, das von externen Planern wie EMHASS und tibber_prices verwendet wird). Kleinere Buckets halten kurze Leistungsspitzen scharf; größere Buckets glätten die Kurve. Standard 15 Min. Nur zur Darstellung; hat keinen Einfluss auf die Erkennung."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Live-Benachrichtigung beim Antippen behalten",
|
||||||
|
"doc": "Nur Android. Die Live-Fortschrittsbenachrichtigung dauerhaft (sticky) anzeigen, sodass sie beim Antippen nicht ausgeblendet wird. Ausgeschaltet: Standardverhalten, bei dem ein Antippen die Benachrichtigung schließt."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Ziel beim Antippen der Live-Benachrichtigung",
|
||||||
|
"doc": "Nur Android. Wohin das Antippen der Live-Fortschrittsbenachrichtigung führt (z. B. /lovelace/laundry oder eine vollständige URL), statt zur Standard-App-Startseite. Leer lassen für Standard."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Tür öffnet sich am Ende automatisch",
|
||||||
|
"doc": "Für Geschirrspüler, die die Tür am Ende des Zyklus zum Trocknen aufspringen lassen (AirDry und ähnliche). Wenn aktiviert, unterbricht ein Türöffnen bei einem laufenden Zyklus diesen nicht dauerhaft; wenn die Tür für die eingestellte Verweildauer geöffnet bleibt, wertet WashData den Zyklus als abgeschlossen. Ein kurzes Öffnen (z. B. zum Nachlegen eines Geschirrstücks) wird ignoriert. Erfordert einen Türsensor."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Türöffnungs-Endverweildauer",
|
||||||
|
"doc": "Wie lange die Tür geöffnet bleiben muss, bevor WashData den Zyklus beendet, wenn \"Tür öffnet sich am Ende automatisch\" aktiv ist. Lang genug, um ein kurzes Öffnen zum Nachlegen eines Geschirrteils zu ignorieren (Standard 60 s), kurz genug, um den Zyklus zügig zu beenden, sobald die Maschine die Tür aufspringt."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1620,6 +1737,7 @@
|
|||||||
"min_active": "Basierend auf der minimalen aktiven Leistung ({min}W), die im letzten Zyklus beobachtet wurde.",
|
"min_active": "Basierend auf der minimalen aktiven Leistung ({min}W), die im letzten Zyklus beobachtet wurde.",
|
||||||
"min_duration_ratio": "So niedrig wie möglich gehalten, damit ein Programm früh im Zyklus erkannt wird; die Konfidenz- und Mehrdeutigkeitsschranken verhindern vorzeitige Festlegungen.",
|
"min_duration_ratio": "So niedrig wie möglich gehalten, damit ein Programm früh im Zyklus erkannt wird; die Konfidenz- und Mehrdeutigkeitsschranken verhindern vorzeitige Festlegungen.",
|
||||||
"min_off_gap": "Basierend auf {gaps} beobachteten Pausen zwischen Zyklen (p05={p05}s). Geräte-Untergrenze: {floor}s.",
|
"min_off_gap": "Basierend auf {gaps} beobachteten Pausen zwischen Zyklen (p05={p05}s). Geräte-Untergrenze: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "So bemessen, dass die längste Ruhephase innerhalb eines Zyklus überbrückt wird: {span}s + 60s Puffer, aus {spans} überbrückten Lücken über {cycles} saubere Zyklen (bleibt unter Ihrem kürzesten Abstand von {ceiling}s zwischen zwei Ladungen).",
|
||||||
"min_power": "40% der p05-niedrigsten aktiven Leistung ({p05}W) über {cycles} saubere Zyklen, sodass die Aus-Schwelle unter der tatsächlichen Leistungsaufnahme bleibt.{excl}",
|
"min_power": "40% der p05-niedrigsten aktiven Leistung ({p05}W) über {cycles} saubere Zyklen, sodass die Aus-Schwelle unter der tatsächlichen Leistungsaufnahme bleibt.{excl}",
|
||||||
"ml_auto_label": "Niedrigste Konfidenz, die das Qualitätsmodell noch als sauber bewertet hat (p10 von {cycles} sauberen Zyklen = {p10}).",
|
"ml_auto_label": "Niedrigste Konfidenz, die das Qualitätsmodell noch als sauber bewertet hat (p10 von {cycles} sauberen Zyklen = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} Zyklen ({pct}%) hatten eine Pause, die der Endedetektor mit >50% bewertete; {val} Endbestätigung(en) erforderlich.",
|
"ml_end_repeat": "{false}/{total} Zyklen ({pct}%) hatten eine Pause, die der Endedetektor mit >50% bewertete; {val} Endbestätigung(en) erforderlich.",
|
||||||
@@ -1636,7 +1754,7 @@
|
|||||||
"thr_batch": "Knapp über der p05-niedrigsten aktiven Leistung über {cycles} Zyklen ({p05}W) gehalten, damit ein Start so früh wie möglich erkannt wird und die Stopp-Schwelle unter der niedrigsten Betriebsleistung der Maschine bleibt.",
|
"thr_batch": "Knapp über der p05-niedrigsten aktiven Leistung über {cycles} Zyklen ({p05}W) gehalten, damit ein Start so früh wie möglich erkannt wird und die Stopp-Schwelle unter der niedrigsten Betriebsleistung der Maschine bleibt.",
|
||||||
"tol_per_profile": "p75 der Dauervarianz pro Profil über {profiles} Profile ({cycles} Zyklen); enge Profile werden nicht benachteiligt.",
|
"tol_per_profile": "p75 der Dauervarianz pro Profil über {profiles} Profile ({cycles} Zyklen); enge Profile werden nicht benachteiligt.",
|
||||||
"tol_pooled": "Basierend auf der zusammengefassten Dauervarianz von {cycles} kürzlich gelabelten Zyklen (p95-Abweichung={dev}).",
|
"tol_pooled": "Basierend auf der zusammengefassten Dauervarianz von {cycles} kürzlich gelabelten Zyklen (p95-Abweichung={dev}).",
|
||||||
"watchdog": "So niedrig wie sicher gehalten (3x die p95-Aktualisierungslücke von {p95}s, min 30s), damit Hänger schnell erkannt werden, ohne Fehl-Stopps auszulösen."
|
"watchdog": "So niedrig wie sicher gehalten (knapp über der p95-Aktualisierungslücke von {p95}s, min 30s), damit Hänger schnell erkannt werden, ohne Fehl-Stopps auszulösen."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "{total} falsch erkannte Zyklen ausgeschlossen: {parts}.",
|
"summary": "{total} falsch erkannte Zyklen ausgeschlossen: {parts}.",
|
||||||
@@ -1716,6 +1834,10 @@
|
|||||||
"name_required": "Name erforderlich",
|
"name_required": "Name erforderlich",
|
||||||
"no_split_found": "Es wurden keine Leerlauflücken zum Aufspalten gefunden",
|
"no_split_found": "Es wurden keine Leerlauflücken zum Aufspalten gefunden",
|
||||||
"panel_settings_saved": "Panel-Einstellungen gespeichert",
|
"panel_settings_saved": "Panel-Einstellungen gespeichert",
|
||||||
|
"pg_preset_loaded": "Voreinstellung \"{name}\" geladen",
|
||||||
|
"pg_preset_saved": "Voreinstellung \"{name}\" gespeichert",
|
||||||
|
"pg_sugg_loaded": "{n} Vorschlagswert(e) in den Testbereich geladen - Testbereich ausführen, um zu vergleichen",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-kalibrierten Wert(e) in den Testbereich geladen - Testbereich ausführen, um zu vergleichen",
|
||||||
"phase_name_required": "Phasenname ist erforderlich",
|
"phase_name_required": "Phasenname ist erforderlich",
|
||||||
"phase_updated": "Phase aktualisiert",
|
"phase_updated": "Phase aktualisiert",
|
||||||
"phases_saved": "Phasen gespeichert",
|
"phases_saved": "Phasen gespeichert",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "λεπτ.",
|
||||||
|
"entity_not_found": "Η οντότητα δεν βρέθηκε",
|
||||||
|
"running_long": "Καθυστερεί",
|
||||||
|
"remaining": "απομένουν",
|
||||||
|
"progress": "πρόοδος",
|
||||||
|
"show_time_remaining": "Εμφάνιση χρόνου που απομένει",
|
||||||
|
"show_percentage": "Εμφάνιση ποσοστού",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Πλακίδιο (συμπαγές)",
|
||||||
|
"detail": "Λεπτομέρειες (πλήρες)",
|
||||||
|
"glance": "Ματιά (πολλές συσκευές)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Παύση",
|
||||||
|
"resume": "Συνέχεια",
|
||||||
|
"terminate": "Τερματισμός κύκλου",
|
||||||
|
"record_start": "Έναρξη εγγραφής",
|
||||||
|
"record_stop": "Διακοπή εγγραφής",
|
||||||
|
"program": "Πρόγραμμα",
|
||||||
|
"open_panel": "Άνοιγμα WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Διάταξη",
|
||||||
|
"entity": "Οντότητα συσκευής",
|
||||||
|
"entities": "Συσκευές",
|
||||||
|
"title": "Τίτλος",
|
||||||
|
"icon": "Εικονίδιο",
|
||||||
|
"show_state": "Εμφάνιση κατάστασης",
|
||||||
|
"show_program": "Εμφάνιση προγράμματος",
|
||||||
|
"show_progress_bar": "Εμφάνιση γραμμής προόδου",
|
||||||
|
"spin_icon": "Περιστροφή εικονιδίου κατά την εκτέλεση",
|
||||||
|
"display_mode": "Γραμμή λεπτομερειών",
|
||||||
|
"active_color": "Παράκαμψη ενεργού χρώματος",
|
||||||
|
"show_phase": "Εμφάνιση φάσης",
|
||||||
|
"show_energy": "Εμφάνιση ενέργειας και κόστους",
|
||||||
|
"show_anomaly": "Εμφάνιση προειδοποίησης υπέρβασης",
|
||||||
|
"show_sparkline": "Εμφάνιση ζωντανού γραφήματος ισχύος",
|
||||||
|
"buttons": "Κουμπιά ενεργειών",
|
||||||
|
"program_entity": "Οντότητα προγράμματος (παράκαμψη)",
|
||||||
|
"time_entity": "Οντότητα χρόνου (παράκαμψη)",
|
||||||
|
"pct_entity": "Οντότητα προόδου (παράκαμψη)",
|
||||||
|
"power_entity": "Οντότητα ισχύος (παράκαμψη)",
|
||||||
|
"tap_action": "Ενέργεια πατήματος",
|
||||||
|
"hold_action": "Ενέργεια παρατεταμένου πατήματος",
|
||||||
|
"double_tap_action": "Ενέργεια διπλού πατήματος"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Εντοπίστηκαν {n} ανωμαλίες (π.χ. η πόρτα άνοιξε στα μέσα του κύκλου) – ανοίξτε για να τις δείτε στο γράφημα",
|
"artifact_tip": "Εντοπίστηκαν {n} ανωμαλίες (π.χ. η πόρτα άνοιξε στα μέσα του κύκλου) – ανοίξτε για να τις δείτε στο γράφημα",
|
||||||
"auto": "(αυτόματη ανίχνευση)",
|
"auto": "(αυτόματη ανίχνευση)",
|
||||||
@@ -13,14 +61,14 @@
|
|||||||
"improving": "↗ βελτίωση",
|
"improving": "↗ βελτίωση",
|
||||||
"manual": "(επιλεγμένο με μη αυτόματο τρόπο)",
|
"manual": "(επιλεγμένο με μη αυτόματο τρόπο)",
|
||||||
"needs_review": "Χρειάζεται αναθεώρηση",
|
"needs_review": "Χρειάζεται αναθεώρηση",
|
||||||
"overrun": "Έτρεξε περισσότερο από το συνηθισμένο",
|
"overrun": "Λειτούργησε περισσότερο από το συνηθισμένο",
|
||||||
"underrun": "Ολοκληρώθηκε γρηγορότερα από το συνηθισμένο",
|
"underrun": "Ολοκληρώθηκε γρηγορότερα από το συνηθισμένο",
|
||||||
"poor_fit": "κακή ποιότητα",
|
"poor_fit": "κακή ποιότητα",
|
||||||
"poor_fit_tip": "Ασυνεπές ιστορικό αντιστοίχισης – σκεφτείτε να δημιουργήσετε ξανά αυτό το προφίλ",
|
"poor_fit_tip": "Ασυνεπές ιστορικό αντιστοίχισης – σκεφτείτε να δημιουργήσετε ξανά αυτό το προφίλ",
|
||||||
"restart_gap_tip": "{n} κενό επανεκκίνησης HA: το ίχνος ισχύος έχει ένα κενό",
|
"restart_gap_tip": "{n} κενό επανεκκίνησης HA: το ίχνος ισχύος έχει ένα κενό",
|
||||||
"reviewed": "Αξιολογήθηκε",
|
"reviewed": "Αξιολογήθηκε",
|
||||||
"steady": "→ σταθερό",
|
"steady": "→ σταθερό",
|
||||||
"using_defaults": "Χρήση προεπιλογών αποστολής",
|
"using_defaults": "Χρήση των ενσωματωμένων προεπιλογών",
|
||||||
"using_tuned": "Χρησιμοποιώντας συντονισμένα βάρη",
|
"using_tuned": "Χρησιμοποιώντας συντονισμένα βάρη",
|
||||||
"overrun_ratio": "({x}x του αναμενόμενου)",
|
"overrun_ratio": "({x}x του αναμενόμενου)",
|
||||||
"underrun_ratio": "({pct}% του αναμενόμενου)",
|
"underrun_ratio": "({pct}% του αναμενόμενου)",
|
||||||
@@ -41,44 +89,44 @@
|
|||||||
"apply_all": "Εφαρμόστε όλα",
|
"apply_all": "Εφαρμόστε όλα",
|
||||||
"apply_label": "Εφαρμογή ετικέτας",
|
"apply_label": "Εφαρμογή ετικέτας",
|
||||||
"apply_set_b": "Εφαρμογή συνόλου B",
|
"apply_set_b": "Εφαρμογή συνόλου B",
|
||||||
"apply_split": "Εφαρμογή Split",
|
"apply_split": "Εφαρμογή διαχωρισμού",
|
||||||
"apply_trim": "Εφαρμόστε το Trim",
|
"apply_trim": "Εφαρμογή περικοπής",
|
||||||
"auto_detect_split": "Αυτόματος εντοπισμός",
|
"auto_detect_split": "Αυτόματος εντοπισμός",
|
||||||
"auto_label_cycles": "Κύκλοι αυτόματης επισήμανσης",
|
"auto_label_cycles": "Αυτόματη επισήμανση κύκλων",
|
||||||
"auto_label_cycles_tip": "Αυτόματη εκχώρηση ονομάτων προφίλ σε κύκλους χωρίς ετικέτα, των οποίων η εμπιστοσύνη αντιστοίχισης ξεπερνά το κατώφλι",
|
"auto_label_cycles_tip": "Αυτόματη εκχώρηση ονομάτων προφίλ σε κύκλους χωρίς ετικέτα, των οποίων η εμπιστοσύνη αντιστοίχισης ξεπερνά το κατώφλι",
|
||||||
"cancel": "Ματαίωση",
|
"cancel": "Ακύρωση",
|
||||||
"clear_debug": "Εκκαθάριση δεδομένων εντοπισμού σφαλμάτων",
|
"clear_debug": "Εκκαθάριση δεδομένων εντοπισμού σφαλμάτων",
|
||||||
"clear_splits": "Σαφής",
|
"clear_splits": "Καθαρισμός",
|
||||||
"close": "Κλείσιμο",
|
"close": "Κλείσιμο",
|
||||||
"compare": "Συγκρίνω",
|
"compare": "Σύγκριση",
|
||||||
"confirm": "Επιβεβαιώνω",
|
"confirm": "Επιβεβαίωση",
|
||||||
"convert_to_automation": "Μετατροπή σε αυτοματισμό",
|
"convert_to_automation": "Μετατροπή σε αυτοματισμό",
|
||||||
"correct": "Σωστός…",
|
"correct": "Διόρθωση…",
|
||||||
"create": "Δημιουργώ",
|
"create": "Δημιουργία",
|
||||||
"create_from_cluster": "Δημιουργία προφίλ από {count} κύκλους",
|
"create_from_cluster": "Δημιουργία προφίλ από {count} κύκλους",
|
||||||
"create_profile": "+ Δημιουργία προφίλ",
|
"create_profile": "+ Δημιουργία προφίλ",
|
||||||
"delete": "Διαγράφω",
|
"delete": "Διαγραφή",
|
||||||
"delete_group": "Διαγραφή ομάδας",
|
"delete_group": "Διαγραφή ομάδας",
|
||||||
"delete_group_tip": "Διαγραφή μόνο αυτής της ομάδας - τα προφίλ μελών διατηρούνται",
|
"delete_group_tip": "Διαγραφή μόνο αυτής της ομάδας - τα προφίλ μελών διατηρούνται",
|
||||||
"delete_profile": "Διαγραφή προφίλ",
|
"delete_profile": "Διαγραφή προφίλ",
|
||||||
"discard": "Απορρίπτω",
|
"discard": "Απόρριψη",
|
||||||
"discard_tip": "Απόρριψη του καταγεγραμμένου ίχνους χωρίς αποθήκευση",
|
"discard_tip": "Απόρριψη του καταγεγραμμένου ίχνους χωρίς αποθήκευση",
|
||||||
"dismiss": "Απολύω",
|
"dismiss": "Παράβλεψη",
|
||||||
"done": "Γινώμενος",
|
"done": "Τέλος",
|
||||||
"edit": "Εκδίδω",
|
"edit": "Επεξεργασία",
|
||||||
"export": "Εξαγωγή",
|
"export": "Εξαγωγή",
|
||||||
"export_json": "Εξαγωγή σε JSON",
|
"export_json": "Εξαγωγή σε JSON",
|
||||||
"force_stop": "Αναγκαστική διακοπή",
|
"force_stop": "Αναγκαστική διακοπή",
|
||||||
"force_stop_tip": "Άμεσος τερματισμός του τρέχοντος κύκλου και χαρακτηρισμός του ως αναγκαστικά τερματισμένου",
|
"force_stop_tip": "Άμεσος τερματισμός του τρέχοντος κύκλου και χαρακτηρισμός του ως αναγκαστικά τερματισμένου",
|
||||||
"from_template": "Από το πρότυπο ▾",
|
"from_template": "Από το πρότυπο ▾",
|
||||||
"ignore": "Αγνοώ",
|
"ignore": "Αγνόηση",
|
||||||
"import_json": "Εισαγωγή από JSON",
|
"import_json": "Εισαγωγή από JSON",
|
||||||
"import_overwrite": "Εισαγωγή (αντικαθιστά δεδομένα)",
|
"import_overwrite": "Εισαγωγή (αντικαθιστά δεδομένα)",
|
||||||
"inspect": "Ελέγχω",
|
"inspect": "Επιθεώρηση",
|
||||||
"label": "Επισήμανση",
|
"label": "Επισήμανση",
|
||||||
"load": "Φόρτωση",
|
"load": "Φόρτωση",
|
||||||
"load_more": "Φόρτωση περισσότερων",
|
"load_more": "Φόρτωση περισσότερων",
|
||||||
"manage": "Διαχειρίζομαι",
|
"manage": "Διαχείριση",
|
||||||
"merge": "Συγχώνευση",
|
"merge": "Συγχώνευση",
|
||||||
"new_automation": "+ Νέος Αυτοματισμός",
|
"new_automation": "+ Νέος Αυτοματισμός",
|
||||||
"new_group": "+ Νέα ομάδα",
|
"new_group": "+ Νέα ομάδα",
|
||||||
@@ -92,24 +140,37 @@
|
|||||||
"pause_cycle_tip": "Παύση του εν λειτουργία κύκλου – η συσκευή θα συνεχίσει από εκεί που σταμάτησε",
|
"pause_cycle_tip": "Παύση του εν λειτουργία κύκλου – η συσκευή θα συνεχίσει από εκεί που σταμάτησε",
|
||||||
"pg_apply_device": "Εφαρμογή στη συσκευή",
|
"pg_apply_device": "Εφαρμογή στη συσκευή",
|
||||||
"pg_autofill": "Αυτόματη συμπλήρωση",
|
"pg_autofill": "Αυτόματη συμπλήρωση",
|
||||||
|
"pg_load_calibrated": "Φόρτωση βαθμονομημένων (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Φορτώνει τις ρυθμίσεις βαθμονόμησης ML ως παρακαμπτήριες ρυθμίσεις στον Χώρο δοκιμών",
|
||||||
|
"pg_load_live": "Φόρτωση ενεργών ρυθμίσεων",
|
||||||
|
"pg_load_live_tip": "Επαναφόρτωση των τρεχουσών ρυθμίσεων της ενσωμάτωσης και απόρριψη κάθε αλλαγής στον Χώρο δοκιμών",
|
||||||
|
"pg_load_suggested": "Φόρτωση προτάσεων ({n})",
|
||||||
|
"pg_load_suggested_tip": "Φορτώνει τις τρέχουσες προτάσεις του αυτόματου βελτιστοποιητή ως παρακαμπτήριες ρυθμίσεις στον Χώρο δοκιμών",
|
||||||
|
"pg_preset_delete": "Διαγραφή προρύθμισης",
|
||||||
|
"pg_preset_load": "Φόρτωση προρύθμισης",
|
||||||
|
"pg_preset_load_tip": "Αντικατάσταση των τιμών του Χώρου δοκιμών με αυτήν την προρύθμιση (οι ενεργές ρυθμίσεις δεν αλλάζουν)",
|
||||||
|
"pg_preset_save": "Αποθήκευση ως προρύθμιση",
|
||||||
|
"pg_preset_save_tip": "Αποθήκευση όλων των παρακάτω τιμών ως επώνυμη προρύθμιση για αυτήν τη συσκευή",
|
||||||
|
"pg_publish_all": "Εφαρμογή στην ενσωμάτωση ({n})",
|
||||||
|
"pg_publish_one": "Εφαρμογή {label} στην ενσωμάτωση",
|
||||||
"play": "Αναπαραγωγή",
|
"play": "Αναπαραγωγή",
|
||||||
"process": "Διαδικασία",
|
"process": "Επεξεργασία",
|
||||||
"process_history": "Επεξεργασία τώρα",
|
"process_history": "Επεξεργασία τώρα",
|
||||||
"process_recording": "Αποθήκευση εγγραφής",
|
"process_recording": "Αποθήκευση εγγραφής",
|
||||||
"process_tip": "Αποθήκευση του καταγεγραμμένου ίχνους ως νέο ή υπάρχον προφίλ",
|
"process_tip": "Αποθήκευση του καταγεγραμμένου ίχνους ως νέο ή υπάρχον προφίλ",
|
||||||
"rebuild": "Ανακατασκευή φακέλων",
|
"rebuild": "Ανακατασκευή περιβαλλουσών",
|
||||||
"rebuild_envelope": "Ανακατασκευή φακέλου",
|
"rebuild_envelope": "Ανακατασκευή περιβάλλουσας",
|
||||||
"rebuild_tip": "Επανυπολογισμός του αναμενόμενου φακέλου ισχύος (ελάχιστο/μέγιστο εύρος) για όλα τα προφίλ από τους επισημασμένους τους κύκλους – εκτελέστε μετά από επισήμανση νέων κύκλων ή διόρθωση παλιών",
|
"rebuild_tip": "Επανυπολογισμός της αναμενόμενης περιβάλλουσας ισχύος (ελάχιστο/μέγιστο εύρος) για όλα τα προφίλ από τους επισημασμένους τους κύκλους – εκτελέστε μετά από επισήμανση νέων κύκλων ή διόρθωση παλιών",
|
||||||
"rec_start_tip": "Έναρξη καταγραφής του ίχνους ισχύος της συσκευής – ξεκινήστε λίγο πριν τη λειτουργία του κύκλου",
|
"rec_start_tip": "Έναρξη καταγραφής του ίχνους ισχύος της συσκευής – ξεκινήστε λίγο πριν τη λειτουργία του κύκλου",
|
||||||
"rec_stop": "Στάση",
|
"rec_stop": "Διακοπή",
|
||||||
"rec_stop_tip": "Διακοπή εγγραφής και διατήρηση του καταγεγραμμένου ίχνους για αναθεώρηση",
|
"rec_stop_tip": "Διακοπή εγγραφής και διατήρηση του καταγεγραμμένου ίχνους για αναθεώρηση",
|
||||||
"record": "Ξεκινήστε την εγγραφή",
|
"record": "Ξεκινήστε την εγγραφή",
|
||||||
"refresh": "Φρεσκάρω",
|
"refresh": "Ανανέωση",
|
||||||
"refresh_diag_tip": "Επαναφόρτωση στατιστικών αποθήκευσης",
|
"refresh_diag_tip": "Επαναφόρτωση στατιστικών αποθήκευσης",
|
||||||
"refresh_logs_tip": "Επαναφόρτωση των πιο πρόσφατων εγγραφών καταγραφής",
|
"refresh_logs_tip": "Επαναφόρτωση των πιο πρόσφατων εγγραφών καταγραφής",
|
||||||
"refresh_settings_tip": "Επαναφόρτωση ρυθμίσεων από τον διακομιστή",
|
"refresh_settings_tip": "Επαναφόρτωση ρυθμίσεων από τον διακομιστή",
|
||||||
"relabel": "Επανεπισήμανση ({count})",
|
"relabel": "Επανεπισήμανση ({count})",
|
||||||
"remove": "Αφαιρώ",
|
"remove": "Αφαίρεση",
|
||||||
"remove_timer": "Αφαιρέστε το χρονόμετρο",
|
"remove_timer": "Αφαιρέστε το χρονόμετρο",
|
||||||
"reset": "Επαναφορά",
|
"reset": "Επαναφορά",
|
||||||
"reset_ml_models_tip": "Απορρίψτε τα βελτιωμένα μοντέλα και επιστρέψτε στα ενσωματωμένα. Το WashData μπορεί να τα μάθει ξανά αργότερα.",
|
"reset_ml_models_tip": "Απορρίψτε τα βελτιωμένα μοντέλα και επιστρέψτε στα ενσωματωμένα. Το WashData μπορεί να τα μάθει ξανά αργότερα.",
|
||||||
@@ -126,33 +187,33 @@
|
|||||||
"run": "Εκτέλεση",
|
"run": "Εκτέλεση",
|
||||||
"run_analysis": "🔍 Εκτέλεση ανάλυσης προτάσεων",
|
"run_analysis": "🔍 Εκτέλεση ανάλυσης προτάσεων",
|
||||||
"run_analysis_tip": "Αναλύστε τους καταγεγραμμένους κύκλους σας τώρα και ανανεώστε τις προτάσεις συντονισμού",
|
"run_analysis_tip": "Αναλύστε τους καταγεγραμμένους κύκλους σας τώρα και ανανεώστε τις προτάσεις συντονισμού",
|
||||||
"run_auto_label": "Εκτελέστε Auto-Label",
|
"run_auto_label": "Εκτέλεση αυτόματης επισήμανσης",
|
||||||
"run_both": "Εκτέλεση A έναντι B",
|
"run_both": "Εκτέλεση A έναντι B",
|
||||||
"run_simulation": "Εκτέλεση προσομοίωσης",
|
"run_simulation": "Εκτέλεση προσομοίωσης",
|
||||||
"save": "Εκτός",
|
"save": "Αποθήκευση",
|
||||||
"save_access_control": "Αποθήκευση ελέγχου πρόσβασης",
|
"save_access_control": "Αποθήκευση ελέγχου πρόσβασης",
|
||||||
"save_group": "Αποθήκευση ομάδας",
|
"save_group": "Αποθήκευση ομάδας",
|
||||||
"save_panel_settings": "Αποθήκευση ρυθμίσεων πίνακα",
|
"save_panel_settings": "Αποθήκευση ρυθμίσεων πίνακα",
|
||||||
"save_phases": "Αποθήκευση φάσεων",
|
"save_phases": "Αποθήκευση φάσεων",
|
||||||
"save_preferences": "Αποθήκευση Προτιμήσεων",
|
"save_preferences": "Αποθήκευση Προτιμήσεων",
|
||||||
"save_reminders": "Αποθήκευση υπενθυμίσεων",
|
"save_reminders": "Αποθήκευση υπενθυμίσεων",
|
||||||
"save_review": "Αποθήκευση κριτικής",
|
"save_review": "Αποθήκευση αξιολόγησης",
|
||||||
"save_settings": "Αποθήκευση ρυθμίσεων",
|
"save_settings": "Αποθήκευση ρυθμίσεων",
|
||||||
"select": "Επιλέγω",
|
"select": "Επιλογή",
|
||||||
"select_all": "Επιλογή όλων",
|
"select_all": "Επιλογή όλων",
|
||||||
"select_last20": "Τελευταία 20",
|
"select_last20": "Τελευταία 20",
|
||||||
"select_none": "Καθαρισμός",
|
"select_none": "Καθαρισμός",
|
||||||
"show_only": "Εμφάνιση μόνο",
|
"show_only": "Εμφάνιση μόνο",
|
||||||
"skip_setup": "Παράλειψη ρύθμισης",
|
"skip_setup": "Παράλειψη ρύθμισης",
|
||||||
"split": "Σπλιτ",
|
"split": "Διαχωρισμός",
|
||||||
"stop": "Διακοπή",
|
"stop": "Διακοπή",
|
||||||
"submit_correction": "Υποβολή Διόρθωσης",
|
"submit_correction": "Υποβολή Διόρθωσης",
|
||||||
"train_now": "Προπονηθείτε τώρα",
|
"train_now": "Εκπαίδευση τώρα",
|
||||||
"trim": "Τακτοποίηση",
|
"trim": "Περικοπή",
|
||||||
"trim_split": "Περικοπή / Σπλιτ",
|
"trim_split": "Περικοπή / Διαχωρισμός",
|
||||||
"undo": "Αναίρεση",
|
"undo": "Αναίρεση",
|
||||||
"use": "Χρήση",
|
"use": "Χρήση",
|
||||||
"wipe_all": "Σκουπίστε όλα τα δεδομένα",
|
"wipe_all": "Διαγραφή όλων των δεδομένων",
|
||||||
"delete_selected": "Διαγραφή επιλεγμένων ({n})",
|
"delete_selected": "Διαγραφή επιλεγμένων ({n})",
|
||||||
"group_suggest": "Ομάδα {n}: {members}",
|
"group_suggest": "Ομάδα {n}: {members}",
|
||||||
"pg_apply_best": "Εφαρμογή καλύτερου",
|
"pg_apply_best": "Εφαρμογή καλύτερου",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Λήψη εξαγωγής",
|
"download_export": "Λήψη εξαγωγής",
|
||||||
"analyze_import": "Ανάλυση αρχείου",
|
"analyze_import": "Ανάλυση αρχείου",
|
||||||
"import_selected": "Εισαγωγή επιλεγμένων",
|
"import_selected": "Εισαγωγή επιλεγμένων",
|
||||||
"back": "Πίσω"
|
"back": "Πίσω",
|
||||||
|
"mute_suggestion": "Διακοπή πρότασης αυτής της ρύθμισης",
|
||||||
|
"reset_muted": "Επαναφορά αποσιωπημένων"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -255,11 +318,11 @@
|
|||||||
"clear_debug": "Εκκαθάριση ιχνών εντοπισμού σφαλμάτων",
|
"clear_debug": "Εκκαθάριση ιχνών εντοπισμού σφαλμάτων",
|
||||||
"cycle_simulator": "Προσομοιωτής κύκλων",
|
"cycle_simulator": "Προσομοιωτής κύκλων",
|
||||||
"diagnostics_pref": "Διαγνωστικά",
|
"diagnostics_pref": "Διαγνωστικά",
|
||||||
"display": "Επίδειξη",
|
"display": "Εμφάνιση",
|
||||||
"dtw_inspector": "Επιθεωρητής DTW",
|
"dtw_inspector": "Επιθεωρητής DTW",
|
||||||
"export_import": "Εξαγωγή / Εισαγωγή",
|
"export_import": "Εξαγωγή / Εισαγωγή",
|
||||||
"getting_started": "Ξεκινώντας",
|
"getting_started": "Ξεκινώντας",
|
||||||
"live_power": "Ζωντανή δύναμη",
|
"live_power": "Ζωντανή ισχύς",
|
||||||
"logs": "Αρχεία καταγραφής",
|
"logs": "Αρχεία καταγραφής",
|
||||||
"logs_diagnostics": "Διαγνωστικά",
|
"logs_diagnostics": "Διαγνωστικά",
|
||||||
"maintenance": "Ενέργειες Συντήρησης",
|
"maintenance": "Ενέργειες Συντήρησης",
|
||||||
@@ -275,17 +338,18 @@
|
|||||||
"no_automations": "Δεν αναφέρονται ακόμη αυτοματισμοί σε αυτήν τη συσκευή.",
|
"no_automations": "Δεν αναφέρονται ακόμη αυτοματισμοί σε αυτήν τη συσκευή.",
|
||||||
"panel_settings": "Ρυθμίσεις πίνακα",
|
"panel_settings": "Ρυθμίσεις πίνακα",
|
||||||
"param_sweep": "Σάρωση παραμέτρων",
|
"param_sweep": "Σάρωση παραμέτρων",
|
||||||
|
"pg_settings_source": "Προέλευση ρυθμίσεων",
|
||||||
"phase_catalog": "Κατάλογος Φάσης",
|
"phase_catalog": "Κατάλογος Φάσης",
|
||||||
"playground": "Χώρος δοκιμών",
|
"playground": "Χώρος δοκιμών",
|
||||||
"process_history": "Ιστορικό Διαδικασιών",
|
"process_history": "Επεξεργασία ιστορικού",
|
||||||
"settings_history": "Ιστορικό ρυθμίσεων",
|
"settings_history": "Ιστορικό ρυθμίσεων",
|
||||||
"status": "Κατάσταση",
|
"status": "Κατάσταση",
|
||||||
"status_graph": "Γράφημα κατάστασης",
|
"status_graph": "Γράφημα κατάστασης",
|
||||||
"storage_stats": "Στατιστικά αποθήκευσης",
|
"storage_stats": "Στατιστικά αποθήκευσης",
|
||||||
"test_history": "Δοκιμή στο ιστορικό",
|
"test_history": "Δοκιμή στο ιστορικό",
|
||||||
"toggle_sidebar": "Εναλλαγή πλευρικής γραμμής Βοηθού σπιτιού",
|
"toggle_sidebar": "Εναλλαγή πλευρικής γραμμής Home Assistant",
|
||||||
"tools_and_data": "Εργαλεία & Δεδομένα",
|
"tools_and_data": "Εργαλεία & Δεδομένα",
|
||||||
"wipe_history": "Σκουπίστε το ιστορικό",
|
"wipe_history": "Διαγραφή ιστορικού",
|
||||||
"recommendations": "Συστάσεις ({n})",
|
"recommendations": "Συστάσεις ({n})",
|
||||||
"pg_detection_params": "Ρυθμίσεις ανίχνευσης",
|
"pg_detection_params": "Ρυθμίσεις ανίχνευσης",
|
||||||
"pg_timeline": "Χρονολόγιο συμβάντων",
|
"pg_timeline": "Χρονολόγιο συμβάντων",
|
||||||
@@ -300,12 +364,12 @@
|
|||||||
"poor": "⚠ Κακή ποιότητα αντιστοίχισης"
|
"poor": "⚠ Κακή ποιότητα αντιστοίχισης"
|
||||||
},
|
},
|
||||||
"lbl": {
|
"lbl": {
|
||||||
"actions": "Δράσεις",
|
"actions": "Ενέργειες",
|
||||||
"activity": "Δραστηριότητα",
|
"activity": "Δραστηριότητα",
|
||||||
"administrators": "Διαχειριστές",
|
"administrators": "Διαχειριστές",
|
||||||
"aria_compare_chart": "Γράφημα σύγκρισης κύκλων",
|
"aria_compare_chart": "Γράφημα σύγκρισης κύκλων",
|
||||||
"aria_cycle_chart": "Καμπύλη ισχύος κύκλου",
|
"aria_cycle_chart": "Καμπύλη ισχύος κύκλου",
|
||||||
"aria_envelope_chart": "Γράφημα φακέλου ισχύος προφίλ",
|
"aria_envelope_chart": "Γράφημα περιβάλλουσας ισχύος προφίλ",
|
||||||
"aria_phase_chart": "Γράφημα επεξεργασίας φάσεων",
|
"aria_phase_chart": "Γράφημα επεξεργασίας φάσεων",
|
||||||
"aria_playground_chart": "Καμπύλη ισχύος κύκλου με συρόμενα όρια ανίχνευσης",
|
"aria_playground_chart": "Καμπύλη ισχύος κύκλου με συρόμενα όρια ανίχνευσης",
|
||||||
"aria_power_chart": "Γράφημα κατανάλωσης ισχύος",
|
"aria_power_chart": "Γράφημα κατανάλωσης ισχύος",
|
||||||
@@ -316,7 +380,7 @@
|
|||||||
"artifact_interruption": "Διακοπή",
|
"artifact_interruption": "Διακοπή",
|
||||||
"artifact_low_power": "Χαμηλή ισχύς",
|
"artifact_low_power": "Χαμηλή ισχύς",
|
||||||
"auto_detect": "Αυτόματος εντοπισμός",
|
"auto_detect": "Αυτόματος εντοπισμός",
|
||||||
"auto_fine_tune_off": "αυτόματη τελική απενεργοποίηση",
|
"auto_fine_tune_off": "αυτόματη βελτιστοποίηση ανενεργή",
|
||||||
"auto_fine_tune_on": "αυτόματη βελτιστοποίηση ενεργή (περίπου {hour}:00)",
|
"auto_fine_tune_on": "αυτόματη βελτιστοποίηση ενεργή (περίπου {hour}:00)",
|
||||||
"avg_cost": "Μέσο κόστος",
|
"avg_cost": "Μέσο κόστος",
|
||||||
"change": "Αλλαγή",
|
"change": "Αλλαγή",
|
||||||
@@ -327,7 +391,7 @@
|
|||||||
"concurrency": "Ταυτοχρονισμός",
|
"concurrency": "Ταυτοχρονισμός",
|
||||||
"confidence": "Εμπιστοσύνη",
|
"confidence": "Εμπιστοσύνη",
|
||||||
"confidence_threshold": "Όριο εμπιστοσύνης",
|
"confidence_threshold": "Όριο εμπιστοσύνης",
|
||||||
"correct_duration": "Σωστή διάρκεια (ελάχιστη, προαιρετική)",
|
"correct_duration": "Σωστή διάρκεια (λεπτά, προαιρετικό)",
|
||||||
"correct_profile": "Σωστό Προφίλ",
|
"correct_profile": "Σωστό Προφίλ",
|
||||||
"correlation": "Συσχέτιση",
|
"correlation": "Συσχέτιση",
|
||||||
"cost": "Κόστος",
|
"cost": "Κόστος",
|
||||||
@@ -344,7 +408,7 @@
|
|||||||
"dashed": "διακεκομμένη",
|
"dashed": "διακεκομμένη",
|
||||||
"date": "Ημερομηνία",
|
"date": "Ημερομηνία",
|
||||||
"debug_traces": "Ίχνη εντοπισμού σφαλμάτων",
|
"debug_traces": "Ίχνη εντοπισμού σφαλμάτων",
|
||||||
"default": "Αθέτηση",
|
"default": "Προεπιλογή",
|
||||||
"default_access_level": "Προεπιλεγμένο επίπεδο για χρήστες που δεν αναφέρονται παρακάτω",
|
"default_access_level": "Προεπιλεγμένο επίπεδο για χρήστες που δεν αναφέρονται παρακάτω",
|
||||||
"default_other": "Προεπιλογή (άλλες συσκευές)",
|
"default_other": "Προεπιλογή (άλλες συσκευές)",
|
||||||
"default_tab": "Προεπιλεγμένη καρτέλα κατά το άνοιγμα του πίνακα",
|
"default_tab": "Προεπιλεγμένη καρτέλα κατά το άνοιγμα του πίνακα",
|
||||||
@@ -368,19 +432,19 @@
|
|||||||
"file_kb": "Αρχείο (kB)",
|
"file_kb": "Αρχείο (kB)",
|
||||||
"final_score": "Τελική βαθμολογία",
|
"final_score": "Τελική βαθμολογία",
|
||||||
"from": "Από",
|
"from": "Από",
|
||||||
"gap_s": "Κενό (α)",
|
"gap_s": "Κενό (δευτ.)",
|
||||||
"group_name": "Όνομα ομάδας",
|
"group_name": "Όνομα ομάδας",
|
||||||
"head_trim": "Περικοπή κεφαλής",
|
"head_trim": "Περικοπή κεφαλής (δευτ.)",
|
||||||
"health": "Υγεία",
|
"health": "Υγεία",
|
||||||
"hide_tabs": "Απόκρυψη καρτελών για μη διαχειριστές",
|
"hide_tabs": "Απόκρυψη καρτελών για μη διαχειριστές",
|
||||||
"in_use": "Σε χρήση",
|
"in_use": "Σε χρήση",
|
||||||
"json_data": "Δεδομένα JSON",
|
"json_data": "Δεδομένα JSON",
|
||||||
"label": "Αντιστοιχισμένο προφίλ",
|
"label": "Αντιστοιχισμένο πρόγραμμα",
|
||||||
"last": "Τελευταία",
|
"last": "Τελευταία",
|
||||||
"last_checked": "Τελευταίος έλεγχος:",
|
"last_checked": "Τελευταίος έλεγχος:",
|
||||||
"load_from_file": "Φόρτωση από αρχείο",
|
"load_from_file": "Φόρτωση από αρχείο",
|
||||||
"mae_score": "Βαθμολογία MAE",
|
"mae_score": "Βαθμολογία MAE",
|
||||||
"manual_duration": "Μη αυτόματη διάρκεια (ελάχιστη, προαιρετική)",
|
"manual_duration": "Μη αυτόματη διάρκεια (λεπτά, προαιρετικό)",
|
||||||
"match": "Αντιστοίχιση",
|
"match": "Αντιστοίχιση",
|
||||||
"members": "Μέλη",
|
"members": "Μέλη",
|
||||||
"metric": "Μετρική",
|
"metric": "Μετρική",
|
||||||
@@ -410,11 +474,14 @@
|
|||||||
"pg_group_advanced": "Ακραίες περιπτώσεις",
|
"pg_group_advanced": "Ακραίες περιπτώσεις",
|
||||||
"pg_group_detection": "Ενεργοποιητές ανίχνευσης",
|
"pg_group_detection": "Ενεργοποιητές ανίχνευσης",
|
||||||
"pg_group_timing": "Κανόνες χρονισμού",
|
"pg_group_timing": "Κανόνες χρονισμού",
|
||||||
"pg_idle": "Αεργος",
|
"pg_idle": "Αδρανής",
|
||||||
"pg_last_run": "Τελευταία εκτέλεση: {date}",
|
"pg_last_run": "Τελευταία εκτέλεση: {date}",
|
||||||
"pg_match_score": "Βαθμολογία αντιστοίχισης",
|
"pg_match_score": "Βαθμολογία αντιστοίχισης",
|
||||||
"pg_pct_of": "{p}% των {total}",
|
"pg_pct_of": "{p}% των {total}",
|
||||||
"pg_poor_match": "Κακή αντιστοίχιση",
|
"pg_poor_match": "Κακή αντιστοίχιση",
|
||||||
|
"pg_preset": "Προρύθμιση Χώρου δοκιμών",
|
||||||
|
"pg_preset_name": "Όνομα νέας προρύθμισης",
|
||||||
|
"pg_preset_none": "Επιλέξτε προρύθμιση…",
|
||||||
"pg_strong_match": "Ισχυρή αντιστοίχιση",
|
"pg_strong_match": "Ισχυρή αντιστοίχιση",
|
||||||
"pg_tile_ambiguous": "Ασαφείς",
|
"pg_tile_ambiguous": "Ασαφείς",
|
||||||
"pg_tile_ambiguous_tip": "Κύκλοι με σχεδόν ισοπαλία μεταξύ δύο προγραμμάτων",
|
"pg_tile_ambiguous_tip": "Κύκλοι με σχεδόν ισοπαλία μεταξύ δύο προγραμμάτων",
|
||||||
@@ -436,8 +503,8 @@
|
|||||||
"raw_socket": "Ακατέργαστο σήμα πρίζας",
|
"raw_socket": "Ακατέργαστο σήμα πρίζας",
|
||||||
"read_only": "Μόνο για ανάγνωση",
|
"read_only": "Μόνο για ανάγνωση",
|
||||||
"ref_cycle": "Κύκλος αναφοράς (προαιρετικό)",
|
"ref_cycle": "Κύκλος αναφοράς (προαιρετικό)",
|
||||||
"refresh_interval": "Διαστήματα ανανέωσης",
|
"refresh_interval": "Διάστημα ανανέωσης (δευτ.)",
|
||||||
"remaining": "Παραμένων",
|
"remaining": "Απομένει",
|
||||||
"reminder_every": "Υπενθύμιση κάθε (κύκλους)",
|
"reminder_every": "Υπενθύμιση κάθε (κύκλους)",
|
||||||
"remove_label": "- Αφαιρέστε την ετικέτα -",
|
"remove_label": "- Αφαιρέστε την ετικέτα -",
|
||||||
"rename_profile": "Μετονομασία προφίλ",
|
"rename_profile": "Μετονομασία προφίλ",
|
||||||
@@ -457,7 +524,7 @@
|
|||||||
"settings_basic": "Βασικά",
|
"settings_basic": "Βασικά",
|
||||||
"settings_detail_level": "Επίπεδο λεπτομέρειας ρυθμίσεων",
|
"settings_detail_level": "Επίπεδο λεπτομέρειας ρυθμίσεων",
|
||||||
"settings_overrides": "Παρακάμψεις ρυθμίσεων",
|
"settings_overrides": "Παρακάμψεις ρυθμίσεων",
|
||||||
"show_debug": "Εμφάνιση της κάρτας εντοπισμού σφαλμάτων ζωντανού αγώνα στη σελίδα Κατάσταση (εμπιστοσύνη, ασάφεια, κορυφαίοι υποψήφιοι)",
|
"show_debug": "Εμφάνιση της κάρτας εντοπισμού σφαλμάτων ζωντανής αντιστοίχισης στη σελίδα Κατάσταση (εμπιστοσύνη, ασάφεια, κορυφαίοι υποψήφιοι)",
|
||||||
"show_expected": "Εμφάνιση αναμενόμενης επικάλυψης καμπύλης (αντιστοιχισμένο προφίλ, πορτοκαλί)",
|
"show_expected": "Εμφάνιση αναμενόμενης επικάλυψης καμπύλης (αντιστοιχισμένο προφίλ, πορτοκαλί)",
|
||||||
"show_raw": "Εμφάνιση εναλλακτή ακατέργαστης πρίζας στο γράφημα ζωντανής ισχύος",
|
"show_raw": "Εμφάνιση εναλλακτή ακατέργαστης πρίζας στο γράφημα ζωντανής ισχύος",
|
||||||
"sparkline": "Τάση διάρκειας πρόσφατων κύκλων",
|
"sparkline": "Τάση διάρκειας πρόσφατων κύκλων",
|
||||||
@@ -465,9 +532,9 @@
|
|||||||
"stage3": "Στάδιο 3 – DTW",
|
"stage3": "Στάδιο 3 – DTW",
|
||||||
"stage4": "Στάδιο 4 – συμφωνία",
|
"stage4": "Στάδιο 4 – συμφωνία",
|
||||||
"status": "Κατάσταση",
|
"status": "Κατάσταση",
|
||||||
"tail_trim": "Περικοπή ουράς",
|
"tail_trim": "Περικοπή ουράς (δευτ.)",
|
||||||
"timer_auto_pause": "Αυτόματη παύση",
|
"timer_auto_pause": "Αυτόματη παύση",
|
||||||
"timer_min": "ελάχ",
|
"timer_min": "λεπτά",
|
||||||
"timer_msg_placeholder": "Μήνυμα (προαιρετικό, {device}/{program}/{minutes})",
|
"timer_msg_placeholder": "Μήνυμα (προαιρετικό, {device}/{program}/{minutes})",
|
||||||
"to": "Έως",
|
"to": "Έως",
|
||||||
"ungrouped": "Μη ομαδοποιημένος",
|
"ungrouped": "Μη ομαδοποιημένος",
|
||||||
@@ -488,7 +555,7 @@
|
|||||||
"from_start": "Από την αρχή",
|
"from_start": "Από την αρχή",
|
||||||
"to_end": "Έως το τέλος",
|
"to_end": "Έως το τέλος",
|
||||||
"click_to_select": "κάντε κλικ για επιλογή",
|
"click_to_select": "κάντε κλικ για επιλογή",
|
||||||
"envelope": "Φάκελος",
|
"envelope": "Περιβάλλουσα",
|
||||||
"zoom_hint": "κύλιση για ζουμ · διπλό κλικ για επαναφορά",
|
"zoom_hint": "κύλιση για ζουμ · διπλό κλικ για επαναφορά",
|
||||||
"loading_paren": "(φόρτωση…)",
|
"loading_paren": "(φόρτωση…)",
|
||||||
"time_remaining": "~{v} απομένουν",
|
"time_remaining": "~{v} απομένουν",
|
||||||
@@ -585,7 +652,7 @@
|
|||||||
"task_split": "Διαχωρισμός κύκλου",
|
"task_split": "Διαχωρισμός κύκλου",
|
||||||
"task_trim": "Περικοπή κύκλου",
|
"task_trim": "Περικοπή κύκλου",
|
||||||
"task_merge": "Συγχώνευση κύκλων",
|
"task_merge": "Συγχώνευση κύκλων",
|
||||||
"task_rebuild": "Ανακατασκευή φακέλων",
|
"task_rebuild": "Ανακατασκευή περιβαλλουσών",
|
||||||
"cat_profiles": "Προφίλ (προγράμματα)",
|
"cat_profiles": "Προφίλ (προγράμματα)",
|
||||||
"cat_real_cycles": "Κύκλοι (ιστορικό εκτελέσεων)",
|
"cat_real_cycles": "Κύκλοι (ιστορικό εκτελέσεων)",
|
||||||
"cat_reference_cycles": "Κύκλοι αναφοράς (εισαγμένοι)",
|
"cat_reference_cycles": "Κύκλοι αναφοράς (εισαγμένοι)",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Συγκρούσεις ονομάτων",
|
"conflict_resolution": "Συγκρούσεις ονομάτων",
|
||||||
"conflict_import_copy": "Εισαγωγή ως αντίγραφο",
|
"conflict_import_copy": "Εισαγωγή ως αντίγραφο",
|
||||||
"conflict_keep_mine": "Διατήρηση δικών μου",
|
"conflict_keep_mine": "Διατήρηση δικών μου",
|
||||||
"conflict_overwrite": "Αντικατάσταση"
|
"conflict_overwrite": "Αντικατάσταση",
|
||||||
|
"font_size": "Μέγεθος γραμματοσειράς πίνακα"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Όλα τα επίπεδα",
|
"all_levels": "Όλα τα επίπεδα",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Εφαρμογή της καλύτερης τιμής: {label} = {value};",
|
"pg_apply_confirm": "Εφαρμογή της καλύτερης τιμής: {label} = {value};",
|
||||||
"pg_canvas_empty": "Επιλέξτε έναν κύκλο παραπάνω και, στη συνέχεια, πατήστε Φόρτωση για να δείτε την καμπύλη ισχύος του.",
|
"pg_canvas_empty": "Επιλέξτε έναν κύκλο παραπάνω και, στη συνέχεια, πατήστε Φόρτωση για να δείτε την καμπύλη ισχύος του.",
|
||||||
"pg_chart_caption": "Ποσοστό εντοπισμού/αντιστοίχισης ανά τιμές του {param}",
|
"pg_chart_caption": "Ποσοστό εντοπισμού/αντιστοίχισης ανά τιμές του {param}",
|
||||||
|
"pg_ctrl_intro": "Οι τιμές ξεκινούν από τις ενεργές ρυθμίσεις ενσωμάτωσης αυτής της συσκευής. Οι αλλαγές παραμένουν στον Χώρο δοκιμών μέχρι να τις εφαρμόσετε.",
|
||||||
|
"pg_live_unavailable": "Οι ενεργές ρυθμίσεις δεν είναι διαθέσιμες, εμφανίζονται οι προεπιλογές.",
|
||||||
|
"pg_load_live_confirm": "Να απορριφθούν οι αλλαγές του Χώρου δοκιμών ({n}) και να επαναφορτωθούν οι τρέχουσες ρυθμίσεις της ενσωμάτωσης;",
|
||||||
"pg_match_rate": "{pct}% ποσοστό αντιστοίχισης σε {total} κύκλους",
|
"pg_match_rate": "{pct}% ποσοστό αντιστοίχισης σε {total} κύκλους",
|
||||||
|
"pg_matches_live": "Ταυτίζεται με τις ενεργές ρυθμίσεις",
|
||||||
|
"pg_n_changed": "Διαφορές από τις ενεργές ρυθμίσεις: {n}",
|
||||||
|
"pg_sugg_none": "Όλες οι προτάσεις αντιστοιχούν ήδη στις τρέχουσες ρυθμίσεις",
|
||||||
|
"pg_preset_delete_confirm": "Διαγραφή της προρύθμισης \"{name}\";",
|
||||||
|
"pg_preset_limit": "Συμπληρώθηκε το όριο προρυθμίσεων ({n})",
|
||||||
|
"pg_preset_overwrite": "Αντικατάσταση της προρύθμισης \"{name}\";",
|
||||||
|
"pg_publish_one_confirm": "Αποθήκευση {label} = {value} στις ρυθμίσεις αυτής της συσκευής;",
|
||||||
"pg_restart_note": "Επανεκκινήστε το Home Assistant για να ενεργοποιήσετε τα εργαλεία προσομοίωσης.",
|
"pg_restart_note": "Επανεκκινήστε το Home Assistant για να ενεργοποιήσετε τα εργαλεία προσομοίωσης.",
|
||||||
"pg_sim_progress": "{done} / {total} κύκλοι",
|
"pg_sim_progress": "{done} / {total} κύκλοι",
|
||||||
"pg_starting": "Εκκίνηση…",
|
"pg_starting": "Εκκίνηση…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Μικρότερη τάση διάρκειας ({pct}%/κύκλος) – πρόσφατος μέσος όρος {avg}",
|
"trend_duration_shorter": "Μικρότερη τάση διάρκειας ({pct}%/κύκλος) – πρόσφατος μέσος όρος {avg}",
|
||||||
"trend_energy_down": "Πτωτική τάση ενέργειας ({pct}%/κύκλος)",
|
"trend_energy_down": "Πτωτική τάση ενέργειας ({pct}%/κύκλος)",
|
||||||
"trend_energy_up": "Ανοδικές τάσεις ενέργειας ({pct}%/κύκλος) – πρόσφατος μέσος όρος {avg}",
|
"trend_energy_up": "Ανοδικές τάσεις ενέργειας ({pct}%/κύκλος) – πρόσφατος μέσος όρος {avg}",
|
||||||
|
"trim_destructive_confirm": "Αυτό διατηρεί μόνο το {pct}% του κύκλου και δεν μπορεί να αναιρεθεί. Συνέχεια;",
|
||||||
"trim_intro": "Σύρετε τις κόκκινες λαβές ή εισαγάγετε τιμές. Όλα έξω από το παράθυρο αφαιρούνται.",
|
"trim_intro": "Σύρετε τις κόκκινες λαβές ή εισαγάγετε τιμές. Όλα έξω από το παράθυρο αφαιρούνται.",
|
||||||
"tuning_suggestions_available": "{count} πρόταση συντονισμού διαθέσιμη από παρατηρούμενους κύκλους. Εμφανίζονται δίπλα στα σχετικά πεδία.",
|
"tuning_suggestions_available": "{count} πρόταση συντονισμού διαθέσιμη από παρατηρούμενους κύκλους. Εμφανίζονται δίπλα στα σχετικά πεδία.",
|
||||||
"unsure_detected_prefix": "Το WashData δεν είναι βέβαιο ότι εντόπισε",
|
"unsure_detected_prefix": "Το WashData δεν είναι βέβαιο ότι εντόπισε",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "Τα εισαγόμενα στοιχεία προστίθενται και τίποτα τοπικό δεν χάνεται. Οι συγκρούσεις ονομάτων επιλύονται παρακάτω.",
|
"merge_hint": "Τα εισαγόμενα στοιχεία προστίθενται και τίποτα τοπικό δεν χάνεται. Οι συγκρούσεις ονομάτων επιλύονται παρακάτω.",
|
||||||
"replace_warn": "Κάθε επιλεγμένη κατηγορία διαγράφεται και αντικαθίσταται από το αρχείο. Οι μη επιλεγμένες κατηγορίες παραμένουν ανέπαφες.",
|
"replace_warn": "Κάθε επιλεγμένη κατηγορία διαγράφεται και αντικαθίσταται από το αρχείο. Οι μη επιλεγμένες κατηγορίες παραμένουν ανέπαφες.",
|
||||||
"dest_reference_hint": "Οι εισαγόμενοι κύκλοι βελτιώνουν μόνο την αναγνώριση προγράμματος και δεν επηρεάζουν ποτέ τα στατιστικά χρήσης/ενέργειας.",
|
"dest_reference_hint": "Οι εισαγόμενοι κύκλοι βελτιώνουν μόνο την αναγνώριση προγράμματος και δεν επηρεάζουν ποτέ τα στατιστικά χρήσης/ενέργειας.",
|
||||||
"dest_real_history_hint": "Οι εισαγόμενοι κύκλοι υπολογίζονται ως ιστορικό της ίδιας της συσκευής και τροφοδοτούν τα στατιστικά ενέργειας/χρήσης. Χρησιμοποιήστε το για τη μεταφορά μιας συσκευής σε νέα εγκατάσταση."
|
"dest_real_history_hint": "Οι εισαγόμενοι κύκλοι υπολογίζονται ως ιστορικό της ίδιας της συσκευής και τροφοδοτούν τα στατιστικά ενέργειας/χρήσης. Χρησιμοποιήστε το για τη μεταφορά μιας συσκευής σε νέα εγκατάσταση.",
|
||||||
|
"sug_muted": "Δεν θα προτείνεται ξανά αυτή η ρύθμιση",
|
||||||
|
"sug_mute_failed": "Αποτυχία σίγασης πρότασης",
|
||||||
|
"sug_unmuted_all": "Οι αποσιωπημένες προτάσεις επαναφέρθηκαν",
|
||||||
|
"n_suggestions_muted": "{count} αποσιωπημένες· ο αυτόματος ρυθμιστής δεν θα τις προτείνει.",
|
||||||
|
"font_size_hint": "Κάντε τα πάντα σε αυτόν τον πίνακα μεγαλύτερα ή μικρότερα. Ισχύει για τον λογαριασμό σας σε αυτήν τη συσκευή."
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Περιστασιακά σύντομες ανατροπές μετά την ολοκλήρωση για μείωση των ρυτίδων.",
|
"anti_crease": "Περιστασιακά σύντομες ανατροπές μετά την ολοκλήρωση για μείωση των ρυτίδων.",
|
||||||
@@ -1009,6 +1093,10 @@
|
|||||||
"phase_eta": {
|
"phase_eta": {
|
||||||
"label": "Υπολειπόμενος Χρόνος",
|
"label": "Υπολειπόμενος Χρόνος",
|
||||||
"intro": "Υπολειπόμενος χρόνος με επίγνωση φάσεων, για μηχανές των οποίων η διάρκεια κύκλου εξαρτάται από τη θερμοκρασία ή το στύψιμο."
|
"intro": "Υπολειπόμενος χρόνος με επίγνωση φάσεων, για μηχανές των οποίων η διάρκεια κύκλου εξαρτάται από τη θερμοκρασία ή το στύψιμο."
|
||||||
|
},
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Πλυντήριο πιάτων",
|
||||||
|
"intro": "Διαχείριση τέλους κύκλου για πλυντήρια πιάτων, τα οποία συνήθως ολοκληρώνονται με μια μακρά φάση στεγνώματος σχεδόν μηδενικής κατανάλωσης πριν από μια σύντομη τελική αποστράγγιση."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
@@ -1232,6 +1320,10 @@
|
|||||||
"doc": "Λίγα λεπτά μετά τη λήξη ενός κύκλου προτού στείλετε την υπενθύμιση \"ξεφόρτωση του μηχανήματος\" σε αναμονή. Ορίστε το 0 για να απενεργοποιήσετε την υπενθύμιση.",
|
"doc": "Λίγα λεπτά μετά τη λήξη ενός κύκλου προτού στείλετε την υπενθύμιση \"ξεφόρτωση του μηχανήματος\" σε αναμονή. Ορίστε το 0 για να απενεργοποιήσετε την υπενθύμιση.",
|
||||||
"label": "Καθυστέρηση Υπενθύμισης Αποφόρτωσης"
|
"label": "Καθυστέρηση Υπενθύμισης Αποφόρτωσης"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Στέλνει ξανά την υπενθύμιση αποφόρτωσης κάθε \"Καθυστέρηση Υπενθύμισης Αποφόρτωσης\" λεπτά, μέχρι να ανοίξετε την πόρτα ή να πατήσετε \"Διακοπή υπενθυμίσεων\" στην ειδοποίηση. Απαιτεί Οντότητα Αισθητήρα Πόρτας (όπως και η ίδια η υπενθύμιση). Το κουμπί απόρριψης λειτουργεί σε ειδοποιήσεις της εφαρμογής-συντρόφου (κινητό) του Home Assistant.",
|
||||||
|
"label": "Επανάληψη μέχρι να ανοίξει η πόρτα"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Χρόνος αναμονής μετά την πτώση του ρεύματος πριν δηλώσετε ότι ο κύκλος έχει ολοκληρωθεί. Εάν επανέλθει η τροφοδοσία σε αυτό το παράθυρο, ο κύκλος συνεχίζεται απρόσκοπτα - αυτό γεφυρώνει τις παύσεις μεταξύ των σταδίων πλύσης. Τα πλυντήρια πιάτων έχουν μεγάλες φάσεις στεγνώματος (απενεργοποίηση για 20-60 λεπτά), επομένως η καθυστέρηση εκτός λειτουργίας πρέπει να υπερβαίνει αυτήν για να διατηρηθεί ολόκληρο το πλύσιμο+στεγνό σε έναν κύκλο.",
|
"doc": "Χρόνος αναμονής μετά την πτώση του ρεύματος πριν δηλώσετε ότι ο κύκλος έχει ολοκληρωθεί. Εάν επανέλθει η τροφοδοσία σε αυτό το παράθυρο, ο κύκλος συνεχίζεται απρόσκοπτα - αυτό γεφυρώνει τις παύσεις μεταξύ των σταδίων πλύσης. Τα πλυντήρια πιάτων έχουν μεγάλες φάσεις στεγνώματος (απενεργοποίηση για 20-60 λεπτά), επομένως η καθυστέρηση εκτός λειτουργίας πρέπει να υπερβαίνει αυτήν για να διατηρηθεί ολόκληρο το πλύσιμο+στεγνό σε έναν κύκλο.",
|
||||||
"label": "Καθυστέρηση Απενεργοποίησης"
|
"label": "Καθυστέρηση Απενεργοποίησης"
|
||||||
@@ -1406,6 +1498,30 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Ευαισθησία Ενέργειας",
|
"label": "Ευαισθησία Ενέργειας",
|
||||||
"doc": "Αυστηρότητα της ποινής συμφωνίας ενέργειας Σταδίου 4. Μικρότερος = αυστηρότερος: μια ασυμφωνία ενέργειας επηρεάζει περισσότερο. Η προεπιλογή 0.25 είναι εκ προθέσεως πιο επιεικής από την Ευαισθησία Διάρκειας επειδή η ενέργεια ποικίλλει με το φορτίο. Χρησιμοποιήστε μαζί με το Βάρος Ενέργειας."
|
"doc": "Αυστηρότητα της ποινής συμφωνίας ενέργειας Σταδίου 4. Μικρότερος = αυστηρότερος: μια ασυμφωνία ενέργειας επηρεάζει περισσότερο. Η προεπιλογή 0.25 είναι εκ προθέσεως πιο επιεικής από την Ευαισθησία Διάρκειας επειδή η ενέργεια ποικίλλει με το φορτίο. Χρησιμοποιήστε μαζί με το Βάρος Ενέργειας."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Διάστημα προφίλ ισχύος",
|
||||||
|
"doc": "Το μέγεθος κουβά για το χαρακτηριστικό αισθητήρα power_profile ανά προφίλ (ο επίπεδος πίνακας μέσων βατ ανά θέση που καταναλώνουν εξωτερικοί σχεδιαστές όπως το EMHASS και το tibber_prices). Μικρότεροι κουβάδες διατηρούν τις σύντομες κορυφές ισχύος έντονες· μεγαλύτεροι κουβάδες εξομαλύνουν το σχήμα. Προεπιλογή 15 λεπτά. Μόνο κατά την ανάγνωση· δεν επηρεάζει την ανίχνευση."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Διατήρηση ζωντανής ειδοποίησης μετά το πάτημα",
|
||||||
|
"doc": "Μόνο Android. Κάντε την ειδοποίηση ζωντανής προόδου μόνιμη (sticky) ώστε το πάτημά της να μη σβήνει το ενεργό νήμα. Απενεργοποιημένο διατηρεί την προεπιλεγμένη συμπεριφορά όπου το πάτημα σβήνει την ειδοποίηση."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Στόχος πατήματος ζωντανής ειδοποίησης",
|
||||||
|
"doc": "Μόνο Android. Πού ανοίγει το πάτημα της ειδοποίησης ζωντανής προόδου (π.χ. /lovelace/laundry ή πλήρες URL) αντί για την αρχική σελίδα της εφαρμογής. Αφήστε κενό για την προεπιλογή."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Η πόρτα ανοίγει αυτόματα στο τέλος",
|
||||||
|
"doc": "Για πλυντήρια πιάτων που ανοίγουν την πόρτα στο τέλος του κύκλου για στέγνωμα (AirDry και παρόμοια). Με αυτό ενεργό, το άνοιγμα της πόρτας κατά τη διάρκεια ενεργού κύκλου δεν τον παγώνει πλέον για πάντα· αντίθετα, εάν η πόρτα παραμείνει ανοιχτή για τη διάρκεια αναμονής παρακάτω, το WashData θεωρεί τον κύκλο ολοκληρωμένο. Μια σύντομη άνοιξη (προσθήκη σκεύους) αγνοείται. Απαιτείται οντότητα αισθητήρα πόρτας."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Διάρκεια αναμονής τέλους ανοίγματος πόρτας",
|
||||||
|
"doc": "Πόσο ώρα πρέπει να παραμείνει ανοιχτή η πόρτα πριν το WashData τερματίσει τον κύκλο, όταν είναι ενεργό το \"Η πόρτα ανοίγει αυτόματα στο τέλος\". Αρκετά μεγάλη ώστε να αγνοεί την γρήγορη προσθήκη πιάτου (προεπιλογή 60 s), αρκετά μικρή ώστε να τερματίζει γρήγορα μόλις ανοίξει η πόρτα."
|
||||||
|
},
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Απελευθέρωση σε ήσυχο παθητικό στέγνωμα",
|
||||||
|
"doc": "Μόλις ο κύκλος ξεπεράσει την αναμενόμενη διάρκειά του, για πόσο χρόνο πρέπει το πλυντήριο πιάτων να παραμείνει ήσυχο (κάτω από το Κατώφλι Τερματισμού) πριν το WashData σταματήσει να περιμένει μια τελική αποστράγγιση και τερματίσει τον κύκλο. Αυξήστε το αν το μηχάνημά σας έχει μια μακρά, αθόρυβη φάση στεγνώματος πριν από μια καθυστερημένη τελική αποστράγγιση που δεν εντοπίζεται - ένα ευρύτερο παράθυρο επιτρέπει στη μαθημένη διάρκεια να ακολουθεί την εποχική μεταβολή (πιο κρύο νερό παροχής = μεγαλύτεροι κύκλοι) αντί να κλειδώνει στον παλιό μέσο όρο. Μπορεί μόνο να μειώσει την αναμονή σε σχέση με το εσωτερικό όριο των 30 λεπτών για την τελική αιχμή, ποτέ να την επεκτείνει."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1496,11 +1612,11 @@
|
|||||||
"all_statuses": "Όλες οι καταστάσεις",
|
"all_statuses": "Όλες οι καταστάσεις",
|
||||||
"ambiguous": "Ασαφής",
|
"ambiguous": "Ασαφής",
|
||||||
"auto_detect": "Αυτόματος εντοπισμός",
|
"auto_detect": "Αυτόματος εντοπισμός",
|
||||||
"clear": "Σαφής",
|
"clear": "Καθαρισμός",
|
||||||
"completed": "Ολοκληρώθηκε το",
|
"completed": "Ολοκληρώθηκε",
|
||||||
"fine_tuning": "τελειοποίηση τώρα…",
|
"fine_tuning": "τελειοποίηση τώρα…",
|
||||||
"force_stopped": "Η δύναμη σταμάτησε",
|
"force_stopped": "Αναγκαστική διακοπή",
|
||||||
"idle": "Αεργος",
|
"idle": "Αδρανής",
|
||||||
"interrupted": "Διακόπηκε",
|
"interrupted": "Διακόπηκε",
|
||||||
"ready": "Έτοιμο για επεξεργασία",
|
"ready": "Έτοιμο για επεξεργασία",
|
||||||
"recording": "Εγγραφή",
|
"recording": "Εγγραφή",
|
||||||
@@ -1516,12 +1632,12 @@
|
|||||||
"imported": "Εισηγμένο"
|
"imported": "Εισηγμένο"
|
||||||
},
|
},
|
||||||
"tab": {
|
"tab": {
|
||||||
"advanced": "Προχωρημένος",
|
"advanced": "Για προχωρημένους",
|
||||||
"diagnostics": "Διαγνωστικά",
|
"diagnostics": "Διαγνωστικά",
|
||||||
"history": "Κύκλοι",
|
"history": "Κύκλοι",
|
||||||
"ml": "Εκπαίδευση ML",
|
"ml": "Εκπαίδευση ML",
|
||||||
"pp_cleanup": "Καθαρισμός",
|
"pp_cleanup": "Καθαρισμός",
|
||||||
"pp_manage": "Διαχειρίζομαι",
|
"pp_manage": "Διαχείριση",
|
||||||
"pp_overview": "Επισκόπηση",
|
"pp_overview": "Επισκόπηση",
|
||||||
"pp_phases": "Φάσεις",
|
"pp_phases": "Φάσεις",
|
||||||
"profiles": "Προφίλ",
|
"profiles": "Προφίλ",
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Απαιτείται όνομα",
|
"name_required": "Απαιτείται όνομα",
|
||||||
"no_split_found": "Δεν βρέθηκαν κενά σε αδράνεια για διαχωρισμό",
|
"no_split_found": "Δεν βρέθηκαν κενά σε αδράνεια για διαχωρισμό",
|
||||||
"panel_settings_saved": "Οι ρυθμίσεις του πίνακα αποθηκεύτηκαν",
|
"panel_settings_saved": "Οι ρυθμίσεις του πίνακα αποθηκεύτηκαν",
|
||||||
|
"pg_preset_loaded": "Η προρύθμιση \"{name}\" φορτώθηκε",
|
||||||
|
"pg_preset_saved": "Η προρύθμιση \"{name}\" αποθηκεύτηκε",
|
||||||
|
"pg_sugg_loaded": "Φορτώθηκαν {n} προτεινόμενες τιμές - εκτελέστε τον Χώρο δοκιμών για σύγκριση",
|
||||||
|
"pg_sugg_ml_loaded": "Φορτώθηκαν {n} τιμές βαθμονόμησης ML - εκτελέστε τον Χώρο δοκιμών για σύγκριση",
|
||||||
"phase_name_required": "Απαιτείται όνομα φάσης",
|
"phase_name_required": "Απαιτείται όνομα φάσης",
|
||||||
"phase_updated": "Η φάση ενημερώθηκε",
|
"phase_updated": "Η φάση ενημερώθηκε",
|
||||||
"phases_saved": "Οι φάσεις αποθηκεύτηκαν",
|
"phases_saved": "Οι φάσεις αποθηκεύτηκαν",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "Βάσει της ελάχιστης ενεργού ισχύος ({min}W) που παρατηρήθηκε στον τελευταίο κύκλο.",
|
"min_active": "Βάσει της ελάχιστης ενεργού ισχύος ({min}W) που παρατηρήθηκε στον τελευταίο κύκλο.",
|
||||||
"min_duration_ratio": "Διατηρείται όσο το δυνατόν χαμηλότερο ώστε ένα πρόγραμμα να αναγνωρίζεται νωρίς στον κύκλο· τα κατώφλια αξιοπιστίας και ασάφειας αποτρέπουν τις πρόωρες επιβεβαιώσεις.",
|
"min_duration_ratio": "Διατηρείται όσο το δυνατόν χαμηλότερο ώστε ένα πρόγραμμα να αναγνωρίζεται νωρίς στον κύκλο· τα κατώφλια αξιοπιστίας και ασάφειας αποτρέπουν τις πρόωρες επιβεβαιώσεις.",
|
||||||
"min_off_gap": "Βάσει {gaps} παρατηρούμενων διακυκλικών κενών (p05={p05}s). Κατώτατο όριο συσκευής: {floor}s.",
|
"min_off_gap": "Βάσει {gaps} παρατηρούμενων διακυκλικών κενών (p05={p05}s). Κατώτατο όριο συσκευής: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Διαστασιολογήθηκε ώστε να γεφυρώνει το μεγαλύτερο διάστημα ησυχίας μέσα στον κύκλο: {span}s + 60s περιθώριο, από {spans} γεφυρωμένα κενά σε {cycles} καθαρούς κύκλους (παραμένει κάτω από τα {ceiling}s, το συντομότερο διάλειμμα που αφήνετε ανάμεσα σε δύο διαδοχικές εκκινήσεις).",
|
||||||
"min_power": "40% της χαμηλότερης ενεργού ισχύος p05 ({p05}W) σε {cycles} καθαρούς κύκλους, διατηρώντας το κατώφλι απενεργοποίησης κάτω από την πραγματική κατανάλωση.{excl}",
|
"min_power": "40% της χαμηλότερης ενεργού ισχύος p05 ({p05}W) σε {cycles} καθαρούς κύκλους, διατηρώντας το κατώφλι απενεργοποίησης κάτω από την πραγματική κατανάλωση.{excl}",
|
||||||
"ml_auto_label": "Η χαμηλότερη αξιοπιστία που το μοντέλο ποιότητας εξακολούθησε να αξιολογεί ως καθαρή (p10 των {cycles} καθαρών κύκλων = {p10}).",
|
"ml_auto_label": "Η χαμηλότερη αξιοπιστία που το μοντέλο ποιότητας εξακολούθησε να αξιολογεί ως καθαρή (p10 των {cycles} καθαρών κύκλων = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} κύκλοι ({pct}%) είχαν παύση που ο ανιχνευτής τέλους βαθμολόγησε >50%· απαιτούνται {val} επιβεβαίωση(εις) τέλους.",
|
"ml_end_repeat": "{false}/{total} κύκλοι ({pct}%) είχαν παύση που ο ανιχνευτής τέλους βαθμολόγησε >50%· απαιτούνται {val} επιβεβαίωση(εις) τέλους.",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Διατηρείται λίγο πάνω από τη χαμηλότερη ενεργό ισχύ p05 σε {cycles} κύκλους ({p05}W) ώστε μια έναρξη να εντοπίζεται όσο το δυνατόν νωρίτερα και το κατώφλι διακοπής να παραμένει κάτω από τη χαμηλότερη ισχύ λειτουργίας της μηχανής.",
|
"thr_batch": "Διατηρείται λίγο πάνω από τη χαμηλότερη ενεργό ισχύ p05 σε {cycles} κύκλους ({p05}W) ώστε μια έναρξη να εντοπίζεται όσο το δυνατόν νωρίτερα και το κατώφλι διακοπής να παραμένει κάτω από τη χαμηλότερη ισχύ λειτουργίας της μηχανής.",
|
||||||
"tol_per_profile": "p75 της διακύμανσης διάρκειας ανά προφίλ σε {profiles} προφίλ ({cycles} κύκλοι)· τα σταθερά προφίλ δεν επιβαρύνονται.",
|
"tol_per_profile": "p75 της διακύμανσης διάρκειας ανά προφίλ σε {profiles} προφίλ ({cycles} κύκλοι)· τα σταθερά προφίλ δεν επιβαρύνονται.",
|
||||||
"tol_pooled": "Βάσει της συγκεντρωτικής διακύμανσης διάρκειας {cycles} πρόσφατων κύκλων με ετικέτα (απόκλιση p95={dev}).",
|
"tol_pooled": "Βάσει της συγκεντρωτικής διακύμανσης διάρκειας {cycles} πρόσφατων κύκλων με ετικέτα (απόκλιση p95={dev}).",
|
||||||
"watchdog": "Διατηρείται όσο το δυνατόν χαμηλότερο με ασφάλεια (3x το κενό ενημέρωσης p95 των {p95}s, ελάχ. 30s) ώστε οι διακοπές να εντοπίζονται γρήγορα χωρίς ψευδείς διακοπές."
|
"watchdog": "Διατηρείται όσο το δυνατόν χαμηλότερο με ασφάλεια (λίγο πάνω από το κενό ενημέρωσης p95 των {p95}s, ελάχ. 30s) ώστε οι διακοπές να εντοπίζονται γρήγορα χωρίς ψευδείς διακοπές."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Εξαιρέθηκαν {total} εσφαλμένα εντοπισμένοι κύκλοι: {parts}.",
|
"summary": "Εξαιρέθηκαν {total} εσφαλμένα εντοπισμένοι κύκλοι: {parts}.",
|
||||||
@@ -1795,7 +1916,8 @@
|
|||||||
"dtw_ddtw_scale": "Στάδιο 3: απόσταση ημίσεος κορεσμού DDTW; μικρότερη = μεγαλύτερη ευαισθησία σχήματος (προεπιλογή 30)",
|
"dtw_ddtw_scale": "Στάδιο 3: απόσταση ημίσεος κορεσμού DDTW; μικρότερη = μεγαλύτερη ευαισθησία σχήματος (προεπιλογή 30)",
|
||||||
"dtw_refine_top_n": "Στάδιο 3: υποψήφιοι που επαναβαθμολογεί η DTW; αυξήστε σε 7-9 αν το σωστό προφίλ βρίσκεται στη 4η-5η θέση (προεπιλογή 5)",
|
"dtw_refine_top_n": "Στάδιο 3: υποψήφιοι που επαναβαθμολογεί η DTW; αυξήστε σε 7-9 αν το σωστό προφίλ βρίσκεται στη 4η-5η θέση (προεπιλογή 5)",
|
||||||
"duration_scale": "Στάδιο 4: λόγος λογαρίθμου όπου η συμφωνία διάρκειας υποδιπλασιάζεται; μικρότερος = αυστηρότερη ποινή (προεπιλογή 0.175)",
|
"duration_scale": "Στάδιο 4: λόγος λογαρίθμου όπου η συμφωνία διάρκειας υποδιπλασιάζεται; μικρότερος = αυστηρότερη ποινή (προεπιλογή 0.175)",
|
||||||
"energy_scale": "Στάδιο 4: λόγος λογαρίθμου όπου η συμφωνία ενέργειας υποδιπλασιάζεται; μικρότερος = αυστηρότερη ποινή (προεπιλογή 0.25)"
|
"energy_scale": "Στάδιο 4: λόγος λογαρίθμου όπου η συμφωνία ενέργειας υποδιπλασιάζεται; μικρότερος = αυστηρότερη ποινή (προεπιλογή 0.25)",
|
||||||
|
"dishwasher_end_spike_quiet_release": "Πλυντήριο πιάτων: δευτερόλεπτα ησυχίας μετά την αναμενόμενη διάρκεια πριν απελευθερωθεί η αναμονή αποστράγγισης τέλους κύκλου"
|
||||||
},
|
},
|
||||||
"col": {
|
"col": {
|
||||||
"profile_tip": "Όνομα αντιστοιχισμένου προγράμματος. Χωρίς ετικέτα σημαίνει ότι κανένα προφίλ δεν αντιστοιχίστηκε στο τέλος του κύκλου.",
|
"profile_tip": "Όνομα αντιστοιχισμένου προγράμματος. Χωρίς ετικέτα σημαίνει ότι κανένα προφίλ δεν αντιστοιχίστηκε στο τέλος του κύκλου.",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entity not found",
|
||||||
|
"running_long": "Running long",
|
||||||
|
"remaining": "remaining",
|
||||||
|
"progress": "progress",
|
||||||
|
"show_time_remaining": "Show time remaining",
|
||||||
|
"show_percentage": "Show percentage",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Tile (compact)",
|
||||||
|
"detail": "Detail (rich)",
|
||||||
|
"glance": "Glance (multiple devices)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pause",
|
||||||
|
"resume": "Resume",
|
||||||
|
"terminate": "End cycle",
|
||||||
|
"record_start": "Start recording",
|
||||||
|
"record_stop": "Stop recording",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Open WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Layout",
|
||||||
|
"entity": "Appliance entity",
|
||||||
|
"entities": "Appliances",
|
||||||
|
"title": "Title",
|
||||||
|
"icon": "Icon",
|
||||||
|
"show_state": "Show state",
|
||||||
|
"show_program": "Show program",
|
||||||
|
"show_progress_bar": "Show progress bar",
|
||||||
|
"spin_icon": "Spin icon while running",
|
||||||
|
"display_mode": "Detail line",
|
||||||
|
"active_color": "Active color override",
|
||||||
|
"show_phase": "Show phase",
|
||||||
|
"show_energy": "Show energy and cost",
|
||||||
|
"show_anomaly": "Show overrun warning",
|
||||||
|
"show_sparkline": "Show live power graph",
|
||||||
|
"buttons": "Action buttons",
|
||||||
|
"program_entity": "Program entity (override)",
|
||||||
|
"time_entity": "Time entity (override)",
|
||||||
|
"pct_entity": "Progress entity (override)",
|
||||||
|
"power_entity": "Power entity (override)",
|
||||||
|
"tap_action": "Tap action",
|
||||||
|
"hold_action": "Hold action",
|
||||||
|
"double_tap_action": "Double tap action"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"artifact_tip": "{n} anomalies detected (e.g. door opened mid-cycle) – open to see them on the graph",
|
"artifact_tip": "{n} anomalies detected (e.g. door opened mid-cycle) – open to see them on the graph",
|
||||||
@@ -72,6 +120,21 @@
|
|||||||
"discard_tip": "Discard the recorded trace without saving",
|
"discard_tip": "Discard the recorded trace without saving",
|
||||||
"disconnect": "Disconnect",
|
"disconnect": "Disconnect",
|
||||||
"dismiss": "Dismiss",
|
"dismiss": "Dismiss",
|
||||||
|
"mute_suggestion": "Stop suggesting this setting",
|
||||||
|
"pg_load_calibrated": "Load Calibrated (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Stage ML-calibrated settings as Playground overrides",
|
||||||
|
"pg_load_live": "Load live settings",
|
||||||
|
"pg_load_live_tip": "Re-read the integration's current settings and drop every Playground edit",
|
||||||
|
"pg_load_suggested": "Load suggested ({n})",
|
||||||
|
"pg_load_suggested_tip": "Stage the auto-tuner's current suggestions as Playground overrides",
|
||||||
|
"pg_preset_delete": "Delete preset",
|
||||||
|
"pg_preset_load": "Load preset",
|
||||||
|
"pg_preset_load_tip": "Replace the Playground values with this preset (live settings are untouched)",
|
||||||
|
"pg_preset_save": "Save as preset",
|
||||||
|
"pg_preset_save_tip": "Save every value below as a named preset for this device",
|
||||||
|
"pg_publish_all": "Publish {n} to integration",
|
||||||
|
"pg_publish_one": "Publish {label} to the integration",
|
||||||
|
"reset_muted": "Reset muted",
|
||||||
"done": "Done",
|
"done": "Done",
|
||||||
"download_device": "Download this setup",
|
"download_device": "Download this setup",
|
||||||
"download_export": "Download export",
|
"download_export": "Download export",
|
||||||
@@ -274,6 +337,7 @@
|
|||||||
"no_automations": "No automations reference this device yet.",
|
"no_automations": "No automations reference this device yet.",
|
||||||
"panel_settings": "Panel Settings",
|
"panel_settings": "Panel Settings",
|
||||||
"param_sweep": "Parameter sweep",
|
"param_sweep": "Parameter sweep",
|
||||||
|
"pg_settings_source": "Settings source",
|
||||||
"phase_catalog": "Phase Catalog",
|
"phase_catalog": "Phase Catalog",
|
||||||
"playground": "Playground",
|
"playground": "Playground",
|
||||||
"process_history": "Process History",
|
"process_history": "Process History",
|
||||||
@@ -370,6 +434,7 @@
|
|||||||
"default_access_level": "Default level for users not listed below",
|
"default_access_level": "Default level for users not listed below",
|
||||||
"default_other": "Default (other devices)",
|
"default_other": "Default (other devices)",
|
||||||
"default_tab": "Default tab when opening the panel",
|
"default_tab": "Default tab when opening the panel",
|
||||||
|
"font_size": "Panel font size",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Description",
|
"description": "Description",
|
||||||
"dest_real_history": "Real history (counts in stats)",
|
"dest_real_history": "Real history (counts in stats)",
|
||||||
@@ -466,6 +531,9 @@
|
|||||||
"pg_group_matching": "Program matching",
|
"pg_group_matching": "Program matching",
|
||||||
"pg_group_timing": "Timing rules",
|
"pg_group_timing": "Timing rules",
|
||||||
"pg_idle": "Idle",
|
"pg_idle": "Idle",
|
||||||
|
"pg_preset": "Playground preset",
|
||||||
|
"pg_preset_name": "New preset name",
|
||||||
|
"pg_preset_none": "Select a preset…",
|
||||||
"pg_stress_group": "Idle termination test",
|
"pg_stress_group": "Idle termination test",
|
||||||
"pg_stress_idle_auto": "Auto",
|
"pg_stress_idle_auto": "Auto",
|
||||||
"pg_stress_idle_w": "Idle level (W)",
|
"pg_stress_idle_w": "Idle level (W)",
|
||||||
@@ -768,6 +836,16 @@
|
|||||||
"pg_analysis_hint2": "Pick a cycle and press Run to load match analysis.",
|
"pg_analysis_hint2": "Pick a cycle and press Run to load match analysis.",
|
||||||
"pg_apply_confirm": "Apply best value: {label} = {value}?",
|
"pg_apply_confirm": "Apply best value: {label} = {value}?",
|
||||||
"pg_apply_settings_confirm": "Save these {n} setting(s) to this device? {list}",
|
"pg_apply_settings_confirm": "Save these {n} setting(s) to this device? {list}",
|
||||||
|
"pg_ctrl_intro": "Values start from this device's live integration settings. Edits stay in the Playground until you publish them.",
|
||||||
|
"pg_live_unavailable": "Live settings unavailable, showing defaults.",
|
||||||
|
"pg_load_live_confirm": "Discard {n} Playground edit(s) and reload the integration's current settings?",
|
||||||
|
"pg_matches_live": "Matches live settings",
|
||||||
|
"pg_n_changed": "{n} changed vs live settings",
|
||||||
|
"pg_sugg_none": "All suggestions already match the current settings",
|
||||||
|
"pg_preset_delete_confirm": "Delete the preset \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Preset limit reached ({n})",
|
||||||
|
"pg_preset_overwrite": "Overwrite the preset \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Save {label} = {value} to this device's settings?",
|
||||||
"pg_stress_terminated_detail": "Settled to ~{idle}W idle -- cycle ended {h}h {m}m later via {reason}.",
|
"pg_stress_terminated_detail": "Settled to ~{idle}W idle -- cycle ended {h}h {m}m later via {reason}.",
|
||||||
"pg_stress_above_threshold_detail": "Idle draw ~{idle}W is at or above the effective stop threshold ({stop}W) -- the cycle never registered as quiet. Raise stop_threshold_w to fix.",
|
"pg_stress_above_threshold_detail": "Idle draw ~{idle}W is at or above the effective stop threshold ({stop}W) -- the cycle never registered as quiet. Raise stop_threshold_w to fix.",
|
||||||
"pg_stress_hit_cap_detail": "Cycle ran {h}h {m}m without stopping -- force-stopped by the safety cap. Idle draw {idle}W vs stop threshold {stop}W.",
|
"pg_stress_hit_cap_detail": "Cycle ran {h}h {m}m without stopping -- force-stopped by the safety cap. Idle draw {idle}W vs stop threshold {stop}W.",
|
||||||
@@ -800,6 +878,7 @@
|
|||||||
"preferences_admin": "Preferences, panel & access control",
|
"preferences_admin": "Preferences, panel & access control",
|
||||||
"preferences_adv": "Preferences",
|
"preferences_adv": "Preferences",
|
||||||
"prefs_personal": "These apply to your Home Assistant account only.",
|
"prefs_personal": "These apply to your Home Assistant account only.",
|
||||||
|
"font_size_hint": "Make everything in this panel larger or smaller. Applies to your account on this device.",
|
||||||
"process_history_hint": "Re-run matching on all stored cycles, refresh tuning suggestions, retrain the ML models (if enabled), and recompute cycle health. Run this after a batch of reviews.",
|
"process_history_hint": "Re-run matching on all stored cycles, refresh tuning suggestions, retrain the ML models (if enabled), and recompute cycle health. Run this after a batch of reviews.",
|
||||||
"profile_deleted": "Profile deleted",
|
"profile_deleted": "Profile deleted",
|
||||||
"profile_poor_health_detail": "Cycles assigned to this profile have inconsistent shapes or low confidence. Consider rebuilding the envelope or reviewing labelled cycles.",
|
"profile_poor_health_detail": "Cycles assigned to this profile have inconsistent shapes or low confidence. Consider rebuilding the envelope or reviewing labelled cycles.",
|
||||||
@@ -845,6 +924,10 @@
|
|||||||
"store_share_device_intro": "Upload {brand} {model} with the reference cycles you select. Others with the same appliance can adopt your programs. Entries are reviewed before appearing publicly.",
|
"store_share_device_intro": "Upload {brand} {model} with the reference cycles you select. Others with the same appliance can adopt your programs. Entries are reviewed before appearing publicly.",
|
||||||
"store_share_intro": "Upload this reference cycle so others with the same appliance can use it. It is reviewed before appearing publicly.",
|
"store_share_intro": "Upload this reference cycle so others with the same appliance can use it. It is reviewed before appearing publicly.",
|
||||||
"sug_staged": "Set {key} = {val}. Save to apply.",
|
"sug_staged": "Set {key} = {val}. Save to apply.",
|
||||||
|
"sug_muted": "Won't suggest this setting again",
|
||||||
|
"sug_mute_failed": "Could not mute suggestion",
|
||||||
|
"sug_unmuted_all": "Muted suggestions reset",
|
||||||
|
"n_suggestions_muted": "{count} muted; the auto-tuner will not propose these.",
|
||||||
"tail_trim_hint": "Remove this many seconds from the end",
|
"tail_trim_hint": "Remove this many seconds from the end",
|
||||||
"toast_auto_detect_enabled": "Auto-detect enabled",
|
"toast_auto_detect_enabled": "Auto-detect enabled",
|
||||||
"toast_auto_label_complete": "Auto-label complete",
|
"toast_auto_label_complete": "Auto-label complete",
|
||||||
@@ -872,6 +955,7 @@
|
|||||||
"trend_duration_shorter": "Duration trending shorter ({pct}%/cycle) – recent avg {avg}",
|
"trend_duration_shorter": "Duration trending shorter ({pct}%/cycle) – recent avg {avg}",
|
||||||
"trend_energy_down": "Energy trending down ({pct}%/cycle)",
|
"trend_energy_down": "Energy trending down ({pct}%/cycle)",
|
||||||
"trend_energy_up": "Energy trending up ({pct}%/cycle) – recent avg {avg}",
|
"trend_energy_up": "Energy trending up ({pct}%/cycle) – recent avg {avg}",
|
||||||
|
"trim_destructive_confirm": "This keeps only {pct}% of the cycle and cannot be undone. Continue?",
|
||||||
"trim_intro": "Drag the red handles, or enter values. Everything outside the window is removed.",
|
"trim_intro": "Drag the red handles, or enter values. Everything outside the window is removed.",
|
||||||
"tuning_suggestions_available": "{count} tuning suggestion available from observed cycles. They appear beside the relevant fields.",
|
"tuning_suggestions_available": "{count} tuning suggestion available from observed cycles. They appear beside the relevant fields.",
|
||||||
"unsure_detected_prefix": "WashData is unsure it detected",
|
"unsure_detected_prefix": "WashData is unsure it detected",
|
||||||
@@ -903,6 +987,7 @@
|
|||||||
"duration_scale": "Stage 4: log-ratio where duration agreement halves; smaller = stricter penalty (default 0.175)",
|
"duration_scale": "Stage 4: log-ratio where duration agreement halves; smaller = stricter penalty (default 0.175)",
|
||||||
"energy_scale": "Stage 4: log-ratio where energy agreement halves; smaller = stricter penalty (default 0.25)",
|
"energy_scale": "Stage 4: log-ratio where energy agreement halves; smaller = stricter penalty (default 0.25)",
|
||||||
"anti_wrinkle_idle_timeout": "Quiet time allowed between two tumble pulses before anti-wrinkle ends",
|
"anti_wrinkle_idle_timeout": "Quiet time allowed between two tumble pulses before anti-wrinkle ends",
|
||||||
|
"dishwasher_end_spike_quiet_release": "Dishwasher: quiet seconds after expected duration before the end-of-cycle drain wait is released",
|
||||||
"anti_wrinkle_max_power": "A pulse above this ends anti-wrinkle and opens a new cycle",
|
"anti_wrinkle_max_power": "A pulse above this ends anti-wrinkle and opens a new cycle",
|
||||||
"anti_wrinkle_enabled": "Absorb the tumble pulses after the main phase instead of reading them as new cycles",
|
"anti_wrinkle_enabled": "Absorb the tumble pulses after the main phase instead of reading them as new cycles",
|
||||||
"anti_wrinkle_max_duration": "A pulse longer than this ends anti-wrinkle and opens a new cycle",
|
"anti_wrinkle_max_duration": "A pulse longer than this ends anti-wrinkle and opens a new cycle",
|
||||||
@@ -970,6 +1055,10 @@
|
|||||||
"intro": "How a cycle is detected as starting, running and finishing.",
|
"intro": "How a cycle is detected as starting, running and finishing.",
|
||||||
"label": "Detection"
|
"label": "Detection"
|
||||||
},
|
},
|
||||||
|
"dishwasher": {
|
||||||
|
"intro": "End-of-cycle handling for dishwashers, which typically finish with a long near-silent drying phase before a short final drain.",
|
||||||
|
"label": "Dishwasher"
|
||||||
|
},
|
||||||
"matching": {
|
"matching": {
|
||||||
"intro": "How finished cycles are matched to learned profiles and labelled.",
|
"intro": "How finished cycles are matched to learned profiles and labelled.",
|
||||||
"label": "Matching"
|
"label": "Matching"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
"doc": "Appliance class. Sets sensible detection defaults (thresholds, off-delay, end handling) tuned for that appliance type; change it only if the device was originally set up as the wrong type.",
|
"doc": "Appliance class. Sets sensible detection defaults (thresholds, off-delay, end handling) tuned for that appliance type; change it only if the device was originally set up as the wrong type.",
|
||||||
"label": "Device Type"
|
"label": "Device Type"
|
||||||
},
|
},
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"doc": "Once the cycle passes its expected duration, how long the dishwasher must stay quiet (below the Stop Threshold) before WashData stops waiting for a final drain and ends the cycle. Raise it if your machine has a long silent drying phase before a late final drain that is being missed - a wider window lets the learned duration follow seasonal drift (colder inlet water = longer cycles) instead of locking to the old average. It only ever shortens the wait relative to the internal 30-minute end-spike cap, never extends it.",
|
||||||
|
"label": "Passive-Dry Quiet Release"
|
||||||
|
},
|
||||||
"door_sensor_entity": {
|
"door_sensor_entity": {
|
||||||
"doc": "Optional door binary sensor. Used to detect when the appliance has been opened/unloaded after a cycle.",
|
"doc": "Optional door binary sensor. Used to detect when the appliance has been opened/unloaded after a cycle.",
|
||||||
"label": "Door Sensor Entity"
|
"label": "Door Sensor Entity"
|
||||||
@@ -1228,6 +1321,10 @@
|
|||||||
"doc": "Minutes after a cycle ends before sending the still-waiting \"unload the machine\" reminder. Set 0 to disable the reminder.",
|
"doc": "Minutes after a cycle ends before sending the still-waiting \"unload the machine\" reminder. Set 0 to disable the reminder.",
|
||||||
"label": "Unload Nag Delay"
|
"label": "Unload Nag Delay"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Keep re-sending the unload reminder every \"Unload Nag Delay\" minutes until you open the door or tap \"Stop reminding\" on the notification. Requires a Door Sensor Entity (the reminder itself does). The dismiss button works on Home Assistant companion-app (mobile) notifications.",
|
||||||
|
"label": "Repeat Until Door Opens"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Time to wait after power drops before declaring the cycle finished. If power resumes within this window the cycle continues seamlessly - this bridges pauses between wash stages. Dishwashers have long drying phases (power off for 20-60 min) so the off-delay must exceed that to keep the whole wash+dry as one cycle.",
|
"doc": "Time to wait after power drops before declaring the cycle finished. If power resumes within this window the cycle continues seamlessly - this bridges pauses between wash stages. Dishwashers have long drying phases (power off for 20-60 min) so the off-delay must exceed that to keep the whole wash+dry as one cycle.",
|
||||||
"label": "Off Delay"
|
"label": "Off Delay"
|
||||||
@@ -1386,6 +1483,26 @@
|
|||||||
"anti_wrinkle_idle_timeout": {
|
"anti_wrinkle_idle_timeout": {
|
||||||
"label": "Max Pulse Gap",
|
"label": "Max Pulse Gap",
|
||||||
"doc": "How long the machine may stay quiet between two tumble pulses before anti-wrinkle mode ends. Set it above the longest gap your dryer leaves between pulses, otherwise every later pulse is read as a false start."
|
"doc": "How long the machine may stay quiet between two tumble pulses before anti-wrinkle mode ends. Set it above the longest gap your dryer leaves between pulses, otherwise every later pulse is read as a false start."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Power Profile Interval",
|
||||||
|
"doc": "Bucket size for the per-profile power_profile sensor attribute (the flat per-slot average-watts array consumed by external planners such as EMHASS and tibber_prices). Smaller buckets keep short power spikes sharp; larger buckets smooth the shape. Default 15 min. Read-time only; does not affect detection."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Keep Live Notification On Tap",
|
||||||
|
"doc": "Android only. Make the live-progress notification persistent (sticky) so tapping it does not dismiss the ongoing thread. Off keeps the default behaviour where a tap dismisses it."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Live Notification Tap Target",
|
||||||
|
"doc": "Android only. Where a tap on the live-progress notification opens (e.g. /lovelace/laundry, or a full URL) instead of the app landing page. Leave blank for the default."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Door Opens Automatically At End",
|
||||||
|
"doc": "For dishwashers that pop the door open at the end of the cycle to dry (AirDry and similar). With this on, a door-open on a running cycle no longer pauses it forever; instead, if the door stays open for the dwell below, WashData treats the cycle as finished. A brief open (adding an item) is ignored. Requires a Door Sensor Entity."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Door-Open End Dwell",
|
||||||
|
"doc": "How long the door must stay open before WashData ends the cycle, when \"Door Opens Automatically At End\" is on. Long enough to ignore quickly adding a dish (default 60 s), short enough to end promptly once the machine pops the door."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1554,7 +1671,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"reason": {
|
"reason": {
|
||||||
"watchdog": "Kept as low as safe (3x the p95 update gap of {p95}s, min 30s) so stalls are caught quickly without false stops.",
|
"watchdog": "Kept as low as safe (just above the p95 update gap of {p95}s and at least 2x the sampling interval of {median}s, min 30s) so stalls are caught quickly without false stops.",
|
||||||
"no_update_timeout": "Based on observed update cadence (p95={p95}s) * 20 (min 60s).",
|
"no_update_timeout": "Based on observed update cadence (p95={p95}s) * 20 (min 60s).",
|
||||||
"off_delay_cadence": "Based on observed update cadence (p95={p95}s) * 5",
|
"off_delay_cadence": "Based on observed update cadence (p95={p95}s) * 5",
|
||||||
"off_delay_device_floor": "Used device-specific safe minimum for {device} ({floor}s).",
|
"off_delay_device_floor": "Used device-specific safe minimum for {device} ({floor}s).",
|
||||||
@@ -1575,6 +1692,7 @@
|
|||||||
"profile_match_threshold": "p10 confidence of {cycles} correct auto-labels ({p10}); safe live-commit floor.",
|
"profile_match_threshold": "p10 confidence of {cycles} correct auto-labels ({p10}); safe live-commit floor.",
|
||||||
"end_repeat_count": "{false}/{total} clean cycles ({pct}%) had a >60s internal pause that resumed; require {val} end confirmation(s).",
|
"end_repeat_count": "{false}/{total} clean cycles ({pct}%) had a >60s internal pause that resumed; require {val} end confirmation(s).",
|
||||||
"min_off_gap": "Based on {gaps} observed inter-cycle gaps (p05={p05}s). Device floor: {floor}s.",
|
"min_off_gap": "Based on {gaps} observed inter-cycle gaps (p05={p05}s). Device floor: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Sized to bridge the longest quiet stretch inside a cycle: {span}s + 60s buffer, from {spans} bridged gaps across {cycles} clean cycles (stays under your {ceiling}s back-to-back headroom).",
|
||||||
"min_active": "Based on minimum active power ({min}W) observed in last cycle.",
|
"min_active": "Based on minimum active power ({min}W) observed in last cycle.",
|
||||||
"end_energy_default": "Default recommended baseline for end-of-cycle noise gate.",
|
"end_energy_default": "Default recommended baseline for end-of-cycle noise gate.",
|
||||||
"dead_zone_from_dip": "Based on early power dip detected at {s}s.",
|
"dead_zone_from_dip": "Based on early power dip detected at {s}s.",
|
||||||
@@ -1678,6 +1796,10 @@
|
|||||||
"no_split_found": "No idle gaps found to split on",
|
"no_split_found": "No idle gaps found to split on",
|
||||||
"panel_settings_saved": "Panel settings saved",
|
"panel_settings_saved": "Panel settings saved",
|
||||||
"pause_no_cycle": "No active cycle to pause",
|
"pause_no_cycle": "No active cycle to pause",
|
||||||
|
"pg_preset_loaded": "Preset \"{name}\" loaded",
|
||||||
|
"pg_preset_saved": "Preset \"{name}\" saved",
|
||||||
|
"pg_sugg_loaded": "Staged {n} suggested value(s) - run the Playground to compare",
|
||||||
|
"pg_sugg_ml_loaded": "Staged {n} ML-calibrated value(s) - run the Playground to compare",
|
||||||
"pg_run_gone": "That run is no longer available.",
|
"pg_run_gone": "That run is no longer available.",
|
||||||
"phase_name_required": "Phase name is required",
|
"phase_name_required": "Phase name is required",
|
||||||
"phase_updated": "Phase updated",
|
"phase_updated": "Phase updated",
|
||||||
|
|||||||
@@ -92,6 +92,19 @@
|
|||||||
"pause_cycle_tip": "Pausar el ciclo en curso – el electrodoméstico reanudará donde lo dejó",
|
"pause_cycle_tip": "Pausar el ciclo en curso – el electrodoméstico reanudará donde lo dejó",
|
||||||
"pg_apply_device": "Aplicar al dispositivo",
|
"pg_apply_device": "Aplicar al dispositivo",
|
||||||
"pg_autofill": "Autocompletar",
|
"pg_autofill": "Autocompletar",
|
||||||
|
"pg_load_calibrated": "Cargar Calibrado (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Cargar los ajustes calibrados por ML como anulaciones en la Zona de pruebas",
|
||||||
|
"pg_load_live": "Cargar los ajustes activos",
|
||||||
|
"pg_load_live_tip": "Volver a leer los ajustes actuales de la integración y descartar todas las ediciones de la Zona de pruebas",
|
||||||
|
"pg_load_suggested": "Cargar sugerencias ({n})",
|
||||||
|
"pg_load_suggested_tip": "Cargar las sugerencias actuales del ajustador automático como anulaciones en la Zona de pruebas",
|
||||||
|
"pg_preset_delete": "Eliminar preajuste",
|
||||||
|
"pg_preset_load": "Cargar preajuste",
|
||||||
|
"pg_preset_load_tip": "Sustituir los valores de la Zona de pruebas por este preajuste (los ajustes activos no se modifican)",
|
||||||
|
"pg_preset_save": "Guardar como preajuste",
|
||||||
|
"pg_preset_save_tip": "Guardar todos los valores de abajo como un preajuste con nombre para este dispositivo",
|
||||||
|
"pg_publish_all": "Guardar {n} ajuste(s) en la integración",
|
||||||
|
"pg_publish_one": "Guardar {label} en la integración",
|
||||||
"play": "Reproducir",
|
"play": "Reproducir",
|
||||||
"process": "Proceso",
|
"process": "Proceso",
|
||||||
"process_history": "Procesar ahora",
|
"process_history": "Procesar ahora",
|
||||||
@@ -178,7 +191,9 @@
|
|||||||
"download_export": "Descargar exportación",
|
"download_export": "Descargar exportación",
|
||||||
"analyze_import": "Analizar archivo",
|
"analyze_import": "Analizar archivo",
|
||||||
"import_selected": "Importar lo seleccionado",
|
"import_selected": "Importar lo seleccionado",
|
||||||
"back": "Atrás"
|
"back": "Atrás",
|
||||||
|
"mute_suggestion": "Dejar de sugerir este ajuste",
|
||||||
|
"reset_muted": "Restablecer silenciados"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +290,7 @@
|
|||||||
"no_automations": "Ninguna automatización hace referencia a este dispositivo todavía.",
|
"no_automations": "Ninguna automatización hace referencia a este dispositivo todavía.",
|
||||||
"panel_settings": "Configuración del panel",
|
"panel_settings": "Configuración del panel",
|
||||||
"param_sweep": "Barrido de parámetros",
|
"param_sweep": "Barrido de parámetros",
|
||||||
|
"pg_settings_source": "Origen de los ajustes",
|
||||||
"phase_catalog": "Catálogo de fases",
|
"phase_catalog": "Catálogo de fases",
|
||||||
"playground": "Zona de pruebas",
|
"playground": "Zona de pruebas",
|
||||||
"process_history": "Historia del proceso",
|
"process_history": "Historia del proceso",
|
||||||
@@ -415,6 +431,9 @@
|
|||||||
"pg_match_score": "Puntuación de coincidencia",
|
"pg_match_score": "Puntuación de coincidencia",
|
||||||
"pg_pct_of": "{p}% de {total}",
|
"pg_pct_of": "{p}% de {total}",
|
||||||
"pg_poor_match": "Coincidencia deficiente",
|
"pg_poor_match": "Coincidencia deficiente",
|
||||||
|
"pg_preset": "Preajuste de la Zona de pruebas",
|
||||||
|
"pg_preset_name": "Nombre del nuevo preajuste",
|
||||||
|
"pg_preset_none": "Seleccione un preajuste…",
|
||||||
"pg_strong_match": "Coincidencia fuerte",
|
"pg_strong_match": "Coincidencia fuerte",
|
||||||
"pg_tile_ambiguous": "Ambiguo",
|
"pg_tile_ambiguous": "Ambiguo",
|
||||||
"pg_tile_ambiguous_tip": "Ciclos con un empate ajustado entre dos programas",
|
"pg_tile_ambiguous_tip": "Ciclos con un empate ajustado entre dos programas",
|
||||||
@@ -609,7 +628,8 @@
|
|||||||
"conflict_resolution": "Conflictos de nombres",
|
"conflict_resolution": "Conflictos de nombres",
|
||||||
"conflict_import_copy": "Importar como copia",
|
"conflict_import_copy": "Importar como copia",
|
||||||
"conflict_keep_mine": "Conservar el mío",
|
"conflict_keep_mine": "Conservar el mío",
|
||||||
"conflict_overwrite": "Sobrescribir"
|
"conflict_overwrite": "Sobrescribir",
|
||||||
|
"font_size": "Tamaño de fuente del panel"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Todos los niveles",
|
"all_levels": "Todos los niveles",
|
||||||
@@ -771,7 +791,17 @@
|
|||||||
"pg_apply_confirm": "¿Aplicar el mejor valor: {label} = {value}?",
|
"pg_apply_confirm": "¿Aplicar el mejor valor: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Seleccione un ciclo arriba y luego pulse Cargar para ver su curva de potencia.",
|
"pg_canvas_empty": "Seleccione un ciclo arriba y luego pulse Cargar para ver su curva de potencia.",
|
||||||
"pg_chart_caption": "Tasa de detección/coincidencia según los valores de {param}",
|
"pg_chart_caption": "Tasa de detección/coincidencia según los valores de {param}",
|
||||||
|
"pg_ctrl_intro": "Los valores parten de los ajustes activos de este dispositivo en la integración. Las ediciones permanecen en la Zona de pruebas hasta que las guarde en la integración.",
|
||||||
|
"pg_live_unavailable": "Ajustes activos no disponibles, se muestran los valores predeterminados.",
|
||||||
|
"pg_load_live_confirm": "¿Descartar {n} edición(es) de la Zona de pruebas y volver a cargar los ajustes actuales de la integración?",
|
||||||
"pg_match_rate": "{pct}% de tasa de coincidencia en {total} ciclos",
|
"pg_match_rate": "{pct}% de tasa de coincidencia en {total} ciclos",
|
||||||
|
"pg_matches_live": "Coincide con los ajustes activos",
|
||||||
|
"pg_n_changed": "{n} valor(es) distinto(s) de los ajustes activos",
|
||||||
|
"pg_sugg_none": "Todas las sugerencias ya coinciden con los ajustes actuales",
|
||||||
|
"pg_preset_delete_confirm": "¿Eliminar el preajuste \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Límite de preajustes alcanzado ({n})",
|
||||||
|
"pg_preset_overwrite": "¿Sobrescribir el preajuste \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "¿Guardar {label} = {value} en los ajustes de este dispositivo?",
|
||||||
"pg_restart_note": "Reinicie Home Assistant para habilitar las herramientas de simulación.",
|
"pg_restart_note": "Reinicie Home Assistant para habilitar las herramientas de simulación.",
|
||||||
"pg_sim_progress": "{done} / {total} ciclos",
|
"pg_sim_progress": "{done} / {total} ciclos",
|
||||||
"pg_starting": "Iniciando…",
|
"pg_starting": "Iniciando…",
|
||||||
@@ -845,6 +875,7 @@
|
|||||||
"trend_duration_shorter": "Tendencia de duración más corta ({pct} %/ciclo): promedio reciente {avg}",
|
"trend_duration_shorter": "Tendencia de duración más corta ({pct} %/ciclo): promedio reciente {avg}",
|
||||||
"trend_energy_down": "Energía con tendencia a la baja ({pct}%/ciclo)",
|
"trend_energy_down": "Energía con tendencia a la baja ({pct}%/ciclo)",
|
||||||
"trend_energy_up": "Tendencia de energía al alza ({pct}%/ciclo): promedio reciente {avg}",
|
"trend_energy_up": "Tendencia de energía al alza ({pct}%/ciclo): promedio reciente {avg}",
|
||||||
|
"trim_destructive_confirm": "Esto conserva solo el {pct}% del ciclo y no se puede deshacer. ¿Continuar?",
|
||||||
"trim_intro": "Arrastre los controles rojos o ingrese valores. Se elimina todo lo que está fuera de la ventana.",
|
"trim_intro": "Arrastre los controles rojos o ingrese valores. Se elimina todo lo que está fuera de la ventana.",
|
||||||
"tuning_suggestions_available": "{count} sugerencia de ajuste disponible de los ciclos observados. Aparecen al lado de los campos relevantes.",
|
"tuning_suggestions_available": "{count} sugerencia de ajuste disponible de los ciclos observados. Aparecen al lado de los campos relevantes.",
|
||||||
"unsure_detected_prefix": "WashData no está seguro de haber detectado",
|
"unsure_detected_prefix": "WashData no está seguro de haber detectado",
|
||||||
@@ -922,9 +953,15 @@
|
|||||||
"merge_hint": "Los elementos importados se añaden; no se pierde nada local. Los conflictos de nombres se resuelven abajo.",
|
"merge_hint": "Los elementos importados se añaden; no se pierde nada local. Los conflictos de nombres se resuelven abajo.",
|
||||||
"replace_warn": "Cada categoría marcada se borra y se reemplaza con el contenido del archivo. Las categorías sin marcar quedan intactas.",
|
"replace_warn": "Cada categoría marcada se borra y se reemplaza con el contenido del archivo. Las categorías sin marcar quedan intactas.",
|
||||||
"dest_reference_hint": "Los ciclos importados solo mejoran el reconocimiento de programas y nunca afectan a las estadísticas de uso/energía.",
|
"dest_reference_hint": "Los ciclos importados solo mejoran el reconocimiento de programas y nunca afectan a las estadísticas de uso/energía.",
|
||||||
"dest_real_history_hint": "Los ciclos importados cuentan como el historial propio de este dispositivo y alimentan las estadísticas de energía/uso. Úsalo para mover un electrodoméstico a una instalación nueva."
|
"dest_real_history_hint": "Los ciclos importados cuentan como el historial propio de este dispositivo y alimentan las estadísticas de energía/uso. Úsalo para mover un electrodoméstico a una instalación nueva.",
|
||||||
|
"sug_muted": "Este ajuste no volverá a sugerirse",
|
||||||
|
"sug_mute_failed": "No se pudo silenciar la sugerencia",
|
||||||
|
"sug_unmuted_all": "Sugerencias silenciadas restablecidas",
|
||||||
|
"n_suggestions_muted": "{count} silenciadas; el ajustador automático no propondrá estas.",
|
||||||
|
"font_size_hint": "Aumenta o reduce el tamaño de todo en este panel. Se aplica a tu cuenta en este dispositivo."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Lavavajillas: segundos de silencio tras la duración esperada antes de liberar la espera del vaciado de fin de ciclo",
|
||||||
"anti_wrinkle_enabled": "Absorber los pulsos de volteo tras la fase principal en lugar de leerlos como nuevos ciclos",
|
"anti_wrinkle_enabled": "Absorber los pulsos de volteo tras la fase principal en lugar de leerlos como nuevos ciclos",
|
||||||
"anti_wrinkle_exit_power": "La potencia debe caer por debajo de este valor entre pulsos para que el modo antiarrugas siga activo",
|
"anti_wrinkle_exit_power": "La potencia debe caer por debajo de este valor entre pulsos para que el modo antiarrugas siga activo",
|
||||||
"anti_wrinkle_idle_timeout": "Tiempo de silencio permitido entre dos pulsos de volteo antes de que finalice el modo antiarrugas",
|
"anti_wrinkle_idle_timeout": "Tiempo de silencio permitido entre dos pulsos de volteo antes de que finalice el modo antiarrugas",
|
||||||
@@ -998,6 +1035,10 @@
|
|||||||
"unusable": "Inutilizable"
|
"unusable": "Inutilizable"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Lavavajillas",
|
||||||
|
"intro": "Gestión del final del ciclo para lavavajillas, que suelen terminar con una larga fase de secado casi silenciosa antes de un breve vaciado final."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "El modo antiarrugas/antipliegues detecta pulsos de volteo de baja potencia después de la fase principal y los mantiene unidos al ciclo terminado.",
|
"intro": "El modo antiarrugas/antipliegues detecta pulsos de volteo de baja potencia después de la fase principal y los mantiene unidos al ciclo terminado.",
|
||||||
"label": "Antiarrugas"
|
"label": "Antiarrugas"
|
||||||
@@ -1040,6 +1081,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Liberación en silencio del secado pasivo",
|
||||||
|
"doc": "Una vez que el ciclo supera su duración esperada, cuánto tiempo debe permanecer en silencio el lavavajillas (por debajo del Umbral de parada) antes de que WashData deje de esperar un vaciado final y finalice el ciclo. Auméntelo si su máquina tiene una larga fase de secado silenciosa antes de un vaciado final tardío que no se detecta - una ventana más amplia permite que la duración aprendida siga la deriva estacional (agua de entrada más fría = ciclos más largos) en lugar de fijarse en la media anterior. Solo acorta la espera respecto al tope interno de 30 minutos para el pico de fin, nunca la prolonga."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Reconozca los impulsos cortos de baja potencia que emite una secadora después de la fase de calentamiento principal y manténgalos adjuntos al ciclo finalizado en lugar de leerlos como ciclos nuevos.",
|
"doc": "Reconozca los impulsos cortos de baja potencia que emite una secadora después de la fase de calentamiento principal y manténgalos adjuntos al ciclo finalizado en lugar de leerlos como ciclos nuevos.",
|
||||||
"label": "Habilitar detección antiarrugas"
|
"label": "Habilitar detección antiarrugas"
|
||||||
@@ -1260,6 +1305,10 @@
|
|||||||
"doc": "Minutos después de que finaliza un ciclo antes de enviar el recordatorio de \"descargar la máquina\" que aún está en espera. Establezca 0 para desactivar el recordatorio.",
|
"doc": "Minutos después de que finaliza un ciclo antes de enviar el recordatorio de \"descargar la máquina\" que aún está en espera. Establezca 0 para desactivar el recordatorio.",
|
||||||
"label": "Retardo del recordatorio de descarga"
|
"label": "Retardo del recordatorio de descarga"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Sigue reenviando el recordatorio de descarga cada \"Retardo del recordatorio de descarga\" minutos hasta que abras la puerta o toques \"Dejar de recordar\" en la notificación. Requiere una Entidad de sensor de puerta (el propio recordatorio la necesita). El botón de descarte funciona en las notificaciones de la aplicación complementaria (móvil) de Home Assistant.",
|
||||||
|
"label": "Repetir hasta que se abra la puerta"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Es tiempo de esperar después de que se corte la energía antes de declarar finalizado el ciclo. Si la energía se reanuda dentro de esta ventana, el ciclo continúa sin problemas; esto salva las pausas entre las etapas de lavado. Los lavavajillas tienen fases de secado largas (apagado durante 20 a 60 minutos), por lo que el retraso de apagado debe exceder eso para mantener todo el lavado y secado como un solo ciclo.",
|
"doc": "Es tiempo de esperar después de que se corte la energía antes de declarar finalizado el ciclo. Si la energía se reanuda dentro de esta ventana, el ciclo continúa sin problemas; esto salva las pausas entre las etapas de lavado. Los lavavajillas tienen fases de secado largas (apagado durante 20 a 60 minutos), por lo que el retraso de apagado debe exceder eso para mantener todo el lavado y secado como un solo ciclo.",
|
||||||
"label": "Retardo de apagado"
|
"label": "Retardo de apagado"
|
||||||
@@ -1434,6 +1483,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Nitidez de energía",
|
"label": "Nitidez de energía",
|
||||||
"doc": "Precisión de la penalización por concordancia de energía. Menor = más estricto: una discordancia de energía penaliza más. El predeterminado 0,25 es intencionalmente más indulgente que la Precisión de duración, porque la energía varía con la carga. Combinar con Peso de energía."
|
"doc": "Precisión de la penalización por concordancia de energía. Menor = más estricto: una discordancia de energía penaliza más. El predeterminado 0,25 es intencionalmente más indulgente que la Precisión de duración, porque la energía varía con la carga. Combinar con Peso de energía."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Intervalo del perfil de potencia",
|
||||||
|
"doc": "Tamaño del intervalo para el atributo del sensor power_profile por perfil (la matriz plana de vatios medios por franja, consumida por planificadores externos como EMHASS y tibber_prices). Intervalos más pequeños mantienen nítidos los picos de potencia breves; intervalos más grandes suavizan la forma. Predeterminado 15 min. Solo de lectura; no afecta a la detección."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Mantener la notificación activa al pulsar",
|
||||||
|
"doc": "Solo Android. Hace que la notificación de progreso en vivo sea persistente (fija), de modo que pulsarla no la cierre. Desactivado mantiene el comportamiento predeterminado en el que un toque la cierra."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Destino al pulsar la notificación en vivo",
|
||||||
|
"doc": "Solo Android. Destino que se abre al pulsar la notificación de progreso en vivo (por ejemplo, /lovelace/lavandería, o una URL completa), en lugar de la página de inicio de la aplicación. Dejar en blanco para el valor predeterminado."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "La puerta se abre automáticamente al final",
|
||||||
|
"doc": "Para lavavajillas que abren la puerta al final del ciclo para secar (AirDry y similares). Con esta opción activada, abrir la puerta durante un ciclo en marcha ya no lo pausa indefinidamente; en cambio, si la puerta permanece abierta el tiempo mínimo indicado abajo, WashData considera el ciclo finalizado. Una apertura breve (para añadir un elemento) se ignora. Requiere una entidad de sensor de puerta."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Tiempo mínimo de puerta abierta para finalizar",
|
||||||
|
"doc": "Cuánto tiempo debe permanecer abierta la puerta antes de que WashData finalice el ciclo, cuando «La puerta se abre automáticamente al final» está activada. Lo suficientemente largo como para ignorar añadir un elemento rápidamente (predeterminado 60 s), y lo suficientemente corto como para terminar pronto una vez que la máquina abra la puerta."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1604,6 +1673,10 @@
|
|||||||
"name_required": "Nombre requerido",
|
"name_required": "Nombre requerido",
|
||||||
"no_split_found": "No se encontraron espacios inactivos para dividir",
|
"no_split_found": "No se encontraron espacios inactivos para dividir",
|
||||||
"panel_settings_saved": "Configuración del panel guardada",
|
"panel_settings_saved": "Configuración del panel guardada",
|
||||||
|
"pg_preset_loaded": "Preajuste \"{name}\" cargado",
|
||||||
|
"pg_preset_saved": "Preajuste \"{name}\" guardado",
|
||||||
|
"pg_sugg_loaded": "{n} valor(es) sugerido(s) cargado(s) - ejecute la Zona de pruebas para comparar",
|
||||||
|
"pg_sugg_ml_loaded": "{n} valor(es) calibrado(s) por ML cargado(s) - ejecute la Zona de pruebas para comparar",
|
||||||
"phase_name_required": "Se requiere el nombre de la fase",
|
"phase_name_required": "Se requiere el nombre de la fase",
|
||||||
"phase_updated": "Fase actualizada",
|
"phase_updated": "Fase actualizada",
|
||||||
"phases_saved": "Fases guardadas",
|
"phases_saved": "Fases guardadas",
|
||||||
@@ -1751,6 +1824,7 @@
|
|||||||
"min_active": "Según la potencia activa mínima ({min}W) observada en el último ciclo.",
|
"min_active": "Según la potencia activa mínima ({min}W) observada en el último ciclo.",
|
||||||
"min_duration_ratio": "Se mantiene lo más bajo posible para que un programa se reconozca pronto en el ciclo; los umbrales de confianza y ambigüedad evitan decisiones prematuras.",
|
"min_duration_ratio": "Se mantiene lo más bajo posible para que un programa se reconozca pronto en el ciclo; los umbrales de confianza y ambigüedad evitan decisiones prematuras.",
|
||||||
"min_off_gap": "Según {gaps} intervalos entre ciclos observados (p05={p05}s). Mínimo del dispositivo: {floor}s.",
|
"min_off_gap": "Según {gaps} intervalos entre ciclos observados (p05={p05}s). Mínimo del dispositivo: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensionado para cubrir el periodo de silencio más largo dentro de un ciclo: {span}s + 60s de margen, a partir de {spans} intervalos cubiertos en {cycles} ciclos limpios (se mantiene por debajo de su intervalo mínimo de {ceiling}s entre cargas consecutivas).",
|
||||||
"min_power": "40% de la potencia activa más baja en el p05 ({p05}W) en {cycles} ciclos limpios, manteniendo el umbral de apagado por debajo del consumo real.{excl}",
|
"min_power": "40% de la potencia activa más baja en el p05 ({p05}W) en {cycles} ciclos limpios, manteniendo el umbral de apagado por debajo del consumo real.{excl}",
|
||||||
"ml_auto_label": "Confianza más baja que el modelo de calidad aún consideró limpia (p10 de {cycles} ciclos limpios = {p10}).",
|
"ml_auto_label": "Confianza más baja que el modelo de calidad aún consideró limpia (p10 de {cycles} ciclos limpios = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciclos ({pct}%) tuvieron una pausa que el detector de fin puntuó >50%; se requieren {val} confirmación(es) de fin.",
|
"ml_end_repeat": "{false}/{total} ciclos ({pct}%) tuvieron una pausa que el detector de fin puntuó >50%; se requieren {val} confirmación(es) de fin.",
|
||||||
@@ -1767,7 +1841,7 @@
|
|||||||
"thr_batch": "Se mantiene justo por encima de la potencia activa más baja en el p05 en {cycles} ciclos ({p05}W) para captar un arranque lo antes posible y que el umbral de parada quede por debajo de la potencia de funcionamiento más baja de la máquina.",
|
"thr_batch": "Se mantiene justo por encima de la potencia activa más baja en el p05 en {cycles} ciclos ({p05}W) para captar un arranque lo antes posible y que el umbral de parada quede por debajo de la potencia de funcionamiento más baja de la máquina.",
|
||||||
"tol_per_profile": "p75 de la varianza de duración por perfil en {profiles} perfiles ({cycles} ciclos); los perfiles ajustados no se penalizan.",
|
"tol_per_profile": "p75 de la varianza de duración por perfil en {profiles} perfiles ({cycles} ciclos); los perfiles ajustados no se penalizan.",
|
||||||
"tol_pooled": "Según la varianza de duración agrupada de {cycles} ciclos etiquetados recientes (desviación p95={dev}).",
|
"tol_pooled": "Según la varianza de duración agrupada de {cycles} ciclos etiquetados recientes (desviación p95={dev}).",
|
||||||
"watchdog": "Se mantiene lo más bajo que resulta seguro (3x el intervalo de actualización p95 de {p95}s, mín. 30s) para detectar rápido los bloqueos sin paradas falsas."
|
"watchdog": "Se mantiene lo más bajo que resulta seguro (justo por encima del intervalo de actualización p95 de {p95}s, mín. 30s) para detectar rápido los bloqueos sin paradas falsas."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Excluido(s) {total} ciclo(s) mal detectado(s): {parts}.",
|
"summary": "Excluido(s) {total} ciclo(s) mal detectado(s): {parts}.",
|
||||||
@@ -1944,5 +2018,53 @@
|
|||||||
"hide_guidance": "Ocultar guía",
|
"hide_guidance": "Ocultar guía",
|
||||||
"show_guidance": "Mostrar guía"
|
"show_guidance": "Mostrar guía"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entidad no encontrada",
|
||||||
|
"running_long": "Con retraso",
|
||||||
|
"remaining": "restante",
|
||||||
|
"progress": "progreso",
|
||||||
|
"show_time_remaining": "Mostrar tiempo restante",
|
||||||
|
"show_percentage": "Mostrar porcentaje",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Mosaico (compacto)",
|
||||||
|
"detail": "Detalle (completo)",
|
||||||
|
"glance": "Vistazo (varios dispositivos)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pausa",
|
||||||
|
"resume": "Reanudar",
|
||||||
|
"terminate": "Finalizar ciclo",
|
||||||
|
"record_start": "Iniciar grabación",
|
||||||
|
"record_stop": "Detener grabación",
|
||||||
|
"program": "Programa",
|
||||||
|
"open_panel": "Abrir WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Diseño",
|
||||||
|
"entity": "Entidad del electrodoméstico",
|
||||||
|
"entities": "Electrodomésticos",
|
||||||
|
"title": "Título",
|
||||||
|
"icon": "Icono",
|
||||||
|
"show_state": "Mostrar estado",
|
||||||
|
"show_program": "Mostrar programa",
|
||||||
|
"show_progress_bar": "Mostrar barra de progreso",
|
||||||
|
"spin_icon": "Girar el icono mientras funciona",
|
||||||
|
"display_mode": "Línea de detalle",
|
||||||
|
"active_color": "Color activo personalizado",
|
||||||
|
"show_phase": "Mostrar fase",
|
||||||
|
"show_energy": "Mostrar energía y costo",
|
||||||
|
"show_anomaly": "Mostrar aviso de retraso",
|
||||||
|
"show_sparkline": "Mostrar gráfico de potencia en directo",
|
||||||
|
"buttons": "Botones de acción",
|
||||||
|
"program_entity": "Entidad de programa (personalizada)",
|
||||||
|
"time_entity": "Entidad de tiempo (personalizada)",
|
||||||
|
"pct_entity": "Entidad de progreso (personalizada)",
|
||||||
|
"power_entity": "Entidad de potencia (personalizada)",
|
||||||
|
"tap_action": "Acción al tocar",
|
||||||
|
"hold_action": "Acción al mantener pulsado",
|
||||||
|
"double_tap_action": "Acción al tocar dos veces"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Olemit ei leitud",
|
||||||
|
"running_long": "Töötab kaua",
|
||||||
|
"remaining": "jäänud",
|
||||||
|
"progress": "edenemine",
|
||||||
|
"show_time_remaining": "Näita järelejäänud aega",
|
||||||
|
"show_percentage": "Näita protsenti",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Paan (kompaktne)",
|
||||||
|
"detail": "Detailne (rikkalik)",
|
||||||
|
"glance": "Pilguheit (mitu seadet)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Peata",
|
||||||
|
"resume": "Jätka",
|
||||||
|
"terminate": "Lõpeta tsükkel",
|
||||||
|
"record_start": "Alusta salvestamist",
|
||||||
|
"record_stop": "Lõpeta salvestamine",
|
||||||
|
"program": "Programm",
|
||||||
|
"open_panel": "Ava WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Paigutus",
|
||||||
|
"entity": "Seadme olem",
|
||||||
|
"entities": "Seadmed",
|
||||||
|
"title": "Pealkiri",
|
||||||
|
"icon": "Ikoon",
|
||||||
|
"show_state": "Näita olekut",
|
||||||
|
"show_program": "Näita programmi",
|
||||||
|
"show_progress_bar": "Näita edenemisriba",
|
||||||
|
"spin_icon": "Pööra ikooni töötamise ajal",
|
||||||
|
"display_mode": "Detailirida",
|
||||||
|
"active_color": "Aktiivse värvi alistamine",
|
||||||
|
"show_phase": "Näita faasi",
|
||||||
|
"show_energy": "Näita energiat ja maksumust",
|
||||||
|
"show_anomaly": "Näita ületusaja hoiatust",
|
||||||
|
"show_sparkline": "Näita reaalajas võimsuse graafikut",
|
||||||
|
"buttons": "Tegevusnupud",
|
||||||
|
"program_entity": "Programmi olem (alistamine)",
|
||||||
|
"time_entity": "Aja olem (alistamine)",
|
||||||
|
"pct_entity": "Edenemise olem (alistamine)",
|
||||||
|
"power_entity": "Võimsuse olem (alistamine)",
|
||||||
|
"tap_action": "Puudutuse tegevus",
|
||||||
|
"hold_action": "Hoidmise tegevus",
|
||||||
|
"double_tap_action": "Topeltpuudutuse tegevus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Tuvastati {n} anomaaliat (nt uks avati tsükli keskel) – avage, et näha neid graafikul",
|
"artifact_tip": "Tuvastati {n} anomaaliat (nt uks avati tsükli keskel) – avage, et näha neid graafikul",
|
||||||
"auto": "(tuvastatud automaatselt)",
|
"auto": "(tuvastatud automaatselt)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Peata käimasolev tsükkel – seade jätkab sealt, kus pooleli jäi",
|
"pause_cycle_tip": "Peata käimasolev tsükkel – seade jätkab sealt, kus pooleli jäi",
|
||||||
"pg_apply_device": "Rakenda seadmele",
|
"pg_apply_device": "Rakenda seadmele",
|
||||||
"pg_autofill": "Täida automaatselt",
|
"pg_autofill": "Täida automaatselt",
|
||||||
|
"pg_load_calibrated": "Laadi kalibreeritud (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Laeb ML-kalibreeritud seaded katseala alistustena",
|
||||||
|
"pg_load_live": "Laadi aktiivsed seaded",
|
||||||
|
"pg_load_live_tip": "Loe integratsiooni praegused seaded uuesti ja tühista kõik katseala muudatused",
|
||||||
|
"pg_load_suggested": "Laadi soovitused ({n})",
|
||||||
|
"pg_load_suggested_tip": "Laeb automaatse häälestaja praegused soovitused katseala alistustena",
|
||||||
|
"pg_preset_delete": "Kustuta eelseadistus",
|
||||||
|
"pg_preset_load": "Laadi eelseadistus",
|
||||||
|
"pg_preset_load_tip": "Asenda katseala väärtused selle eelseadistusega (aktiivseid seadeid ei muudeta)",
|
||||||
|
"pg_preset_save": "Salvesta eelseadistusena",
|
||||||
|
"pg_preset_save_tip": "Salvesta kõik allolevad väärtused selle seadme nimelise eelseadistusena",
|
||||||
|
"pg_publish_all": "Salvesta seadetesse ({n})",
|
||||||
|
"pg_publish_one": "Salvesta \"{label}\" integratsiooni seadetesse",
|
||||||
"play": "Esita",
|
"play": "Esita",
|
||||||
"process": "Töötle",
|
"process": "Töötle",
|
||||||
"process_history": "Töötle kohe",
|
"process_history": "Töötle kohe",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Laadi eksport alla",
|
"download_export": "Laadi eksport alla",
|
||||||
"analyze_import": "Analüüsi faili",
|
"analyze_import": "Analüüsi faili",
|
||||||
"import_selected": "Impordi valitud",
|
"import_selected": "Impordi valitud",
|
||||||
"back": "Tagasi"
|
"back": "Tagasi",
|
||||||
|
"mute_suggestion": "Lõpeta selle seade soovitamine",
|
||||||
|
"reset_muted": "Lähtesta vaigistatud"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,8 +338,9 @@
|
|||||||
"no_automations": "Sellele seadmele ei viita veel ükski automaatika.",
|
"no_automations": "Sellele seadmele ei viita veel ükski automaatika.",
|
||||||
"panel_settings": "Paneeli sätted",
|
"panel_settings": "Paneeli sätted",
|
||||||
"param_sweep": "Parameetri pühkimine",
|
"param_sweep": "Parameetri pühkimine",
|
||||||
|
"pg_settings_source": "Seadete allikas",
|
||||||
"phase_catalog": "Faaside kataloog",
|
"phase_catalog": "Faaside kataloog",
|
||||||
"playground": "Mänguväljak",
|
"playground": "Katseala",
|
||||||
"process_history": "Protsessi ajalugu",
|
"process_history": "Protsessi ajalugu",
|
||||||
"settings_history": "Seadete ajalugu",
|
"settings_history": "Seadete ajalugu",
|
||||||
"status": "Olek",
|
"status": "Olek",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "Vaste skoor",
|
"pg_match_score": "Vaste skoor",
|
||||||
"pg_pct_of": "{p}% {total}-st",
|
"pg_pct_of": "{p}% {total}-st",
|
||||||
"pg_poor_match": "Halb vaste",
|
"pg_poor_match": "Halb vaste",
|
||||||
|
"pg_preset": "Katseala eelseadistus",
|
||||||
|
"pg_preset_name": "Uue eelseadistuse nimi",
|
||||||
|
"pg_preset_none": "Vali eelseadistus…",
|
||||||
"pg_strong_match": "Tugev vaste",
|
"pg_strong_match": "Tugev vaste",
|
||||||
"pg_tile_ambiguous": "Ebaselge",
|
"pg_tile_ambiguous": "Ebaselge",
|
||||||
"pg_tile_ambiguous_tip": "Tsüklid, kus kaks programmi on peaaegu võrdsed",
|
"pg_tile_ambiguous_tip": "Tsüklid, kus kaks programmi on peaaegu võrdsed",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Nimekonfliktid",
|
"conflict_resolution": "Nimekonfliktid",
|
||||||
"conflict_import_copy": "Impordi koopiana",
|
"conflict_import_copy": "Impordi koopiana",
|
||||||
"conflict_keep_mine": "Säilita minu omad",
|
"conflict_keep_mine": "Säilita minu omad",
|
||||||
"conflict_overwrite": "Kirjuta üle"
|
"conflict_overwrite": "Kirjuta üle",
|
||||||
|
"font_size": "Paneeli fondi suurus"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Kõik tasemed",
|
"all_levels": "Kõik tasemed",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Kas rakendada parim väärtus: {label} = {value}?",
|
"pg_apply_confirm": "Kas rakendada parim väärtus: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Vali ülalt tsükkel ja vajuta seejärel Laadi, et näha selle võimsuskõverat.",
|
"pg_canvas_empty": "Vali ülalt tsükkel ja vajuta seejärel Laadi, et näha selle võimsuskõverat.",
|
||||||
"pg_chart_caption": "Tuvastus-/vastemäär {param} väärtuste lõikes",
|
"pg_chart_caption": "Tuvastus-/vastemäär {param} väärtuste lõikes",
|
||||||
|
"pg_ctrl_intro": "Väärtused lähtuvad selle seadme aktiivsetest integratsiooni seadetest. Muudatused jäävad katsealale, kuni salvestad need seadetesse.",
|
||||||
|
"pg_live_unavailable": "Aktiivsed seaded pole saadaval, kuvatakse vaikeväärtused.",
|
||||||
|
"pg_load_live_confirm": "Kas tühistada katseala muudatused ({n}) ja laadida integratsiooni praegused seaded uuesti?",
|
||||||
"pg_match_rate": "{pct}% vastemäär {total} tsükli puhul",
|
"pg_match_rate": "{pct}% vastemäär {total} tsükli puhul",
|
||||||
|
"pg_matches_live": "Vastab aktiivsetele seadetele",
|
||||||
|
"pg_n_changed": "Erineb aktiivsetest seadetest: {n}",
|
||||||
|
"pg_sugg_none": "Kõik soovitused vastavad juba praegustele seadetele",
|
||||||
|
"pg_preset_delete_confirm": "Kas kustutada eelseadistus \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Eelseadistuste piir on täis ({n})",
|
||||||
|
"pg_preset_overwrite": "Kas kirjutada eelseadistus \"{name}\" üle?",
|
||||||
|
"pg_publish_one_confirm": "Kas salvestada {label} = {value} selle seadme seadetesse?",
|
||||||
"pg_restart_note": "Simulatsioonitööriistade lubamiseks taaskäivita Home Assistant.",
|
"pg_restart_note": "Simulatsioonitööriistade lubamiseks taaskäivita Home Assistant.",
|
||||||
"pg_sim_progress": "{done} / {total} tsüklit",
|
"pg_sim_progress": "{done} / {total} tsüklit",
|
||||||
"pg_starting": "Alustamine…",
|
"pg_starting": "Alustamine…",
|
||||||
@@ -784,7 +862,7 @@
|
|||||||
"pg_verdict_ok": "Vastuvõetav: mõned tsüklid jäid vahele. Proovi käivitusläve alandada.",
|
"pg_verdict_ok": "Vastuvõetav: mõned tsüklid jäid vahele. Proovi käivitusläve alandada.",
|
||||||
"phase_catalog_intro": "Nimetatud tsükli segmendid (eelpesu, kuumutamine, tsentrifuugimine…). Määrake need juhtpaneelilt profiilile.",
|
"phase_catalog_intro": "Nimetatud tsükli segmendid (eelpesu, kuumutamine, tsentrifuugimine…). Määrake need juhtpaneelilt profiilile.",
|
||||||
"phase_ranges_intro": "Faasivahemikud (minutid alates tsükli algusest) kattuvad keskmise kõveraga. Reaalajas eelvaate kuvamiseks muutke väärtusi.",
|
"phase_ranges_intro": "Faasivahemikud (minutid alates tsükli algusest) kattuvad keskmise kõveraga. Reaalajas eelvaate kuvamiseks muutke väärtusi.",
|
||||||
"playground_intro": "Turvaline katsekeskkond varasemate tsüklite uuesti esitamiseks erinevate seadetega, kahe seadistuse kõrvuti võrdlemiseks ja selle uurimiseks, kuidas tsükkel profiiliga joondub. Miski siin ei muuda su otseandmeid enne, kui sa selle sõnaselgelt rakendad.",
|
"playground_intro": "Turvaline katseala varasemate tsüklite uuesti esitamiseks erinevate seadetega, kahe seadistuse kõrvuti võrdlemiseks ja selle uurimiseks, kuidas tsükkel profiiliga joondub. Miski siin ei muuda su otseandmeid enne, kui sa selle sõnaselgelt rakendad.",
|
||||||
"playground_needs_restart": "Katseala tööriistade lubamiseks taaskäivita Home Assistant.",
|
"playground_needs_restart": "Katseala tööriistade lubamiseks taaskäivita Home Assistant.",
|
||||||
"preferences_admin": "Eelistused, paneel ja juurdepääsu kontroll",
|
"preferences_admin": "Eelistused, paneel ja juurdepääsu kontroll",
|
||||||
"preferences_adv": "Eelistused",
|
"preferences_adv": "Eelistused",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Kestus on lühem ({pct}%/tsükkel) – hiljutine keskmine {avg}",
|
"trend_duration_shorter": "Kestus on lühem ({pct}%/tsükkel) – hiljutine keskmine {avg}",
|
||||||
"trend_energy_down": "Energiatrend langeb ({pct}% tsükli kohta)",
|
"trend_energy_down": "Energiatrend langeb ({pct}% tsükli kohta)",
|
||||||
"trend_energy_up": "Energiatrend tõuseb ({pct}%/tsükkel) – hiljutine keskmine {avg}",
|
"trend_energy_up": "Energiatrend tõuseb ({pct}%/tsükkel) – hiljutine keskmine {avg}",
|
||||||
|
"trim_destructive_confirm": "See säilitab tsüklist ainult {pct}% ja seda ei saa tagasi võtta. Kas jätkata?",
|
||||||
"trim_intro": "Lohistage punaseid käepidemeid või sisestage väärtused. Kõik väljaspool akent eemaldatakse.",
|
"trim_intro": "Lohistage punaseid käepidemeid või sisestage väärtused. Kõik väljaspool akent eemaldatakse.",
|
||||||
"tuning_suggestions_available": "Vaadeldud tsüklitest on saadaval {count} häälestamise soovitus. Need kuvatakse asjakohaste väljade kõrval.",
|
"tuning_suggestions_available": "Vaadeldud tsüklitest on saadaval {count} häälestamise soovitus. Need kuvatakse asjakohaste väljade kõrval.",
|
||||||
"unsure_detected_prefix": "WashData pole kindel, et see tuvastas",
|
"unsure_detected_prefix": "WashData pole kindel, et see tuvastas",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Imporditud üksused lisatakse; kohalikest andmetest ei lähe midagi kaotsi. Nimekonfliktid lahendatakse allpool.",
|
"merge_hint": "Imporditud üksused lisatakse; kohalikest andmetest ei lähe midagi kaotsi. Nimekonfliktid lahendatakse allpool.",
|
||||||
"replace_warn": "Iga märgitud kategooria kustutatakse ja asendatakse failist. Märkimata kategooriaid ei puudutata.",
|
"replace_warn": "Iga märgitud kategooria kustutatakse ja asendatakse failist. Märkimata kategooriaid ei puudutata.",
|
||||||
"dest_reference_hint": "Imporditud tsüklid ainult parandavad programmide tuvastamist ega mõjuta kunagi kasutus- ega energiastatistikat.",
|
"dest_reference_hint": "Imporditud tsüklid ainult parandavad programmide tuvastamist ega mõjuta kunagi kasutus- ega energiastatistikat.",
|
||||||
"dest_real_history_hint": "Imporditud tsüklid arvestatakse selle seadme enda ajalooks ja need toidavad energia- ja kasutusstatistikat. Kasuta ühe seadme uude paigaldusse teisaldamiseks."
|
"dest_real_history_hint": "Imporditud tsüklid arvestatakse selle seadme enda ajalooks ja need toidavad energia- ja kasutusstatistikat. Kasuta ühe seadme uude paigaldusse teisaldamiseks.",
|
||||||
|
"sug_muted": "Seda seadet enam ei soovitata",
|
||||||
|
"sug_mute_failed": "Soovituse vaigistamine ebaõnnestus",
|
||||||
|
"sug_unmuted_all": "Vaigistatud soovitused lähtestatud",
|
||||||
|
"n_suggestions_muted": "{count} vaigistatud; automaatne häälestaja ei paku neid enam.",
|
||||||
|
"font_size_hint": "Muuda kõik selles paneelil suuremaks või väiksemaks. Kehtib sinu kontole sellel seadmel."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Nõudepesumasin: vaiksed sekundid pärast eeldatavat kestust, enne kui tsükli lõpu tühjenduse ootamine vabastatakse",
|
||||||
"anti_wrinkle_enabled": "Neelab pärast põhifaasi trummelimpulsid, selle asemel et lugeda neid uute tsüklitena",
|
"anti_wrinkle_enabled": "Neelab pärast põhifaasi trummelimpulsid, selle asemel et lugeda neid uute tsüklitena",
|
||||||
"anti_wrinkle_exit_power": "Kortsudevastase režiimi aktiivsena püsimiseks peab võimsus impulsside vahel sellest allapoole langema",
|
"anti_wrinkle_exit_power": "Kortsudevastase režiimi aktiivsena püsimiseks peab võimsus impulsside vahel sellest allapoole langema",
|
||||||
"anti_wrinkle_idle_timeout": "Kahe trummelimpulsi vahel lubatud vaikuseaeg enne kortsudevastase režiimi lõppu",
|
"anti_wrinkle_idle_timeout": "Kahe trummelimpulsi vahel lubatud vaikuseaeg enne kortsudevastase režiimi lõppu",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Kasutuskõlbmatu"
|
"unusable": "Kasutuskõlbmatu"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Nõudepesumasin",
|
||||||
|
"intro": "Tsükli lõpu käsitlemine nõudepesumasinate jaoks, mis tavaliselt lõpevad pika, peaaegu hääletu kuivatusfaasiga enne lühikest lõplikku tühjendust."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Kortsudevastane/kroomievastane režiim tuvastab madalvõimsusega trummelpulsid pärast põhifaasi ja hoiab need lõppenud tsükliga seotud.",
|
"intro": "Kortsudevastane/kroomievastane režiim tuvastab madalvõimsusega trummelpulsid pärast põhifaasi ja hoiab need lõppenud tsükliga seotud.",
|
||||||
"label": "Kortsudevastane"
|
"label": "Kortsudevastane"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Passiivkuivatuse vaikne vabastamine",
|
||||||
|
"doc": "Kui tsükkel ületab oma eeldatava kestuse, siis kui kaua peab nõudepesumasin püsima vaikne (allpool Peatumise Lävi), enne kui WashData lõpetab lõpliku tühjenduse ootamise ja lõpetab tsükli. Suurendage seda, kui teie masinal on pikk vaikne kuivatusfaas enne hilist lõplikku tühjendust, mis jääb märkamata - laiem aken laseb õpitud kestusel järgida hooajalist triivi (külmem sissevoolav vesi = pikemad tsüklid), selle asemel et lukustuda vana keskmise külge. See saab ooteaega üksnes lühendada võrreldes sisemise 30-minutilise lõpupiigi ülempiiriga, mitte kunagi seda pikendada."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Tuvastage lühikesed väikese võimsusega trummelimpulsid, mida kuivati pärast peamist kuumutusfaasi kiirgab, ja hoidke need valmis tsükliga ühendatud, selle asemel, et lugeda neid uute tsüklitena.",
|
"doc": "Tuvastage lühikesed väikese võimsusega trummelimpulsid, mida kuivati pärast peamist kuumutusfaasi kiirgab, ja hoidke need valmis tsükliga ühendatud, selle asemel, et lugeda neid uute tsüklitena.",
|
||||||
"label": "Luba Kortsudevastane Tuvastamine"
|
"label": "Luba Kortsudevastane Tuvastamine"
|
||||||
@@ -1260,6 +1353,10 @@
|
|||||||
"doc": "Minutid pärast tsükli lõppu enne veel ootava \"masina mahalaadimise\" meeldetuletuse saatmist. Meeldetuletuse keelamiseks määrake 0.",
|
"doc": "Minutid pärast tsükli lõppu enne veel ootava \"masina mahalaadimise\" meeldetuletuse saatmist. Meeldetuletuse keelamiseks määrake 0.",
|
||||||
"label": "Mahalaadimise Meeldetuletuse Viivitus"
|
"label": "Mahalaadimise Meeldetuletuse Viivitus"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Saadab mahalaadimise meeldetuletuse iga \"Mahalaadimise Meeldetuletuse Viivitus\" minuti järel uuesti, kuni avate ukse või puudutate teavituses nuppu \"Lõpeta meeldetuletused\". Nõuab ukse anduri olemit (nagu ka meeldetuletus ise). Loobumisnupp toimib Home Assistant kaaslasrakenduse (mobiili) teavitustes.",
|
||||||
|
"label": "Korda, kuni uks avaneb"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Aeg oodata pärast võimsuse langemist, enne kui tsükkel lõppenuks kuulutatakse. Kui toide taastub selles aknas, jätkub tsükkel sujuvalt – see sillutab pause pesuetappide vahel. Nõudepesumasinal on pikad kuivatusfaasid (väljalülitamine 20-60 min), seega peab väljalülitamise viivitus ületama seda, et hoida kogu pesu+kuiv ühe tsüklina.",
|
"doc": "Aeg oodata pärast võimsuse langemist, enne kui tsükkel lõppenuks kuulutatakse. Kui toide taastub selles aknas, jätkub tsükkel sujuvalt – see sillutab pause pesuetappide vahel. Nõudepesumasinal on pikad kuivatusfaasid (väljalülitamine 20-60 min), seega peab väljalülitamise viivitus ületama seda, et hoida kogu pesu+kuiv ühe tsüklina.",
|
||||||
"label": "Väljalülitumise Viivitus"
|
"label": "Väljalülitumise Viivitus"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energia teravus",
|
"label": "Energia teravus",
|
||||||
"doc": "4. etapi energia vastavuse karistuse teravus. Väiksem = rangem: energia mittevastavus teeb rohkem kahju. Vaikimisi 0,25 on tahtlikult andelikum kui kestuse teravus, kuna energia varieerub koormuse järgi. Kasutage koos Energia kaaluga."
|
"doc": "4. etapi energia vastavuse karistuse teravus. Väiksem = rangem: energia mittevastavus teeb rohkem kahju. Vaikimisi 0,25 on tahtlikult andelikum kui kestuse teravus, kuna energia varieerub koormuse järgi. Kasutage koos Energia kaaluga."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Võimsusprofiilivahemik",
|
||||||
|
"doc": "Ämbri suurus profiili power_profile sensori atribuudile (tasane pesa kohta keskmiste vattide massiiv, mida kasutavad välised planeerijad nagu EMHASS ja tibber_prices). Väiksemad ämbrid hoiavad lühikesi võimsushüppeid teravana; suuremad ämbrid siluvad kuju. Vaikimisi 15 min. Ainult lugemisaeg; ei mõjuta tuvastust."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Hoia reaalajas teavitus puudutuse järel",
|
||||||
|
"doc": "Ainult Android. Tee reaalajas edenemise teavitus püsivaks (kleepuvaks), nii et selle puudutamine ei sulge käimasolevat lõime. Väljas hoiab vaikekäitumist, kus puudutamine teavituse sulgeb."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Reaalajas teavituse puudutamise sihtkoht",
|
||||||
|
"doc": "Ainult Android. Kuhu reaalajas edenemise teavituse puudutamine avab (nt /lovelace/laundry või täielik URL) rakenduse avalehe asemel. Vaikimisi jaoks jätke tühjaks."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Uks avaneb automaatselt lõpus",
|
||||||
|
"doc": "Nõudepesumasinatele, mis avavad tsükli lõpus ukse kuivatamiseks (AirDry ja sarnased). Selle sisselülitamisel ei peata ukse avamine käimasoleva tsükli ajal enam seda igaveseks; selle asemel, kui uks jääb alla sätestatud viibimisaja jooksul avatuks, loeb WashData tsükli lõppenuks. Lühike avamine (eseme lisamine) ignoreeritakse. Nõuab ukse anduri olendit."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Ukse avamise lõppviibimisaeg",
|
||||||
|
"doc": "Kui kaua uks peab jääma avatuks, enne kui WashData tsükli lõpetab, kui \"Uks avaneb automaatselt lõpus\" on sisse lülitatud. Piisavalt pikk, et kiire taldrikute lisamine ignoreeritaks (vaikimisi 60 s), piisavalt lühike, et lõpetada kiiresti, kui masin ukse avab."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1604,6 +1721,10 @@
|
|||||||
"name_required": "Nimi nõutav",
|
"name_required": "Nimi nõutav",
|
||||||
"no_split_found": "Tühikäigulünki ei leitud, mille pealt poolitada",
|
"no_split_found": "Tühikäigulünki ei leitud, mille pealt poolitada",
|
||||||
"panel_settings_saved": "Paneeli sätted salvestatud",
|
"panel_settings_saved": "Paneeli sätted salvestatud",
|
||||||
|
"pg_preset_loaded": "Eelseadistus \"{name}\" laaditud",
|
||||||
|
"pg_preset_saved": "Eelseadistus \"{name}\" salvestatud",
|
||||||
|
"pg_sugg_loaded": "{n} soovitatud väärtus laaditud - võrdlemiseks käivita katseala",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-kalibreeritud väärtus laaditud - võrdlemiseks käivita katseala",
|
||||||
"phase_name_required": "Etapi nimi on nõutav",
|
"phase_name_required": "Etapi nimi on nõutav",
|
||||||
"phase_updated": "Faas värskendatud",
|
"phase_updated": "Faas värskendatud",
|
||||||
"phases_saved": "Faasid salvestatud",
|
"phases_saved": "Faasid salvestatud",
|
||||||
@@ -1751,6 +1872,7 @@
|
|||||||
"min_active": "Põhineb viimases tsüklis täheldatud madalaimal aktiivvõimsusel ({min}W).",
|
"min_active": "Põhineb viimases tsüklis täheldatud madalaimal aktiivvõimsusel ({min}W).",
|
||||||
"min_duration_ratio": "Hoitakse võimalikult madal, et programm tuvastataks tsükli alguses varakult; usaldus- ja mitmetimõistetavuse lävid hoiavad ära enneaegsed otsused.",
|
"min_duration_ratio": "Hoitakse võimalikult madal, et programm tuvastataks tsükli alguses varakult; usaldus- ja mitmetimõistetavuse lävid hoiavad ära enneaegsed otsused.",
|
||||||
"min_off_gap": "Põhineb {gaps} täheldatud tsüklitevahelisel pausil (p05={p05}s). Seadme alampiir: {floor}s.",
|
"min_off_gap": "Põhineb {gaps} täheldatud tsüklitevahelisel pausil (p05={p05}s). Seadme alampiir: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Mõõdetud nii, et katab tsükli pikima vaikse lõigu: {span}s + 60s puhver, {spans} sillatud vahest {cycles} puhta tsükli lõikes (jääb alla teie lühima järjestikuste käivituste vahelise pausi, mis on {ceiling}s).",
|
||||||
"min_power": "40% madalaimast aktiivvõimsusest p05 juures ({p05}W) {cycles} puhta tsükli lõikes, hoides väljalülituse läve alla tegeliku tarbimise.{excl}",
|
"min_power": "40% madalaimast aktiivvõimsusest p05 juures ({p05}W) {cycles} puhta tsükli lõikes, hoides väljalülituse läve alla tegeliku tarbimise.{excl}",
|
||||||
"ml_auto_label": "Madalaim usaldusväärsus, mida kvaliteedimudel hindas veel puhtaks (p10 {cycles} puhtast tsüklist = {p10}).",
|
"ml_auto_label": "Madalaim usaldusväärsus, mida kvaliteedimudel hindas veel puhtaks (p10 {cycles} puhtast tsüklist = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} tsüklist ({pct}%) sisaldas pausi, millele lõputuvastaja andis >50%; nõuab {val} lõpukinnitust.",
|
"ml_end_repeat": "{false}/{total} tsüklist ({pct}%) sisaldas pausi, millele lõputuvastaja andis >50%; nõuab {val} lõpukinnitust.",
|
||||||
@@ -1767,7 +1889,7 @@
|
|||||||
"thr_batch": "Hoitakse veidi üle madalaima aktiivvõimsuse p05 juures {cycles} tsükli lõikes ({p05}W), et käivitus tuvastataks võimalikult vara ja seiskamislävi jääks alla masina madalaima töövõimsuse.",
|
"thr_batch": "Hoitakse veidi üle madalaima aktiivvõimsuse p05 juures {cycles} tsükli lõikes ({p05}W), et käivitus tuvastataks võimalikult vara ja seiskamislävi jääks alla masina madalaima töövõimsuse.",
|
||||||
"tol_per_profile": "p75 profiilipõhisest kestuse dispersioonist {profiles} profiili lõikes ({cycles} tsüklit); kitsaid profiile ei karistata.",
|
"tol_per_profile": "p75 profiilipõhisest kestuse dispersioonist {profiles} profiili lõikes ({cycles} tsüklit); kitsaid profiile ei karistata.",
|
||||||
"tol_pooled": "Põhineb {cycles} viimase märgistatud tsükli koondkestuse dispersioonil (p95 hälve={dev}).",
|
"tol_pooled": "Põhineb {cycles} viimase märgistatud tsükli koondkestuse dispersioonil (p95 hälve={dev}).",
|
||||||
"watchdog": "Hoitakse nii madal kui ohutu (3x p95 uuendusintervall {p95}s, min 30s), et seiskumised tuvastataks kiiresti ilma valeseisakuteta."
|
"watchdog": "Hoitakse nii madal kui ohutu (veidi üle p95 uuendusintervalli {p95}s, min 30s), et seiskumised tuvastataks kiiresti ilma valeseisakuteta."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Välja jäetud {total} valesti tuvastatud tsüklit: {parts}.",
|
"summary": "Välja jäetud {total} valesti tuvastatud tsüklit: {parts}.",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entiteettiä ei löytynyt",
|
||||||
|
"running_long": "Käy pitkään",
|
||||||
|
"remaining": "jäljellä",
|
||||||
|
"progress": "edistyminen",
|
||||||
|
"show_time_remaining": "Näytä jäljellä oleva aika",
|
||||||
|
"show_percentage": "Näytä prosentti",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Ruutu (kompakti)",
|
||||||
|
"detail": "Yksityiskohtainen (rikas)",
|
||||||
|
"glance": "Silmäys (useita laitteita)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Keskeytä",
|
||||||
|
"resume": "Jatka",
|
||||||
|
"terminate": "Lopeta jakso",
|
||||||
|
"record_start": "Aloita tallennus",
|
||||||
|
"record_stop": "Lopeta tallennus",
|
||||||
|
"program": "Ohjelma",
|
||||||
|
"open_panel": "Avaa WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Asettelu",
|
||||||
|
"entity": "Laitteen entiteetti",
|
||||||
|
"entities": "Laitteet",
|
||||||
|
"title": "Otsikko",
|
||||||
|
"icon": "Kuvake",
|
||||||
|
"show_state": "Näytä tila",
|
||||||
|
"show_program": "Näytä ohjelma",
|
||||||
|
"show_progress_bar": "Näytä edistymispalkki",
|
||||||
|
"spin_icon": "Pyöritä kuvaketta käynnissä ollessa",
|
||||||
|
"display_mode": "Yksityiskohtarivi",
|
||||||
|
"active_color": "Aktiivisen värin ohitus",
|
||||||
|
"show_phase": "Näytä vaihe",
|
||||||
|
"show_energy": "Näytä energia ja kustannukset",
|
||||||
|
"show_anomaly": "Näytä ylityksen varoitus",
|
||||||
|
"show_sparkline": "Näytä reaaliaikainen tehokaavio",
|
||||||
|
"buttons": "Toimintopainikkeet",
|
||||||
|
"program_entity": "Ohjelmaentiteetti (ohitus)",
|
||||||
|
"time_entity": "Aikaentiteetti (ohitus)",
|
||||||
|
"pct_entity": "Edistymisentiteetti (ohitus)",
|
||||||
|
"power_entity": "Tehoentiteetti (ohitus)",
|
||||||
|
"tap_action": "Napautustoiminto",
|
||||||
|
"hold_action": "Pitotoiminto",
|
||||||
|
"double_tap_action": "Kaksoisnapautustoiminto"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} poikkeavaa havaittu (esim. oven avautuminen kesken syklin) – avaa nähdäksesi ne kaaviossa",
|
"artifact_tip": "{n} poikkeavaa havaittu (esim. oven avautuminen kesken syklin) – avaa nähdäksesi ne kaaviossa",
|
||||||
"auto": "(tunnistettu automaattisesti)",
|
"auto": "(tunnistettu automaattisesti)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Keskeytä käynnissä oleva sykli – laite jatkaa siitä, mihin se jäi",
|
"pause_cycle_tip": "Keskeytä käynnissä oleva sykli – laite jatkaa siitä, mihin se jäi",
|
||||||
"pg_apply_device": "Käytä laitteeseen",
|
"pg_apply_device": "Käytä laitteeseen",
|
||||||
"pg_autofill": "Autotäyttö",
|
"pg_autofill": "Autotäyttö",
|
||||||
|
"pg_load_calibrated": "Lataa kalibroidut (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Lataa ML-kalibroidut asetukset testialueen ohituksina",
|
||||||
|
"pg_load_live": "Lataa aktiiviset asetukset",
|
||||||
|
"pg_load_live_tip": "Lue integraation nykyiset asetukset uudelleen ja hylkää kaikki testialueen muokkaukset",
|
||||||
|
"pg_load_suggested": "Lataa ehdotetut ({n})",
|
||||||
|
"pg_load_suggested_tip": "Lataa autovirittimen nykyiset ehdotukset testialueen ohituksina",
|
||||||
|
"pg_preset_delete": "Poista esiasetus",
|
||||||
|
"pg_preset_load": "Lataa esiasetus",
|
||||||
|
"pg_preset_load_tip": "Korvaa testialueen arvot tällä esiasetuksella (aktiivisiin asetuksiin ei kosketa)",
|
||||||
|
"pg_preset_save": "Tallenna esiasetuksena",
|
||||||
|
"pg_preset_save_tip": "Tallenna kaikki alla olevat arvot nimettynä esiasetuksena tälle laitteelle",
|
||||||
|
"pg_publish_all": "Tallenna asetuksiin ({n})",
|
||||||
|
"pg_publish_one": "Tallenna \"{label}\" integraation asetuksiin",
|
||||||
"play": "Toista",
|
"play": "Toista",
|
||||||
"process": "Käsittele",
|
"process": "Käsittele",
|
||||||
"process_history": "Käsittele nyt",
|
"process_history": "Käsittele nyt",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Lataa vienti",
|
"download_export": "Lataa vienti",
|
||||||
"analyze_import": "Analysoi tiedosto",
|
"analyze_import": "Analysoi tiedosto",
|
||||||
"import_selected": "Tuo valitut",
|
"import_selected": "Tuo valitut",
|
||||||
"back": "Takaisin"
|
"back": "Takaisin",
|
||||||
|
"mute_suggestion": "Lopeta tämän asetuksen ehdottaminen",
|
||||||
|
"reset_muted": "Palauta vaiennetut"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,8 +338,9 @@
|
|||||||
"no_automations": "Mikään automaatio ei viittaa tähän laitteeseen vielä.",
|
"no_automations": "Mikään automaatio ei viittaa tähän laitteeseen vielä.",
|
||||||
"panel_settings": "Paneelin asetukset",
|
"panel_settings": "Paneelin asetukset",
|
||||||
"param_sweep": "Parametripyyhkäisy",
|
"param_sweep": "Parametripyyhkäisy",
|
||||||
|
"pg_settings_source": "Asetusten lähde",
|
||||||
"phase_catalog": "Vaiheen katalogi",
|
"phase_catalog": "Vaiheen katalogi",
|
||||||
"playground": "Leikkikenttä",
|
"playground": "Testialue",
|
||||||
"process_history": "Prosessihistoria",
|
"process_history": "Prosessihistoria",
|
||||||
"settings_history": "Asetusten historia",
|
"settings_history": "Asetusten historia",
|
||||||
"status": "Tila",
|
"status": "Tila",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "Osumapisteet",
|
"pg_match_score": "Osumapisteet",
|
||||||
"pg_pct_of": "{p} % / {total}",
|
"pg_pct_of": "{p} % / {total}",
|
||||||
"pg_poor_match": "Huono osuma",
|
"pg_poor_match": "Huono osuma",
|
||||||
|
"pg_preset": "Testialueen esiasetus",
|
||||||
|
"pg_preset_name": "Uuden esiasetuksen nimi",
|
||||||
|
"pg_preset_none": "Valitse esiasetus…",
|
||||||
"pg_strong_match": "Vahva osuma",
|
"pg_strong_match": "Vahva osuma",
|
||||||
"pg_tile_ambiguous": "Epäselvä",
|
"pg_tile_ambiguous": "Epäselvä",
|
||||||
"pg_tile_ambiguous_tip": "Syklit, joissa kaksi ohjelmaa ovat lähes tasoissa",
|
"pg_tile_ambiguous_tip": "Syklit, joissa kaksi ohjelmaa ovat lähes tasoissa",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Nimien törmäykset",
|
"conflict_resolution": "Nimien törmäykset",
|
||||||
"conflict_import_copy": "Tuo kopiona",
|
"conflict_import_copy": "Tuo kopiona",
|
||||||
"conflict_keep_mine": "Säilytä omat",
|
"conflict_keep_mine": "Säilytä omat",
|
||||||
"conflict_overwrite": "Korvaa"
|
"conflict_overwrite": "Korvaa",
|
||||||
|
"font_size": "Paneelin fonttikoko"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Kaikki tasot",
|
"all_levels": "Kaikki tasot",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Otetaanko paras arvo käyttöön: {label} = {value}?",
|
"pg_apply_confirm": "Otetaanko paras arvo käyttöön: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Valitse sykli yltä ja paina sitten Lataa nähdäksesi sen tehokäyrän.",
|
"pg_canvas_empty": "Valitse sykli yltä ja paina sitten Lataa nähdäksesi sen tehokäyrän.",
|
||||||
"pg_chart_caption": "Tunnistus-/osumaprosentti {param}-arvojen mukaan",
|
"pg_chart_caption": "Tunnistus-/osumaprosentti {param}-arvojen mukaan",
|
||||||
|
"pg_ctrl_intro": "Arvot pohjautuvat tämän laitteen aktiivisiin integraation asetuksiin. Muokkaukset jäävät testialueelle, kunnes tallennat ne asetuksiin.",
|
||||||
|
"pg_live_unavailable": "Aktiiviset asetukset eivät ole käytettävissä, näytetään oletusarvot.",
|
||||||
|
"pg_load_live_confirm": "Hylätäänkö testialueen muokkaukset ({n}) ja ladataanko integraation nykyiset asetukset uudelleen?",
|
||||||
"pg_match_rate": "{pct}% osumaprosentti {total} syklillä",
|
"pg_match_rate": "{pct}% osumaprosentti {total} syklillä",
|
||||||
|
"pg_matches_live": "Vastaa aktiivisia asetuksia",
|
||||||
|
"pg_n_changed": "Poikkeaa aktiivisista asetuksista: {n}",
|
||||||
|
"pg_sugg_none": "Kaikki ehdotukset vastaavat jo nykyisiä asetuksia",
|
||||||
|
"pg_preset_delete_confirm": "Poistetaanko esiasetus \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Esiasetusten enimmäismäärä täynnä ({n})",
|
||||||
|
"pg_preset_overwrite": "Korvataanko esiasetus \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Tallennetaanko {label} = {value} tämän laitteen asetuksiin?",
|
||||||
"pg_restart_note": "Käynnistä Home Assistant uudelleen ottaaksesi simulointityökalut käyttöön.",
|
"pg_restart_note": "Käynnistä Home Assistant uudelleen ottaaksesi simulointityökalut käyttöön.",
|
||||||
"pg_sim_progress": "{done} / {total} sykliä",
|
"pg_sim_progress": "{done} / {total} sykliä",
|
||||||
"pg_starting": "Aloitetaan…",
|
"pg_starting": "Aloitetaan…",
|
||||||
@@ -784,8 +862,8 @@
|
|||||||
"pg_verdict_ok": "Hyväksyttävä: osa sykleistä jäi huomaamatta. Kokeile laskea aloituskynnystä.",
|
"pg_verdict_ok": "Hyväksyttävä: osa sykleistä jäi huomaamatta. Kokeile laskea aloituskynnystä.",
|
||||||
"phase_catalog_intro": "Jakson nimetyt osat (esipesu, lämmitys, linkous…). Määritä ne profiiliin sen ohjauspaneelista.",
|
"phase_catalog_intro": "Jakson nimetyt osat (esipesu, lämmitys, linkous…). Määritä ne profiiliin sen ohjauspaneelista.",
|
||||||
"phase_ranges_intro": "Vaihealueet (minuutit syklin alusta) peittyvät keskiarvokäyrällä. Muokkaa arvoja esikatsellaksesi livenä.",
|
"phase_ranges_intro": "Vaihealueet (minuutit syklin alusta) peittyvät keskiarvokäyrällä. Muokkaa arvoja esikatsellaksesi livenä.",
|
||||||
"playground_intro": "Turvallinen hiekkalaatikko aiempien syklien toistamiseen eri asetuksilla, kahden kokoonpanon vertailuun rinnakkain ja sen tarkasteluun, miten sykli kohdistuu profiiliin. Mikään tässä ei muuta live-tietojasi ennen kuin otat sen nimenomaisesti käyttöön.",
|
"playground_intro": "Turvallinen testialue aiempien syklien toistamiseen eri asetuksilla, kahden kokoonpanon vertailuun rinnakkain ja sen tarkasteluun, miten sykli kohdistuu profiiliin. Mikään tässä ei muuta live-tietojasi ennen kuin otat sen nimenomaisesti käyttöön.",
|
||||||
"playground_needs_restart": "Käynnistä Home Assistant uudelleen ottaaksesi Hiekkalaatikko-työkalut käyttöön.",
|
"playground_needs_restart": "Käynnistä Home Assistant uudelleen ottaaksesi Testialueen työkalut käyttöön.",
|
||||||
"preferences_admin": "Asetukset, paneeli ja kulunvalvonta",
|
"preferences_admin": "Asetukset, paneeli ja kulunvalvonta",
|
||||||
"preferences_adv": "Asetukset",
|
"preferences_adv": "Asetukset",
|
||||||
"prefs_personal": "Nämä koskevat vain Home Assistant -tiliäsi.",
|
"prefs_personal": "Nämä koskevat vain Home Assistant -tiliäsi.",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Kesto trendi lyhyempi ({pct}%/sykli) – viimeaikainen keskim. {avg}",
|
"trend_duration_shorter": "Kesto trendi lyhyempi ({pct}%/sykli) – viimeaikainen keskim. {avg}",
|
||||||
"trend_energy_down": "Energia laskee ({pct} %/sykli)",
|
"trend_energy_down": "Energia laskee ({pct} %/sykli)",
|
||||||
"trend_energy_up": "Energiatrendi nousussa ({pct} %/sykli) – viimeaikainen keskiarvo {avg}",
|
"trend_energy_up": "Energiatrendi nousussa ({pct} %/sykli) – viimeaikainen keskiarvo {avg}",
|
||||||
|
"trim_destructive_confirm": "Tämä säilyttää vain {pct}% syklistä. Tätä ei voi kumota. Jatketaanko?",
|
||||||
"trim_intro": "Vedä punaisia kahvoja tai syötä arvot. Kaikki ikkunan ulkopuolella poistetaan.",
|
"trim_intro": "Vedä punaisia kahvoja tai syötä arvot. Kaikki ikkunan ulkopuolella poistetaan.",
|
||||||
"tuning_suggestions_available": "{count} viritysehdotus saatavilla havaituista sykleistä. Ne näkyvät asianmukaisten kenttien vieressä.",
|
"tuning_suggestions_available": "{count} viritysehdotus saatavilla havaituista sykleistä. Ne näkyvät asianmukaisten kenttien vieressä.",
|
||||||
"unsure_detected_prefix": "WashData ei ole varma, onko se havaittu",
|
"unsure_detected_prefix": "WashData ei ole varma, onko se havaittu",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Tuodut kohteet lisätään; mitään paikallista ei menetetä. Nimien törmäykset ratkaistaan alla.",
|
"merge_hint": "Tuodut kohteet lisätään; mitään paikallista ei menetetä. Nimien törmäykset ratkaistaan alla.",
|
||||||
"replace_warn": "Jokainen rastitettu luokka tyhjennetään ja korvataan tiedostosta. Rastittamattomia luokkia ei kosketa.",
|
"replace_warn": "Jokainen rastitettu luokka tyhjennetään ja korvataan tiedostosta. Rastittamattomia luokkia ei kosketa.",
|
||||||
"dest_reference_hint": "Tuodut jaksot vain parantavat ohjelmien tunnistusta eivätkä koskaan vaikuta käyttö- tai energiatilastoihin.",
|
"dest_reference_hint": "Tuodut jaksot vain parantavat ohjelmien tunnistusta eivätkä koskaan vaikuta käyttö- tai energiatilastoihin.",
|
||||||
"dest_real_history_hint": "Tuodut jaksot lasketaan tämän laitteen omaksi historiaksi ja syöttävät energia- ja käyttötilastoja. Käytä tätä, kun siirrät yhden laitteen uuteen asennukseen."
|
"dest_real_history_hint": "Tuodut jaksot lasketaan tämän laitteen omaksi historiaksi ja syöttävät energia- ja käyttötilastoja. Käytä tätä, kun siirrät yhden laitteen uuteen asennukseen.",
|
||||||
|
"sug_muted": "Tätä asetusta ei enää ehdoteta",
|
||||||
|
"sug_mute_failed": "Ehdotuksen vaimennus epäonnistui",
|
||||||
|
"sug_unmuted_all": "Vaiennetut ehdotukset palautettu",
|
||||||
|
"n_suggestions_muted": "{count} vaimennettu; automaattinen virittäjä ei ehdota näitä.",
|
||||||
|
"font_size_hint": "Suurenna tai pienennä kaikkea tässä paneelissa. Koskee tiliäsi tällä laitteella."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Astianpesukone: hiljaiset sekunnit odotetun keston jälkeen ennen kuin syklin lopun vedenpoiston odotus vapautetaan",
|
||||||
"anti_wrinkle_enabled": "Sulauta päävaiheen jälkeiset rumpupulssit sen sijaan, että lukisit ne uusina sykleinä",
|
"anti_wrinkle_enabled": "Sulauta päävaiheen jälkeiset rumpupulssit sen sijaan, että lukisit ne uusina sykleinä",
|
||||||
"anti_wrinkle_exit_power": "Tehon on laskettava tämän alle pulssien välillä, jotta ryppyjenesto pysyy aktiivisena",
|
"anti_wrinkle_exit_power": "Tehon on laskettava tämän alle pulssien välillä, jotta ryppyjenesto pysyy aktiivisena",
|
||||||
"anti_wrinkle_idle_timeout": "Kahden rumpupulssin välillä sallittu hiljainen aika ennen kuin ryppyjenesto päättyy",
|
"anti_wrinkle_idle_timeout": "Kahden rumpupulssin välillä sallittu hiljainen aika ennen kuin ryppyjenesto päättyy",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Käyttämätön"
|
"unusable": "Käyttämätön"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Astianpesukone",
|
||||||
|
"intro": "Syklin lopun käsittely astianpesukoneille, jotka tyypillisesti päättyvät pitkään, lähes hiljaiseen kuivausvaiheeseen ennen lyhyttä lopullista vedenpoistoa."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Ryppyjenestotila tunnistaa lyhyet pienet pyörimisjaksot päävaiheen jälkeen ja pitää ne kiinnitettynä valmiiseen sykliin.",
|
"intro": "Ryppyjenestotila tunnistaa lyhyet pienet pyörimisjaksot päävaiheen jälkeen ja pitää ne kiinnitettynä valmiiseen sykliin.",
|
||||||
"label": "Ryppyjenesto"
|
"label": "Ryppyjenesto"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Passiivikuivauksen hiljainen vapautus",
|
||||||
|
"doc": "Kun sykli ylittää odotetun kestonsa, kuinka kauan astianpesukoneen on pysyttävä hiljaisena (Pysäytyskynnys-arvon alapuolella) ennen kuin WashData lopettaa lopullisen vedenpoiston odottamisen ja päättää syklin. Nosta arvoa, jos koneessasi on pitkä hiljainen kuivausvaihe ennen myöhäistä lopullista vedenpoistoa, joka jää huomaamatta - laajempi ikkuna antaa opitun keston seurata kausivaihtelua (kylmempi tulovesi = pidemmät syklit) sen sijaan, että se lukittuisi vanhaan keskiarvoon. Se voi vain lyhentää odotusta suhteessa sisäiseen 30 minuutin loppupiikkirajaan, ei koskaan pidentää sitä."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Tunnista lyhyet vähätehoiset rumpupulssit, joita kuivausrumpu lähettää päälämpövaiheen jälkeen, ja pidä ne kiinni valmiissa jaksossa sen sijaan, että luet ne uusina jaksoina.",
|
"doc": "Tunnista lyhyet vähätehoiset rumpupulssit, joita kuivausrumpu lähettää päälämpövaiheen jälkeen, ja pidä ne kiinni valmiissa jaksossa sen sijaan, että luet ne uusina jaksoina.",
|
||||||
"label": "Ota ryppyjenesto käyttöön"
|
"label": "Ota ryppyjenesto käyttöön"
|
||||||
@@ -1260,6 +1353,10 @@
|
|||||||
"doc": "Minuutit syklin päättymisen jälkeen ennen edelleen odottavan koneen purkamisen muistutuksen lähettämistä. Aseta 0 poistaaksesi muistutuksen käytöstä.",
|
"doc": "Minuutit syklin päättymisen jälkeen ennen edelleen odottavan koneen purkamisen muistutuksen lähettämistä. Aseta 0 poistaaksesi muistutuksen käytöstä.",
|
||||||
"label": "Purkamismuistutuksen viive"
|
"label": "Purkamismuistutuksen viive"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Lähettää purkamismuistutuksen uudelleen \"Purkamismuistutuksen viive\" minuutin välein, kunnes avaat oven tai napautat ilmoituksen \"Lopeta muistuttaminen\" -painiketta. Vaatii ovianturin entiteetin (kuten itse muistutuskin). Hylkäyspainike toimii Home Assistant -kumppanisovelluksen (mobiili) ilmoituksissa.",
|
||||||
|
"label": "Toista kunnes ovi avautuu"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Aika odottaa tehon putoamisen jälkeen ennen kuin sykli julistetaan päättyneeksi. Jos virta palaa tämän ikkunan sisällä, jakso jatkuu saumattomasti - tämä siltaa taukoja pesuvaiheiden välillä. Astianpesukoneissa on pitkät kuivausvaiheet (virta pois päältä 20-60 min), joten sammutusviiveen on oltava tätä suurempi, jotta koko pesu+kuivaus pysyy yhtenä jaksona.",
|
"doc": "Aika odottaa tehon putoamisen jälkeen ennen kuin sykli julistetaan päättyneeksi. Jos virta palaa tämän ikkunan sisällä, jakso jatkuu saumattomasti - tämä siltaa taukoja pesuvaiheiden välillä. Astianpesukoneissa on pitkät kuivausvaiheet (virta pois päältä 20-60 min), joten sammutusviiveen on oltava tätä suurempi, jotta koko pesu+kuivaus pysyy yhtenä jaksona.",
|
||||||
"label": "Sammutusviive"
|
"label": "Sammutusviive"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energian tarkkuus",
|
"label": "Energian tarkkuus",
|
||||||
"doc": "Vaiheen 4 energian yhdenmukaisuusrangaistuksen tarkkuus. Pienempi = tiukempi: energian poikkeama haittaa enemmän. Oletus 0,25 on tarkoituksellisesti sallivampi kuin kestotarkkuus koska energia vaihtelee kuorman mukaan. Yhdistä Energiapaino-asetukseen."
|
"doc": "Vaiheen 4 energian yhdenmukaisuusrangaistuksen tarkkuus. Pienempi = tiukempi: energian poikkeama haittaa enemmän. Oletus 0,25 on tarkoituksellisesti sallivampi kuin kestotarkkuus koska energia vaihtelee kuorman mukaan. Yhdistä Energiapaino-asetukseen."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Tehoprofiilin aikaväli",
|
||||||
|
"doc": "Säilön koko profiilin power_profile-sensorin attribuutille (tasainen kohtakohtainen keskivattimäärän matriisi, jota käyttävät ulkoiset suunnittelijat kuten EMHASS ja tibber_prices). Pienemmät säiliöt pitävät lyhyet tehopiikit terävinä; suuremmat säiliöt tasoittavat muodon. Oletus 15 min. Vain lukuaika; ei vaikuta tunnistukseen."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Pidä reaaliaikailmoitus napauttamisen jälkeen",
|
||||||
|
"doc": "Vain Android. Tee reaaliaikaisesta edistymisilmoituksesta pysyvä (sticky), jotta sen napauttaminen ei sulje käynnissä olevaa viestiketjua. Pois päältä säilyttää oletustoiminnan, jossa napautus sulkee ilmoituksen."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Reaaliaikailmoituksen napauttamiskohde",
|
||||||
|
"doc": "Vain Android. Mihin reaaliaikaisen edistymisilmoituksen napauttaminen avaa (esim. /lovelace/laundry tai koko URL) sovellusaloitussivun sijaan. Jätä tyhjäksi oletusmääränpäätä varten."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Ovi avautuu automaattisesti lopussa",
|
||||||
|
"doc": "Astianpesukoneille, jotka avaavat oven syklin lopussa kuivauksen ajaksi (AirDry ja vastaavat). Tämän ollessa päällä oven avautuminen käynnissä olevan syklin aikana ei enää pysäytä sitä pysyvästi; sen sijaan, jos ovi pysyy auki alla olevan odotusajan verran, WashData pitää syklin valmiina. Lyhyt avaus (tavaran lisääminen) ohitetaan. Vaatii ovisensorientiteetin."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Oven avauksen loppuviive",
|
||||||
|
"doc": "Kuinka kauan oven on pysyttävä auki ennen kuin WashData päättää syklin, kun \"Ovi avautuu automaattisesti lopussa\" on käytössä. Tarpeeksi kauan ohittamaan lautasen lisäämisen (oletus 60 s), tarpeeksi lyhyt päättämään nopeasti kun kone avaa oven."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1620,6 +1737,7 @@
|
|||||||
"min_active": "Perustuu pienimpään aktiiviseen tehoon ({min}W), joka havaittiin viime jaksossa.",
|
"min_active": "Perustuu pienimpään aktiiviseen tehoon ({min}W), joka havaittiin viime jaksossa.",
|
||||||
"min_duration_ratio": "Pidetään mahdollisimman matalana, jotta ohjelma tunnistetaan jakson alkuvaiheessa; luottamus- ja epäselvyysrajat estävät ennenaikaiset päätökset.",
|
"min_duration_ratio": "Pidetään mahdollisimman matalana, jotta ohjelma tunnistetaan jakson alkuvaiheessa; luottamus- ja epäselvyysrajat estävät ennenaikaiset päätökset.",
|
||||||
"min_off_gap": "Perustuu {gaps} havaittuun jaksojen väliseen taukoon (p05={p05}s). Laitteen alaraja: {floor}s.",
|
"min_off_gap": "Perustuu {gaps} havaittuun jaksojen väliseen taukoon (p05={p05}s). Laitteen alaraja: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Mitoitettu siltaamaan jakson pisin hiljainen vaihe: {span}s + 60s puskuri, {spans} sillatusta katkosta {cycles} puhtaan jakson joukossa (pysyy alle {ceiling}s, joka on lyhin peräkkäisten käynnistysten välinen taukosi).",
|
||||||
"min_power": "40% pienimmästä aktiivisesta tehosta p05:ssä ({p05}W) {cycles} puhtaan jakson joukossa, mikä pitää sammutuskynnyksen todellisen kulutuksen alapuolella.{excl}",
|
"min_power": "40% pienimmästä aktiivisesta tehosta p05:ssä ({p05}W) {cycles} puhtaan jakson joukossa, mikä pitää sammutuskynnyksen todellisen kulutuksen alapuolella.{excl}",
|
||||||
"ml_auto_label": "Pienin luottamus, jonka laatumalli arvioi vielä puhtaaksi (p10 {cycles} puhtaasta jaksosta = {p10}).",
|
"ml_auto_label": "Pienin luottamus, jonka laatumalli arvioi vielä puhtaaksi (p10 {cycles} puhtaasta jaksosta = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} jaksosta ({pct}%) sisälsi tauon, jolle loppudetektori antoi >50%; vaatii {val} loppuvahvistusta.",
|
"ml_end_repeat": "{false}/{total} jaksosta ({pct}%) sisälsi tauon, jolle loppudetektori antoi >50%; vaatii {val} loppuvahvistusta.",
|
||||||
@@ -1636,7 +1754,7 @@
|
|||||||
"thr_batch": "Pidetään juuri pienimmän aktiivisen tehon yläpuolella p05:ssä {cycles} jakson joukossa ({p05}W), jotta käynnistys havaitaan mahdollisimman aikaisin ja pysäytyskynnys pysyy koneen pienimmän käyntitehon alapuolella.",
|
"thr_batch": "Pidetään juuri pienimmän aktiivisen tehon yläpuolella p05:ssä {cycles} jakson joukossa ({p05}W), jotta käynnistys havaitaan mahdollisimman aikaisin ja pysäytyskynnys pysyy koneen pienimmän käyntitehon alapuolella.",
|
||||||
"tol_per_profile": "p75 profiilikohtaisesta keston varianssista {profiles} profiilin joukossa ({cycles} jaksoa); tiiviitä profiileja ei rangaista.",
|
"tol_per_profile": "p75 profiilikohtaisesta keston varianssista {profiles} profiilin joukossa ({cycles} jaksoa); tiiviitä profiileja ei rangaista.",
|
||||||
"tol_pooled": "Perustuu {cycles} viimeisimmän merkityn jakson yhdistettyyn keston varianssiin (p95 poikkeama={dev}).",
|
"tol_pooled": "Perustuu {cycles} viimeisimmän merkityn jakson yhdistettyyn keston varianssiin (p95 poikkeama={dev}).",
|
||||||
"watchdog": "Pidetään niin matalana kuin on turvallista (3x p95-päivitysväli {p95}s, väh. 30s), jotta pysähdykset havaitaan nopeasti ilman vääriä pysäytyksiä."
|
"watchdog": "Pidetään niin matalana kuin on turvallista (hieman yli p95-päivitysvälin {p95}s, väh. 30s), jotta pysähdykset havaitaan nopeasti ilman vääriä pysäytyksiä."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Suljettu pois {total} väärin tunnistettua sykliä: {parts}.",
|
"summary": "Suljettu pois {total} väärin tunnistettua sykliä: {parts}.",
|
||||||
@@ -1670,7 +1788,7 @@
|
|||||||
"subtab_phase_catalog": "Vaiheen katalogi",
|
"subtab_phase_catalog": "Vaiheen katalogi",
|
||||||
"subtab_profiles": "Profiilit",
|
"subtab_profiles": "Profiilit",
|
||||||
"maintenance": "Huolto",
|
"maintenance": "Huolto",
|
||||||
"playground": "Hiekkalaatikko",
|
"playground": "Testialue",
|
||||||
"store": "Kauppa"
|
"store": "Kauppa"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
@@ -1716,6 +1834,10 @@
|
|||||||
"name_required": "Nimi vaaditaan",
|
"name_required": "Nimi vaaditaan",
|
||||||
"no_split_found": "Tyhjäkäyntiä ei löytynyt halkeamista varten",
|
"no_split_found": "Tyhjäkäyntiä ei löytynyt halkeamista varten",
|
||||||
"panel_settings_saved": "Paneelin asetukset tallennettu",
|
"panel_settings_saved": "Paneelin asetukset tallennettu",
|
||||||
|
"pg_preset_loaded": "Esiasetus \"{name}\" ladattu",
|
||||||
|
"pg_preset_saved": "Esiasetus \"{name}\" tallennettu",
|
||||||
|
"pg_sugg_loaded": "{n} ehdotettu arvo ladattu testialueelle - aja testialue vertailua varten",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-kalibroitua arvoa ladattu testialueelle - aja testialue vertailua varten",
|
||||||
"phase_name_required": "Vaiheen nimi vaaditaan",
|
"phase_name_required": "Vaiheen nimi vaaditaan",
|
||||||
"phase_updated": "Vaihe päivitetty",
|
"phase_updated": "Vaihe päivitetty",
|
||||||
"phases_saved": "Vaiheet tallennettu",
|
"phases_saved": "Vaiheet tallennettu",
|
||||||
|
|||||||
@@ -92,6 +92,19 @@
|
|||||||
"pause_cycle_tip": "Mettre en pause le cycle en cours – l'appareil reprendra là où il s'est arrêté",
|
"pause_cycle_tip": "Mettre en pause le cycle en cours – l'appareil reprendra là où il s'est arrêté",
|
||||||
"pg_apply_device": "Appliquer à l'appareil",
|
"pg_apply_device": "Appliquer à l'appareil",
|
||||||
"pg_autofill": "Remplissage automatique",
|
"pg_autofill": "Remplissage automatique",
|
||||||
|
"pg_load_calibrated": "Charger Calibré (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Charger les paramètres calibrés par ML comme valeurs de remplacement dans le Bac à sable",
|
||||||
|
"pg_load_live": "Charger les réglages actifs",
|
||||||
|
"pg_load_live_tip": "Relire les réglages actuels de l'intégration et abandonner toutes les modifications faites dans le Bac à sable",
|
||||||
|
"pg_load_suggested": "Charger les suggestions ({n})",
|
||||||
|
"pg_load_suggested_tip": "Charger les suggestions actuelles du réglage automatique comme valeurs de remplacement dans le Bac à sable",
|
||||||
|
"pg_preset_delete": "Supprimer le préréglage",
|
||||||
|
"pg_preset_load": "Charger le préréglage",
|
||||||
|
"pg_preset_load_tip": "Remplacer les valeurs du Bac à sable par ce préréglage (les réglages actifs ne sont pas modifiés)",
|
||||||
|
"pg_preset_save": "Enregistrer comme préréglage",
|
||||||
|
"pg_preset_save_tip": "Enregistrer toutes les valeurs ci-dessous comme préréglage nommé pour cet appareil",
|
||||||
|
"pg_publish_all": "Enregistrer {n} réglage(s) dans l'intégration",
|
||||||
|
"pg_publish_one": "Enregistrer {label} dans l'intégration",
|
||||||
"play": "Lire",
|
"play": "Lire",
|
||||||
"process": "Processus",
|
"process": "Processus",
|
||||||
"process_history": "Traiter maintenant",
|
"process_history": "Traiter maintenant",
|
||||||
@@ -178,7 +191,9 @@
|
|||||||
"download_export": "Télécharger l'export",
|
"download_export": "Télécharger l'export",
|
||||||
"analyze_import": "Analyser le fichier",
|
"analyze_import": "Analyser le fichier",
|
||||||
"import_selected": "Importer la sélection",
|
"import_selected": "Importer la sélection",
|
||||||
"back": "Retour"
|
"back": "Retour",
|
||||||
|
"mute_suggestion": "Ne plus suggérer ce paramètre",
|
||||||
|
"reset_muted": "Réinitialiser les suggestions masquées"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +290,7 @@
|
|||||||
"no_automations": "Aucun automatisme ne fait encore référence à cet appareil.",
|
"no_automations": "Aucun automatisme ne fait encore référence à cet appareil.",
|
||||||
"panel_settings": "Paramètres du panneau",
|
"panel_settings": "Paramètres du panneau",
|
||||||
"param_sweep": "Balayage de paramètre",
|
"param_sweep": "Balayage de paramètre",
|
||||||
|
"pg_settings_source": "Origine des réglages",
|
||||||
"phase_catalog": "Catalogue de phases",
|
"phase_catalog": "Catalogue de phases",
|
||||||
"playground": "Bac à sable",
|
"playground": "Bac à sable",
|
||||||
"process_history": "Historique du processus",
|
"process_history": "Historique du processus",
|
||||||
@@ -415,6 +431,9 @@
|
|||||||
"pg_match_score": "Score de correspondance",
|
"pg_match_score": "Score de correspondance",
|
||||||
"pg_pct_of": "{p}% sur {total}",
|
"pg_pct_of": "{p}% sur {total}",
|
||||||
"pg_poor_match": "Correspondance médiocre",
|
"pg_poor_match": "Correspondance médiocre",
|
||||||
|
"pg_preset": "Préréglage du Bac à sable",
|
||||||
|
"pg_preset_name": "Nom du nouveau préréglage",
|
||||||
|
"pg_preset_none": "Sélectionner un préréglage…",
|
||||||
"pg_strong_match": "Correspondance forte",
|
"pg_strong_match": "Correspondance forte",
|
||||||
"pg_tile_ambiguous": "Ambigu",
|
"pg_tile_ambiguous": "Ambigu",
|
||||||
"pg_tile_ambiguous_tip": "Cycles avec une quasi-égalité entre deux programmes",
|
"pg_tile_ambiguous_tip": "Cycles avec une quasi-égalité entre deux programmes",
|
||||||
@@ -609,7 +628,8 @@
|
|||||||
"conflict_resolution": "Conflits de noms",
|
"conflict_resolution": "Conflits de noms",
|
||||||
"conflict_import_copy": "Importer comme copie",
|
"conflict_import_copy": "Importer comme copie",
|
||||||
"conflict_keep_mine": "Garder le mien",
|
"conflict_keep_mine": "Garder le mien",
|
||||||
"conflict_overwrite": "Écraser"
|
"conflict_overwrite": "Écraser",
|
||||||
|
"font_size": "Taille de police du panneau"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Tous niveaux",
|
"all_levels": "Tous niveaux",
|
||||||
@@ -771,7 +791,17 @@
|
|||||||
"pg_apply_confirm": "Appliquer la meilleure valeur : {label} = {value} ?",
|
"pg_apply_confirm": "Appliquer la meilleure valeur : {label} = {value} ?",
|
||||||
"pg_canvas_empty": "Sélectionnez un cycle ci-dessus, puis appuyez sur Charger pour voir sa courbe de puissance.",
|
"pg_canvas_empty": "Sélectionnez un cycle ci-dessus, puis appuyez sur Charger pour voir sa courbe de puissance.",
|
||||||
"pg_chart_caption": "Taux de détection/correspondance selon les valeurs de {param}",
|
"pg_chart_caption": "Taux de détection/correspondance selon les valeurs de {param}",
|
||||||
|
"pg_ctrl_intro": "Les valeurs partent des réglages actifs de cet appareil dans l'intégration. Les modifications restent dans le Bac à sable tant que vous ne les enregistrez pas dans l'intégration.",
|
||||||
|
"pg_live_unavailable": "Réglages actifs indisponibles, affichage des valeurs par défaut.",
|
||||||
|
"pg_load_live_confirm": "Abandonner {n} modification(s) du Bac à sable et recharger les réglages actuels de l'intégration ?",
|
||||||
"pg_match_rate": "{pct}% de taux de correspondance sur {total} cycles",
|
"pg_match_rate": "{pct}% de taux de correspondance sur {total} cycles",
|
||||||
|
"pg_matches_live": "Identique aux réglages actifs",
|
||||||
|
"pg_n_changed": "{n} valeur(s) modifiée(s) par rapport aux réglages actifs",
|
||||||
|
"pg_sugg_none": "Toutes les suggestions correspondent déjà aux réglages actuels",
|
||||||
|
"pg_preset_delete_confirm": "Supprimer le préréglage « {name} » ?",
|
||||||
|
"pg_preset_limit": "Limite de préréglages atteinte ({n})",
|
||||||
|
"pg_preset_overwrite": "Écraser le préréglage « {name} » ?",
|
||||||
|
"pg_publish_one_confirm": "Enregistrer {label} = {value} dans les réglages de cet appareil ?",
|
||||||
"pg_restart_note": "Redémarrez Home Assistant pour activer les outils de simulation.",
|
"pg_restart_note": "Redémarrez Home Assistant pour activer les outils de simulation.",
|
||||||
"pg_sim_progress": "{done} / {total} cycles",
|
"pg_sim_progress": "{done} / {total} cycles",
|
||||||
"pg_starting": "Démarrage…",
|
"pg_starting": "Démarrage…",
|
||||||
@@ -845,6 +875,7 @@
|
|||||||
"trend_duration_shorter": "Tendance de durée plus courte ({pct} %/cycle) – moyenne récente {avg}",
|
"trend_duration_shorter": "Tendance de durée plus courte ({pct} %/cycle) – moyenne récente {avg}",
|
||||||
"trend_energy_down": "Tendance à la baisse de l'énergie ({pct} %/cycle)",
|
"trend_energy_down": "Tendance à la baisse de l'énergie ({pct} %/cycle)",
|
||||||
"trend_energy_up": "Tendance énergétique à la hausse ({pct} %/cycle) – moyenne récente {avg}",
|
"trend_energy_up": "Tendance énergétique à la hausse ({pct} %/cycle) – moyenne récente {avg}",
|
||||||
|
"trim_destructive_confirm": "Cela ne conserve que {pct} % du cycle et est irréversible. Continuer ?",
|
||||||
"trim_intro": "Faites glisser les poignées rouges ou entrez des valeurs. Tout ce qui se trouve à l'extérieur de la fenêtre est supprimé.",
|
"trim_intro": "Faites glisser les poignées rouges ou entrez des valeurs. Tout ce qui se trouve à l'extérieur de la fenêtre est supprimé.",
|
||||||
"tuning_suggestions_available": "{count} suggestion de réglage disponible à partir des cycles observés. Ils apparaissent à côté des champs concernés.",
|
"tuning_suggestions_available": "{count} suggestion de réglage disponible à partir des cycles observés. Ils apparaissent à côté des champs concernés.",
|
||||||
"unsure_detected_prefix": "WashData n'est pas sûr d'avoir été détecté",
|
"unsure_detected_prefix": "WashData n'est pas sûr d'avoir été détecté",
|
||||||
@@ -922,9 +953,15 @@
|
|||||||
"merge_hint": "Les éléments importés sont ajoutés ; rien de local n'est perdu. Les conflits de noms sont résolus ci-dessous.",
|
"merge_hint": "Les éléments importés sont ajoutés ; rien de local n'est perdu. Les conflits de noms sont résolus ci-dessous.",
|
||||||
"replace_warn": "Chaque catégorie cochée est effacée et remplacée par le contenu du fichier. Les catégories non cochées restent intactes.",
|
"replace_warn": "Chaque catégorie cochée est effacée et remplacée par le contenu du fichier. Les catégories non cochées restent intactes.",
|
||||||
"dest_reference_hint": "Les cycles importés améliorent uniquement la reconnaissance des programmes et n'affectent jamais les statistiques d'utilisation/d'énergie.",
|
"dest_reference_hint": "Les cycles importés améliorent uniquement la reconnaissance des programmes et n'affectent jamais les statistiques d'utilisation/d'énergie.",
|
||||||
"dest_real_history_hint": "Les cycles importés comptent comme l'historique propre de cet appareil et alimentent les statistiques d'énergie/d'utilisation. À utiliser pour déplacer un appareil vers une nouvelle installation."
|
"dest_real_history_hint": "Les cycles importés comptent comme l'historique propre de cet appareil et alimentent les statistiques d'énergie/d'utilisation. À utiliser pour déplacer un appareil vers une nouvelle installation.",
|
||||||
|
"sug_muted": "Ce paramètre ne sera plus suggéré",
|
||||||
|
"sug_mute_failed": "Impossible de masquer la suggestion",
|
||||||
|
"sug_unmuted_all": "Les suggestions masquées ont été réinitialisées",
|
||||||
|
"n_suggestions_muted": "{count} masquée(s) ; le réglage automatique ne proposera plus ces suggestions.",
|
||||||
|
"font_size_hint": "Agrandir ou réduire tout le contenu de ce panneau. S'applique à votre compte sur cet appareil."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Lave-vaisselle : secondes de silence après la durée prévue avant de libérer l'attente de vidange de fin de cycle",
|
||||||
"anti_wrinkle_enabled": "Absorber les impulsions de culbutage après la phase principale au lieu de les lire comme de nouveaux cycles",
|
"anti_wrinkle_enabled": "Absorber les impulsions de culbutage après la phase principale au lieu de les lire comme de nouveaux cycles",
|
||||||
"anti_wrinkle_exit_power": "La puissance doit tomber sous ce seuil entre les impulsions pour que l'anti-froissement reste actif",
|
"anti_wrinkle_exit_power": "La puissance doit tomber sous ce seuil entre les impulsions pour que l'anti-froissement reste actif",
|
||||||
"anti_wrinkle_idle_timeout": "Temps de silence autorisé entre deux impulsions de culbutage avant la fin de l'anti-froissement",
|
"anti_wrinkle_idle_timeout": "Temps de silence autorisé entre deux impulsions de culbutage avant la fin de l'anti-froissement",
|
||||||
@@ -998,6 +1035,10 @@
|
|||||||
"unusable": "Inutilisable"
|
"unusable": "Inutilisable"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Lave-vaisselle",
|
||||||
|
"intro": "Gestion de fin de cycle pour les lave-vaisselle, qui se terminent généralement par une longue phase de séchage quasi silencieuse avant une brève vidange finale."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Le mode anti-froissement détecte les courtes impulsions de culbutage à faible puissance après la phase principale et les maintient rattachées au cycle terminé.",
|
"intro": "Le mode anti-froissement détecte les courtes impulsions de culbutage à faible puissance après la phase principale et les maintient rattachées au cycle terminé.",
|
||||||
"label": "Anti-froissement"
|
"label": "Anti-froissement"
|
||||||
@@ -1040,6 +1081,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Libération au silence du séchage passif",
|
||||||
|
"doc": "Une fois que le cycle dépasse sa durée prévue, combien de temps le lave-vaisselle doit rester silencieux (sous le Seuil d'arrêt) avant que WashData cesse d'attendre une vidange finale et termine le cycle. Augmentez cette valeur si votre machine a une longue phase de séchage silencieuse avant une vidange finale tardive qui n'est pas détectée - une fenêtre plus large permet à la durée apprise de suivre la dérive saisonnière (eau d'arrivée plus froide = cycles plus longs) au lieu de se figer sur l'ancienne moyenne. Elle ne fait que raccourcir l'attente par rapport au plafond interne de 30 minutes pour le pic de fin, jamais la prolonger."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Reconnaissez les courtes impulsions de culbutage de faible puissance qu'un sèche-linge émet après la phase de chauffage principale et conservez-les attachées au cycle terminé au lieu de les lire comme de nouveaux cycles.",
|
"doc": "Reconnaissez les courtes impulsions de culbutage de faible puissance qu'un sèche-linge émet après la phase de chauffage principale et conservez-les attachées au cycle terminé au lieu de les lire comme de nouveaux cycles.",
|
||||||
"label": "Activer la détection anti-froissement"
|
"label": "Activer la détection anti-froissement"
|
||||||
@@ -1260,6 +1305,10 @@
|
|||||||
"doc": "Quelques minutes après la fin d'un cycle avant d'envoyer le rappel \"décharger la machine\" toujours en attente. Définissez 0 pour désactiver le rappel.",
|
"doc": "Quelques minutes après la fin d'un cycle avant d'envoyer le rappel \"décharger la machine\" toujours en attente. Définissez 0 pour désactiver le rappel.",
|
||||||
"label": "Délai de rappel de déchargement"
|
"label": "Délai de rappel de déchargement"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Continue de renvoyer le rappel de déchargement toutes les \"Délai de rappel de déchargement\" minutes jusqu'à ce que vous ouvriez la porte ou appuyiez sur \"Arrêter les rappels\" dans la notification. Nécessite une Entité capteur de porte (le rappel lui-même en a besoin). Le bouton de rejet fonctionne sur les notifications de l'application compagnon (mobile) de Home Assistant.",
|
||||||
|
"label": "Répéter jusqu'à l'ouverture de la porte"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Temps d'attente après la coupure de courant avant de déclarer le cycle terminé. Si le courant revient dans cette fenêtre, le cycle continue de manière transparente – cela comble les pauses entre les étapes de lavage. Les lave-vaisselle ont de longues phases de séchage (mise hors tension pendant 20 à 60 minutes), le délai d'arrêt doit donc être supérieur à ce délai pour que l'ensemble du lavage et du séchage se déroule en un seul cycle.",
|
"doc": "Temps d'attente après la coupure de courant avant de déclarer le cycle terminé. Si le courant revient dans cette fenêtre, le cycle continue de manière transparente – cela comble les pauses entre les étapes de lavage. Les lave-vaisselle ont de longues phases de séchage (mise hors tension pendant 20 à 60 minutes), le délai d'arrêt doit donc être supérieur à ce délai pour que l'ensemble du lavage et du séchage se déroule en un seul cycle.",
|
||||||
"label": "Délai d'arrêt"
|
"label": "Délai d'arrêt"
|
||||||
@@ -1435,6 +1484,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Précision énergie",
|
"label": "Précision énergie",
|
||||||
"doc": "Précision de la pénalité de concordance d'énergie. Plus petit = plus strict : un écart d'énergie pénalise davantage. Le défaut 0,25 est intentionnellement plus indulgent que la Précision de durée, car l'énergie varie avec la charge. À combiner avec la Pondération d'énergie."
|
"doc": "Précision de la pénalité de concordance d'énergie. Plus petit = plus strict : un écart d'énergie pénalise davantage. Le défaut 0,25 est intentionnellement plus indulgent que la Précision de durée, car l'énergie varie avec la charge. À combiner avec la Pondération d'énergie."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Intervalle du profil de puissance",
|
||||||
|
"doc": "Taille des créneaux pour l'attribut de capteur power_profile par profil (le tableau plat de watts moyens par créneau consommé par des planificateurs externes tels que EMHASS et tibber_prices). Des créneaux plus petits conservent les pics de puissance courts et nets ; des créneaux plus grands lissent la forme. Par défaut 15 min. Lecture seule ; n'affecte pas la détection."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Conserver la notification en direct au toucher",
|
||||||
|
"doc": "Android uniquement. Rend la notification de progression en direct persistante (épinglée) afin que la toucher ne la ferme pas. Désactivé conserve le comportement par défaut où un toucher la ferme."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Destination au toucher de la notification en direct",
|
||||||
|
"doc": "Android uniquement. Où s'ouvre un toucher sur la notification de progression en direct (par exemple /lovelace/laundry, ou une URL complète) au lieu de la page d'accueil de l'application. Laissez vide pour la valeur par défaut."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "La porte s'ouvre automatiquement en fin de cycle",
|
||||||
|
"doc": "Pour les lave-vaisselle qui ouvrent la porte en fin de cycle pour le séchage (AirDry et fonctions similaires). Avec cette option activée, une ouverture de porte sur un cycle en cours ne le met plus en pause indéfiniment ; si la porte reste ouverte pendant la durée d'attente ci-dessous, WashData considère le cycle comme terminé. Une ouverture brève (pour ajouter un article) est ignorée. Nécessite une entité capteur de porte."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Durée d'attente porte ouverte",
|
||||||
|
"doc": "Durée pendant laquelle la porte doit rester ouverte avant que WashData ne termine le cycle, lorsque « La porte s'ouvre automatiquement en fin de cycle » est activé. Assez longue pour ignorer l'ajout rapide d'un article (par défaut 60 s), assez courte pour terminer rapidement une fois que la machine ouvre la porte."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1605,6 +1674,10 @@
|
|||||||
"name_required": "Nom requis",
|
"name_required": "Nom requis",
|
||||||
"no_split_found": "Aucun espace vide trouvé sur lequel se diviser",
|
"no_split_found": "Aucun espace vide trouvé sur lequel se diviser",
|
||||||
"panel_settings_saved": "Paramètres du panneau enregistrés",
|
"panel_settings_saved": "Paramètres du panneau enregistrés",
|
||||||
|
"pg_preset_loaded": "Préréglage « {name} » chargé",
|
||||||
|
"pg_preset_saved": "Préréglage « {name} » enregistré",
|
||||||
|
"pg_sugg_loaded": "{n} valeur(s) suggérée(s) chargée(s) - lancez le Bac à sable pour comparer",
|
||||||
|
"pg_sugg_ml_loaded": "{n} valeur(s) calibrée(s) ML chargée(s) - lancez le Bac à sable pour comparer",
|
||||||
"phase_name_required": "Le nom de la phase est obligatoire",
|
"phase_name_required": "Le nom de la phase est obligatoire",
|
||||||
"phase_updated": "Phase mise à jour",
|
"phase_updated": "Phase mise à jour",
|
||||||
"phases_saved": "Phases enregistrées",
|
"phases_saved": "Phases enregistrées",
|
||||||
@@ -1752,6 +1825,7 @@
|
|||||||
"min_active": "D'après la puissance active minimale ({min}W) observée lors du dernier cycle.",
|
"min_active": "D'après la puissance active minimale ({min}W) observée lors du dernier cycle.",
|
||||||
"min_duration_ratio": "Maintenu aussi bas que possible pour qu'un programme soit reconnu tôt dans le cycle ; les seuils de confiance et d'ambiguïté empêchent les décisions prématurées.",
|
"min_duration_ratio": "Maintenu aussi bas que possible pour qu'un programme soit reconnu tôt dans le cycle ; les seuils de confiance et d'ambiguïté empêchent les décisions prématurées.",
|
||||||
"min_off_gap": "D'après {gaps} intervalles entre cycles observés (p05={p05}s). Plancher de l'appareil : {floor}s.",
|
"min_off_gap": "D'après {gaps} intervalles entre cycles observés (p05={p05}s). Plancher de l'appareil : {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensionné pour couvrir la plus longue période calme au sein d'un cycle : {span}s + 60s de marge, à partir de {spans} intervalles couverts sur {cycles} cycles propres (reste sous votre intervalle minimal de {ceiling}s entre deux charges consécutives).",
|
||||||
"min_power": "40% de la puissance active la plus basse au p05 ({p05}W) sur {cycles} cycles propres, pour garder le seuil d'arrêt sous la consommation réelle.{excl}",
|
"min_power": "40% de la puissance active la plus basse au p05 ({p05}W) sur {cycles} cycles propres, pour garder le seuil d'arrêt sous la consommation réelle.{excl}",
|
||||||
"ml_auto_label": "Confiance la plus basse encore jugée propre par le modèle de qualité (p10 de {cycles} cycles propres = {p10}).",
|
"ml_auto_label": "Confiance la plus basse encore jugée propre par le modèle de qualité (p10 de {cycles} cycles propres = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cycles ({pct}%) ont eu une pause que le détecteur de fin a notée >50% ; exiger {val} confirmation(s) de fin.",
|
"ml_end_repeat": "{false}/{total} cycles ({pct}%) ont eu une pause que le détecteur de fin a notée >50% ; exiger {val} confirmation(s) de fin.",
|
||||||
@@ -1768,7 +1842,7 @@
|
|||||||
"thr_batch": "Maintenu juste au-dessus de la puissance active la plus basse au p05 sur {cycles} cycles ({p05}W) pour qu'un démarrage soit détecté le plus tôt possible et que le seuil d'arrêt reste sous la puissance de fonctionnement la plus basse de la machine.",
|
"thr_batch": "Maintenu juste au-dessus de la puissance active la plus basse au p05 sur {cycles} cycles ({p05}W) pour qu'un démarrage soit détecté le plus tôt possible et que le seuil d'arrêt reste sous la puissance de fonctionnement la plus basse de la machine.",
|
||||||
"tol_per_profile": "p75 de la variance de durée par profil sur {profiles} profils ({cycles} cycles) ; les profils resserrés ne sont pas pénalisés.",
|
"tol_per_profile": "p75 de la variance de durée par profil sur {profiles} profils ({cycles} cycles) ; les profils resserrés ne sont pas pénalisés.",
|
||||||
"tol_pooled": "D'après la variance de durée regroupée de {cycles} cycles récemment étiquetés (écart p95={dev}).",
|
"tol_pooled": "D'après la variance de durée regroupée de {cycles} cycles récemment étiquetés (écart p95={dev}).",
|
||||||
"watchdog": "Maintenu aussi bas que possible en toute sécurité (3x l'écart de mise à jour p95 de {p95}s, min 30s) pour détecter rapidement les blocages sans faux arrêts."
|
"watchdog": "Maintenu aussi bas que possible en toute sécurité (juste au-dessus de l'écart de mise à jour p95 de {p95}s, min 30s) pour détecter rapidement les blocages sans faux arrêts."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "{total} cycle(s) mal détecté(s) exclu(s) : {parts}.",
|
"summary": "{total} cycle(s) mal détecté(s) exclu(s) : {parts}.",
|
||||||
@@ -1945,5 +2019,53 @@
|
|||||||
"hide_guidance": "Masquer le guide",
|
"hide_guidance": "Masquer le guide",
|
||||||
"show_guidance": "Afficher le guide"
|
"show_guidance": "Afficher le guide"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entité introuvable",
|
||||||
|
"running_long": "Dépassement",
|
||||||
|
"remaining": "restant",
|
||||||
|
"progress": "progression",
|
||||||
|
"show_time_remaining": "Afficher le temps restant",
|
||||||
|
"show_percentage": "Afficher le pourcentage",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Tuile (compact)",
|
||||||
|
"detail": "Détail (complet)",
|
||||||
|
"glance": "Aperçu (plusieurs appareils)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pause",
|
||||||
|
"resume": "Reprendre",
|
||||||
|
"terminate": "Terminer le cycle",
|
||||||
|
"record_start": "Commencer l'enregistrement",
|
||||||
|
"record_stop": "Arrêter l'enregistrement",
|
||||||
|
"program": "Programme",
|
||||||
|
"open_panel": "Ouvrir WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Disposition",
|
||||||
|
"entity": "Entité de l'appareil",
|
||||||
|
"entities": "Appareils",
|
||||||
|
"title": "Titre",
|
||||||
|
"icon": "Icône",
|
||||||
|
"show_state": "Afficher l'état",
|
||||||
|
"show_program": "Afficher le programme",
|
||||||
|
"show_progress_bar": "Afficher la barre de progression",
|
||||||
|
"spin_icon": "Faire tourner l'icône pendant le fonctionnement",
|
||||||
|
"display_mode": "Ligne de détail",
|
||||||
|
"active_color": "Couleur active personnalisée",
|
||||||
|
"show_phase": "Afficher la phase",
|
||||||
|
"show_energy": "Afficher l'énergie et le coût",
|
||||||
|
"show_anomaly": "Afficher l'avertissement de dépassement",
|
||||||
|
"show_sparkline": "Afficher le graphique de puissance en direct",
|
||||||
|
"buttons": "Boutons d'action",
|
||||||
|
"program_entity": "Entité de programme (personnalisée)",
|
||||||
|
"time_entity": "Entité de temps (personnalisée)",
|
||||||
|
"pct_entity": "Entité de progression (personnalisée)",
|
||||||
|
"power_entity": "Entité de puissance (personnalisée)",
|
||||||
|
"tap_action": "Action au toucher",
|
||||||
|
"hold_action": "Action au maintien",
|
||||||
|
"double_tap_action": "Action au double toucher"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entitet nije pronađen",
|
||||||
|
"running_long": "Traje predugo",
|
||||||
|
"remaining": "preostalo",
|
||||||
|
"progress": "napredak",
|
||||||
|
"show_time_remaining": "Prikaži preostalo vrijeme",
|
||||||
|
"show_percentage": "Prikaži postotak",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Pločica (kompaktno)",
|
||||||
|
"detail": "Detaljno (bogato)",
|
||||||
|
"glance": "Pregled (više uređaja)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pauziraj",
|
||||||
|
"resume": "Nastavi",
|
||||||
|
"terminate": "Završi ciklus",
|
||||||
|
"record_start": "Započni snimanje",
|
||||||
|
"record_stop": "Zaustavi snimanje",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Otvori WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Izgled",
|
||||||
|
"entity": "Entitet uređaja",
|
||||||
|
"entities": "Uređaji",
|
||||||
|
"title": "Naslov",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Prikaži stanje",
|
||||||
|
"show_program": "Prikaži program",
|
||||||
|
"show_progress_bar": "Prikaži traku napretka",
|
||||||
|
"spin_icon": "Vrti ikonu tijekom rada",
|
||||||
|
"display_mode": "Redak s detaljima",
|
||||||
|
"active_color": "Zamjena aktivne boje",
|
||||||
|
"show_phase": "Prikaži fazu",
|
||||||
|
"show_energy": "Prikaži energiju i trošak",
|
||||||
|
"show_anomaly": "Prikaži upozorenje o produljenju",
|
||||||
|
"show_sparkline": "Prikaži grafikon snage uživo",
|
||||||
|
"buttons": "Gumbi radnji",
|
||||||
|
"program_entity": "Entitet programa (zamjena)",
|
||||||
|
"time_entity": "Entitet vremena (zamjena)",
|
||||||
|
"pct_entity": "Entitet napretka (zamjena)",
|
||||||
|
"power_entity": "Entitet snage (zamjena)",
|
||||||
|
"tap_action": "Radnja dodira",
|
||||||
|
"hold_action": "Radnja držanja",
|
||||||
|
"double_tap_action": "Radnja dvostrukog dodira"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Otkrivene su {n} anomalije (npr. vrata otvorena usred ciklusa) – otvorite da ih vidite na grafikonu",
|
"artifact_tip": "Otkrivene su {n} anomalije (npr. vrata otvorena usred ciklusa) – otvorite da ih vidite na grafikonu",
|
||||||
"auto": "(automatski otkriveno)",
|
"auto": "(automatski otkriveno)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Odbaci",
|
"discard": "Odbaci",
|
||||||
"discard_tip": "Odbaci snimljeni trag bez pohrane",
|
"discard_tip": "Odbaci snimljeni trag bez pohrane",
|
||||||
"dismiss": "Odbaci",
|
"dismiss": "Odbaci",
|
||||||
|
"mute_suggestion": "Prestani predlagati ovu postavku",
|
||||||
|
"pg_load_calibrated": "Učitaj kalibrirano (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Učitaj ML-kalibrirane postavke kao zamjene u pješčaniku",
|
||||||
|
"pg_load_live": "Učitaj aktivne postavke",
|
||||||
|
"pg_load_live_tip": "Ponovno učitaj trenutne postavke integracije i odbaci sve izmjene u pješčaniku",
|
||||||
|
"pg_load_suggested": "Učitaj predloženo ({n})",
|
||||||
|
"pg_load_suggested_tip": "Učitaj aktualne prijedloge automatskog podešavanja kao zamjene u pješčaniku",
|
||||||
|
"pg_preset_delete": "Izbriši preset",
|
||||||
|
"pg_preset_load": "Učitaj preset",
|
||||||
|
"pg_preset_load_tip": "Zamijeni vrijednosti u pješčaniku ovim presetom (aktivne postavke ostaju nepromijenjene)",
|
||||||
|
"pg_preset_save": "Spremi kao preset",
|
||||||
|
"pg_preset_save_tip": "Spremi sve vrijednosti ispod kao imenovani preset za ovaj uređaj",
|
||||||
|
"pg_publish_all": "Spremi u integraciju ({n})",
|
||||||
|
"pg_publish_one": "Spremi {label} u integraciju",
|
||||||
|
"reset_muted": "Poništi utišane",
|
||||||
"done": "Gotovo",
|
"done": "Gotovo",
|
||||||
"edit": "Uredi",
|
"edit": "Uredi",
|
||||||
"export": "Izvezi",
|
"export": "Izvezi",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Još nijedna automatizacija ne spominje ovaj uređaj.",
|
"no_automations": "Još nijedna automatizacija ne spominje ovaj uređaj.",
|
||||||
"panel_settings": "Postavke ploče",
|
"panel_settings": "Postavke ploče",
|
||||||
"param_sweep": "Pretraživanje parametra",
|
"param_sweep": "Pretraživanje parametra",
|
||||||
|
"pg_settings_source": "Izvor postavki",
|
||||||
"phase_catalog": "Katalog faza",
|
"phase_catalog": "Katalog faza",
|
||||||
"playground": "Pješčanik",
|
"playground": "Pješčanik",
|
||||||
"process_history": "Povijest procesa",
|
"process_history": "Povijest procesa",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Zadana razina za korisnike koji nisu dolje navedeni",
|
"default_access_level": "Zadana razina za korisnike koji nisu dolje navedeni",
|
||||||
"default_other": "Zadano (ostali uređaji)",
|
"default_other": "Zadano (ostali uređaji)",
|
||||||
"default_tab": "Zadana kartica pri otvaranju ploče",
|
"default_tab": "Zadana kartica pri otvaranju ploče",
|
||||||
|
"font_size": "Veličina fonta ploče",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Opis",
|
"description": "Opis",
|
||||||
"dtw_blend_w": "Težina miješanja",
|
"dtw_blend_w": "Težina miješanja",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Rezultat podudaranja",
|
"pg_match_score": "Rezultat podudaranja",
|
||||||
"pg_pct_of": "{p}% od {total}",
|
"pg_pct_of": "{p}% od {total}",
|
||||||
"pg_poor_match": "Loše podudaranje",
|
"pg_poor_match": "Loše podudaranje",
|
||||||
|
"pg_preset": "Preset pješčanika",
|
||||||
|
"pg_preset_name": "Ime novog preseta",
|
||||||
|
"pg_preset_none": "Odaberite preset…",
|
||||||
"pg_strong_match": "Snažno podudaranje",
|
"pg_strong_match": "Snažno podudaranje",
|
||||||
"pg_tile_ambiguous": "Nejasno",
|
"pg_tile_ambiguous": "Nejasno",
|
||||||
"pg_tile_ambiguous_tip": "Ciklusi s gotovo izjednačenim rezultatom između dva programa",
|
"pg_tile_ambiguous_tip": "Ciklusi s gotovo izjednačenim rezultatom između dva programa",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Primijeniti najbolju vrijednost: {label} = {value}?",
|
"pg_apply_confirm": "Primijeniti najbolju vrijednost: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Odaberite ciklus iznad, zatim pritisnite Učitaj za prikaz njegovog tijeka snage.",
|
"pg_canvas_empty": "Odaberite ciklus iznad, zatim pritisnite Učitaj za prikaz njegovog tijeka snage.",
|
||||||
"pg_chart_caption": "Stopa otkrivanja/podudaranja po vrijednostima {param}",
|
"pg_chart_caption": "Stopa otkrivanja/podudaranja po vrijednostima {param}",
|
||||||
|
"pg_ctrl_intro": "Vrijednosti polaze od aktivnih postavki integracije za ovaj uređaj. Izmjene ostaju u pješčaniku dok ih ne spremite u integraciju.",
|
||||||
|
"pg_live_unavailable": "Aktivne postavke nisu dostupne, prikazane su zadane vrijednosti.",
|
||||||
|
"pg_load_live_confirm": "Odbaciti izmjene u pješčaniku ({n}) i ponovno učitati trenutne postavke integracije?",
|
||||||
"pg_match_rate": "{pct}% stopa podudaranja na {total} ciklusa",
|
"pg_match_rate": "{pct}% stopa podudaranja na {total} ciklusa",
|
||||||
|
"pg_matches_live": "Podudara se s aktivnim postavkama",
|
||||||
|
"pg_n_changed": "Promijenjeno u odnosu na aktivne postavke: {n}",
|
||||||
|
"pg_sugg_none": "Svi prijedlozi već odgovaraju trenutnim postavkama",
|
||||||
|
"pg_preset_delete_confirm": "Izbrisati preset \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Dosegnut limit preseta ({n})",
|
||||||
|
"pg_preset_overwrite": "Prepisati preset \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Spremiti {label} = {value} u postavke ovog uređaja?",
|
||||||
"pg_restart_note": "Ponovno pokrenite Home Assistant kako biste omogućili alate za simulaciju.",
|
"pg_restart_note": "Ponovno pokrenite Home Assistant kako biste omogućili alate za simulaciju.",
|
||||||
"pg_sim_progress": "{done} / {total} ciklusa",
|
"pg_sim_progress": "{done} / {total} ciklusa",
|
||||||
"pg_starting": "Pokretanje…",
|
"pg_starting": "Pokretanje…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Postavke, panel i kontrola pristupa",
|
"preferences_admin": "Postavke, panel i kontrola pristupa",
|
||||||
"preferences_adv": "Postavke",
|
"preferences_adv": "Postavke",
|
||||||
"prefs_personal": "Ovo se odnosi samo na vaš račun Home Assistant.",
|
"prefs_personal": "Ovo se odnosi samo na vaš račun Home Assistant.",
|
||||||
|
"font_size_hint": "Povećajte ili smanjite sve u ovoj ploči. Primjenjuje se na vaš račun na ovom uređaju.",
|
||||||
"process_history_hint": "Ponovo pokrenite uparivanje na svim pohranjenim ciklusima, osvježite prijedloge podešavanja, ponovo trenirajte ML modele (ako su omogućeni) i preračunajte zdravlje ciklusa. Pokrenite nakon niza recenzija.",
|
"process_history_hint": "Ponovo pokrenite uparivanje na svim pohranjenim ciklusima, osvježite prijedloge podešavanja, ponovo trenirajte ML modele (ako su omogućeni) i preračunajte zdravlje ciklusa. Pokrenite nakon niza recenzija.",
|
||||||
"profile_deleted": "Profil izbrisan",
|
"profile_deleted": "Profil izbrisan",
|
||||||
"profile_poor_health_detail": "Ciklusi dodijeljeni ovom profilu imaju nedosljedne oblike ili nisku pouzdanost. Razmislite o ponovnoj izradi omotnice ili pregledu označenih ciklusa.",
|
"profile_poor_health_detail": "Ciklusi dodijeljeni ovom profilu imaju nedosljedne oblike ili nisku pouzdanost. Razmislite o ponovnoj izradi omotnice ili pregledu označenih ciklusa.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Pritisnite grafikon da biste dodali ili uklonili točku razdvajanja ili automatsko otkrivanje praznina u mirovanju. Svaki rezultirajući segment može dobiti svoj profil.",
|
"split_intro": "Pritisnite grafikon da biste dodali ili uklonili točku razdvajanja ili automatsko otkrivanje praznina u mirovanju. Svaki rezultirajući segment može dobiti svoj profil.",
|
||||||
"storage_diagnostics": "Statistika pohrane, održavanje, izvoz/uvoz",
|
"storage_diagnostics": "Statistika pohrane, održavanje, izvoz/uvoz",
|
||||||
"sug_staged": "Postavljeno {key} = {val}. Spremi za primjenu.",
|
"sug_staged": "Postavljeno {key} = {val}. Spremi za primjenu.",
|
||||||
|
"sug_muted": "Ova postavka više neće biti predlagana",
|
||||||
|
"sug_mute_failed": "Nije moguće utišati prijedlog",
|
||||||
|
"sug_unmuted_all": "Utišani prijedlozi poništeni",
|
||||||
|
"n_suggestions_muted": "{count} utišano; automatski podešavač neće predlagati ove postavke.",
|
||||||
"toast_auto_detect_enabled": "Automatsko otkrivanje omogućeno",
|
"toast_auto_detect_enabled": "Automatsko otkrivanje omogućeno",
|
||||||
"toast_auto_label_complete": "Automatsko označavanje dovršeno",
|
"toast_auto_label_complete": "Automatsko označavanje dovršeno",
|
||||||
"toast_auto_label_failed": "Automatsko označavanje neuspješno: {error}",
|
"toast_auto_label_failed": "Automatsko označavanje neuspješno: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Trajanje je sve kraće ({pct}%/ciklus) – nedavni prosjek {avg}",
|
"trend_duration_shorter": "Trajanje je sve kraće ({pct}%/ciklus) – nedavni prosjek {avg}",
|
||||||
"trend_energy_down": "Energija opada ({pct}%/ciklus)",
|
"trend_energy_down": "Energija opada ({pct}%/ciklus)",
|
||||||
"trend_energy_up": "Energija raste ({pct}%/ciklus) – nedavni prosjek {avg}",
|
"trend_energy_up": "Energija raste ({pct}%/ciklus) – nedavni prosjek {avg}",
|
||||||
|
"trim_destructive_confirm": "Ovo zadržava samo {pct}% ciklusa i ne može se poništiti. Nastaviti?",
|
||||||
"trim_intro": "Povucite crvene ručice ili unesite vrijednosti. Sve izvan prozora je uklonjeno.",
|
"trim_intro": "Povucite crvene ručice ili unesite vrijednosti. Sve izvan prozora je uklonjeno.",
|
||||||
"tuning_suggestions_available": "{count} prijedlog podešavanja dostupan iz promatranih ciklusa. Pojavljuju se pored relevantnih polja.",
|
"tuning_suggestions_available": "{count} prijedlog podešavanja dostupan iz promatranih ciklusa. Pojavljuju se pored relevantnih polja.",
|
||||||
"unsure_detected_prefix": "WashData nije siguran da je otkriven",
|
"unsure_detected_prefix": "WashData nije siguran da je otkriven",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Neupotrebljiv"
|
"unusable": "Neupotrebljiv"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Perilica posuđa",
|
||||||
|
"intro": "Obrada kraja ciklusa za perilice posuđa, koje obično završavaju dugom, gotovo tihom fazom sušenja prije kratkog završnog ispumpavanja vode."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Način anti-bore/anti-gužve otkriva impulse prevrtanja male snage nakon glavne faze i zadržava ih priključene na završeni ciklus.",
|
"intro": "Način anti-bore/anti-gužve otkriva impulse prevrtanja male snage nakon glavne faze i zadržava ih priključene na završeni ciklus.",
|
||||||
"label": "Anti-bore"
|
"label": "Anti-bore"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Otpuštanje nakon tihe faze sušenja",
|
||||||
|
"doc": "Kada ciklus prijeđe svoje očekivano trajanje, koliko dugo perilica mora ostati tiha (ispod Praga zaustavljanja) prije nego što WashData prestane čekati na završno ispumpavanje vode i završi ciklus. Povećajte ako vaš uređaj ima dugu tihu fazu sušenja prije kasnog završnog ispumpavanja koje se propušta - šire okno omogućuje da naučeno trajanje prati sezonske promjene (hladnija dovodna voda = dulji ciklusi) umjesto da ostane zaključano na staroj prosječnoj vrijednosti. Čekanje samo skraćuje u odnosu na interno ograničenje završnog ispumpavanja od 30 minuta, nikada ga ne produljuje."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Prepoznajte kratke impulse male snage koje sušilica emitira nakon glavne faze zagrijavanja i držite ih vezanima uz završeni ciklus umjesto da ih čitate kao nove cikluse.",
|
"doc": "Prepoznajte kratke impulse male snage koje sušilica emitira nakon glavne faze zagrijavanja i držite ih vezanima uz završeni ciklus umjesto da ih čitate kao nove cikluse.",
|
||||||
"label": "Omogući otkrivanje anti-bora"
|
"label": "Omogući otkrivanje anti-bora"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Nekoliko minuta nakon završetka ciklusa prije slanja podsjetnika za \"istovar stroja\" koji još uvijek čeka. Postavite 0 da biste onemogućili podsjetnik.",
|
"doc": "Nekoliko minuta nakon završetka ciklusa prije slanja podsjetnika za \"istovar stroja\" koji još uvijek čeka. Postavite 0 da biste onemogućili podsjetnik.",
|
||||||
"label": "Odgoda podsjetnika za istovar"
|
"label": "Odgoda podsjetnika za istovar"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Ponovno šalje podsjetnik za istovar svakih \"Odgoda podsjetnika za istovar\" minuta dok ne otvorite vrata ili ne dodirnete \"Prestani podsjećati\" na obavijesti. Zahtijeva Entitet senzora vrata (kao i sam podsjetnik). Gumb za odbacivanje radi na obavijestima mobilne aplikacije Home Assistant (companion app).",
|
||||||
|
"label": "Ponavljaj dok se vrata ne otvore"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Vrijeme čekanja nakon pada struje prije nego što se proglasi da je ciklus završen. Ako se struja nastavi unutar ovog prozora, ciklus se nastavlja neprimjetno - ovo premošćuje pauze između faza pranja. Perilice posuđa imaju duge faze sušenja (isključivanje na 20-60 min) tako da odgoda isključivanja mora biti veća od te kako bi cijeli ciklus pranja+sušenja bio jedan ciklus.",
|
"doc": "Vrijeme čekanja nakon pada struje prije nego što se proglasi da je ciklus završen. Ako se struja nastavi unutar ovog prozora, ciklus se nastavlja neprimjetno - ovo premošćuje pauze između faza pranja. Perilice posuđa imaju duge faze sušenja (isključivanje na 20-60 min) tako da odgoda isključivanja mora biti veća od te kako bi cijeli ciklus pranja+sušenja bio jedan ciklus.",
|
||||||
"label": "Odgoda isključivanja"
|
"label": "Odgoda isključivanja"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Oštrina energije",
|
"label": "Oštrina energije",
|
||||||
"doc": "Oštrina kazne za nepodudaranje energije u Fazi 4. Manje = strože: nepodudaranje energije više snižava ocjenu. Zadana vrijednost 0,25 je namjerno blaža od Oštrine trajanja jer energija varira s opterećenjem. Koristite zajedno s Težinom energije."
|
"doc": "Oštrina kazne za nepodudaranje energije u Fazi 4. Manje = strože: nepodudaranje energije više snižava ocjenu. Zadana vrijednost 0,25 je namjerno blaža od Oštrine trajanja jer energija varira s opterećenjem. Koristite zajedno s Težinom energije."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interval profila snage",
|
||||||
|
"doc": "Veličina segmenta za atribut senzora power_profile po profilu (polje prosječnih vata po slotu koje koriste vanjski planeri poput EMHASS i tibber_prices). Manji segmenti zadržavaju kratke skokove snage oštrima; veći segmenti zaglađuju oblik. Zadano 15 min. Samo za čitanje; ne utječe na otkrivanje."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Zadrži živu obavijest pri dodiru",
|
||||||
|
"doc": "Samo Android. Živu obavijest o napretku postavite kao trajnu (prikvačenu) kako dodir ne bi odbacio aktivnu nit. Isključeno zadržava zadano ponašanje gdje dodir odbacuje obavijest."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Odredište dodira na živoj obavijesti",
|
||||||
|
"doc": "Samo Android. Gdje dodir na živu obavijest o napretku otvara (npr. /lovelace/laundry ili cijeli URL) umjesto početne stranice aplikacije. Ostavite prazno za zadano."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Vrata se automatski otvaraju na kraju",
|
||||||
|
"doc": "Za perilice posuđa koje na kraju ciklusa otvaraju vrata radi sušenja (AirDry i slično). Kada je uključeno, otvaranje vrata za vrijeme pokrenuta ciklusa više ne zaustavlja ciklus zauvijek; umjesto toga, ako vrata ostanu otvorena koliko je navedeno ispod, WashData smatra ciklus završenim. Kratko otvaranje (dodavanje predmeta) se zanemaruje. Zahtijeva entitet senzora vrata."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Zadržavanje otvorenih vrata za završetak",
|
||||||
|
"doc": "Koliko dugo vrata moraju ostati otvorena prije nego WashData završi ciklus, kada je uključena postavka \"Vrata se automatski otvaraju na kraju\". Dovoljno dugo da se ignorira brzo dodavanje posuđa (zadano 60 s), dovoljno kratko za brz završetak kad perilica otvori vrata."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1592,6 +1708,7 @@
|
|||||||
"min_active": "Na temelju najmanje radne snage ({min}W) uočene u posljednjem ciklusu.",
|
"min_active": "Na temelju najmanje radne snage ({min}W) uočene u posljednjem ciklusu.",
|
||||||
"min_duration_ratio": "Zadržano što nižim kako bi se program prepoznao rano u ciklusu; pragovi pouzdanosti i dvosmislenosti sprječavaju prijevremene potvrde.",
|
"min_duration_ratio": "Zadržano što nižim kako bi se program prepoznao rano u ciklusu; pragovi pouzdanosti i dvosmislenosti sprječavaju prijevremene potvrde.",
|
||||||
"min_off_gap": "Na temelju {gaps} uočenih razmaka između ciklusa (p05={p05}s). Donja granica uređaja: {floor}s.",
|
"min_off_gap": "Na temelju {gaps} uočenih razmaka između ciklusa (p05={p05}s). Donja granica uređaja: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Postavljeno tako da premosti najdulji tihi odsječak unutar ciklusa: {span}s + 60s rezerve, iz {spans} premoštenih razmaka kroz {cycles} čistih ciklusa (ostaje ispod vašeg najkraćeg razmaka između dva uzastopna pokretanja, koji iznosi {ceiling}s).",
|
||||||
"min_power": "40 % najniže radne snage p05 ({p05}W) kroz {cycles} čistih ciklusa, čime prag isključenja ostaje ispod stvarne potrošnje.{excl}",
|
"min_power": "40 % najniže radne snage p05 ({p05}W) kroz {cycles} čistih ciklusa, čime prag isključenja ostaje ispod stvarne potrošnje.{excl}",
|
||||||
"ml_auto_label": "Najniža pouzdanost koju je model kvalitete još ocijenio čistom (p10 od {cycles} čistih ciklusa = {p10}).",
|
"ml_auto_label": "Najniža pouzdanost koju je model kvalitete još ocijenio čistom (p10 od {cycles} čistih ciklusa = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciklusa ({pct}%) imalo je pauzu koju je detektor kraja ocijenio s >50 %; zatraži {val} potvrdu/potvrde kraja.",
|
"ml_end_repeat": "{false}/{total} ciklusa ({pct}%) imalo je pauzu koju je detektor kraja ocijenio s >50 %; zatraži {val} potvrdu/potvrde kraja.",
|
||||||
@@ -1608,7 +1725,7 @@
|
|||||||
"thr_batch": "Zadržano tik iznad najniže radne snage p05 kroz {cycles} ciklusa ({p05}W) kako bi se početak uhvatio što ranije, a prag zaustavljanja ostao ispod najniže radne snage stroja.",
|
"thr_batch": "Zadržano tik iznad najniže radne snage p05 kroz {cycles} ciklusa ({p05}W) kako bi se početak uhvatio što ranije, a prag zaustavljanja ostao ispod najniže radne snage stroja.",
|
||||||
"tol_per_profile": "p75 varijance trajanja po profilu kroz {profiles} profila ({cycles} ciklusa); dosljedni profili nisu kažnjeni.",
|
"tol_per_profile": "p75 varijance trajanja po profilu kroz {profiles} profila ({cycles} ciklusa); dosljedni profili nisu kažnjeni.",
|
||||||
"tol_pooled": "Na temelju objedinjene varijance trajanja {cycles} novijih označenih ciklusa (p95 odstupanje={dev}).",
|
"tol_pooled": "Na temelju objedinjene varijance trajanja {cycles} novijih označenih ciklusa (p95 odstupanje={dev}).",
|
||||||
"watchdog": "Zadržano što nižim uz sigurnost (3x razmak ažuriranja p95 od {p95}s, najmanje 30s) kako bi se zastoji brzo uhvatili bez lažnih zaustavljanja."
|
"watchdog": "Zadržano što nižim uz sigurnost (tik iznad razmaka ažuriranja p95 od {p95}s, najmanje 30s) kako bi se zastoji brzo uhvatili bez lažnih zaustavljanja."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Isključeno {total} pogrešno otkrivenih ciklusa: {parts}.",
|
"summary": "Isključeno {total} pogrešno otkrivenih ciklusa: {parts}.",
|
||||||
@@ -1688,6 +1805,10 @@
|
|||||||
"name_required": "Ime je potrebno",
|
"name_required": "Ime je potrebno",
|
||||||
"no_split_found": "Nisu pronađeni razmaci u praznom hodu za cijepanje",
|
"no_split_found": "Nisu pronađeni razmaci u praznom hodu za cijepanje",
|
||||||
"panel_settings_saved": "Postavke ploče su spremljene",
|
"panel_settings_saved": "Postavke ploče su spremljene",
|
||||||
|
"pg_preset_loaded": "Preset \"{name}\" učitan",
|
||||||
|
"pg_preset_saved": "Preset \"{name}\" spremljen",
|
||||||
|
"pg_sugg_loaded": "Učitano {n} predloženih vrijednosti - pokrenite pješčanik za usporedbu",
|
||||||
|
"pg_sugg_ml_loaded": "Učitano {n} ML-kalibriranih vrijednosti - pokrenite pješčanik za usporedbu",
|
||||||
"phase_name_required": "Potreban je naziv faze",
|
"phase_name_required": "Potreban je naziv faze",
|
||||||
"phase_updated": "Faza ažurirana",
|
"phase_updated": "Faza ažurirana",
|
||||||
"phases_saved": "Faze spremljene",
|
"phases_saved": "Faze spremljene",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Ostalo"
|
"other": "Ostalo"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Perilica posuđa: sekunde tišine nakon očekivanog trajanja prije nego što se otpusti čekanje na završno ispumpavanje vode",
|
||||||
"anti_wrinkle_enabled": "Upij impulse bubnja nakon glavne faze, a ne čitaj ih kao nove cikluse",
|
"anti_wrinkle_enabled": "Upij impulse bubnja nakon glavne faze, a ne čitaj ih kao nove cikluse",
|
||||||
"anti_wrinkle_exit_power": "Snaga mora pasti ispod ove vrijednosti između impulsa da bi anti-bora ostala aktivna",
|
"anti_wrinkle_exit_power": "Snaga mora pasti ispod ove vrijednosti između impulsa da bi anti-bora ostala aktivna",
|
||||||
"anti_wrinkle_idle_timeout": "Dopušteno vrijeme mirovanja između dva impulsa bubnja prije nego što anti-bora završi",
|
"anti_wrinkle_idle_timeout": "Dopušteno vrijeme mirovanja između dva impulsa bubnja prije nego što anti-bora završi",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "perc",
|
||||||
|
"entity_not_found": "Entitás nem található",
|
||||||
|
"running_long": "Sokáig fut",
|
||||||
|
"remaining": "hátralévő",
|
||||||
|
"progress": "haladás",
|
||||||
|
"show_time_remaining": "Hátralévő idő megjelenítése",
|
||||||
|
"show_percentage": "Százalék megjelenítése",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Csempe (kompakt)",
|
||||||
|
"detail": "Részletes (gazdag)",
|
||||||
|
"glance": "Pillantás (több eszköz)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Szüneteltetés",
|
||||||
|
"resume": "Folytatás",
|
||||||
|
"terminate": "Ciklus befejezése",
|
||||||
|
"record_start": "Rögzítés indítása",
|
||||||
|
"record_stop": "Rögzítés leállítása",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "WashData megnyitása"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Elrendezés",
|
||||||
|
"entity": "Készülék entitás",
|
||||||
|
"entities": "Készülékek",
|
||||||
|
"title": "Cím",
|
||||||
|
"icon": "Ikon",
|
||||||
|
"show_state": "Állapot megjelenítése",
|
||||||
|
"show_program": "Program megjelenítése",
|
||||||
|
"show_progress_bar": "Folyamatjelző megjelenítése",
|
||||||
|
"spin_icon": "Ikon forgatása futás közben",
|
||||||
|
"display_mode": "Részletsor",
|
||||||
|
"active_color": "Aktív szín felülbírálása",
|
||||||
|
"show_phase": "Fázis megjelenítése",
|
||||||
|
"show_energy": "Energia és költség megjelenítése",
|
||||||
|
"show_anomaly": "Túlfutás figyelmeztetés megjelenítése",
|
||||||
|
"show_sparkline": "Élő teljesítménygrafikon megjelenítése",
|
||||||
|
"buttons": "Műveleti gombok",
|
||||||
|
"program_entity": "Program entitás (felülbírálás)",
|
||||||
|
"time_entity": "Idő entitás (felülbírálás)",
|
||||||
|
"pct_entity": "Folyamat entitás (felülbírálás)",
|
||||||
|
"power_entity": "Teljesítmény entitás (felülbírálás)",
|
||||||
|
"tap_action": "Koppintás művelet",
|
||||||
|
"hold_action": "Nyomva tartás művelet",
|
||||||
|
"double_tap_action": "Dupla koppintás művelet"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} rendellenesség észlelve (pl. ajtónyitás a ciklus közepén) – nyissa meg, hogy megtekinthesse őket a grafikonon",
|
"artifact_tip": "{n} rendellenesség észlelve (pl. ajtónyitás a ciklus közepén) – nyissa meg, hogy megtekinthesse őket a grafikonon",
|
||||||
"auto": "(automatikusan észlelve)",
|
"auto": "(automatikusan észlelve)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Szüneteltesse a futó ciklust – a készülék onnan folytatja, ahol abbahagyta",
|
"pause_cycle_tip": "Szüneteltesse a futó ciklust – a készülék onnan folytatja, ahol abbahagyta",
|
||||||
"pg_apply_device": "Alkalmazás az eszközre",
|
"pg_apply_device": "Alkalmazás az eszközre",
|
||||||
"pg_autofill": "Automatikus kitöltés",
|
"pg_autofill": "Automatikus kitöltés",
|
||||||
|
"pg_load_calibrated": "Kalibrált (ML) betöltése ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Az ML által kalibrált beállításokat betölti a Homokozó felülírásaiként",
|
||||||
|
"pg_load_live": "Aktív beállítások betöltése",
|
||||||
|
"pg_load_live_tip": "Az integráció jelenlegi beállításainak újraolvasása és a Homokozó összes módosításának elvetése",
|
||||||
|
"pg_load_suggested": "Javaslatok betöltése ({n})",
|
||||||
|
"pg_load_suggested_tip": "Az automatikus hangolóeszköz aktuális javaslatait betölti a Homokozó felülírásaiként",
|
||||||
|
"pg_preset_delete": "Előbeállítás törlése",
|
||||||
|
"pg_preset_load": "Előbeállítás betöltése",
|
||||||
|
"pg_preset_load_tip": "A Homokozó értékeinek lecserélése erre az előbeállításra (az aktív beállítások változatlanok maradnak)",
|
||||||
|
"pg_preset_save": "Mentés előbeállításként",
|
||||||
|
"pg_preset_save_tip": "Az alábbi összes érték mentése névvel ellátott előbeállításként ehhez az eszközhöz",
|
||||||
|
"pg_publish_all": "Mentés a beállításokba ({n})",
|
||||||
|
"pg_publish_one": "A(z) \"{label}\" mentése az integráció beállításaiba",
|
||||||
"play": "Lejátszás",
|
"play": "Lejátszás",
|
||||||
"process": "Feldolgozás",
|
"process": "Feldolgozás",
|
||||||
"process_history": "Feldolgozás most",
|
"process_history": "Feldolgozás most",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Export letöltése",
|
"download_export": "Export letöltése",
|
||||||
"analyze_import": "Fájl elemzése",
|
"analyze_import": "Fájl elemzése",
|
||||||
"import_selected": "Kiválasztottak importálása",
|
"import_selected": "Kiválasztottak importálása",
|
||||||
"back": "Vissza"
|
"back": "Vissza",
|
||||||
|
"mute_suggestion": "Ne javasolja többé ezt a beállítást",
|
||||||
|
"reset_muted": "Elhallgatottak visszaállítása"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Egyelőre egyetlen automatika sem utal erre az eszközre.",
|
"no_automations": "Egyelőre egyetlen automatika sem utal erre az eszközre.",
|
||||||
"panel_settings": "Panelbeállítások",
|
"panel_settings": "Panelbeállítások",
|
||||||
"param_sweep": "Paraméterpásztázás",
|
"param_sweep": "Paraméterpásztázás",
|
||||||
|
"pg_settings_source": "Beállítások forrása",
|
||||||
"phase_catalog": "Fázis katalógus",
|
"phase_catalog": "Fázis katalógus",
|
||||||
"playground": "Homokozó",
|
"playground": "Homokozó",
|
||||||
"process_history": "Folyamattörténet",
|
"process_history": "Folyamattörténet",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "Egyezési pontszám",
|
"pg_match_score": "Egyezési pontszám",
|
||||||
"pg_pct_of": "{total} {p}%-a",
|
"pg_pct_of": "{total} {p}%-a",
|
||||||
"pg_poor_match": "Rossz egyezés",
|
"pg_poor_match": "Rossz egyezés",
|
||||||
|
"pg_preset": "Homokozó előbeállítás",
|
||||||
|
"pg_preset_name": "Új előbeállítás neve",
|
||||||
|
"pg_preset_none": "Válasszon előbeállítást…",
|
||||||
"pg_strong_match": "Erős egyezés",
|
"pg_strong_match": "Erős egyezés",
|
||||||
"pg_tile_ambiguous": "Kétértelmű",
|
"pg_tile_ambiguous": "Kétértelmű",
|
||||||
"pg_tile_ambiguous_tip": "Ciklusok, ahol két program szinte holtversenyben van",
|
"pg_tile_ambiguous_tip": "Ciklusok, ahol két program szinte holtversenyben van",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Névütközések",
|
"conflict_resolution": "Névütközések",
|
||||||
"conflict_import_copy": "Importálás másolatként",
|
"conflict_import_copy": "Importálás másolatként",
|
||||||
"conflict_keep_mine": "A sajátom megtartása",
|
"conflict_keep_mine": "A sajátom megtartása",
|
||||||
"conflict_overwrite": "Felülírás"
|
"conflict_overwrite": "Felülírás",
|
||||||
|
"font_size": "Panel betűmérete"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Minden szinten",
|
"all_levels": "Minden szinten",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Alkalmazza a legjobb értéket: {label} = {value}?",
|
"pg_apply_confirm": "Alkalmazza a legjobb értéket: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Válasszon fent egy ciklust, majd nyomja meg a Betöltés gombot a teljesítménygörbéjének megtekintéséhez.",
|
"pg_canvas_empty": "Válasszon fent egy ciklust, majd nyomja meg a Betöltés gombot a teljesítménygörbéjének megtekintéséhez.",
|
||||||
"pg_chart_caption": "Érzékelési/egyezési arány a {param} értékei szerint",
|
"pg_chart_caption": "Érzékelési/egyezési arány a {param} értékei szerint",
|
||||||
|
"pg_ctrl_intro": "Az értékek az eszköz aktív integrációs beállításaiból indulnak. A módosítások a Homokozóban maradnak, amíg el nem menti őket a beállításokba.",
|
||||||
|
"pg_live_unavailable": "Az aktív beállítások nem érhetők el, az alapértelmezett értékek láthatók.",
|
||||||
|
"pg_load_live_confirm": "Elveti a Homokozó módosításait ({n}), és újratölti az integráció jelenlegi beállításait?",
|
||||||
"pg_match_rate": "{pct}% egyezési arány {total} cikluson",
|
"pg_match_rate": "{pct}% egyezési arány {total} cikluson",
|
||||||
|
"pg_matches_live": "Megegyezik az aktív beállításokkal",
|
||||||
|
"pg_n_changed": "Eltérés az aktív beállításoktól: {n}",
|
||||||
|
"pg_sugg_none": "Minden javaslat már megfelel a jelenlegi beállításoknak",
|
||||||
|
"pg_preset_delete_confirm": "Törli a(z) \"{name}\" előbeállítást?",
|
||||||
|
"pg_preset_limit": "Elérte az előbeállítások korlátját ({n})",
|
||||||
|
"pg_preset_overwrite": "Felülírja a(z) \"{name}\" előbeállítást?",
|
||||||
|
"pg_publish_one_confirm": "Elmenti a(z) {label} = {value} értéket az eszköz beállításaiba?",
|
||||||
"pg_restart_note": "Indítsa újra a Home Assistantot a szimulációs eszközök engedélyezéséhez.",
|
"pg_restart_note": "Indítsa újra a Home Assistantot a szimulációs eszközök engedélyezéséhez.",
|
||||||
"pg_sim_progress": "{done} / {total} ciklus",
|
"pg_sim_progress": "{done} / {total} ciklus",
|
||||||
"pg_starting": "Indítás…",
|
"pg_starting": "Indítás…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Az időtartam egyre rövidebb ({pct}%/ciklus) – legutóbbi átlag: {avg}",
|
"trend_duration_shorter": "Az időtartam egyre rövidebb ({pct}%/ciklus) – legutóbbi átlag: {avg}",
|
||||||
"trend_energy_down": "Az energia csökkenő tendenciája ({pct}%/ciklus)",
|
"trend_energy_down": "Az energia csökkenő tendenciája ({pct}%/ciklus)",
|
||||||
"trend_energy_up": "Emelkedő energiatrend ({pct}%/ciklus) – legutóbbi átlag {avg}",
|
"trend_energy_up": "Emelkedő energiatrend ({pct}%/ciklus) – legutóbbi átlag {avg}",
|
||||||
|
"trim_destructive_confirm": "Ez a ciklusnak csak {pct}%-át tartja meg, és nem vonható vissza. Folytatja?",
|
||||||
"trim_intro": "Húzza el a piros fogantyúkat, vagy írjon be értékeket. Az ablakon kívül mindent eltávolítanak.",
|
"trim_intro": "Húzza el a piros fogantyúkat, vagy írjon be értékeket. Az ablakon kívül mindent eltávolítanak.",
|
||||||
"tuning_suggestions_available": "{count} hangolási javaslat érhető el a megfigyelt ciklusokból. A megfelelő mezők mellett jelennek meg.",
|
"tuning_suggestions_available": "{count} hangolási javaslat érhető el a megfigyelt ciklusokból. A megfelelő mezők mellett jelennek meg.",
|
||||||
"unsure_detected_prefix": "A WashData nem biztos abban, hogy észlelte",
|
"unsure_detected_prefix": "A WashData nem biztos abban, hogy észlelte",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "Az importált elemek hozzáadódnak; semmi helyi adat nem vész el. A névütközéseket alább oldhatod fel.",
|
"merge_hint": "Az importált elemek hozzáadódnak; semmi helyi adat nem vész el. A névütközéseket alább oldhatod fel.",
|
||||||
"replace_warn": "Minden bejelölt kategória törlődik, és a fájlból cserélődik le. A be nem jelölt kategóriák érintetlenül maradnak.",
|
"replace_warn": "Minden bejelölt kategória törlődik, és a fájlból cserélődik le. A be nem jelölt kategóriák érintetlenül maradnak.",
|
||||||
"dest_reference_hint": "Az importált ciklusok csak a programfelismerést javítják, és soha nem befolyásolják a használati/energia-statisztikákat.",
|
"dest_reference_hint": "Az importált ciklusok csak a programfelismerést javítják, és soha nem befolyásolják a használati/energia-statisztikákat.",
|
||||||
"dest_real_history_hint": "Az importált ciklusok ennek a készüléknek a saját előzményeiként számítanak, és az energia-/használati statisztikákat táplálják. Egy készülék új telepítésre költöztetéséhez használd."
|
"dest_real_history_hint": "Az importált ciklusok ennek a készüléknek a saját előzményeiként számítanak, és az energia-/használati statisztikákat táplálják. Egy készülék új telepítésre költöztetéséhez használd.",
|
||||||
|
"sug_muted": "Ezt a beállítást nem javasolja többé",
|
||||||
|
"sug_mute_failed": "Nem sikerült elhallgattatni a javaslatot",
|
||||||
|
"sug_unmuted_all": "Az elhallgattatott javaslatok visszaállítva",
|
||||||
|
"n_suggestions_muted": "{count} elhallgattatva; az automatikus finomhangolás nem fogja javasolni ezeket.",
|
||||||
|
"font_size_hint": "Tegye nagyobbá vagy kisebbé mindent a panelen. Az ezen az eszközön lévő fiókjára vonatkozik."
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Alkalmankénti rövid bukdácsolás a befejezés után a ráncok csökkentése érdekében.",
|
"anti_crease": "Alkalmankénti rövid bukdácsolás a befejezés után a ráncok csökkentése érdekében.",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Használhatatlan"
|
"unusable": "Használhatatlan"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Mosogatógép",
|
||||||
|
"intro": "A ciklus végének kezelése mosogatógépekhez, amelyek jellemzően egy hosszú, szinte néma szárítási fázissal fejeződnek be egy rövid végső vízleeresztés előtt."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "A ránctalanító/gyűrőtlenítő mód alacsony teljesítményű dobpulzusokat érzékel a főfázis után, és a befejezett ciklushoz csatolja őket.",
|
"intro": "A ránctalanító/gyűrőtlenítő mód alacsony teljesítményű dobpulzusokat érzékel a főfázis után, és a befejezett ciklushoz csatolja őket.",
|
||||||
"label": "Ránctalanítás"
|
"label": "Ránctalanítás"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Passzív szárítás csendes feloldása",
|
||||||
|
"doc": "Miután a ciklus túllépi a várható időtartamát, mennyi ideig kell a mosogatógépnek csendben maradnia (a Leállítási küszöb alatt), mielőtt a WashData abbahagyja a végső vízleeresztésre való várakozást és befejezi a ciklust. Növelje, ha a gépének hosszú, néma szárítási fázisa van egy késői végső vízleeresztés előtt, amely kimarad - a szélesebb ablak lehetővé teszi, hogy a megtanult időtartam kövesse a szezonális eltolódást (hidegebb bevezetett víz = hosszabb ciklusok), ahelyett hogy a régi átlaghoz rögzülne. Csak lerövidítheti a várakozást a belső 30 perces végső-csúcs korláthoz képest, soha nem hosszabbítja meg."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Ismerje fel a szárítógép által a fő fűtési fázis után kibocsátott rövid, kis teljesítményű szárítópulzusokat, és tartsa őket a kész ciklushoz kapcsolva, ahelyett, hogy új ciklusként olvasná őket.",
|
"doc": "Ismerje fel a szárítógép által a fő fűtési fázis után kibocsátott rövid, kis teljesítményű szárítópulzusokat, és tartsa őket a kész ciklushoz kapcsolva, ahelyett, hogy új ciklusként olvasná őket.",
|
||||||
"label": "Ránctalanítás érzékelés engedélyezése"
|
"label": "Ránctalanítás érzékelés engedélyezése"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Percekkel a ciklus lejárta után, mielőtt elküldené a még mindig várakozó \"üresd ki a gépet\" emlékeztetőt. Állítsa be a 0-t az emlékeztető letiltásához.",
|
"doc": "Percekkel a ciklus lejárta után, mielőtt elküldené a még mindig várakozó \"üresd ki a gépet\" emlékeztetőt. Állítsa be a 0-t az emlékeztető letiltásához.",
|
||||||
"label": "Kirakodási emlékeztető késleltetése"
|
"label": "Kirakodási emlékeztető késleltetése"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Újraküldi a kirakodási emlékeztetőt \"Kirakodási emlékeztető késleltetése\" percenként, amíg ki nem nyitja az ajtót, vagy meg nem érinti az \"Emlékeztetés leállítása\" gombot az értesítésen. Ajtóérzékelő entitást igényel (ahogyan maga az emlékeztető is). Az elvetés gomb a Home Assistant kísérőalkalmazás (mobil) értesítésein működik.",
|
||||||
|
"label": "Ismétlés az ajtó kinyitásáig"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Várakozási idő a teljesítmény csökkenése után, mielőtt befejezettnek nyilvánítaná a ciklust. Ha az áramellátás ezen az ablakon belül folytatódik, a ciklus zökkenőmentesen folytatódik – ez áthidalja a szüneteket a mosási fázisok között. A mosogatógépek hosszú szárítási fázisokkal rendelkeznek (20-60 percre kikapcsolva), így a kikapcsolási késleltetésnek meg kell haladnia ezt, hogy az egész mosás+szárítás egy ciklusban maradjon.",
|
"doc": "Várakozási idő a teljesítmény csökkenése után, mielőtt befejezettnek nyilvánítaná a ciklust. Ha az áramellátás ezen az ablakon belül folytatódik, a ciklus zökkenőmentesen folytatódik – ez áthidalja a szüneteket a mosási fázisok között. A mosogatógépek hosszú szárítási fázisokkal rendelkeznek (20-60 percre kikapcsolva), így a kikapcsolási késleltetésnek meg kell haladnia ezt, hogy az egész mosás+szárítás egy ciklusban maradjon.",
|
||||||
"label": "Kikapcsolási késleltetés"
|
"label": "Kikapcsolási késleltetés"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energia Élesség",
|
"label": "Energia Élesség",
|
||||||
"doc": "A 4. szakasz energia-egyezési büntetésének élessége. Kisebb = szigorúbb: egy energia-eltérés jobban büntet. Az alapértelmezett 0.25 szándékosan megengedőbb az Időtartam Élességénél, mivel az energia változik a terheléssel. Párosítsa az Energia Súlyával."
|
"doc": "A 4. szakasz energia-egyezési büntetésének élessége. Kisebb = szigorúbb: egy energia-eltérés jobban büntet. Az alapértelmezett 0.25 szándékosan megengedőbb az Időtartam Élességénél, mivel az energia változik a terheléssel. Párosítsa az Energia Súlyával."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Teljesítményprofil-intervallum",
|
||||||
|
"doc": "A profilonkénti power_profile szenzorattribútum vödörmérete (az EMHASS és tibber_prices, illetve egyéb külső tervezők által felhasznált időköz-alapú átlagos vatt-tömb). A kisebb vödrök megőrzik a rövid teljesítménycsúcsokat; a nagyobbak simítják az alakot. Alapértelmezés: 15 perc. Csak olvasáskor; a felismerést nem befolyásolja."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Élő értesítés megtartása koppintás után",
|
||||||
|
"doc": "Csak Android esetén. Az élő folyamatértesítést tartóssá teszi (ragadóssá), hogy rákoppintva ne zárja be a folyamatban lévő szálat. Kikapcsolt állapotban az alapértelmezett viselkedés érvényes, ahol a koppintás elveti az értesítést."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Élő értesítés koppintási célhelye",
|
||||||
|
"doc": "Csak Android esetén. Az alkalmazás kezdőlapja helyett hová nyílik meg az élő folyamatértesítésre való koppintás (pl. /lovelace/laundry, vagy egy teljes URL). Az alapértelmezetthez hagyja üresen."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Az ajtó automatikusan kinyílik a végén",
|
||||||
|
"doc": "Olyan mosogatógépekhez, amelyek a ciklus végén kinyitják az ajtót szárítás céljából (AirDry és hasonlók). Ha ez be van kapcsolva, a futó ciklus közbeni ajtónyitás nem szünetelteti azt véglegesen; ehelyett ha az ajtó az alábbi időtartam erejéig nyitva marad, a WashData a ciklust befejezettnek tekinti. A rövid nyitás (tárgy betöltése) figyelmen kívül marad. Ajtóérzékelő entitás szükséges."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Ajtó-nyitásvégi várakozási idő",
|
||||||
|
"doc": "Mennyi ideig kell nyitva maradnia az ajtónak, mielőtt a WashData befejezi a ciklust, amikor az \"Ajtó automatikusan kinyílik a végén\" be van kapcsolva. Elég hosszú ahhoz, hogy figyelmen kívül hagyja a gyors edény betöltését (alapértelmezés: 60 s), elég rövid ahhoz, hogy gyorsan befejezzen, miután a gép kinyitja az ajtót."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Név szükséges",
|
"name_required": "Név szükséges",
|
||||||
"no_split_found": "Nem találtunk üresjárati hézagot, amelyen fel lehetne osztani",
|
"no_split_found": "Nem találtunk üresjárati hézagot, amelyen fel lehetne osztani",
|
||||||
"panel_settings_saved": "A panel beállításai mentve",
|
"panel_settings_saved": "A panel beállításai mentve",
|
||||||
|
"pg_preset_loaded": "A(z) \"{name}\" előbeállítás betöltve",
|
||||||
|
"pg_preset_saved": "A(z) \"{name}\" előbeállítás elmentve",
|
||||||
|
"pg_sugg_loaded": "{n} javasolt érték betöltve - futtassa a Homokozót az összehasonlításhoz",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML által kalibrált érték betöltve - futtassa a Homokozót az összehasonlításhoz",
|
||||||
"phase_name_required": "A fázisnév megadása kötelező",
|
"phase_name_required": "A fázisnév megadása kötelező",
|
||||||
"phase_updated": "Fázis frissítve",
|
"phase_updated": "Fázis frissítve",
|
||||||
"phases_saved": "Fázisok mentve",
|
"phases_saved": "Fázisok mentve",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "Az utolsó ciklusban megfigyelt legkisebb aktív teljesítmény ({min}W) alapján.",
|
"min_active": "Az utolsó ciklusban megfigyelt legkisebb aktív teljesítmény ({min}W) alapján.",
|
||||||
"min_duration_ratio": "A lehető legalacsonyabbra állítva, hogy a program a ciklus elején felismerhető legyen; a megbízhatósági és bizonytalansági küszöbök megakadályozzák a korai megerősítést.",
|
"min_duration_ratio": "A lehető legalacsonyabbra állítva, hogy a program a ciklus elején felismerhető legyen; a megbízhatósági és bizonytalansági küszöbök megakadályozzák a korai megerősítést.",
|
||||||
"min_off_gap": "{gaps} megfigyelt ciklusközi szünet alapján (p05={p05}s). Készülék alsó korlátja: {floor}s.",
|
"min_off_gap": "{gaps} megfigyelt ciklusközi szünet alapján (p05={p05}s). Készülék alsó korlátja: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Úgy méretezve, hogy áthidalja a cikluson belüli leghosszabb csendes szakaszt: {span}s + 60s ráhagyás, {spans} áthidalt szünetből {cycles} tiszta cikluson át ({ceiling}s alatt marad, ami a két egymást követő indítás között hagyott legrövidebb szüneted).",
|
||||||
"min_power": "A(z) {cycles} tiszta ciklus p05 legkisebb aktív teljesítményének ({p05}W) 40%-a, hogy a kikapcsolási küszöb a valós fogyasztás alatt maradjon.{excl}",
|
"min_power": "A(z) {cycles} tiszta ciklus p05 legkisebb aktív teljesítményének ({p05}W) 40%-a, hogy a kikapcsolási küszöb a valós fogyasztás alatt maradjon.{excl}",
|
||||||
"ml_auto_label": "A legalacsonyabb megbízhatóság, amelyet a minőségi modell még tisztának minősített (a(z) {cycles} tiszta ciklus p10 értéke = {p10}).",
|
"ml_auto_label": "A legalacsonyabb megbízhatóság, amelyet a minőségi modell még tisztának minősített (a(z) {cycles} tiszta ciklus p10 értéke = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciklusban ({pct}%) volt olyan szünet, amelyet a végérzékelő >50%-ra értékelt; {val} végmegerősítés szükséges.",
|
"ml_end_repeat": "{false}/{total} ciklusban ({pct}%) volt olyan szünet, amelyet a végérzékelő >50%-ra értékelt; {val} végmegerősítés szükséges.",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Éppen a p05 legkisebb aktív teljesítmény fölött tartva {cycles} cikluson át ({p05}W), hogy az indítás a lehető legkorábban észlelhető legyen, a leállítási küszöb pedig a gép legkisebb üzemi teljesítménye alatt maradjon.",
|
"thr_batch": "Éppen a p05 legkisebb aktív teljesítmény fölött tartva {cycles} cikluson át ({p05}W), hogy az indítás a lehető legkorábban észlelhető legyen, a leállítási küszöb pedig a gép legkisebb üzemi teljesítménye alatt maradjon.",
|
||||||
"tol_per_profile": "A profilonkénti időtartam-szórás p75 értéke {profiles} profilon át ({cycles} ciklus); a stabil profilok nem kapnak büntetést.",
|
"tol_per_profile": "A profilonkénti időtartam-szórás p75 értéke {profiles} profilon át ({cycles} ciklus); a stabil profilok nem kapnak büntetést.",
|
||||||
"tol_pooled": "{cycles} legutóbbi címkézett ciklus összevont időtartam-szórása alapján (p95 szórás={dev}).",
|
"tol_pooled": "{cycles} legutóbbi címkézett ciklus összevont időtartam-szórása alapján (p95 szórás={dev}).",
|
||||||
"watchdog": "A biztonságosan lehető legalacsonyabbra állítva (a p95 frissítési szünet 3-szorosa, {p95}s, min. 30s), hogy az elakadások gyorsan észlelhetők legyenek téves leállítások nélkül."
|
"watchdog": "A biztonságosan lehető legalacsonyabbra állítva (épp a p95 frissítési szünet, azaz {p95}s felett, min. 30s), hogy az elakadások gyorsan észlelhetők legyenek téves leállítások nélkül."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "{total} tévesen észlelt ciklus kizárva: {parts}.",
|
"summary": "{total} tévesen észlelt ciklus kizárva: {parts}.",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Egyéb"
|
"other": "Egyéb"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Mosogatógép: csendes másodpercek a várható időtartam után, mielőtt a ciklus végi leeresztésre való várakozás feloldódik",
|
||||||
"anti_wrinkle_enabled": "Nyelje el a fő fázis utáni szárítópulzusokat, ahelyett hogy új ciklusként olvasná őket",
|
"anti_wrinkle_enabled": "Nyelje el a fő fázis utáni szárítópulzusokat, ahelyett hogy új ciklusként olvasná őket",
|
||||||
"anti_wrinkle_exit_power": "A ránctalanítás aktívan tartásához a teljesítménynek az impulzusok között ez alá kell csökkennie",
|
"anti_wrinkle_exit_power": "A ránctalanítás aktívan tartásához a teljesítménynek az impulzusok között ez alá kell csökkennie",
|
||||||
"anti_wrinkle_idle_timeout": "Két szárítópulzus között engedélyezett csendes idő, mielőtt a ránctalanítás véget ér",
|
"anti_wrinkle_idle_timeout": "Két szárítópulzus között engedélyezett csendes idő, mielőtt a ránctalanítás véget ér",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "mín.",
|
||||||
|
"entity_not_found": "Eining fannst ekki",
|
||||||
|
"running_long": "Keyrir lengur",
|
||||||
|
"remaining": "eftir",
|
||||||
|
"progress": "framvinda",
|
||||||
|
"show_time_remaining": "Sýna tíma sem eftir er",
|
||||||
|
"show_percentage": "Sýna prósentu",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Reitur (þjappað)",
|
||||||
|
"detail": "Nánar (ítarlegt)",
|
||||||
|
"glance": "Yfirlit (mörg tæki)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Gera hlé",
|
||||||
|
"resume": "Halda áfram",
|
||||||
|
"terminate": "Ljúka lotu",
|
||||||
|
"record_start": "Hefja upptöku",
|
||||||
|
"record_stop": "Stöðva upptöku",
|
||||||
|
"program": "Prógramm",
|
||||||
|
"open_panel": "Opna WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Útlit",
|
||||||
|
"entity": "Tækjaeining",
|
||||||
|
"entities": "Tæki",
|
||||||
|
"title": "Titill",
|
||||||
|
"icon": "Tákn",
|
||||||
|
"show_state": "Sýna stöðu",
|
||||||
|
"show_program": "Sýna prógramm",
|
||||||
|
"show_progress_bar": "Sýna framvindustiku",
|
||||||
|
"spin_icon": "Snúa tákni meðan á keyrslu stendur",
|
||||||
|
"display_mode": "Upplýsingalína",
|
||||||
|
"active_color": "Hnekkja virkum lit",
|
||||||
|
"show_phase": "Sýna fasa",
|
||||||
|
"show_energy": "Sýna orku og kostnað",
|
||||||
|
"show_anomaly": "Sýna viðvörun um langa keyrslu",
|
||||||
|
"show_sparkline": "Sýna rauntíma aflgraf",
|
||||||
|
"buttons": "Aðgerðahnappar",
|
||||||
|
"program_entity": "Prógramm-eining (hnekkja)",
|
||||||
|
"time_entity": "Tímaeining (hnekkja)",
|
||||||
|
"pct_entity": "Framvindueining (hnekkja)",
|
||||||
|
"power_entity": "Afleining (hnekkja)",
|
||||||
|
"tap_action": "Bankaðgerð",
|
||||||
|
"hold_action": "Haldaðgerð",
|
||||||
|
"double_tap_action": "Tvíbankaaðgerð"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} frávik fundust (t.d. hurð opnuð í miðjum lotu) – opnaðu til að sjá þau á línuritinu",
|
"artifact_tip": "{n} frávik fundust (t.d. hurð opnuð í miðjum lotu) – opnaðu til að sjá þau á línuritinu",
|
||||||
"auto": "(sjálfvirkt greint)",
|
"auto": "(sjálfvirkt greint)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Gerðu hlé á gengandi lotu – tækið mun halda áfram þar sem það stoppaði",
|
"pause_cycle_tip": "Gerðu hlé á gengandi lotu – tækið mun halda áfram þar sem það stoppaði",
|
||||||
"pg_apply_device": "Beita á tæki",
|
"pg_apply_device": "Beita á tæki",
|
||||||
"pg_autofill": "Fylla sjálfkrafa",
|
"pg_autofill": "Fylla sjálfkrafa",
|
||||||
|
"pg_load_calibrated": "Hlaða kvarðaðar (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Flytur ML-kvarðaðar stillingar sem hnekki á tilraunasvæðið",
|
||||||
|
"pg_load_live": "Sækja virkar stillingar",
|
||||||
|
"pg_load_live_tip": "Lesa núverandi stillingar samþættingarinnar aftur og henda öllum breytingum á tilraunasvæðinu",
|
||||||
|
"pg_load_suggested": "Hlaða tillögur ({n})",
|
||||||
|
"pg_load_suggested_tip": "Flytur núverandi tillögur sjálfvirkrar stillingar sem hnekki á tilraunasvæðið",
|
||||||
|
"pg_preset_delete": "Eyða forstillingu",
|
||||||
|
"pg_preset_load": "Hlaða forstillingu",
|
||||||
|
"pg_preset_load_tip": "Skipta gildunum á tilraunasvæðinu út fyrir þessa forstillingu (virku stillingarnar haldast óbreyttar)",
|
||||||
|
"pg_preset_save": "Vista sem forstillingu",
|
||||||
|
"pg_preset_save_tip": "Vista öll gildin hér að neðan sem nefnda forstillingu fyrir þetta tæki",
|
||||||
|
"pg_publish_all": "Vista {n} í samþættinguna",
|
||||||
|
"pg_publish_one": "Vista {label} í samþættinguna",
|
||||||
"play": "Spila",
|
"play": "Spila",
|
||||||
"process": "Vinna",
|
"process": "Vinna",
|
||||||
"process_history": "Vinnið núna",
|
"process_history": "Vinnið núna",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Sækja útflutning",
|
"download_export": "Sækja útflutning",
|
||||||
"analyze_import": "Greina skrá",
|
"analyze_import": "Greina skrá",
|
||||||
"import_selected": "Flytja inn valið",
|
"import_selected": "Flytja inn valið",
|
||||||
"back": "Til baka"
|
"back": "Til baka",
|
||||||
|
"mute_suggestion": "Hætta að stinga upp á þessari stillingu",
|
||||||
|
"reset_muted": "Endurstilla þaggaðar tillögur"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,8 +338,9 @@
|
|||||||
"no_automations": "Engar sjálfvirkni vísar til þessa tækis ennþá.",
|
"no_automations": "Engar sjálfvirkni vísar til þessa tækis ennþá.",
|
||||||
"panel_settings": "Pallborðsstillingar",
|
"panel_settings": "Pallborðsstillingar",
|
||||||
"param_sweep": "Færibreytuyfirferð",
|
"param_sweep": "Færibreytuyfirferð",
|
||||||
|
"pg_settings_source": "Uppruni stillinga",
|
||||||
"phase_catalog": "Áfangaskrá",
|
"phase_catalog": "Áfangaskrá",
|
||||||
"playground": "Leikvöllur",
|
"playground": "Tilraunasvæði",
|
||||||
"process_history": "Ferlissaga",
|
"process_history": "Ferlissaga",
|
||||||
"settings_history": "Stillingasaga",
|
"settings_history": "Stillingasaga",
|
||||||
"status": "Staða",
|
"status": "Staða",
|
||||||
@@ -410,6 +474,9 @@
|
|||||||
"pg_group_detection": "Skynjunarkveikjur",
|
"pg_group_detection": "Skynjunarkveikjur",
|
||||||
"pg_group_timing": "Tímasetningarreglur",
|
"pg_group_timing": "Tímasetningarreglur",
|
||||||
"pg_idle": "Aðgerðalaus",
|
"pg_idle": "Aðgerðalaus",
|
||||||
|
"pg_preset": "Forstilling tilraunasvæðis",
|
||||||
|
"pg_preset_name": "Nafn á nýrri forstillingu",
|
||||||
|
"pg_preset_none": "Veldu forstillingu…",
|
||||||
"pg_stress_group": "Próf á aðgerðalausum lokum",
|
"pg_stress_group": "Próf á aðgerðalausum lokum",
|
||||||
"pg_stress_idle_auto": "Auto",
|
"pg_stress_idle_auto": "Auto",
|
||||||
"pg_stress_idle_w": "Aðgerðalaust stig (W)",
|
"pg_stress_idle_w": "Aðgerðalaust stig (W)",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_import_copy": "Flytja inn sem afrit",
|
"conflict_import_copy": "Flytja inn sem afrit",
|
||||||
"conflict_keep_mine": "Halda mínum",
|
"conflict_keep_mine": "Halda mínum",
|
||||||
"conflict_overwrite": "Skrifa yfir",
|
"conflict_overwrite": "Skrifa yfir",
|
||||||
"pg_anti_wrinkle": "Hrukkuleysi"
|
"pg_anti_wrinkle": "Hrukkuleysi",
|
||||||
|
"font_size": "Leturstærð glugga"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Öll stig",
|
"all_levels": "Öll stig",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Beita besta gildi: {label} = {value}?",
|
"pg_apply_confirm": "Beita besta gildi: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Veldu lotu að ofan og ýttu svo á Hlaða til að sjá aflferil hennar.",
|
"pg_canvas_empty": "Veldu lotu að ofan og ýttu svo á Hlaða til að sjá aflferil hennar.",
|
||||||
"pg_chart_caption": "Greiningar-/samsvörunarhlutfall eftir gildum {param}",
|
"pg_chart_caption": "Greiningar-/samsvörunarhlutfall eftir gildum {param}",
|
||||||
|
"pg_ctrl_intro": "Gildin byrja á virkum stillingum þessa tækis í samþættingunni. Breytingar haldast á tilraunasvæðinu þar til þú vistar þær í samþættinguna.",
|
||||||
|
"pg_live_unavailable": "Virkar stillingar eru ekki tiltækar, sjálfgefin gildi eru sýnd.",
|
||||||
|
"pg_load_live_confirm": "Henda {n} breytingu(m) á tilraunasvæðinu og hlaða núverandi stillingum samþættingarinnar aftur?",
|
||||||
"pg_match_rate": "{pct}% samsvörunarhlutfall á {total} lotum",
|
"pg_match_rate": "{pct}% samsvörunarhlutfall á {total} lotum",
|
||||||
|
"pg_matches_live": "Samsvarar virkum stillingum",
|
||||||
|
"pg_n_changed": "{n} breytt miðað við virkar stillingar",
|
||||||
|
"pg_sugg_none": "Allar tillögur stemma nú þegar við virkar stillingar",
|
||||||
|
"pg_preset_delete_confirm": "Eyða forstillingunni \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Hámarksfjölda forstillinga náð ({n})",
|
||||||
|
"pg_preset_overwrite": "Skrifa yfir forstillinguna \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Vista {label} = {value} í stillingar þessa tækis?",
|
||||||
"pg_restart_note": "Endurræstu Home Assistant til að virkja hermitólin.",
|
"pg_restart_note": "Endurræstu Home Assistant til að virkja hermitólin.",
|
||||||
"pg_sim_progress": "{done} / {total} lotur",
|
"pg_sim_progress": "{done} / {total} lotur",
|
||||||
"pg_starting": "Ræsir…",
|
"pg_starting": "Ræsir…",
|
||||||
@@ -784,8 +862,8 @@
|
|||||||
"pg_verdict_ok": "Ásættanlegt: sumar lotur misstust. Prófaðu að lækka upphafsþröskuldinn.",
|
"pg_verdict_ok": "Ásættanlegt: sumar lotur misstust. Prófaðu að lækka upphafsþröskuldinn.",
|
||||||
"phase_catalog_intro": "Nafngreindir hlutar hringrásar (Forþvottur, Upphitun, Snúning…). Úthlutaðu þeim á prófíl frá stjórnborði þess.",
|
"phase_catalog_intro": "Nafngreindir hlutar hringrásar (Forþvottur, Upphitun, Snúning…). Úthlutaðu þeim á prófíl frá stjórnborði þess.",
|
||||||
"phase_ranges_intro": "Áfangasvið (mínútur frá upphafi lotu) lögð yfir meðalferilinn. Breyttu gildum til að forskoða í beinni.",
|
"phase_ranges_intro": "Áfangasvið (mínútur frá upphafi lotu) lögð yfir meðalferilinn. Breyttu gildum til að forskoða í beinni.",
|
||||||
"playground_intro": "Öruggt leiksvæði til að spila fyrri lotur aftur með mismunandi stillingum, bera saman tvær uppsetningar hlið við hlið og skoða hvernig lota samræmist sniði. Ekkert hér breytir raungögnunum þínum fyrr en þú beitir því sérstaklega.",
|
"playground_intro": "Öruggt tilraunasvæði til að spila fyrri lotur aftur með mismunandi stillingum, bera saman tvær uppsetningar hlið við hlið og skoða hvernig lota samræmist sniði. Ekkert hér breytir raungögnunum þínum fyrr en þú beitir því sérstaklega.",
|
||||||
"playground_needs_restart": "Endurræstu Home Assistant til að virkja Leiksvæðistólin.",
|
"playground_needs_restart": "Endurræstu Home Assistant til að virkja tólin á Tilraunasvæðinu.",
|
||||||
"preferences_admin": "Óskir, pallborð og aðgangsstýring",
|
"preferences_admin": "Óskir, pallborð og aðgangsstýring",
|
||||||
"preferences_adv": "Óskir",
|
"preferences_adv": "Óskir",
|
||||||
"prefs_personal": "Þetta á aðeins við um Home Assistant reikninginn þinn.",
|
"prefs_personal": "Þetta á aðeins við um Home Assistant reikninginn þinn.",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Tímalengd styttist ({pct}%/lotu) – nýleg meðaltal {avg}",
|
"trend_duration_shorter": "Tímalengd styttist ({pct}%/lotu) – nýleg meðaltal {avg}",
|
||||||
"trend_energy_down": "Orka á niðurleið ({pct}%/lotu)",
|
"trend_energy_down": "Orka á niðurleið ({pct}%/lotu)",
|
||||||
"trend_energy_up": "Orka hækkar ({pct}%/lotu) – nýleg meðaltal {avg}",
|
"trend_energy_up": "Orka hækkar ({pct}%/lotu) – nýleg meðaltal {avg}",
|
||||||
|
"trim_destructive_confirm": "Aðeins {pct}% af lotunni verður eftir. Þetta er ekki hægt að afturkalla. Halda áfram?",
|
||||||
"trim_intro": "Dragðu rauðu handföngin eða sláðu inn gildi. Allt fyrir utan gluggann er fjarlægt.",
|
"trim_intro": "Dragðu rauðu handföngin eða sláðu inn gildi. Allt fyrir utan gluggann er fjarlægt.",
|
||||||
"tuning_suggestions_available": "{count} uppástunga að stilla í boði frá athuguðum lotum. Þau birtast við hlið viðkomandi reita.",
|
"tuning_suggestions_available": "{count} uppástunga að stilla í boði frá athuguðum lotum. Þau birtast við hlið viðkomandi reita.",
|
||||||
"unsure_detected_prefix": "WashData er ekki viss um að það hafi fundist",
|
"unsure_detected_prefix": "WashData er ekki viss um að það hafi fundist",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Innfluttum atriðum er bætt við; ekkert staðbundið tapast. Nafnaárekstrar eru leystir hér að neðan.",
|
"merge_hint": "Innfluttum atriðum er bætt við; ekkert staðbundið tapast. Nafnaárekstrar eru leystir hér að neðan.",
|
||||||
"replace_warn": "Hver valinn flokkur er hreinsaður og settur í staðinn úr skránni. Óvaldir flokkar haldast óbreyttir.",
|
"replace_warn": "Hver valinn flokkur er hreinsaður og settur í staðinn úr skránni. Óvaldir flokkar haldast óbreyttir.",
|
||||||
"dest_reference_hint": "Innfluttar lotur bæta aðeins forritasamsvörun og hafa aldrei áhrif á notkunar-/orkutölfræði.",
|
"dest_reference_hint": "Innfluttar lotur bæta aðeins forritasamsvörun og hafa aldrei áhrif á notkunar-/orkutölfræði.",
|
||||||
"dest_real_history_hint": "Innfluttar lotur teljast sem eigin saga þessa tækis og fæða orku-/notkunartölfræði. Notaðu þetta til að flytja eitt tæki yfir í nýja uppsetningu."
|
"dest_real_history_hint": "Innfluttar lotur teljast sem eigin saga þessa tækis og fæða orku-/notkunartölfræði. Notaðu þetta til að flytja eitt tæki yfir í nýja uppsetningu.",
|
||||||
|
"sug_muted": "Mun ekki stinga upp á þessari stillingu aftur",
|
||||||
|
"sug_mute_failed": "Gat ekki þaggað tillögu",
|
||||||
|
"sug_unmuted_all": "Þaggaðar tillögur endurstilltar",
|
||||||
|
"n_suggestions_muted": "{count} þaggaðar; sjálfvirki stillirinn leggur ekki til þessar.",
|
||||||
|
"font_size_hint": "Gerðu allt á þessum glugga stærra eða minna. Gildir fyrir reikning þinn á þessum tæki."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Uppþvottavél: hljóðlátar sekúndur eftir áætlaða lengd áður en biðin eftir útdælingu í lok lotu er losuð",
|
||||||
"completion_min_seconds": "Stysta keyrsla sem telst raunveruleg lota",
|
"completion_min_seconds": "Stysta keyrsla sem telst raunveruleg lota",
|
||||||
"end_repeat_count": "Lágir álestrar í röð áður en lýkur",
|
"end_repeat_count": "Lágir álestrar í röð áður en lýkur",
|
||||||
"interrupted_min_seconds": "Stuttar lotur merktar sem truflaðar",
|
"interrupted_min_seconds": "Stuttar lotur merktar sem truflaðar",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Ónothæft"
|
"unusable": "Ónothæft"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Uppþvottavél",
|
||||||
|
"intro": "Meðhöndlun loka lotu fyrir uppþvottavélar, sem ljúka yfirleitt með löngum, næstum hljóðlátum þurrkfasa á undan stuttri lokaútdælingu."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Hrukkuleysi-/krumpluleys-stilling greinir lágtaktsveltiboð eftir aðalfasann og heldur þeim tengdum við lokinni lotu.",
|
"intro": "Hrukkuleysi-/krumpluleys-stilling greinir lágtaktsveltiboð eftir aðalfasann og heldur þeim tengdum við lokinni lotu.",
|
||||||
"label": "Hrukkuleysi"
|
"label": "Hrukkuleysi"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Losun eftir hljóðláta þurrkun",
|
||||||
|
"doc": "Þegar lotan fer fram úr áætlaðri lengd sinni: hversu lengi uppþvottavélin þarf að vera hljóðlát (undir Stöðvunarþröskuldi) áður en WashData hættir að bíða eftir lokaútdælingu og lýkur lotunni. Hækkaðu gildið ef vélin þín er með langan hljóðlátan þurrkfasa á undan seinni lokaútdælingu sem sleppur fram hjá - breiðari gluggi leyfir lærðu lengdinni að fylgja árstíðabundnum breytingum (kaldara innrennslisvatn = lengri lotur) í stað þess að festast við gamla meðaltalið. Það styttir aðeins biðtímann miðað við innra 30 mínútna hámark fyrir lokatoppinn, lengir hann aldrei."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Viðurkenndu stuttu lág-afls þurrkarapúlsana sem þurrkari gefur frá sér eftir aðalhitafasann og haltu þeim tengdum við lokið lotu í stað þess að lesa þá sem nýjar lotur.",
|
"doc": "Viðurkenndu stuttu lág-afls þurrkarapúlsana sem þurrkari gefur frá sér eftir aðalhitafasann og haltu þeim tengdum við lokið lotu í stað þess að lesa þá sem nýjar lotur.",
|
||||||
"label": "Virkja hrukkuleysi-greiningu"
|
"label": "Virkja hrukkuleysi-greiningu"
|
||||||
@@ -1260,6 +1353,10 @@
|
|||||||
"doc": "Mínútum eftir að lotu lýkur áður en þú sendir áminninguna um „afferma vélina“ sem enn bíður. Stilltu 0 til að slökkva á áminningunni.",
|
"doc": "Mínútum eftir að lotu lýkur áður en þú sendir áminninguna um „afferma vélina“ sem enn bíður. Stilltu 0 til að slökkva á áminningunni.",
|
||||||
"label": "Losunarminni-seinkun"
|
"label": "Losunarminni-seinkun"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Heldur áfram að senda losunaráminninguna aftur á \"Losunarminni-seinkun\" mínútna fresti þar til þú opnar hurðina eða ýtir á \"Hætta að minna\" í tilkynningunni. Krefst Dyraskynjareiningar (áminningin sjálf gerir það). Hunsa-hnappurinn virkar á tilkynningum úr Home Assistant fylgiforritinu (farsíma).",
|
||||||
|
"label": "Endurtaka þar til hurðin opnast"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Tími til að bíða eftir að kraftur minnkar áður en hringrásinni er lokið. Ef straumur fer aftur innan þessa glugga heldur hringrásin óaðfinnanlega áfram - þetta brúar hlé á milli þvottastiga. Uppþvottavélar eru með langa þurrkunarfasa (slökkt á slökkt í 20-60 mín) þannig að slökkvunartöfin verður að fara yfir það til að halda öllum þvotti+þurrkum sem einni lotu.",
|
"doc": "Tími til að bíða eftir að kraftur minnkar áður en hringrásinni er lokið. Ef straumur fer aftur innan þessa glugga heldur hringrásin óaðfinnanlega áfram - þetta brúar hlé á milli þvottastiga. Uppþvottavélar eru með langa þurrkunarfasa (slökkt á slökkt í 20-60 mín) þannig að slökkvunartöfin verður að fara yfir það til að halda öllum þvotti+þurrkum sem einni lotu.",
|
||||||
"label": "Slökkviðráð"
|
"label": "Slökkviðráð"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Orkuskerpa",
|
"label": "Orkuskerpa",
|
||||||
"doc": "Skerpa í viðurlögum Þreps 4 vegna samræmis í orkunotkun. Minna = strangara: frávik í orkunotkun skemmir meira. Sjálfgefið 0,25 er vísvitandi rýmra en keyrslulengdarskerpan vegna þess að orka breytist með álagi. Notaðu með Orkuþyngd."
|
"doc": "Skerpa í viðurlögum Þreps 4 vegna samræmis í orkunotkun. Minna = strangara: frávik í orkunotkun skemmir meira. Sjálfgefið 0,25 er vísvitandi rýmra en keyrslulengdarskerpan vegna þess að orka breytist með álagi. Notaðu með Orkuþyngd."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Aflaprófíl-bil",
|
||||||
|
"doc": "Fötustærð fyrir eigindið power_profile á prófílskynjaraskynjara (flatt fylki meðalwattsgilda á hólf sem notast af ytri skipuleggjendum eins og EMHASS og tibber_prices). Minni fötur halda stuttum aflgöllum skörpum; stærri fötur jafna út ferilinn. Sjálfgefið 15 mín. Eingöngu til birtingar; hefur engin áhrif á greiningu."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Halda lifandi tilkynningu við snertingu",
|
||||||
|
"doc": "Eingöngu Android. Gerir lifandi framvindutilkynningu viðvarandi (sticky) þannig að snertingar lokar henni ekki. Slökkt: sjálfgefin hegðun þar sem snertingar lokar tilkynningu."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Snertimarkmið lifandi tilkynningar",
|
||||||
|
"doc": "Eingöngu Android. Hvert snertingar á lifandi framvindutilkynningu opnar (t.d. /lovelace/laundry eða fulla vefslóð) í stað sjálfgefinna ræsiglugga forritsins. Skildu eftir autt fyrir sjálfgefið."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Hurð opnast sjálfkrafa í lok",
|
||||||
|
"doc": "Fyrir uppþvottavélar sem spretta hurðinni upp í lok hringsins til þurrkunar (AirDry og svipað). Þegar þetta er virkt setur hurðaropnun á yfirstandandi hring hann ekki í bið að eilífu; ef hurðin helst opin í stillt dvaltími meðhöndlar WashData hringinn sem lokinn. Stutt opnun (að bæta við fat) er hundsuð. Krefst hurðarskynjaraeiningar."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Dvaltími hurðar við lok",
|
||||||
|
"doc": "Hversu lengi hurðin þarf að vera opin áður en WashData lýkur hringnum, þegar \"Hurð opnast sjálfkrafa í lok\" er virkt. Nógu lengi til að hunsa hraða tilbúningu fats (sjálfgefið 60 s), nógu stutt til að ljúka fljótt þegar vél spretter hurðinni upp."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1620,6 +1737,7 @@
|
|||||||
"min_active": "Byggt á lægsta virka afli ({min}W) sem mældist í síðustu lotu.",
|
"min_active": "Byggt á lægsta virka afli ({min}W) sem mældist í síðustu lotu.",
|
||||||
"min_duration_ratio": "Haldið eins lágu og hægt er svo að kerfi greinist snemma í lotunni; vissu- og tvíræðnimörkin koma í veg fyrir ótímabærar ákvarðanir.",
|
"min_duration_ratio": "Haldið eins lágu og hægt er svo að kerfi greinist snemma í lotunni; vissu- og tvíræðnimörkin koma í veg fyrir ótímabærar ákvarðanir.",
|
||||||
"min_off_gap": "Byggt á {gaps} mældum millibilum milli lota (p05={p05}s). Lágmark tækis: {floor}s.",
|
"min_off_gap": "Byggt á {gaps} mældum millibilum milli lota (p05={p05}s). Lágmark tækis: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Stærðin valin til að brúa lengsta kyrrðartímabilið innan lotu: {span}s + 60s biðminni, úr {spans} brúuðum bilum yfir {cycles} hreinar lotur (helst undir stysta bilinu þínu, {ceiling}s, milli tveggja keyrslna).",
|
||||||
"min_power": "40% af lægsta virka afli við p05 ({p05}W) yfir {cycles} hreinar lotur, sem heldur slökkviþröskuldinum undir raunverulegri notkun.{excl}",
|
"min_power": "40% af lægsta virka afli við p05 ({p05}W) yfir {cycles} hreinar lotur, sem heldur slökkviþröskuldinum undir raunverulegri notkun.{excl}",
|
||||||
"ml_auto_label": "Lægsta vissa sem gæðalíkanið mat samt sem hreint (p10 af {cycles} hreinum lotum = {p10}).",
|
"ml_auto_label": "Lægsta vissa sem gæðalíkanið mat samt sem hreint (p10 af {cycles} hreinum lotum = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} lotur ({pct}%) höfðu hlé sem lokagreinirinn gaf einkunnina >50%; krefst {val} staðfestinga á lokum.",
|
"ml_end_repeat": "{false}/{total} lotur ({pct}%) höfðu hlé sem lokagreinirinn gaf einkunnina >50%; krefst {val} staðfestinga á lokum.",
|
||||||
@@ -1636,7 +1754,7 @@
|
|||||||
"thr_batch": "Haldið rétt yfir lægsta virka afli við p05 yfir {cycles} lotur ({p05}W) svo að ræsing náist eins snemma og hægt er og stöðvunarþröskuldurinn haldist undir lægsta gangafli vélarinnar.",
|
"thr_batch": "Haldið rétt yfir lægsta virka afli við p05 yfir {cycles} lotur ({p05}W) svo að ræsing náist eins snemma og hægt er og stöðvunarþröskuldurinn haldist undir lægsta gangafli vélarinnar.",
|
||||||
"tol_per_profile": "p75 af dreifni lengdar á hvert snið yfir {profiles} snið ({cycles} lotur); þröngum sniðum er ekki refsað.",
|
"tol_per_profile": "p75 af dreifni lengdar á hvert snið yfir {profiles} snið ({cycles} lotur); þröngum sniðum er ekki refsað.",
|
||||||
"tol_pooled": "Byggt á sameinaðri dreifni lengdar {cycles} nýjustu merktu lota (p95 frávik={dev}).",
|
"tol_pooled": "Byggt á sameinaðri dreifni lengdar {cycles} nýjustu merktu lota (p95 frávik={dev}).",
|
||||||
"watchdog": "Haldið eins lágu og óhætt er (3x p95-uppfærslubilið {p95}s, lágm. 30s) svo að stöðnun greinist fljótt án falskra stöðvana."
|
"watchdog": "Haldið eins lágu og óhætt er (rétt yfir p95-uppfærslubilinu {p95}s, lágm. 30s) svo að stöðnun greinist fljótt án falskra stöðvana."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Útilokaði {total} ranggreindar lotur: {parts}.",
|
"summary": "Útilokaði {total} ranggreindar lotur: {parts}.",
|
||||||
@@ -1670,7 +1788,7 @@
|
|||||||
"subtab_phase_catalog": "Áfangaskrá",
|
"subtab_phase_catalog": "Áfangaskrá",
|
||||||
"subtab_profiles": "Snið",
|
"subtab_profiles": "Snið",
|
||||||
"maintenance": "Viðhald",
|
"maintenance": "Viðhald",
|
||||||
"playground": "Leiksvæði",
|
"playground": "Tilraunasvæði",
|
||||||
"store": "Verslun"
|
"store": "Verslun"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
@@ -1716,6 +1834,10 @@
|
|||||||
"name_required": "Nafn krafist",
|
"name_required": "Nafn krafist",
|
||||||
"no_split_found": "Engar aðgerðalausar eyður fundust til að skipta á",
|
"no_split_found": "Engar aðgerðalausar eyður fundust til að skipta á",
|
||||||
"panel_settings_saved": "Pallborðsstillingar vistaðar",
|
"panel_settings_saved": "Pallborðsstillingar vistaðar",
|
||||||
|
"pg_preset_loaded": "Forstillingin \"{name}\" var hlaðin",
|
||||||
|
"pg_preset_saved": "Forstillingin \"{name}\" var vistuð",
|
||||||
|
"pg_sugg_loaded": "{n} tillögugildi flutt yfir - keyrðu tilraunasvæðið til að bera saman",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-kvarðað gildi flutt yfir - keyrðu tilraunasvæðið til að bera saman",
|
||||||
"phase_name_required": "Fasaheiti er áskilið",
|
"phase_name_required": "Fasaheiti er áskilið",
|
||||||
"phase_updated": "Áfangi uppfærður",
|
"phase_updated": "Áfangi uppfærður",
|
||||||
"phases_saved": "Áfangar vistaðir",
|
"phases_saved": "Áfangar vistaðir",
|
||||||
|
|||||||
@@ -92,6 +92,19 @@
|
|||||||
"pause_cycle_tip": "Metti in pausa il ciclo in corso – l'elettrodomestico riprenderà da dove si era fermato",
|
"pause_cycle_tip": "Metti in pausa il ciclo in corso – l'elettrodomestico riprenderà da dove si era fermato",
|
||||||
"pg_apply_device": "Applica al dispositivo",
|
"pg_apply_device": "Applica al dispositivo",
|
||||||
"pg_autofill": "Compilazione automatica",
|
"pg_autofill": "Compilazione automatica",
|
||||||
|
"pg_load_calibrated": "Carica Calibrato (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Carica le impostazioni calibrate da ML come sostituzioni nel Playground",
|
||||||
|
"pg_load_live": "Carica le impostazioni attive",
|
||||||
|
"pg_load_live_tip": "Rileggi le impostazioni attuali dell'integrazione e scarta tutte le modifiche fatte nel Playground",
|
||||||
|
"pg_load_suggested": "Carica suggerimenti ({n})",
|
||||||
|
"pg_load_suggested_tip": "Carica i suggerimenti attuali dell'ottimizzatore automatico come sostituzioni nel Playground",
|
||||||
|
"pg_preset_delete": "Elimina preimpostazione",
|
||||||
|
"pg_preset_load": "Carica preimpostazione",
|
||||||
|
"pg_preset_load_tip": "Sostituisci i valori del Playground con questa preimpostazione (le impostazioni attive non vengono toccate)",
|
||||||
|
"pg_preset_save": "Salva come preimpostazione",
|
||||||
|
"pg_preset_save_tip": "Salva tutti i valori qui sotto come preimpostazione con nome per questo dispositivo",
|
||||||
|
"pg_publish_all": "Salva {n} impostazioni nell'integrazione",
|
||||||
|
"pg_publish_one": "Salva {label} nell'integrazione",
|
||||||
"play": "Riproduci",
|
"play": "Riproduci",
|
||||||
"process": "Processo",
|
"process": "Processo",
|
||||||
"process_history": "Elabora ora",
|
"process_history": "Elabora ora",
|
||||||
@@ -178,7 +191,9 @@
|
|||||||
"download_export": "Scarica l'esportazione",
|
"download_export": "Scarica l'esportazione",
|
||||||
"analyze_import": "Analizza il file",
|
"analyze_import": "Analizza il file",
|
||||||
"import_selected": "Importa la selezione",
|
"import_selected": "Importa la selezione",
|
||||||
"back": "Indietro"
|
"back": "Indietro",
|
||||||
|
"mute_suggestion": "Non suggerire più questa impostazione",
|
||||||
|
"reset_muted": "Ripristina i silenziati"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +290,7 @@
|
|||||||
"no_automations": "Nessuna automazione fa ancora riferimento a questo dispositivo.",
|
"no_automations": "Nessuna automazione fa ancora riferimento a questo dispositivo.",
|
||||||
"panel_settings": "Impostazioni del pannello",
|
"panel_settings": "Impostazioni del pannello",
|
||||||
"param_sweep": "Scansione parametri",
|
"param_sweep": "Scansione parametri",
|
||||||
|
"pg_settings_source": "Origine delle impostazioni",
|
||||||
"phase_catalog": "Catalogo delle fasi",
|
"phase_catalog": "Catalogo delle fasi",
|
||||||
"playground": "Playground",
|
"playground": "Playground",
|
||||||
"process_history": "Storia del processo",
|
"process_history": "Storia del processo",
|
||||||
@@ -415,6 +431,9 @@
|
|||||||
"pg_match_score": "Punteggio di abbinamento",
|
"pg_match_score": "Punteggio di abbinamento",
|
||||||
"pg_pct_of": "{p}% di {total}",
|
"pg_pct_of": "{p}% di {total}",
|
||||||
"pg_poor_match": "Abbinamento scarso",
|
"pg_poor_match": "Abbinamento scarso",
|
||||||
|
"pg_preset": "Preimpostazione del Playground",
|
||||||
|
"pg_preset_name": "Nome della nuova preimpostazione",
|
||||||
|
"pg_preset_none": "Seleziona una preimpostazione…",
|
||||||
"pg_strong_match": "Abbinamento forte",
|
"pg_strong_match": "Abbinamento forte",
|
||||||
"pg_tile_ambiguous": "Ambiguo",
|
"pg_tile_ambiguous": "Ambiguo",
|
||||||
"pg_tile_ambiguous_tip": "Cicli con un quasi pareggio tra due programmi",
|
"pg_tile_ambiguous_tip": "Cicli con un quasi pareggio tra due programmi",
|
||||||
@@ -609,7 +628,8 @@
|
|||||||
"conflict_resolution": "Conflitti di nome",
|
"conflict_resolution": "Conflitti di nome",
|
||||||
"conflict_import_copy": "Importa come copia",
|
"conflict_import_copy": "Importa come copia",
|
||||||
"conflict_keep_mine": "Mantieni il mio",
|
"conflict_keep_mine": "Mantieni il mio",
|
||||||
"conflict_overwrite": "Sovrascrivi"
|
"conflict_overwrite": "Sovrascrivi",
|
||||||
|
"font_size": "Dimensione testo del pannello"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Tutti i livelli",
|
"all_levels": "Tutti i livelli",
|
||||||
@@ -771,7 +791,17 @@
|
|||||||
"pg_apply_confirm": "Applicare il valore migliore: {label} = {value}?",
|
"pg_apply_confirm": "Applicare il valore migliore: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Seleziona un ciclo qui sopra, quindi premi Carica per vederne la curva di potenza.",
|
"pg_canvas_empty": "Seleziona un ciclo qui sopra, quindi premi Carica per vederne la curva di potenza.",
|
||||||
"pg_chart_caption": "Tasso di rilevamento/abbinamento sui valori di {param}",
|
"pg_chart_caption": "Tasso di rilevamento/abbinamento sui valori di {param}",
|
||||||
|
"pg_ctrl_intro": "I valori partono dalle impostazioni attive di questo dispositivo nell'integrazione. Le modifiche restano nel Playground finché non le salvi nell'integrazione.",
|
||||||
|
"pg_live_unavailable": "Impostazioni attive non disponibili, vengono mostrati i valori predefiniti.",
|
||||||
|
"pg_load_live_confirm": "Scartare {n} modifiche del Playground e ricaricare le impostazioni attuali dell'integrazione?",
|
||||||
"pg_match_rate": "{pct}% di tasso di abbinamento su {total} cicli",
|
"pg_match_rate": "{pct}% di tasso di abbinamento su {total} cicli",
|
||||||
|
"pg_matches_live": "Corrisponde alle impostazioni attive",
|
||||||
|
"pg_n_changed": "{n} valori diversi dalle impostazioni attive",
|
||||||
|
"pg_sugg_none": "Tutti i suggerimenti corrispondono già alle impostazioni attuali",
|
||||||
|
"pg_preset_delete_confirm": "Eliminare la preimpostazione \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Limite di preimpostazioni raggiunto ({n})",
|
||||||
|
"pg_preset_overwrite": "Sovrascrivere la preimpostazione \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Salvare {label} = {value} nelle impostazioni di questo dispositivo?",
|
||||||
"pg_restart_note": "Riavvia Home Assistant per abilitare gli strumenti di simulazione.",
|
"pg_restart_note": "Riavvia Home Assistant per abilitare gli strumenti di simulazione.",
|
||||||
"pg_sim_progress": "{done} / {total} cicli",
|
"pg_sim_progress": "{done} / {total} cicli",
|
||||||
"pg_starting": "Avvio…",
|
"pg_starting": "Avvio…",
|
||||||
@@ -845,6 +875,7 @@
|
|||||||
"trend_duration_shorter": "La durata tendenzialmente è più breve ({pct}%/ciclo) – media recente {avg}",
|
"trend_duration_shorter": "La durata tendenzialmente è più breve ({pct}%/ciclo) – media recente {avg}",
|
||||||
"trend_energy_down": "Energia in diminuzione ({pct}%/ciclo)",
|
"trend_energy_down": "Energia in diminuzione ({pct}%/ciclo)",
|
||||||
"trend_energy_up": "Energia in aumento ({pct}%/ciclo) – media recente {avg}",
|
"trend_energy_up": "Energia in aumento ({pct}%/ciclo) – media recente {avg}",
|
||||||
|
"trim_destructive_confirm": "Questo mantiene solo il {pct}% del ciclo e l'operazione non può essere annullata. Continuare?",
|
||||||
"trim_intro": "Trascina le maniglie rosse o inserisci i valori. Tutto fuori dalla finestra viene rimosso.",
|
"trim_intro": "Trascina le maniglie rosse o inserisci i valori. Tutto fuori dalla finestra viene rimosso.",
|
||||||
"tuning_suggestions_available": "{count} suggerimento di ottimizzazione disponibile dai cicli osservati. Appaiono accanto ai campi pertinenti.",
|
"tuning_suggestions_available": "{count} suggerimento di ottimizzazione disponibile dai cicli osservati. Appaiono accanto ai campi pertinenti.",
|
||||||
"unsure_detected_prefix": "WashData non è sicuro di averlo rilevato",
|
"unsure_detected_prefix": "WashData non è sicuro di averlo rilevato",
|
||||||
@@ -922,9 +953,15 @@
|
|||||||
"merge_hint": "Gli elementi importati vengono aggiunti; nulla di locale va perso. I conflitti di nome si risolvono qui sotto.",
|
"merge_hint": "Gli elementi importati vengono aggiunti; nulla di locale va perso. I conflitti di nome si risolvono qui sotto.",
|
||||||
"replace_warn": "Ogni categoria spuntata viene cancellata e sostituita dal contenuto del file. Le categorie non spuntate restano invariate.",
|
"replace_warn": "Ogni categoria spuntata viene cancellata e sostituita dal contenuto del file. Le categorie non spuntate restano invariate.",
|
||||||
"dest_reference_hint": "I cicli importati migliorano solo il riconoscimento dei programmi e non influiscono mai sulle statistiche di utilizzo/energia.",
|
"dest_reference_hint": "I cicli importati migliorano solo il riconoscimento dei programmi e non influiscono mai sulle statistiche di utilizzo/energia.",
|
||||||
"dest_real_history_hint": "I cicli importati contano come cronologia propria di questo dispositivo e alimentano le statistiche di energia/utilizzo. Da usare per spostare un elettrodomestico su una nuova installazione."
|
"dest_real_history_hint": "I cicli importati contano come cronologia propria di questo dispositivo e alimentano le statistiche di energia/utilizzo. Da usare per spostare un elettrodomestico su una nuova installazione.",
|
||||||
|
"sug_muted": "Non verrà più suggerita questa impostazione",
|
||||||
|
"sug_mute_failed": "Impossibile silenziare il suggerimento",
|
||||||
|
"sug_unmuted_all": "Suggerimenti silenziati ripristinati",
|
||||||
|
"n_suggestions_muted": "{count} silenziati; il sistema di ottimizzazione automatica non proporrà questi.",
|
||||||
|
"font_size_hint": "Rendi tutto in questo pannello più grande o più piccolo. Si applica al tuo account su questo dispositivo."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Lavastoviglie: secondi di silenzio dopo la durata prevista prima che venga rilasciata l'attesa dello scarico di fine ciclo",
|
||||||
"anti_wrinkle_enabled": "Assorbire gli impulsi di rotazione dopo la fase principale invece di leggerli come nuovi cicli",
|
"anti_wrinkle_enabled": "Assorbire gli impulsi di rotazione dopo la fase principale invece di leggerli come nuovi cicli",
|
||||||
"anti_wrinkle_exit_power": "La potenza deve scendere sotto questo valore tra gli impulsi affinché la modalità antirughe resti attiva",
|
"anti_wrinkle_exit_power": "La potenza deve scendere sotto questo valore tra gli impulsi affinché la modalità antirughe resti attiva",
|
||||||
"anti_wrinkle_idle_timeout": "Tempo di silenzio consentito tra due impulsi di rotazione prima che la modalità antirughe termini",
|
"anti_wrinkle_idle_timeout": "Tempo di silenzio consentito tra due impulsi di rotazione prima che la modalità antirughe termini",
|
||||||
@@ -998,6 +1035,10 @@
|
|||||||
"unusable": "Inutilizzabile"
|
"unusable": "Inutilizzabile"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Lavastoviglie",
|
||||||
|
"intro": "Gestione del fine ciclo per le lavastoviglie, che di solito terminano con una lunga fase di asciugatura quasi silenziosa prima di un breve scarico finale."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "La modalità antirughe/antistropicciamento rileva gli impulsi di tumbling a bassa potenza dopo la fase principale e li mantiene collegati al ciclo completato.",
|
"intro": "La modalità antirughe/antistropicciamento rileva gli impulsi di tumbling a bassa potenza dopo la fase principale e li mantiene collegati al ciclo completato.",
|
||||||
"label": "Antirughe"
|
"label": "Antirughe"
|
||||||
@@ -1040,6 +1081,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Rilascio al silenzio dell'asciugatura passiva",
|
||||||
|
"doc": "Una volta che il ciclo supera la sua durata prevista, per quanto tempo la lavastoviglie deve restare silenziosa (sotto la Soglia di arresto) prima che WashData smetta di attendere uno scarico finale e termini il ciclo. Aumentalo se la tua macchina ha una lunga fase di asciugatura silenziosa prima di uno scarico finale tardivo che non viene rilevato - una finestra più ampia consente alla durata appresa di seguire la deriva stagionale (acqua in ingresso più fredda = cicli più lunghi) invece di bloccarsi sulla vecchia media. Riduce soltanto l'attesa rispetto al limite interno di 30 minuti per il picco di fine, senza mai prolungarla."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Riconosci i brevi impulsi di asciugatrice a bassa potenza emessi da un'asciugatrice dopo la fase di riscaldamento principale e mantienili collegati al ciclo finito invece di leggerli come nuovi cicli.",
|
"doc": "Riconosci i brevi impulsi di asciugatrice a bassa potenza emessi da un'asciugatrice dopo la fase di riscaldamento principale e mantienili collegati al ciclo finito invece di leggerli come nuovi cicli.",
|
||||||
"label": "Abilita rilevamento antirughe"
|
"label": "Abilita rilevamento antirughe"
|
||||||
@@ -1260,6 +1305,10 @@
|
|||||||
"doc": "Minuti dopo la fine di un ciclo prima dell'invio del promemoria \"scaricare la macchina\" ancora in attesa. Impostare 0 per disabilitare il promemoria.",
|
"doc": "Minuti dopo la fine di un ciclo prima dell'invio del promemoria \"scaricare la macchina\" ancora in attesa. Impostare 0 per disabilitare il promemoria.",
|
||||||
"label": "Ritardo promemoria scarico"
|
"label": "Ritardo promemoria scarico"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Continua a inviare il promemoria di scarico ogni \"Ritardo promemoria scarico\" minuti finché non apri la porta o tocchi \"Interrompi promemoria\" nella notifica. Richiede un'Entità sensore porta (il promemoria stesso la richiede). Il pulsante di chiusura funziona sulle notifiche dell'app complementare (mobile) di Home Assistant.",
|
||||||
|
"label": "Ripeti finché la porta non si apre"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "È tempo di attendere dopo l'interruzione della corrente prima di dichiarare terminato il ciclo. Se l'alimentazione viene ripristinata entro questo intervallo, il ciclo continua senza interruzioni, consentendo di colmare le pause tra le fasi di lavaggio. Le lavastoviglie hanno fasi di asciugatura lunghe (spegnimento per 20-60 minuti), quindi il ritardo di spegnimento deve superare quello per mantenere l'intero ciclo di lavaggio+asciugatura come un ciclo.",
|
"doc": "È tempo di attendere dopo l'interruzione della corrente prima di dichiarare terminato il ciclo. Se l'alimentazione viene ripristinata entro questo intervallo, il ciclo continua senza interruzioni, consentendo di colmare le pause tra le fasi di lavaggio. Le lavastoviglie hanno fasi di asciugatura lunghe (spegnimento per 20-60 minuti), quindi il ritardo di spegnimento deve superare quello per mantenere l'intero ciclo di lavaggio+asciugatura come un ciclo.",
|
||||||
"label": "Ritardo spegnimento"
|
"label": "Ritardo spegnimento"
|
||||||
@@ -1434,6 +1483,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Nitidezza energia",
|
"label": "Nitidezza energia",
|
||||||
"doc": "Precisione della penalità di concordanza di energia. Minore = più severo: una discordanza di energia penalizza di più. Il predefinito 0,25 è intenzionalmente più indulgente della Precisione di durata, perché l'energia varia con il carico. Combinare con Peso energia."
|
"doc": "Precisione della penalità di concordanza di energia. Minore = più severo: una discordanza di energia penalizza di più. Il predefinito 0,25 è intenzionalmente più indulgente della Precisione di durata, perché l'energia varia con il carico. Combinare con Peso energia."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Intervallo profilo di potenza",
|
||||||
|
"doc": "Dimensione del bucket per l'attributo sensore power_profile per profilo (l'array piatto di watt medi per slot consumato dai pianificatori esterni come EMHASS e tibber_prices). Bucket più piccoli mantengono nitidi i picchi di potenza brevi; bucket più grandi smussano la forma. Predefinito 15 min. Solo in lettura; non influisce sul rilevamento."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Mantieni notifica live al tocco",
|
||||||
|
"doc": "Solo Android. Rende persistente (sticky) la notifica di avanzamento in tempo reale, in modo che toccandola non venga chiusa. Disattivato mantiene il comportamento predefinito in cui il tocco la chiude."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Destinazione tocco notifica live",
|
||||||
|
"doc": "Solo Android. Dove si apre un tocco sulla notifica di avanzamento in tempo reale (ad es. /lovelace/laundry o un URL completo) invece della pagina iniziale dell'app. Lascia vuoto per il valore predefinito."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Porta si apre automaticamente al termine",
|
||||||
|
"doc": "Per le lavastoviglie che aprono automaticamente lo sportello al termine del ciclo per asciugare (AirDry e simili). Con questa opzione attiva, un'apertura dello sportello durante un ciclo non lo mette più in pausa per sempre; invece, se lo sportello rimane aperto per il tempo di attesa indicato sotto, WashData considera il ciclo terminato. Un'apertura breve (per aggiungere un oggetto) viene ignorata. Richiede un'entità sensore della porta."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Attesa apertura porta al termine",
|
||||||
|
"doc": "Per quanto tempo lo sportello deve restare aperto prima che WashData termini il ciclo, quando \"Porta si apre automaticamente al termine\" è attiva. Abbastanza lungo da ignorare l'aggiunta rapida di un piatto (predefinito 60 s), abbastanza breve da terminare prontamente quando la macchina apre lo sportello."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1604,6 +1673,10 @@
|
|||||||
"name_required": "Nome richiesto",
|
"name_required": "Nome richiesto",
|
||||||
"no_split_found": "Non è stato trovato alcun intervallo inattivo su cui dividere",
|
"no_split_found": "Non è stato trovato alcun intervallo inattivo su cui dividere",
|
||||||
"panel_settings_saved": "Impostazioni del pannello salvate",
|
"panel_settings_saved": "Impostazioni del pannello salvate",
|
||||||
|
"pg_preset_loaded": "Preimpostazione \"{name}\" caricata",
|
||||||
|
"pg_preset_saved": "Preimpostazione \"{name}\" salvata",
|
||||||
|
"pg_sugg_loaded": "{n} valore/i suggerito/i caricato/i - avvia il Playground per confrontare",
|
||||||
|
"pg_sugg_ml_loaded": "{n} valore/i calibrato/i ML caricato/i - avvia il Playground per confrontare",
|
||||||
"phase_name_required": "Il nome della fase è obbligatorio",
|
"phase_name_required": "Il nome della fase è obbligatorio",
|
||||||
"phase_updated": "Fase aggiornata",
|
"phase_updated": "Fase aggiornata",
|
||||||
"phases_saved": "Fasi salvate",
|
"phases_saved": "Fasi salvate",
|
||||||
@@ -1751,6 +1824,7 @@
|
|||||||
"min_active": "In base alla potenza attiva minima ({min}W) osservata nell'ultimo ciclo.",
|
"min_active": "In base alla potenza attiva minima ({min}W) osservata nell'ultimo ciclo.",
|
||||||
"min_duration_ratio": "Mantenuto il più basso possibile affinché un programma venga riconosciuto presto nel ciclo; i limiti di confidenza e ambiguità impediscono decisioni premature.",
|
"min_duration_ratio": "Mantenuto il più basso possibile affinché un programma venga riconosciuto presto nel ciclo; i limiti di confidenza e ambiguità impediscono decisioni premature.",
|
||||||
"min_off_gap": "In base a {gaps} intervalli tra cicli osservati (p05={p05}s). Minimo del dispositivo: {floor}s.",
|
"min_off_gap": "In base a {gaps} intervalli tra cicli osservati (p05={p05}s). Minimo del dispositivo: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensionato per coprire il periodo di silenzio più lungo all'interno di un ciclo: {span}s + 60s di margine, da {spans} intervalli coperti su {cycles} cicli puliti (resta sotto il tuo intervallo minimo di {ceiling}s tra due carichi consecutivi).",
|
||||||
"min_power": "40% della potenza attiva più bassa al p05 ({p05}W) su {cycles} cicli puliti, mantenendo la soglia di spegnimento sotto il consumo reale.{excl}",
|
"min_power": "40% della potenza attiva più bassa al p05 ({p05}W) su {cycles} cicli puliti, mantenendo la soglia di spegnimento sotto il consumo reale.{excl}",
|
||||||
"ml_auto_label": "Confidenza più bassa che il modello di qualità ha comunque valutato come pulita (p10 di {cycles} cicli puliti = {p10}).",
|
"ml_auto_label": "Confidenza più bassa che il modello di qualità ha comunque valutato come pulita (p10 di {cycles} cicli puliti = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cicli ({pct}%) hanno avuto una pausa che il rilevatore di fine ha valutato >50%; richiedere {val} conferma/e di fine.",
|
"ml_end_repeat": "{false}/{total} cicli ({pct}%) hanno avuto una pausa che il rilevatore di fine ha valutato >50%; richiedere {val} conferma/e di fine.",
|
||||||
@@ -1767,7 +1841,7 @@
|
|||||||
"thr_batch": "Mantenuto appena sopra la potenza attiva più bassa al p05 su {cycles} cicli ({p05}W) affinché un avvio venga rilevato il prima possibile e la soglia di arresto resti sotto la potenza di funzionamento più bassa della macchina.",
|
"thr_batch": "Mantenuto appena sopra la potenza attiva più bassa al p05 su {cycles} cicli ({p05}W) affinché un avvio venga rilevato il prima possibile e la soglia di arresto resti sotto la potenza di funzionamento più bassa della macchina.",
|
||||||
"tol_per_profile": "p75 della varianza di durata per profilo su {profiles} profili ({cycles} cicli); i profili stretti non vengono penalizzati.",
|
"tol_per_profile": "p75 della varianza di durata per profilo su {profiles} profili ({cycles} cicli); i profili stretti non vengono penalizzati.",
|
||||||
"tol_pooled": "In base alla varianza di durata aggregata di {cycles} cicli etichettati di recente (deviazione p95={dev}).",
|
"tol_pooled": "In base alla varianza di durata aggregata di {cycles} cicli etichettati di recente (deviazione p95={dev}).",
|
||||||
"watchdog": "Mantenuto il più basso possibile in sicurezza (3x l'intervallo di aggiornamento p95 di {p95}s, min 30s) per rilevare rapidamente i blocchi senza arresti falsi."
|
"watchdog": "Mantenuto il più basso possibile in sicurezza (poco sopra l'intervallo di aggiornamento p95 di {p95}s, min 30s) per rilevare rapidamente i blocchi senza arresti falsi."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Esclusi {total} cicli rilevati male: {parts}.",
|
"summary": "Esclusi {total} cicli rilevati male: {parts}.",
|
||||||
@@ -1944,5 +2018,53 @@
|
|||||||
"hide_guidance": "Nascondi guida",
|
"hide_guidance": "Nascondi guida",
|
||||||
"show_guidance": "Mostra guida"
|
"show_guidance": "Mostra guida"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entità non trovata",
|
||||||
|
"running_long": "In ritardo",
|
||||||
|
"remaining": "rimanente",
|
||||||
|
"progress": "avanzamento",
|
||||||
|
"show_time_remaining": "Mostra tempo rimanente",
|
||||||
|
"show_percentage": "Mostra percentuale",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Riquadro (compatto)",
|
||||||
|
"detail": "Dettaglio (completo)",
|
||||||
|
"glance": "Panoramica (più dispositivi)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pausa",
|
||||||
|
"resume": "Riprendi",
|
||||||
|
"terminate": "Termina ciclo",
|
||||||
|
"record_start": "Avvia registrazione",
|
||||||
|
"record_stop": "Interrompi registrazione",
|
||||||
|
"program": "Programma",
|
||||||
|
"open_panel": "Apri WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Layout",
|
||||||
|
"entity": "Entità dell'elettrodomestico",
|
||||||
|
"entities": "Elettrodomestici",
|
||||||
|
"title": "Titolo",
|
||||||
|
"icon": "Icona",
|
||||||
|
"show_state": "Mostra stato",
|
||||||
|
"show_program": "Mostra programma",
|
||||||
|
"show_progress_bar": "Mostra barra di avanzamento",
|
||||||
|
"spin_icon": "Ruota l'icona durante il funzionamento",
|
||||||
|
"display_mode": "Riga di dettaglio",
|
||||||
|
"active_color": "Colore attivo personalizzato",
|
||||||
|
"show_phase": "Mostra fase",
|
||||||
|
"show_energy": "Mostra energia e costo",
|
||||||
|
"show_anomaly": "Mostra avviso di ritardo",
|
||||||
|
"show_sparkline": "Mostra grafico di potenza in tempo reale",
|
||||||
|
"buttons": "Pulsanti di azione",
|
||||||
|
"program_entity": "Entità programma (personalizzata)",
|
||||||
|
"time_entity": "Entità tempo (personalizzata)",
|
||||||
|
"pct_entity": "Entità avanzamento (personalizzata)",
|
||||||
|
"power_entity": "Entità potenza (personalizzata)",
|
||||||
|
"tap_action": "Azione al tocco",
|
||||||
|
"hold_action": "Azione alla pressione prolungata",
|
||||||
|
"double_tap_action": "Azione al doppio tocco"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,57 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "分",
|
||||||
|
"entity_not_found": "エンティティが見つかりません",
|
||||||
|
"running_long": "超過中",
|
||||||
|
"remaining": "残り",
|
||||||
|
"progress": "進捗",
|
||||||
|
"show_time_remaining": "残り時間を表示",
|
||||||
|
"show_percentage": "パーセンテージを表示",
|
||||||
|
"layout": {
|
||||||
|
"tile": "タイル(コンパクト)",
|
||||||
|
"detail": "詳細(リッチ)",
|
||||||
|
"glance": "一覧(複数デバイス)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "一時停止",
|
||||||
|
"resume": "再開",
|
||||||
|
"terminate": "サイクルを終了",
|
||||||
|
"record_start": "記録を開始",
|
||||||
|
"record_stop": "記録を停止",
|
||||||
|
"program": "プログラム",
|
||||||
|
"open_panel": "WashData を開く"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "レイアウト",
|
||||||
|
"entity": "家電エンティティ",
|
||||||
|
"entities": "家電",
|
||||||
|
"title": "タイトル",
|
||||||
|
"icon": "アイコン",
|
||||||
|
"show_state": "状態を表示",
|
||||||
|
"show_program": "プログラムを表示",
|
||||||
|
"show_progress_bar": "進捗バーを表示",
|
||||||
|
"spin_icon": "実行中にアイコンを回転",
|
||||||
|
"display_mode": "詳細行",
|
||||||
|
"active_color": "アクティブカラーの上書き",
|
||||||
|
"show_phase": "フェーズを表示",
|
||||||
|
"show_energy": "エネルギーとコストを表示",
|
||||||
|
"show_anomaly": "超過警告を表示",
|
||||||
|
"show_sparkline": "ライブ電力グラフを表示",
|
||||||
|
"buttons": "操作ボタン",
|
||||||
|
"program_entity": "プログラムエンティティ(上書き)",
|
||||||
|
"time_entity": "時間エンティティ(上書き)",
|
||||||
|
"pct_entity": "進捗エンティティ(上書き)",
|
||||||
|
"power_entity": "電力エンティティ(上書き)",
|
||||||
|
"tap_action": "タップ操作",
|
||||||
|
"hold_action": "長押し操作",
|
||||||
|
"double_tap_action": "ダブルタップ操作"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} 個の異常が検出されました (例: サイクルの途中でドアが開いた) – 開いてグラフ上で確認します",
|
"artifact_tip": "{n} 個の異常が検出されました (例: サイクルの途中でドアが開いた) – 開いてグラフ上で確認します",
|
||||||
"auto": "(自動検出)",
|
"auto": "(自動検出)",
|
||||||
"built_in_tag": "内蔵",
|
"built_in_tag": "内蔵",
|
||||||
"declining": "↘ 減少",
|
"declining": "↘ 悪化",
|
||||||
"energy_low": "普段より消費エネルギーが少ない",
|
"energy_low": "普段より消費エネルギーが少ない",
|
||||||
"energy_spike": "普段より消費エネルギーが多い",
|
"energy_spike": "普段より消費エネルギーが多い",
|
||||||
"fair_fit": "普通",
|
"fair_fit": "普通",
|
||||||
@@ -13,9 +61,9 @@
|
|||||||
"improving": "↗ 改善中",
|
"improving": "↗ 改善中",
|
||||||
"manual": "(手動で選択)",
|
"manual": "(手動で選択)",
|
||||||
"needs_review": "見直しが必要",
|
"needs_review": "見直しが必要",
|
||||||
"overrun": "いつもより長く走った",
|
"overrun": "普段より長く動作した",
|
||||||
"poor_fit": "フィット感が悪い",
|
"poor_fit": "低品質",
|
||||||
"poor_fit_tip": "一致しない試合履歴 - このプロファイルの再構築を検討してください",
|
"poor_fit_tip": "マッチ履歴に一貫性がありません - このプロファイルの再構築を検討してください",
|
||||||
"restart_gap_tip": "{n} HA 再起動ギャップ: 電力トレースに欠損区間があります",
|
"restart_gap_tip": "{n} HA 再起動ギャップ: 電力トレースに欠損区間があります",
|
||||||
"reviewed": "レビュー済み",
|
"reviewed": "レビュー済み",
|
||||||
"steady": "→安定",
|
"steady": "→安定",
|
||||||
@@ -44,7 +92,7 @@
|
|||||||
"apply_split": "分割を適用する",
|
"apply_split": "分割を適用する",
|
||||||
"apply_trim": "トリムを適用",
|
"apply_trim": "トリムを適用",
|
||||||
"auto_detect_split": "自動検出",
|
"auto_detect_split": "自動検出",
|
||||||
"auto_label_cycles": "自動ラベル付けサイクル",
|
"auto_label_cycles": "サイクルを自動ラベル付け",
|
||||||
"auto_label_cycles_tip": "一致信頼度がしきい値をクリアするラベルなしサイクルにプロファイル名を自動的に割り当てます",
|
"auto_label_cycles_tip": "一致信頼度がしきい値をクリアするラベルなしサイクルにプロファイル名を自動的に割り当てます",
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"clear_debug": "デバッグデータのクリア",
|
"clear_debug": "デバッグデータのクリア",
|
||||||
@@ -53,20 +101,20 @@
|
|||||||
"compare": "比較する",
|
"compare": "比較する",
|
||||||
"confirm": "確認する",
|
"confirm": "確認する",
|
||||||
"convert_to_automation": "自動化への変換",
|
"convert_to_automation": "自動化への変換",
|
||||||
"correct": "正しい…",
|
"correct": "修正…",
|
||||||
"create": "作成する",
|
"create": "作成する",
|
||||||
"create_from_cluster": "{count} サイクルからプロファイルを作成",
|
"create_from_cluster": "{count} サイクルからプロファイルを作成",
|
||||||
"create_profile": "+ プロフィールの作成",
|
"create_profile": "+ プロファイルの作成",
|
||||||
"delete": "消去",
|
"delete": "削除",
|
||||||
"delete_group": "グループの削除",
|
"delete_group": "グループの削除",
|
||||||
"delete_group_tip": "このグループのみを削除します - メンバーのプロフィールは保持されます",
|
"delete_group_tip": "このグループのみを削除します - メンバーのプロファイルは保持されます",
|
||||||
"delete_profile": "プロフィールの削除",
|
"delete_profile": "プロファイルの削除",
|
||||||
"discard": "破棄",
|
"discard": "破棄",
|
||||||
"discard_tip": "録音されたトレースを保存せずに破棄します",
|
"discard_tip": "記録されたトレースを保存せずに破棄します",
|
||||||
"dismiss": "却下する",
|
"dismiss": "却下する",
|
||||||
"done": "終わり",
|
"done": "完了",
|
||||||
"edit": "編集",
|
"edit": "編集",
|
||||||
"export": "輸出",
|
"export": "エクスポート",
|
||||||
"export_json": "JSON にエクスポート",
|
"export_json": "JSON にエクスポート",
|
||||||
"force_stop": "強制停止",
|
"force_stop": "強制停止",
|
||||||
"force_stop_tip": "現在のサイクルをすぐに終了し、強制停止としてマークします",
|
"force_stop_tip": "現在のサイクルをすぐに終了し、強制停止としてマークします",
|
||||||
@@ -82,28 +130,41 @@
|
|||||||
"merge": "マージ",
|
"merge": "マージ",
|
||||||
"new_automation": "+ 新しい自動化",
|
"new_automation": "+ 新しい自動化",
|
||||||
"new_group": "+ 新しいグループ",
|
"new_group": "+ 新しいグループ",
|
||||||
"new_group_tip": "ほぼ同一のプロファイルをグループ化(同じ形状/期間、異なる温度またはスピン)して、マッチングが確実にどれかを選択できるようにします",
|
"new_group_tip": "ほぼ同一のプロファイルをグループ化(同じ形状/期間、異なる温度または脱水)して、マッチングが確実にどれかを選択できるようにします",
|
||||||
"new_phase": "+ 新しいフェーズ",
|
"new_phase": "+ 新しいフェーズ",
|
||||||
"new_profile": "+ 新しいプロフィール",
|
"new_profile": "+ 新しいプロファイル",
|
||||||
"new_profile_tip": "既存のラベル付きサイクルまたは録音から新しいプログラムプロファイルを作成します",
|
"new_profile_tip": "既存のラベル付きサイクルまたは記録から新しいプログラムプロファイルを作成します",
|
||||||
"on_cycle_finished": "サイクルが終了しました",
|
"on_cycle_finished": "サイクル終了時",
|
||||||
"on_cycle_started": "サイクル開始時",
|
"on_cycle_started": "サイクル開始時",
|
||||||
"pause_cycle": "一時停止",
|
"pause_cycle": "一時停止",
|
||||||
"pause_cycle_tip": "実行中のサイクルを一時停止します – 家電は停止した場所から再開します",
|
"pause_cycle_tip": "実行中のサイクルを一時停止します – 家電は停止した場所から再開します",
|
||||||
"pg_apply_device": "デバイスに適用",
|
"pg_apply_device": "デバイスに適用",
|
||||||
"pg_autofill": "自動入力",
|
"pg_autofill": "自動入力",
|
||||||
|
"pg_load_calibrated": "調整済み (ML) を読み込む ({n})",
|
||||||
|
"pg_load_calibrated_tip": "ML 調整済みの設定をプレイグラウンドの上書き値として適用します",
|
||||||
|
"pg_load_live": "有効な設定を読み込む",
|
||||||
|
"pg_load_live_tip": "統合の現在の設定を読み直し、プレイグラウンドでの編集をすべて破棄します",
|
||||||
|
"pg_load_suggested": "提案を読み込む ({n})",
|
||||||
|
"pg_load_suggested_tip": "自動調整ツールの現在の提案をプレイグラウンドの上書き値として適用します",
|
||||||
|
"pg_preset_delete": "プリセットを削除",
|
||||||
|
"pg_preset_load": "プリセットを読み込む",
|
||||||
|
"pg_preset_load_tip": "プレイグラウンドの値をこのプリセットで置き換えます(有効な設定は変更されません)",
|
||||||
|
"pg_preset_save": "プリセットとして保存",
|
||||||
|
"pg_preset_save_tip": "以下のすべての値に名前を付けて、このデバイスのプリセットとして保存します",
|
||||||
|
"pg_publish_all": "{n} 件を統合に適用",
|
||||||
|
"pg_publish_one": "{label} を統合に適用",
|
||||||
"play": "再生",
|
"play": "再生",
|
||||||
"process": "プロセス",
|
"process": "処理",
|
||||||
"process_history": "今すぐ処理",
|
"process_history": "今すぐ処理",
|
||||||
"process_recording": "録音の保存",
|
"process_recording": "記録の保存",
|
||||||
"process_tip": "録音されたトレースを新しいまたは既存のプロファイルとして保存します",
|
"process_tip": "記録されたトレースを新しいまたは既存のプロファイルとして保存します",
|
||||||
"rebuild": "エンベロープを再構築する",
|
"rebuild": "エンベロープを再構築する",
|
||||||
"rebuild_envelope": "エンベロープの再構築",
|
"rebuild_envelope": "エンベロープの再構築",
|
||||||
"rebuild_tip": "ラベル付きサイクルからすべてのプロファイルの予想電力エンベロープ(最小/最大バンド)を再計算します – 新しいサイクルにラベルを付けた後や古いラベルを修正した後に実行します",
|
"rebuild_tip": "ラベル付きサイクルからすべてのプロファイルの予想電力エンベロープ(最小/最大バンド)を再計算します – 新しいサイクルにラベルを付けた後や古いラベルを修正した後に実行します",
|
||||||
"rec_start_tip": "家電の電力トレースの録音を開始します – サイクルを実行する直前に開始します",
|
"rec_start_tip": "家電の電力トレースの記録を開始します – サイクルを実行する直前に開始します",
|
||||||
"rec_stop": "停止",
|
"rec_stop": "停止",
|
||||||
"rec_stop_tip": "録音を停止し、キャプチャされたトレースをレビューのために保持します",
|
"rec_stop_tip": "記録を停止し、キャプチャされたトレースをレビューのために保持します",
|
||||||
"record": "録音を開始する",
|
"record": "記録を開始する",
|
||||||
"refresh": "リフレッシュ",
|
"refresh": "リフレッシュ",
|
||||||
"refresh_diag_tip": "ストレージ統計を再読み込みします",
|
"refresh_diag_tip": "ストレージ統計を再読み込みします",
|
||||||
"refresh_logs_tip": "最新のログレコードを再読み込みします",
|
"refresh_logs_tip": "最新のログレコードを再読み込みします",
|
||||||
@@ -122,7 +183,7 @@
|
|||||||
"revert_settings_tip_none": "元に戻す機能を有効にするには先に保存してください",
|
"revert_settings_tip_none": "元に戻す機能を有効にするには先に保存してください",
|
||||||
"revert": "元に戻す",
|
"revert": "元に戻す",
|
||||||
"revert_to_previous": "この設定を以前の値に戻す",
|
"revert_to_previous": "この設定を以前の値に戻す",
|
||||||
"review": "評価する",
|
"review": "レビュー",
|
||||||
"run": "実行",
|
"run": "実行",
|
||||||
"run_analysis": "🔍 提案分析を実行する",
|
"run_analysis": "🔍 提案分析を実行する",
|
||||||
"run_analysis_tip": "記録されたサイクルを今すぐ分析し、調整の提案を更新します",
|
"run_analysis_tip": "記録されたサイクルを今すぐ分析し、調整の提案を更新します",
|
||||||
@@ -144,12 +205,12 @@
|
|||||||
"select_none": "クリア",
|
"select_none": "クリア",
|
||||||
"show_only": "表示のみ",
|
"show_only": "表示のみ",
|
||||||
"skip_setup": "セットアップをスキップ",
|
"skip_setup": "セットアップをスキップ",
|
||||||
"split": "スプリット",
|
"split": "分割",
|
||||||
"stop": "停止",
|
"stop": "停止",
|
||||||
"submit_correction": "修正の送信",
|
"submit_correction": "修正の送信",
|
||||||
"train_now": "今すぐトレーニングする",
|
"train_now": "今すぐトレーニングする",
|
||||||
"trim": "トリム",
|
"trim": "トリム",
|
||||||
"trim_split": "トリム/スプリット",
|
"trim_split": "トリム/分割",
|
||||||
"undo": "元に戻す",
|
"undo": "元に戻す",
|
||||||
"use": "使用",
|
"use": "使用",
|
||||||
"wipe_all": "すべてのデータを消去",
|
"wipe_all": "すべてのデータを消去",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "エクスポートをダウンロード",
|
"download_export": "エクスポートをダウンロード",
|
||||||
"analyze_import": "ファイルを解析",
|
"analyze_import": "ファイルを解析",
|
||||||
"import_selected": "選択項目をインポート",
|
"import_selected": "選択項目をインポート",
|
||||||
"back": "戻る"
|
"back": "戻る",
|
||||||
|
"mute_suggestion": "この設定の提案を停止",
|
||||||
|
"reset_muted": "ミュートをリセット"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -255,29 +318,30 @@
|
|||||||
"clear_debug": "デバッグトレースをクリアする",
|
"clear_debug": "デバッグトレースをクリアする",
|
||||||
"cycle_simulator": "サイクルシミュレーター",
|
"cycle_simulator": "サイクルシミュレーター",
|
||||||
"diagnostics_pref": "診断",
|
"diagnostics_pref": "診断",
|
||||||
"display": "画面",
|
"display": "表示",
|
||||||
"dtw_inspector": "DTW インスペクター",
|
"dtw_inspector": "DTW インスペクター",
|
||||||
"export_import": "エクスポート/インポート",
|
"export_import": "エクスポート/インポート",
|
||||||
"getting_started": "はじめに",
|
"getting_started": "はじめに",
|
||||||
"live_power": "ライブパワー",
|
"live_power": "ライブ電力",
|
||||||
"logs": "ログ",
|
"logs": "ログ",
|
||||||
"logs_diagnostics": "診断",
|
"logs_diagnostics": "診断",
|
||||||
"maintenance": "メンテナンスアクション",
|
"maintenance": "メンテナンスアクション",
|
||||||
"maintenance_log": "メンテナンス履歴",
|
"maintenance_log": "メンテナンス履歴",
|
||||||
"maintenance_reminders": "サービスリマインダー",
|
"maintenance_reminders": "サービスリマインダー",
|
||||||
"manual_recording": "手動録音",
|
"manual_recording": "手動記録",
|
||||||
"manual_recording_tip": "WashData が電力トレースを記録する間、意図的にサイクルを実行します。家電が起動する直前に開始し、終了したら停止し、次に処理して名前付きプロファイルとして保存します。",
|
"manual_recording_tip": "WashData が電力トレースを記録する間、意図的にサイクルを実行します。家電が起動する直前に開始し、終了したら停止し、次に処理して名前付きプロファイルとして保存します。",
|
||||||
"ml_learned": "WashData が学んだこと",
|
"ml_learned": "WashData が学んだこと",
|
||||||
"ml_matching_tuning": "プログラムマッチングの微調整",
|
"ml_matching_tuning": "プログラムマッチングの微調整",
|
||||||
"ml_settings_card": "設定",
|
"ml_settings_card": "設定",
|
||||||
"ml_smart_learning": "スマートラーニング",
|
"ml_smart_learning": "スマートラーニング",
|
||||||
"my_preferences": "私の好み",
|
"my_preferences": "個人設定",
|
||||||
"no_automations": "このデバイスを参照するオートメーションはまだありません。",
|
"no_automations": "このデバイスを参照するオートメーションはまだありません。",
|
||||||
"panel_settings": "パネル設定",
|
"panel_settings": "パネル設定",
|
||||||
"param_sweep": "パラメータースイープ",
|
"param_sweep": "パラメータースイープ",
|
||||||
|
"pg_settings_source": "設定の取得元",
|
||||||
"phase_catalog": "フェーズカタログ",
|
"phase_catalog": "フェーズカタログ",
|
||||||
"playground": "プレイグラウンド",
|
"playground": "プレイグラウンド",
|
||||||
"process_history": "プロセス履歴",
|
"process_history": "履歴の処理",
|
||||||
"settings_history": "設定履歴",
|
"settings_history": "設定履歴",
|
||||||
"status": "状態",
|
"status": "状態",
|
||||||
"status_graph": "ステータスグラフ",
|
"status_graph": "ステータスグラフ",
|
||||||
@@ -323,15 +387,15 @@
|
|||||||
"clock_time": "時計の時間",
|
"clock_time": "時計の時間",
|
||||||
"cohesion_good": "凝集度 {pct}%",
|
"cohesion_good": "凝集度 {pct}%",
|
||||||
"cohesion_low": "⚠ 低凝集度 {pct}%",
|
"cohesion_low": "⚠ 低凝集度 {pct}%",
|
||||||
"compare_profiles": "プロフィールと比較する",
|
"compare_profiles": "プロファイルと比較する",
|
||||||
"concurrency": "並列実行数",
|
"concurrency": "並列実行数",
|
||||||
"confidence": "自信",
|
"confidence": "信頼度",
|
||||||
"confidence_threshold": "信頼閾値",
|
"confidence_threshold": "信頼閾値",
|
||||||
"correct_duration": "正しい継続時間 (分、オプション)",
|
"correct_duration": "正しい継続時間 (分、オプション)",
|
||||||
"correct_profile": "正しいプロフィール",
|
"correct_profile": "正しいプロファイル",
|
||||||
"correlation": "相関",
|
"correlation": "相関",
|
||||||
"cost": "料金",
|
"cost": "料金",
|
||||||
"create_new_profile": "+ 新しいプロフィールを作成…",
|
"create_new_profile": "+ 新しいプロファイルを作成…",
|
||||||
"current_phase": "現在のフェーズ",
|
"current_phase": "現在のフェーズ",
|
||||||
"curves": "曲線",
|
"curves": "曲線",
|
||||||
"cycle": "サイクル",
|
"cycle": "サイクル",
|
||||||
@@ -354,8 +418,8 @@
|
|||||||
"dtw_blended": "ブレンドスコア",
|
"dtw_blended": "ブレンドスコア",
|
||||||
"dtw_ddtw": "DDTW スコア",
|
"dtw_ddtw": "DDTW スコア",
|
||||||
"dtw_l1": "L1 スコア",
|
"dtw_l1": "L1 スコア",
|
||||||
"dtw_matched_profile": "(サイクルの一致プロフィール)",
|
"dtw_matched_profile": "(サイクルの一致プロファイル)",
|
||||||
"duration": "間隔",
|
"duration": "継続時間",
|
||||||
"duration_agreement": "継続時間の一致度",
|
"duration_agreement": "継続時間の一致度",
|
||||||
"emphasis": "強調",
|
"emphasis": "強調",
|
||||||
"enable_access_control": "ユーザーごとのアクセス制御を有効にする",
|
"enable_access_control": "ユーザーごとのアクセス制御を有効にする",
|
||||||
@@ -368,16 +432,16 @@
|
|||||||
"file_kb": "ファイル (kB)",
|
"file_kb": "ファイル (kB)",
|
||||||
"final_score": "最終スコア",
|
"final_score": "最終スコア",
|
||||||
"from": "開始",
|
"from": "開始",
|
||||||
"gap_s": "ギャップ",
|
"gap_s": "ギャップ (秒)",
|
||||||
"group_name": "グループ名",
|
"group_name": "グループ名",
|
||||||
"head_trim": "ヘッドトリム (複数可)",
|
"head_trim": "ヘッドトリム (秒)",
|
||||||
"health": "健康",
|
"health": "健康",
|
||||||
"hide_tabs": "管理者以外のタブを非表示にする",
|
"hide_tabs": "管理者以外のタブを非表示にする",
|
||||||
"in_use": "使用中",
|
"in_use": "使用中",
|
||||||
"json_data": "JSONデータ",
|
"json_data": "JSONデータ",
|
||||||
"label": "一致したプログラム",
|
"label": "一致したプログラム",
|
||||||
"last": "直近",
|
"last": "直近",
|
||||||
"last_checked": "最後にチェックした内容:",
|
"last_checked": "最終確認:",
|
||||||
"load_from_file": "ファイルからロード",
|
"load_from_file": "ファイルからロード",
|
||||||
"mae_score": "MAE スコア",
|
"mae_score": "MAE スコア",
|
||||||
"manual_duration": "手動持続時間 (分、オプション)",
|
"manual_duration": "手動持続時間 (分、オプション)",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "マッチスコア",
|
"pg_match_score": "マッチスコア",
|
||||||
"pg_pct_of": "{total} 中 {p}%",
|
"pg_pct_of": "{total} 中 {p}%",
|
||||||
"pg_poor_match": "不十分なマッチ",
|
"pg_poor_match": "不十分なマッチ",
|
||||||
|
"pg_preset": "プレイグラウンドのプリセット",
|
||||||
|
"pg_preset_name": "新しいプリセット名",
|
||||||
|
"pg_preset_none": "プリセットを選択…",
|
||||||
"pg_strong_match": "強いマッチ",
|
"pg_strong_match": "強いマッチ",
|
||||||
"pg_tile_ambiguous": "あいまい",
|
"pg_tile_ambiguous": "あいまい",
|
||||||
"pg_tile_ambiguous_tip": "2つのプログラムがほぼ同点だったサイクル",
|
"pg_tile_ambiguous_tip": "2つのプログラムがほぼ同点だったサイクル",
|
||||||
@@ -427,8 +494,8 @@
|
|||||||
"phase_name": "名前",
|
"phase_name": "名前",
|
||||||
"phase_timeline": "フェーズタイムライン",
|
"phase_timeline": "フェーズタイムライン",
|
||||||
"power": "電力",
|
"power": "電力",
|
||||||
"profile": "プロフィール",
|
"profile": "プロファイル",
|
||||||
"profile_index": "プロフィール番号 →",
|
"profile_index": "プロファイル番号 →",
|
||||||
"profile_name": "プロファイル名",
|
"profile_name": "プロファイル名",
|
||||||
"program": "プログラム",
|
"program": "プログラム",
|
||||||
"program_tip": "現在のサイクルに一致するプロファイルを上書きします。自動検出では、統合が最適な一致を自動的に選択します。自動検出が誤っている場合や実行中のプログラムが分かっている場合は、特定のプログラムを固定して強制的に一致させます。",
|
"program_tip": "現在のサイクルに一致するプロファイルを上書きします。自動検出では、統合が最適な一致を自動的に選択します。自動検出が誤っている場合や実行中のプログラムが分かっている場合は、特定のプログラムを固定して強制的に一致させます。",
|
||||||
@@ -439,14 +506,14 @@
|
|||||||
"refresh_interval": "リフレッシュ間隔 (秒)",
|
"refresh_interval": "リフレッシュ間隔 (秒)",
|
||||||
"remaining": "残り",
|
"remaining": "残り",
|
||||||
"reminder_every": "リマインド間隔 (サイクル)",
|
"reminder_every": "リマインド間隔 (サイクル)",
|
||||||
"remove_label": "- ラベルを剥がす -",
|
"remove_label": "- ラベルを削除 -",
|
||||||
"rename_profile": "プロファイル名の変更",
|
"rename_profile": "プロファイル名の変更",
|
||||||
"replay_duration": "再生",
|
"replay_duration": "再生",
|
||||||
"resulting_profile": "結果として得られるプロファイル",
|
"resulting_profile": "結果として得られるプロファイル",
|
||||||
"save_mode": "セーブモード",
|
"save_mode": "保存モード",
|
||||||
"score": "スコア",
|
"score": "スコア",
|
||||||
"score_breakdown": "スコアの内訳",
|
"score_breakdown": "スコアの内訳",
|
||||||
"seconds_from_start": "開始から数秒",
|
"seconds_from_start": "開始からの秒数",
|
||||||
"select_profile": "プロファイルの選択",
|
"select_profile": "プロファイルの選択",
|
||||||
"setting": "設定",
|
"setting": "設定",
|
||||||
"settings_a": "設定 A (現在)",
|
"settings_a": "設定 A (現在)",
|
||||||
@@ -465,7 +532,7 @@
|
|||||||
"stage3": "ステージ 3 – DTW",
|
"stage3": "ステージ 3 – DTW",
|
||||||
"stage4": "ステージ 4 – 一致度",
|
"stage4": "ステージ 4 – 一致度",
|
||||||
"status": "状態",
|
"status": "状態",
|
||||||
"tail_trim": "テールトリム (複数可)",
|
"tail_trim": "テールトリム (秒)",
|
||||||
"timer_auto_pause": "自動一時停止",
|
"timer_auto_pause": "自動一時停止",
|
||||||
"timer_min": "分",
|
"timer_min": "分",
|
||||||
"timer_msg_placeholder": "メッセージ (オプション、{device}/{program}/{minutes})",
|
"timer_msg_placeholder": "メッセージ (オプション、{device}/{program}/{minutes})",
|
||||||
@@ -567,7 +634,7 @@
|
|||||||
"pg_load_run": "この実行を再読み込み",
|
"pg_load_run": "この実行を再読み込み",
|
||||||
"pg_match_confidence": "マッチ信頼度",
|
"pg_match_confidence": "マッチ信頼度",
|
||||||
"pg_envelope_fit": "エンベロープ適合度",
|
"pg_envelope_fit": "エンベロープ適合度",
|
||||||
"pg_envelope_fit_tip": "このプロフィールの保存された電力エンベロープ内にサイクルがどれだけ収まっているか。マッチ信頼度とは異なる視点です。",
|
"pg_envelope_fit_tip": "このプロファイルの保存された電力エンベロープ内にサイクルがどれだけ収まっているか。マッチ信頼度とは異なる視点です。",
|
||||||
"n_imported_note": "、{n} 件インポート済み",
|
"n_imported_note": "、{n} 件インポート済み",
|
||||||
"enable_online": "オンライン機能を有効化",
|
"enable_online": "オンライン機能を有効化",
|
||||||
"store_brand": "家電ブランド",
|
"store_brand": "家電ブランド",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "名前の衝突",
|
"conflict_resolution": "名前の衝突",
|
||||||
"conflict_import_copy": "コピーとしてインポート",
|
"conflict_import_copy": "コピーとしてインポート",
|
||||||
"conflict_keep_mine": "自分のを保持",
|
"conflict_keep_mine": "自分のを保持",
|
||||||
"conflict_overwrite": "上書き"
|
"conflict_overwrite": "上書き",
|
||||||
|
"font_size": "パネルのフォントサイズ"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "すべてのレベル",
|
"all_levels": "すべてのレベル",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "最適値を適用: {label} = {value}?",
|
"pg_apply_confirm": "最適値を適用: {label} = {value}?",
|
||||||
"pg_canvas_empty": "上でサイクルを選択し、「読み込み」を押すと電力トレースが表示されます。",
|
"pg_canvas_empty": "上でサイクルを選択し、「読み込み」を押すと電力トレースが表示されます。",
|
||||||
"pg_chart_caption": "{param} の値ごとの検出/マッチ率",
|
"pg_chart_caption": "{param} の値ごとの検出/マッチ率",
|
||||||
|
"pg_ctrl_intro": "値はこのデバイスの有効な統合設定から始まります。編集内容は、適用するまでプレイグラウンド内にとどまります。",
|
||||||
|
"pg_live_unavailable": "有効な設定を取得できないため、既定値を表示しています。",
|
||||||
|
"pg_load_live_confirm": "プレイグラウンドの編集 {n} 件を破棄して、統合の現在の設定を再読み込みしますか?",
|
||||||
"pg_match_rate": "{total} サイクルで {pct}% のマッチ率",
|
"pg_match_rate": "{total} サイクルで {pct}% のマッチ率",
|
||||||
|
"pg_matches_live": "有効な設定と一致しています",
|
||||||
|
"pg_n_changed": "有効な設定との差分 {n} 件",
|
||||||
|
"pg_sugg_none": "すべての提案は現在の設定に一致しています",
|
||||||
|
"pg_preset_delete_confirm": "プリセット「{name}」を削除しますか?",
|
||||||
|
"pg_preset_limit": "プリセットの上限に達しました({n})",
|
||||||
|
"pg_preset_overwrite": "プリセット「{name}」を上書きしますか?",
|
||||||
|
"pg_publish_one_confirm": "{label} = {value} をこのデバイスの設定に保存しますか?",
|
||||||
"pg_restart_note": "シミュレーションツールを有効にするには Home Assistant を再起動してください。",
|
"pg_restart_note": "シミュレーションツールを有効にするには Home Assistant を再起動してください。",
|
||||||
"pg_sim_progress": "{done} / {total} サイクル",
|
"pg_sim_progress": "{done} / {total} サイクル",
|
||||||
"pg_starting": "開始中…",
|
"pg_starting": "開始中…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "期間は短くなる傾向にあります ({pct}%/サイクル) - 最近の平均 {avg}",
|
"trend_duration_shorter": "期間は短くなる傾向にあります ({pct}%/サイクル) - 最近の平均 {avg}",
|
||||||
"trend_energy_down": "エネルギーは減少傾向にあります ({pct}%/サイクル)",
|
"trend_energy_down": "エネルギーは減少傾向にあります ({pct}%/サイクル)",
|
||||||
"trend_energy_up": "エネルギーは増加傾向にあります ({pct}%/サイクル) - 最近の平均 {avg}",
|
"trend_energy_up": "エネルギーは増加傾向にあります ({pct}%/サイクル) - 最近の平均 {avg}",
|
||||||
|
"trim_destructive_confirm": "サイクルの{pct}%だけが残り、この操作は元に戻せません。続行しますか?",
|
||||||
"trim_intro": "赤いハンドルをドラッグするか、値を入力します。窓の外側のものはすべて削除されます。",
|
"trim_intro": "赤いハンドルをドラッグするか、値を入力します。窓の外側のものはすべて削除されます。",
|
||||||
"tuning_suggestions_available": "{count} 観察されたサイクルから得られる調整提案。これらは関連するフィールドの横に表示されます。",
|
"tuning_suggestions_available": "{count} 観察されたサイクルから得られる調整提案。これらは関連するフィールドの横に表示されます。",
|
||||||
"unsure_detected_prefix": "WashData が検出したかどうかは不明",
|
"unsure_detected_prefix": "WashData が検出したかどうかは不明",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "インポートした項目は追加され、ローカルのデータは失われません。名前の衝突は以下で解決します。",
|
"merge_hint": "インポートした項目は追加され、ローカルのデータは失われません。名前の衝突は以下で解決します。",
|
||||||
"replace_warn": "チェックした各カテゴリは消去され、ファイルの内容で置き換えられます。チェックしていないカテゴリはそのまま残ります。",
|
"replace_warn": "チェックした各カテゴリは消去され、ファイルの内容で置き換えられます。チェックしていないカテゴリはそのまま残ります。",
|
||||||
"dest_reference_hint": "インポートしたサイクルはプログラムの認識精度を向上させるだけで、使用量やエネルギーの統計には影響しません。",
|
"dest_reference_hint": "インポートしたサイクルはプログラムの認識精度を向上させるだけで、使用量やエネルギーの統計には影響しません。",
|
||||||
"dest_real_history_hint": "インポートしたサイクルはこの機器自身の履歴として扱われ、エネルギーや使用量の統計に反映されます。1台の機器を新しい環境に移行する際に使用します。"
|
"dest_real_history_hint": "インポートしたサイクルはこの機器自身の履歴として扱われ、エネルギーや使用量の統計に反映されます。1台の機器を新しい環境に移行する際に使用します。",
|
||||||
|
"sug_muted": "この設定は今後提案されません",
|
||||||
|
"sug_mute_failed": "提案のミュートに失敗しました",
|
||||||
|
"sug_unmuted_all": "ミュートした提案をリセットしました",
|
||||||
|
"n_suggestions_muted": "{count} 件がミュート済み。自動チューナーはこれらを提案しません。",
|
||||||
|
"font_size_hint": "このパネル全体の文字を大きくまたは小さくします。このデバイスのあなたのアカウントに適用されます。"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
"completion_min_seconds": "実サイクルとみなす最短の稼働時間",
|
"completion_min_seconds": "実サイクルとみなす最短の稼働時間",
|
||||||
@@ -950,7 +1034,8 @@
|
|||||||
"dtw_ddtw_scale": "ステージ 3: DDTW 半飽和距離; 小さいほど形状に敏感(デフォルト 30)",
|
"dtw_ddtw_scale": "ステージ 3: DDTW 半飽和距離; 小さいほど形状に敏感(デフォルト 30)",
|
||||||
"dtw_refine_top_n": "ステージ 3: DTW が再スコアリングする候補数; 正しいプロファイルが 4-5 位になる場合は 7-9 に増やす(デフォルト 5)",
|
"dtw_refine_top_n": "ステージ 3: DTW が再スコアリングする候補数; 正しいプロファイルが 4-5 位になる場合は 7-9 に増やす(デフォルト 5)",
|
||||||
"duration_scale": "ステージ 4: 運転時間の一致スコアが半分になる対数比率; 小さいほど厳格なペナルティ(デフォルト 0.175)",
|
"duration_scale": "ステージ 4: 運転時間の一致スコアが半分になる対数比率; 小さいほど厳格なペナルティ(デフォルト 0.175)",
|
||||||
"energy_scale": "ステージ 4: エネルギーの一致スコアが半分になる対数比率; 小さいほど厳格なペナルティ(デフォルト 0.25)"
|
"energy_scale": "ステージ 4: エネルギーの一致スコアが半分になる対数比率; 小さいほど厳格なペナルティ(デフォルト 0.25)",
|
||||||
|
"dishwasher_end_spike_quiet_release": "食器洗い機: 予想所要時間を過ぎた後、サイクル終了時の排水待機を解除するまでの静音秒数"
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "メインサイクル後にドラムが断続的に回転し、衣類のシワを防止します。",
|
"anti_crease": "メインサイクル後にドラムが断続的に回転し、衣類のシワを防止します。",
|
||||||
@@ -1037,6 +1122,10 @@
|
|||||||
"phase_eta": {
|
"phase_eta": {
|
||||||
"label": "残り時間",
|
"label": "残り時間",
|
||||||
"intro": "サイクルの長さが温度や脱水に左右される機器向けの、フェーズを考慮した残り時間。"
|
"intro": "サイクルの長さが温度や脱水に左右される機器向けの、フェーズを考慮した残り時間。"
|
||||||
|
},
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "食器洗い機",
|
||||||
|
"intro": "食器洗い機のサイクル終了処理。食器洗い機は通常、短い最終排水の前に、ほぼ無電力の長い乾燥フェーズを経て終了します。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
@@ -1260,6 +1349,10 @@
|
|||||||
"doc": "サイクルが終了してから、まだ待機中の「マシンをアンロードする」リマインダーを送信するまでの数分。リマインダーを無効にするには、0 を設定します。",
|
"doc": "サイクルが終了してから、まだ待機中の「マシンをアンロードする」リマインダーを送信するまでの数分。リマインダーを無効にするには、0 を設定します。",
|
||||||
"label": "取り出し通知遅延"
|
"label": "取り出し通知遅延"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "ドアを開くか、通知の \"リマインダーを停止\" をタップするまで、\"取り出し通知遅延\" 分ごとに取り出しリマインダーを再送信し続けます。ドアセンサーエンティティが必要です(リマインダー自体が必要とします)。解除ボタンは Home Assistant コンパニオンアプリ(モバイル)の通知で機能します。",
|
||||||
|
"label": "ドアが開くまで繰り返す"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "電力が低下した後、サイクルの終了を宣言するまで待機する時間。このウィンドウ内で電力が再開されると、サイクルはシームレスに継続されます。これにより、洗浄段階の間で一時停止が生じます。食器洗い機には長い乾燥段階 (20 ~ 60 分間電源がオフになる) があるため、洗浄と乾燥全体を 1 サイクルとして維持するには、オフディレーをそれを超える必要があります。",
|
"doc": "電力が低下した後、サイクルの終了を宣言するまで待機する時間。このウィンドウ内で電力が再開されると、サイクルはシームレスに継続されます。これにより、洗浄段階の間で一時停止が生じます。食器洗い機には長い乾燥段階 (20 ~ 60 分間電源がオフになる) があるため、洗浄と乾燥全体を 1 サイクルとして維持するには、オフディレーをそれを超える必要があります。",
|
||||||
"label": "オフ遅延"
|
"label": "オフ遅延"
|
||||||
@@ -1434,6 +1527,30 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "エネルギーシャープネス",
|
"label": "エネルギーシャープネス",
|
||||||
"doc": "ステージ 4 のエネルギー一致ペナルティの厳格さ。小さいほど厳格で、エネルギーのズレはより大きな影響を与えます。デフォルト 0.25 はエネルギーが負荷によって変動するため、時間の厳格さよりも意図的に緩やかに設定されています。エネルギーの重みと組み合わせて使用してください。"
|
"doc": "ステージ 4 のエネルギー一致ペナルティの厳格さ。小さいほど厳格で、エネルギーのズレはより大きな影響を与えます。デフォルト 0.25 はエネルギーが負荷によって変動するため、時間の厳格さよりも意図的に緩やかに設定されています。エネルギーの重みと組み合わせて使用してください。"
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "電力プロファイル間隔",
|
||||||
|
"doc": "EMHASS や tibber_prices などの外部プランナーが使用する per-profile の power_profile センサー属性(スロットごとの平均ワット数の配列)のバケットサイズ。小さいバケットは短い電力スパイクを鮮明に保ち、大きいバケットは形状を平滑化します。デフォルト 15 分。読み取り時のみ使用され、検出には影響しません。"
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "タップ後もライブ通知を維持",
|
||||||
|
"doc": "Android のみ。実行中のスレッドをタップしても通知が消えないよう、ライブ進捗通知を固定(スティッキー)にします。オフにすると、タップで通知が消えるデフォルトの動作になります。"
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "ライブ通知のタップ先",
|
||||||
|
"doc": "Android のみ。ライブ進捗通知をタップしたときに開く場所(例:/lovelace/laundry、またはフル URL)をアプリのデフォルトページの代わりに指定します。空白のままにするとデフォルトになります。"
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "終了時に自動でドアが開く",
|
||||||
|
"doc": "サイクル終了後にドアが自動的に開いて乾燥する食器洗い機(AirDry など)向けの設定です。有効にすると、実行中のサイクルでドアが開いてもサイクルが永久に一時停止されなくなります。代わりに、ドアが下の待機時間以上開いた状態が続いた場合、WashData はサイクルが完了したと判断します。一瞬の開け閉め(食器の追加など)は無視されます。ドアセンサーエンティティが必要です。"
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "ドア開放の終了待機時間",
|
||||||
|
"doc": "「終了時に自動でドアが開く」が有効のとき、WashData がサイクルを終了するまでドアが開いた状態を維持する必要がある時間。食器を素早く追加する場合(すぐ閉めるだけ)を無視できるほど長く(デフォルト 60 秒)、機器がドアを開けた後に迅速に終了できるほど短く設定します。"
|
||||||
|
},
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "パッシブ乾燥の静音解除",
|
||||||
|
"doc": "サイクルが予想所要時間を過ぎた後、WashData が最終排水を待つのをやめてサイクルを終了するまでに、食器洗い機が静音状態(停止しきい値を下回る状態)を維持しなければならない時間です。遅れて発生する最終排水の前に長い無音の乾燥フェーズがあり、その排水が見逃されている場合は、この値を上げてください。ウィンドウを広げると、学習された所要時間が古い平均値に固定されず、季節変動(給水温度が低い=サイクルが長くなる)に追従できます。この設定は、内部の 30 分間の終了スパイク待機上限に対して待機時間を短縮することしかできず、延長することはありません。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1522,16 +1639,16 @@
|
|||||||
"status": {
|
"status": {
|
||||||
"active": "アクティブ",
|
"active": "アクティブ",
|
||||||
"all_statuses": "すべてのステータス",
|
"all_statuses": "すべてのステータス",
|
||||||
"ambiguous": "あいまいな",
|
"ambiguous": "あいまい",
|
||||||
"auto_detect": "自動検出",
|
"auto_detect": "自動検出",
|
||||||
"clear": "クリア",
|
"clear": "クリア",
|
||||||
"completed": "完了",
|
"completed": "完了",
|
||||||
"fine_tuning": "今微調整中…",
|
"fine_tuning": "今微調整中…",
|
||||||
"force_stopped": "強制停止",
|
"force_stopped": "強制停止",
|
||||||
"idle": "アイドル状態",
|
"idle": "アイドル状態",
|
||||||
"interrupted": "中断されました",
|
"interrupted": "中断",
|
||||||
"ready": "処理の準備ができました",
|
"ready": "処理の準備ができました",
|
||||||
"recording": "録音中",
|
"recording": "記録中",
|
||||||
"training": "トレーニング中…",
|
"training": "トレーニング中…",
|
||||||
"saving": "保存中…",
|
"saving": "保存中…",
|
||||||
"rebuilding": "再構築中…",
|
"rebuilding": "再構築中…",
|
||||||
@@ -1548,15 +1665,15 @@
|
|||||||
"diagnostics": "診断",
|
"diagnostics": "診断",
|
||||||
"history": "サイクル",
|
"history": "サイクル",
|
||||||
"ml": "機械学習トレーニング",
|
"ml": "機械学習トレーニング",
|
||||||
"pp_cleanup": "掃除",
|
"pp_cleanup": "クリーンアップ",
|
||||||
"pp_manage": "管理",
|
"pp_manage": "管理",
|
||||||
"pp_overview": "概要",
|
"pp_overview": "概要",
|
||||||
"pp_phases": "フェーズ",
|
"pp_phases": "フェーズ",
|
||||||
"profiles": "プロフィール",
|
"profiles": "プロファイル",
|
||||||
"settings": "設定",
|
"settings": "設定",
|
||||||
"status": "概要",
|
"status": "概要",
|
||||||
"subtab_phase_catalog": "フェーズカタログ",
|
"subtab_phase_catalog": "フェーズカタログ",
|
||||||
"subtab_profiles": "プロフィール",
|
"subtab_profiles": "プロファイル",
|
||||||
"maintenance": "メンテナンス",
|
"maintenance": "メンテナンス",
|
||||||
"playground": "プレイグラウンド",
|
"playground": "プレイグラウンド",
|
||||||
"store": "ストア"
|
"store": "ストア"
|
||||||
@@ -1604,6 +1721,10 @@
|
|||||||
"name_required": "名前は必須です",
|
"name_required": "名前は必須です",
|
||||||
"no_split_found": "分割できるアイドル ギャップは見つかりませんでした",
|
"no_split_found": "分割できるアイドル ギャップは見つかりませんでした",
|
||||||
"panel_settings_saved": "パネル設定が保存されました",
|
"panel_settings_saved": "パネル設定が保存されました",
|
||||||
|
"pg_preset_loaded": "プリセット「{name}」を読み込みました",
|
||||||
|
"pg_preset_saved": "プリセット「{name}」を保存しました",
|
||||||
|
"pg_sugg_loaded": "{n} 件の提案値を適用しました - プレイグラウンドで比較してください",
|
||||||
|
"pg_sugg_ml_loaded": "{n} 件の ML 調整済み値を適用しました - プレイグラウンドで比較してください",
|
||||||
"phase_name_required": "フェーズ名は必須です",
|
"phase_name_required": "フェーズ名は必須です",
|
||||||
"phase_updated": "フェーズが更新されました",
|
"phase_updated": "フェーズが更新されました",
|
||||||
"phases_saved": "保存されたフェーズ",
|
"phases_saved": "保存されたフェーズ",
|
||||||
@@ -1751,6 +1872,7 @@
|
|||||||
"min_active": "直近のサイクルで観測された最小の稼働電力({min}W)に基づく。",
|
"min_active": "直近のサイクルで観測された最小の稼働電力({min}W)に基づく。",
|
||||||
"min_duration_ratio": "プログラムをサイクルの早い段階で識別できるよう、できるだけ低く設定。信頼度と曖昧さのゲートが早すぎる確定を防ぎます。",
|
"min_duration_ratio": "プログラムをサイクルの早い段階で識別できるよう、できるだけ低く設定。信頼度と曖昧さのゲートが早すぎる確定を防ぎます。",
|
||||||
"min_off_gap": "観測された {gaps} 件のサイクル間の間隔に基づく(p05={p05}s)。機器の下限: {floor}s。",
|
"min_off_gap": "観測された {gaps} 件のサイクル間の間隔に基づく(p05={p05}s)。機器の下限: {floor}s。",
|
||||||
|
"min_off_gap_bridge": "サイクル内で電力がほぼ止まる最長区間をまたげるよう設定: {span}s + 60s のバッファ。{cycles} 件の正常サイクルにわたる {spans} 件のまたいだ間隔から算出(続けて運転する際にあける最短間隔 {ceiling}s を下回ります)。",
|
||||||
"min_power": "{cycles} 件の正常サイクルにわたる p05 の最低稼働電力({p05}W)の 40%。オフゲートを実際の消費電力より低く保ちます。{excl}",
|
"min_power": "{cycles} 件の正常サイクルにわたる p05 の最低稼働電力({p05}W)の 40%。オフゲートを実際の消費電力より低く保ちます。{excl}",
|
||||||
"ml_auto_label": "品質モデルが正常と判定した最低の信頼度({cycles} 件の正常サイクルの p10 = {p10})。",
|
"ml_auto_label": "品質モデルが正常と判定した最低の信頼度({cycles} 件の正常サイクルの p10 = {p10})。",
|
||||||
"ml_end_repeat": "{false}/{total} サイクル({pct}%)で、終了検出器が 50% を超えるスコアを付けた一時停止がありました。{val} 回の終了確認を要求します。",
|
"ml_end_repeat": "{false}/{total} サイクル({pct}%)で、終了検出器が 50% を超えるスコアを付けた一時停止がありました。{val} 回の終了確認を要求します。",
|
||||||
@@ -1767,7 +1889,7 @@
|
|||||||
"thr_batch": "{cycles} サイクルにわたる p05 の最低稼働電力({p05}W)のすぐ上に設定。これにより開始をできるだけ早く捉え、停止しきい値は機器の最低稼働電力を下回ったままになります。",
|
"thr_batch": "{cycles} サイクルにわたる p05 の最低稼働電力({p05}W)のすぐ上に設定。これにより開始をできるだけ早く捉え、停止しきい値は機器の最低稼働電力を下回ったままになります。",
|
||||||
"tol_per_profile": "{profiles} 件のプロファイル({cycles} サイクル)にわたるプロファイルごとの時間分散の p75。ばらつきの小さいプロファイルは不利になりません。",
|
"tol_per_profile": "{profiles} 件のプロファイル({cycles} サイクル)にわたるプロファイルごとの時間分散の p75。ばらつきの小さいプロファイルは不利になりません。",
|
||||||
"tol_pooled": "{cycles} 件の直近のラベル付きサイクルの統合時間分散に基づく(p95 偏差={dev})。",
|
"tol_pooled": "{cycles} 件の直近のラベル付きサイクルの統合時間分散に基づく(p95 偏差={dev})。",
|
||||||
"watchdog": "安全な範囲でできるだけ低く設定(p95 の更新間隔 {p95}s の 3 倍、最小 30s)。誤った停止なしに停滞を素早く検出します。"
|
"watchdog": "安全な範囲でできるだけ低く設定(p95 の更新間隔 {p95}s をわずかに上回る値、最小 30s)。誤った停止なしに停滞を素早く検出します。"
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "{total} 件の誤検出サイクルを除外しました: {parts}。",
|
"summary": "{total} 件の誤検出サイクルを除外しました: {parts}。",
|
||||||
|
|||||||
@@ -1,26 +1,74 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "분",
|
||||||
|
"entity_not_found": "엔티티를 찾을 수 없음",
|
||||||
|
"running_long": "지연 중",
|
||||||
|
"remaining": "남음",
|
||||||
|
"progress": "진행률",
|
||||||
|
"show_time_remaining": "남은 시간 표시",
|
||||||
|
"show_percentage": "백분율 표시",
|
||||||
|
"layout": {
|
||||||
|
"tile": "타일 (간단히)",
|
||||||
|
"detail": "상세 (풍부하게)",
|
||||||
|
"glance": "한눈에 보기 (여러 기기)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "일시정지",
|
||||||
|
"resume": "재개",
|
||||||
|
"terminate": "주기 종료",
|
||||||
|
"record_start": "기록 시작",
|
||||||
|
"record_stop": "기록 중지",
|
||||||
|
"program": "프로그램",
|
||||||
|
"open_panel": "WashData 열기"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "레이아웃",
|
||||||
|
"entity": "기기 엔티티",
|
||||||
|
"entities": "기기",
|
||||||
|
"title": "제목",
|
||||||
|
"icon": "아이콘",
|
||||||
|
"show_state": "상태 표시",
|
||||||
|
"show_program": "프로그램 표시",
|
||||||
|
"show_progress_bar": "진행 표시줄 표시",
|
||||||
|
"spin_icon": "실행 중 아이콘 회전",
|
||||||
|
"display_mode": "상세 줄",
|
||||||
|
"active_color": "활성 색상 재정의",
|
||||||
|
"show_phase": "단계 표시",
|
||||||
|
"show_energy": "에너지 및 비용 표시",
|
||||||
|
"show_anomaly": "초과 경고 표시",
|
||||||
|
"show_sparkline": "실시간 전력 그래프 표시",
|
||||||
|
"buttons": "동작 버튼",
|
||||||
|
"program_entity": "프로그램 엔티티 (재정의)",
|
||||||
|
"time_entity": "시간 엔티티 (재정의)",
|
||||||
|
"pct_entity": "진행률 엔티티 (재정의)",
|
||||||
|
"power_entity": "전력 엔티티 (재정의)",
|
||||||
|
"tap_action": "탭 동작",
|
||||||
|
"hold_action": "길게 누르기 동작",
|
||||||
|
"double_tap_action": "두 번 탭 동작"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} 이상 현상이 감지되었습니다(예: 사이클 중간에 문이 열림) - 열어서 그래프에서 확인",
|
"artifact_tip": "{n} 이상 현상이 감지되었습니다(예: 사이클 중간에 문이 열림) - 열어서 그래프에서 확인",
|
||||||
"auto": "(자동 감지)",
|
"auto": "(자동 감지)",
|
||||||
"built_in_tag": "내장",
|
"built_in_tag": "내장",
|
||||||
"declining": "↘ 감소",
|
"declining": "↘ 악화",
|
||||||
"energy_low": "평소보다 에너지 사용량이 적음",
|
"energy_low": "평소보다 에너지 사용량이 적음",
|
||||||
"energy_spike": "평소보다 에너지 사용량이 많음",
|
"energy_spike": "평소보다 에너지 사용량이 많음",
|
||||||
"fair_fit": "적절함",
|
"fair_fit": "적절함",
|
||||||
"fair_fit_tip": "중간 수준의 일치 일관성 - 이 프로필에 할당된 일부 주기의 신뢰도 점수가 낮습니다. 정확성을 높이려면 더 많은 주기에 라벨을 붙이거나 프로필을 다시 기록하십시오.",
|
"fair_fit_tip": "중간 수준의 일치 일관성 - 이 프로필에 할당된 일부 주기의 신뢰도 점수가 낮습니다. 정확성을 높이려면 더 많은 주기에 라벨을 붙이거나 프로필을 다시 기록하십시오.",
|
||||||
"feedback_requested": "피드백 요청됨",
|
"feedback_requested": "피드백 요청됨",
|
||||||
"golden_cycle": "기록된 참조주기",
|
"golden_cycle": "기록된 참조 사이클",
|
||||||
"improving": "↗ 개선",
|
"improving": "↗ 개선",
|
||||||
"manual": "(수동으로 선택)",
|
"manual": "(수동으로 선택)",
|
||||||
"needs_review": "검토 필요",
|
"needs_review": "검토 필요",
|
||||||
"overrun": "평소보다 더 오래 달렸어요",
|
"overrun": "평소보다 오래 작동함",
|
||||||
"poor_fit": "적합하지 않음",
|
"poor_fit": "품질 낮음",
|
||||||
"poor_fit_tip": "일치하지 않는 일치 기록 – 이 프로필을 다시 작성하는 것이 좋습니다.",
|
"poor_fit_tip": "일관성 없는 매칭 기록 – 이 프로필을 다시 작성하는 것이 좋습니다.",
|
||||||
"restart_gap_tip": "{n} HA 재시작 공백: 전력 그래프에 빈 구간이 있습니다",
|
"restart_gap_tip": "{n} HA 재시작 공백: 전력 그래프에 빈 구간이 있습니다",
|
||||||
"reviewed": "검토됨",
|
"reviewed": "검토됨",
|
||||||
"steady": "→ 꾸준한",
|
"steady": "→ 안정",
|
||||||
"underrun": "평소보다 빨리 완료됨",
|
"underrun": "평소보다 빨리 완료됨",
|
||||||
"using_defaults": "배송된 기본값 사용",
|
"using_defaults": "기본 제공 기본값 사용",
|
||||||
"using_tuned": "조정된 가중치 사용",
|
"using_tuned": "조정된 가중치 사용",
|
||||||
"overrun_ratio": "(예상의 {x}배)",
|
"overrun_ratio": "(예상의 {x}배)",
|
||||||
"underrun_ratio": "(예상의 {pct}%)",
|
"underrun_ratio": "(예상의 {pct}%)",
|
||||||
@@ -44,74 +92,87 @@
|
|||||||
"apply_split": "분할 적용",
|
"apply_split": "분할 적용",
|
||||||
"apply_trim": "트림 적용",
|
"apply_trim": "트림 적용",
|
||||||
"auto_detect_split": "자동 감지",
|
"auto_detect_split": "자동 감지",
|
||||||
"auto_label_cycles": "자동 라벨 주기",
|
"auto_label_cycles": "사이클 자동 라벨 지정",
|
||||||
"auto_label_cycles_tip": "일치 신뢰도가 임계값을 초과하는 미라벨 주기에 프로필 이름을 자동으로 할당합니다",
|
"auto_label_cycles_tip": "일치 신뢰도가 임계값을 초과하는 미라벨 주기에 프로필 이름을 자동으로 할당합니다",
|
||||||
"cancel": "취소",
|
"cancel": "취소",
|
||||||
"clear_debug": "디버그 데이터 지우기",
|
"clear_debug": "디버그 데이터 지우기",
|
||||||
"clear_splits": "분명한",
|
"clear_splits": "지우기",
|
||||||
"close": "닫기",
|
"close": "닫기",
|
||||||
"compare": "비교하다",
|
"compare": "비교",
|
||||||
"confirm": "확인하다",
|
"confirm": "확인",
|
||||||
"convert_to_automation": "자동화로 전환",
|
"convert_to_automation": "자동화로 전환",
|
||||||
"correct": "옳은…",
|
"correct": "수정…",
|
||||||
"create": "만들다",
|
"create": "만들기",
|
||||||
"create_from_cluster": "{count}개 사이클로 프로필 만들기",
|
"create_from_cluster": "{count}개 사이클로 프로필 만들기",
|
||||||
"create_profile": "+ 프로필 만들기",
|
"create_profile": "+ 프로필 만들기",
|
||||||
"delete": "삭제",
|
"delete": "삭제",
|
||||||
"delete_group": "그룹 삭제",
|
"delete_group": "그룹 삭제",
|
||||||
"delete_group_tip": "이 그룹만 삭제 - 회원 프로필은 유지됩니다.",
|
"delete_group_tip": "이 그룹만 삭제 - 구성원 프로필은 유지됩니다.",
|
||||||
"delete_profile": "프로필 삭제",
|
"delete_profile": "프로필 삭제",
|
||||||
"discard": "버리다",
|
"discard": "버리기",
|
||||||
"discard_tip": "저장하지 않고 기록된 트레이스를 삭제합니다",
|
"discard_tip": "저장하지 않고 기록된 트레이스를 삭제합니다",
|
||||||
"dismiss": "해고하다",
|
"dismiss": "닫기",
|
||||||
"done": "완료",
|
"done": "완료",
|
||||||
"edit": "편집하다",
|
"edit": "편집",
|
||||||
"export": "내보내다",
|
"export": "내보내기",
|
||||||
"export_json": "JSON으로 내보내기",
|
"export_json": "JSON으로 내보내기",
|
||||||
"force_stop": "강제 정지",
|
"force_stop": "강제 정지",
|
||||||
"force_stop_tip": "현재 사이클을 즉시 종료하고 강제 정지로 표시합니다",
|
"force_stop_tip": "현재 사이클을 즉시 종료하고 강제 정지로 표시합니다",
|
||||||
"from_template": "템플릿에서 ▾",
|
"from_template": "템플릿에서 ▾",
|
||||||
"ignore": "무시하다",
|
"ignore": "무시",
|
||||||
"import_json": "JSON에서 가져오기",
|
"import_json": "JSON에서 가져오기",
|
||||||
"import_overwrite": "가져오기(데이터 덮어쓰기)",
|
"import_overwrite": "가져오기(데이터 덮어쓰기)",
|
||||||
"inspect": "검사",
|
"inspect": "검사",
|
||||||
"label": "라벨 지정",
|
"label": "라벨 지정",
|
||||||
"load": "불러오기",
|
"load": "불러오기",
|
||||||
"load_more": "더 불러오기",
|
"load_more": "더 불러오기",
|
||||||
"manage": "관리하다",
|
"manage": "관리",
|
||||||
"merge": "병합",
|
"merge": "병합",
|
||||||
"new_automation": "+ 새로운 자동화",
|
"new_automation": "+ 새로운 자동화",
|
||||||
"new_group": "+ 새 그룹",
|
"new_group": "+ 새 그룹",
|
||||||
"new_group_tip": "거의 동일한 프로필(같은 형태/시간, 다른 온도 또는 회전)을 그룹화하여 매처가 안정적으로 선택할 수 있도록 합니다",
|
"new_group_tip": "거의 동일한 프로필(같은 형태/시간, 다른 온도 또는 탈수)을 그룹화하여 매처가 안정적으로 선택할 수 있도록 합니다",
|
||||||
"new_phase": "+ 새로운 단계",
|
"new_phase": "+ 새로운 단계",
|
||||||
"new_profile": "+ 새 프로필",
|
"new_profile": "+ 새 프로필",
|
||||||
"new_profile_tip": "기존의 라벨이 지정된 주기 또는 녹음에서 새 프로그램 프로필을 만듭니다",
|
"new_profile_tip": "기존의 라벨이 지정된 주기 또는 기록에서 새 프로그램 프로필을 만듭니다",
|
||||||
"on_cycle_finished": "사이클 완료됨",
|
"on_cycle_finished": "사이클 완료됨",
|
||||||
"on_cycle_started": "주기 시작됨",
|
"on_cycle_started": "주기 시작됨",
|
||||||
"pause_cycle": "정지시키다",
|
"pause_cycle": "일시 중지",
|
||||||
"pause_cycle_tip": "실행 중인 사이클을 일시 중지합니다 – 기기가 중단된 지점부터 재개됩니다",
|
"pause_cycle_tip": "실행 중인 사이클을 일시 중지합니다 – 기기가 중단된 지점부터 재개됩니다",
|
||||||
"pg_apply_device": "장치에 적용",
|
"pg_apply_device": "장치에 적용",
|
||||||
"pg_autofill": "자동 채우기",
|
"pg_autofill": "자동 채우기",
|
||||||
|
"pg_load_calibrated": "조정된 (ML) 불러오기 ({n})",
|
||||||
|
"pg_load_calibrated_tip": "ML 조정된 설정을 플레이그라운드 재정의로 적용합니다",
|
||||||
|
"pg_load_live": "적용 중인 설정 불러오기",
|
||||||
|
"pg_load_live_tip": "통합의 현재 설정을 다시 읽고 플레이그라운드의 편집 내용을 모두 버립니다",
|
||||||
|
"pg_load_suggested": "제안 불러오기 ({n})",
|
||||||
|
"pg_load_suggested_tip": "자동 조정 도구의 현재 제안을 플레이그라운드 재정의로 적용합니다",
|
||||||
|
"pg_preset_delete": "프리셋 삭제",
|
||||||
|
"pg_preset_load": "프리셋 불러오기",
|
||||||
|
"pg_preset_load_tip": "플레이그라운드 값을 이 프리셋으로 바꿉니다(적용 중인 설정은 그대로 유지됩니다)",
|
||||||
|
"pg_preset_save": "프리셋으로 저장",
|
||||||
|
"pg_preset_save_tip": "아래의 모든 값을 이 기기의 이름 있는 프리셋으로 저장합니다",
|
||||||
|
"pg_publish_all": "{n}개를 통합에 적용",
|
||||||
|
"pg_publish_one": "{label}을(를) 통합에 적용",
|
||||||
"play": "재생",
|
"play": "재생",
|
||||||
"process": "프로세스",
|
"process": "처리",
|
||||||
"process_history": "지금 처리하세요",
|
"process_history": "지금 처리",
|
||||||
"process_recording": "녹음 저장",
|
"process_recording": "기록 저장",
|
||||||
"process_tip": "기록된 트레이스를 새 프로필 또는 기존 프로필로 저장합니다",
|
"process_tip": "기록된 트레이스를 새 프로필 또는 기존 프로필로 저장합니다",
|
||||||
"rebuild": "봉투 다시 작성",
|
"rebuild": "엔벨로프 다시 작성",
|
||||||
"rebuild_envelope": "봉투 재구축",
|
"rebuild_envelope": "엔벨로프 재구축",
|
||||||
"rebuild_tip": "라벨이 지정된 주기에서 모든 프로필의 예상 전력 포락선(최소/최대 범위)을 다시 계산합니다 – 새 주기에 라벨을 지정하거나 기존 주기를 수정한 후 실행합니다",
|
"rebuild_tip": "라벨이 지정된 주기에서 모든 프로필의 예상 전력 포락선(최소/최대 범위)을 다시 계산합니다 – 새 주기에 라벨을 지정하거나 기존 주기를 수정한 후 실행합니다",
|
||||||
"rec_start_tip": "기기의 전력 트레이스 기록을 시작합니다 – 주기를 실행하기 직전에 시작합니다",
|
"rec_start_tip": "기기의 전력 트레이스 기록을 시작합니다 – 주기를 실행하기 직전에 시작합니다",
|
||||||
"rec_stop": "멈추다",
|
"rec_stop": "중지",
|
||||||
"rec_stop_tip": "녹음을 중지하고 캡처된 트레이스를 검토를 위해 보관합니다",
|
"rec_stop_tip": "기록을 중지하고 캡처된 트레이스를 검토를 위해 보관합니다",
|
||||||
"record": "녹음 시작",
|
"record": "기록 시작",
|
||||||
"refresh": "새로 고치다",
|
"refresh": "새로 고침",
|
||||||
"refresh_diag_tip": "저장소 통계를 다시 로드합니다",
|
"refresh_diag_tip": "저장소 통계를 다시 로드합니다",
|
||||||
"refresh_logs_tip": "최신 로그 기록을 다시 로드합니다",
|
"refresh_logs_tip": "최신 로그 기록을 다시 로드합니다",
|
||||||
"refresh_settings_tip": "서버에서 설정을 다시 로드합니다",
|
"refresh_settings_tip": "서버에서 설정을 다시 로드합니다",
|
||||||
"relabel": "다시 라벨 지정 ({count})",
|
"relabel": "다시 라벨 지정 ({count})",
|
||||||
"remove": "제거하다",
|
"remove": "제거",
|
||||||
"remove_timer": "타이머 삭제",
|
"remove_timer": "타이머 삭제",
|
||||||
"reset": "다시 놓기",
|
"reset": "재설정",
|
||||||
"reset_ml_models_tip": "미세 조정된 모델을 폐기하고 내장된 모델로 돌아갑니다. WashData는 나중에 다시 학습할 수 있습니다.",
|
"reset_ml_models_tip": "미세 조정된 모델을 폐기하고 내장된 모델로 돌아갑니다. WashData는 나중에 다시 학습할 수 있습니다.",
|
||||||
"reset_to_builtin": "내장 모델로 재설정",
|
"reset_to_builtin": "내장 모델로 재설정",
|
||||||
"reset_to_defaults": "기본값으로 재설정",
|
"reset_to_defaults": "기본값으로 재설정",
|
||||||
@@ -129,7 +190,7 @@
|
|||||||
"run_auto_label": "자동 라벨 실행",
|
"run_auto_label": "자동 라벨 실행",
|
||||||
"run_both": "A 대 B 실행",
|
"run_both": "A 대 B 실행",
|
||||||
"run_simulation": "시뮬레이션 실행",
|
"run_simulation": "시뮬레이션 실행",
|
||||||
"save": "구하다",
|
"save": "저장",
|
||||||
"save_access_control": "액세스 제어 저장",
|
"save_access_control": "액세스 제어 저장",
|
||||||
"save_group": "그룹 저장",
|
"save_group": "그룹 저장",
|
||||||
"save_panel_settings": "패널 설정 저장",
|
"save_panel_settings": "패널 설정 저장",
|
||||||
@@ -138,17 +199,17 @@
|
|||||||
"save_reminders": "알림 저장",
|
"save_reminders": "알림 저장",
|
||||||
"save_review": "리뷰 저장",
|
"save_review": "리뷰 저장",
|
||||||
"save_settings": "설정 저장",
|
"save_settings": "설정 저장",
|
||||||
"select": "선택하다",
|
"select": "선택",
|
||||||
"select_all": "모두 선택",
|
"select_all": "모두 선택",
|
||||||
"select_last20": "최근 20개",
|
"select_last20": "최근 20개",
|
||||||
"select_none": "지우기",
|
"select_none": "지우기",
|
||||||
"show_only": "표시만",
|
"show_only": "표시만",
|
||||||
"skip_setup": "설정 건너뛰기",
|
"skip_setup": "설정 건너뛰기",
|
||||||
"split": "나뉘다",
|
"split": "분할",
|
||||||
"stop": "정지",
|
"stop": "정지",
|
||||||
"submit_correction": "정정사항 제출",
|
"submit_correction": "정정사항 제출",
|
||||||
"train_now": "지금 훈련하세요",
|
"train_now": "지금 훈련",
|
||||||
"trim": "손질",
|
"trim": "다듬기",
|
||||||
"trim_split": "다듬기/분할",
|
"trim_split": "다듬기/분할",
|
||||||
"undo": "실행 취소",
|
"undo": "실행 취소",
|
||||||
"use": "사용",
|
"use": "사용",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "내보내기 다운로드",
|
"download_export": "내보내기 다운로드",
|
||||||
"analyze_import": "파일 분석",
|
"analyze_import": "파일 분석",
|
||||||
"import_selected": "선택 항목 가져오기",
|
"import_selected": "선택 항목 가져오기",
|
||||||
"back": "뒤로"
|
"back": "뒤로",
|
||||||
|
"mute_suggestion": "이 설정 제안 중지",
|
||||||
|
"reset_muted": "뮤트 초기화"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -255,17 +318,17 @@
|
|||||||
"clear_debug": "디버그 추적 지우기",
|
"clear_debug": "디버그 추적 지우기",
|
||||||
"cycle_simulator": "사이클 시뮬레이터",
|
"cycle_simulator": "사이클 시뮬레이터",
|
||||||
"diagnostics_pref": "진단",
|
"diagnostics_pref": "진단",
|
||||||
"display": "표시하다",
|
"display": "표시",
|
||||||
"dtw_inspector": "DTW 검사기",
|
"dtw_inspector": "DTW 검사기",
|
||||||
"export_import": "내보내기/가져오기",
|
"export_import": "내보내기/가져오기",
|
||||||
"getting_started": "시작하기",
|
"getting_started": "시작하기",
|
||||||
"live_power": "라이브 파워",
|
"live_power": "라이브 전력",
|
||||||
"logs": "로그",
|
"logs": "로그",
|
||||||
"logs_diagnostics": "진단",
|
"logs_diagnostics": "진단",
|
||||||
"maintenance": "유지 관리 작업",
|
"maintenance": "유지 관리 작업",
|
||||||
"maintenance_log": "유지보수 기록",
|
"maintenance_log": "유지보수 기록",
|
||||||
"maintenance_reminders": "서비스 알림",
|
"maintenance_reminders": "서비스 알림",
|
||||||
"manual_recording": "수동녹화",
|
"manual_recording": "수동 기록",
|
||||||
"manual_recording_tip": "WashData가 전력 트레이스를 기록하는 동안 의도적으로 사이클을 실행합니다. 기기가 시작되기 직전에 시작하고, 완료되면 중지한 다음 처리하여 이름이 지정된 프로필로 저장합니다.",
|
"manual_recording_tip": "WashData가 전력 트레이스를 기록하는 동안 의도적으로 사이클을 실행합니다. 기기가 시작되기 직전에 시작하고, 완료되면 중지한 다음 처리하여 이름이 지정된 프로필로 저장합니다.",
|
||||||
"ml_learned": "WashData가 배운 것",
|
"ml_learned": "WashData가 배운 것",
|
||||||
"ml_matching_tuning": "프로그램 매칭 미세 조정",
|
"ml_matching_tuning": "프로그램 매칭 미세 조정",
|
||||||
@@ -275,9 +338,10 @@
|
|||||||
"no_automations": "아직 이 장치를 참조하는 자동화가 없습니다.",
|
"no_automations": "아직 이 장치를 참조하는 자동화가 없습니다.",
|
||||||
"panel_settings": "패널 설정",
|
"panel_settings": "패널 설정",
|
||||||
"param_sweep": "매개변수 스윕",
|
"param_sweep": "매개변수 스윕",
|
||||||
|
"pg_settings_source": "설정 출처",
|
||||||
"phase_catalog": "단계 카탈로그",
|
"phase_catalog": "단계 카탈로그",
|
||||||
"playground": "플레이그라운드",
|
"playground": "플레이그라운드",
|
||||||
"process_history": "공정 이력",
|
"process_history": "기록 처리",
|
||||||
"settings_history": "설정 기록",
|
"settings_history": "설정 기록",
|
||||||
"status": "상태",
|
"status": "상태",
|
||||||
"status_graph": "상태 그래프",
|
"status_graph": "상태 그래프",
|
||||||
@@ -300,12 +364,12 @@
|
|||||||
"poor": "⚠ 프로파일 품질: 불량"
|
"poor": "⚠ 프로파일 품질: 불량"
|
||||||
},
|
},
|
||||||
"lbl": {
|
"lbl": {
|
||||||
"actions": "행위",
|
"actions": "작업",
|
||||||
"activity": "활동",
|
"activity": "활동",
|
||||||
"administrators": "관리자",
|
"administrators": "관리자",
|
||||||
"aria_compare_chart": "사이클 비교 그래프",
|
"aria_compare_chart": "사이클 비교 그래프",
|
||||||
"aria_cycle_chart": "사이클 전력 곡선",
|
"aria_cycle_chart": "사이클 전력 곡선",
|
||||||
"aria_envelope_chart": "프로필 전력 봉투 그래프",
|
"aria_envelope_chart": "프로필 전력 엔벨로프 그래프",
|
||||||
"aria_phase_chart": "단계 편집기 그래프",
|
"aria_phase_chart": "단계 편집기 그래프",
|
||||||
"aria_playground_chart": "드래그 가능한 감지 임계값이 있는 사이클 전력 곡선",
|
"aria_playground_chart": "드래그 가능한 감지 임계값이 있는 사이클 전력 곡선",
|
||||||
"aria_power_chart": "전력 소비 그래프",
|
"aria_power_chart": "전력 소비 그래프",
|
||||||
@@ -325,9 +389,9 @@
|
|||||||
"cohesion_low": "⚠ 낮은 응집도 {pct}%",
|
"cohesion_low": "⚠ 낮은 응집도 {pct}%",
|
||||||
"compare_profiles": "프로필과 비교",
|
"compare_profiles": "프로필과 비교",
|
||||||
"concurrency": "동시 실행 수",
|
"concurrency": "동시 실행 수",
|
||||||
"confidence": "신뢰",
|
"confidence": "신뢰도",
|
||||||
"confidence_threshold": "신뢰도 임계값",
|
"confidence_threshold": "신뢰도 임계값",
|
||||||
"correct_duration": "올바른 기간(최소, 선택 사항)",
|
"correct_duration": "올바른 기간(분, 선택 사항)",
|
||||||
"correct_profile": "올바른 프로필",
|
"correct_profile": "올바른 프로필",
|
||||||
"correlation": "상관관계",
|
"correlation": "상관관계",
|
||||||
"cost": "비용",
|
"cost": "비용",
|
||||||
@@ -355,7 +419,7 @@
|
|||||||
"dtw_ddtw": "DDTW 점수",
|
"dtw_ddtw": "DDTW 점수",
|
||||||
"dtw_l1": "L1 점수",
|
"dtw_l1": "L1 점수",
|
||||||
"dtw_matched_profile": "(사이클의 일치 프로필)",
|
"dtw_matched_profile": "(사이클의 일치 프로필)",
|
||||||
"duration": "지속",
|
"duration": "지속 시간",
|
||||||
"duration_agreement": "지속 시간 일치도",
|
"duration_agreement": "지속 시간 일치도",
|
||||||
"emphasis": "중요성",
|
"emphasis": "중요성",
|
||||||
"enable_access_control": "사용자별 액세스 제어 활성화",
|
"enable_access_control": "사용자별 액세스 제어 활성화",
|
||||||
@@ -368,9 +432,9 @@
|
|||||||
"file_kb": "파일(KB)",
|
"file_kb": "파일(KB)",
|
||||||
"final_score": "최종 점수",
|
"final_score": "최종 점수",
|
||||||
"from": "시작",
|
"from": "시작",
|
||||||
"gap_s": "간격(들)",
|
"gap_s": "간격(초)",
|
||||||
"group_name": "그룹 이름",
|
"group_name": "그룹 이름",
|
||||||
"head_trim": "헤드 트림(들)",
|
"head_trim": "헤드 트림(초)",
|
||||||
"health": "건강",
|
"health": "건강",
|
||||||
"hide_tabs": "관리자가 아닌 사용자를 위한 탭 숨기기",
|
"hide_tabs": "관리자가 아닌 사용자를 위한 탭 숨기기",
|
||||||
"in_use": "사용 중",
|
"in_use": "사용 중",
|
||||||
@@ -380,7 +444,7 @@
|
|||||||
"last_checked": "마지막 확인:",
|
"last_checked": "마지막 확인:",
|
||||||
"load_from_file": "파일에서 로드",
|
"load_from_file": "파일에서 로드",
|
||||||
"mae_score": "MAE 점수",
|
"mae_score": "MAE 점수",
|
||||||
"manual_duration": "수동 기간(최소, 선택 사항)",
|
"manual_duration": "수동 기간(분, 선택 사항)",
|
||||||
"match": "매칭",
|
"match": "매칭",
|
||||||
"members": "구성원",
|
"members": "구성원",
|
||||||
"metric": "지표",
|
"metric": "지표",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "매칭 점수",
|
"pg_match_score": "매칭 점수",
|
||||||
"pg_pct_of": "{total}개 중 {p}%",
|
"pg_pct_of": "{total}개 중 {p}%",
|
||||||
"pg_poor_match": "불량 매칭",
|
"pg_poor_match": "불량 매칭",
|
||||||
|
"pg_preset": "플레이그라운드 프리셋",
|
||||||
|
"pg_preset_name": "새 프리셋 이름",
|
||||||
|
"pg_preset_none": "프리셋 선택…",
|
||||||
"pg_strong_match": "강한 매칭",
|
"pg_strong_match": "강한 매칭",
|
||||||
"pg_tile_ambiguous": "모호함",
|
"pg_tile_ambiguous": "모호함",
|
||||||
"pg_tile_ambiguous_tip": "두 프로그램이 거의 동점인 사이클",
|
"pg_tile_ambiguous_tip": "두 프로그램이 거의 동점인 사이클",
|
||||||
@@ -427,17 +494,17 @@
|
|||||||
"phase_name": "이름",
|
"phase_name": "이름",
|
||||||
"phase_timeline": "단계 타임라인",
|
"phase_timeline": "단계 타임라인",
|
||||||
"power": "전력",
|
"power": "전력",
|
||||||
"profile": "윤곽",
|
"profile": "프로필",
|
||||||
"profile_index": "프로필 번호 →",
|
"profile_index": "프로필 번호 →",
|
||||||
"profile_name": "프로필 이름",
|
"profile_name": "프로필 이름",
|
||||||
"program": "프로그램",
|
"program": "프로그램",
|
||||||
"program_tip": "현재 사이클에 매칭되는 프로파일을 재정의합니다. 자동 감지를 통해 통합이 최적의 일치를 자동으로 선택합니다. 자동 감지가 잘못되었거나 실행 중인 프로그램을 알 때 특정 프로그램을 고정하여 강제 일치시킵니다.",
|
"program_tip": "현재 사이클에 매칭되는 프로파일을 재정의합니다. 자동 감지를 통해 통합이 최적의 일치를 자동으로 선택합니다. 자동 감지가 잘못되었거나 실행 중인 프로그램을 알 때 특정 프로그램을 고정하여 강제 일치시킵니다.",
|
||||||
"progress": "진전",
|
"progress": "진행률",
|
||||||
"raw_socket": "원시 소켓",
|
"raw_socket": "원시 소켓",
|
||||||
"read_only": "읽기 전용",
|
"read_only": "읽기 전용",
|
||||||
"ref_cycle": "참조 주기(선택 사항)",
|
"ref_cycle": "참조 주기(선택 사항)",
|
||||||
"refresh_interval": "새로 고침 간격(초)",
|
"refresh_interval": "새로 고침 간격(초)",
|
||||||
"remaining": "남은",
|
"remaining": "남은 시간",
|
||||||
"reminder_every": "알림 주기 (사이클)",
|
"reminder_every": "알림 주기 (사이클)",
|
||||||
"remove_label": "- 라벨 제거 -",
|
"remove_label": "- 라벨 제거 -",
|
||||||
"rename_profile": "프로필 이름 바꾸기",
|
"rename_profile": "프로필 이름 바꾸기",
|
||||||
@@ -446,7 +513,7 @@
|
|||||||
"save_mode": "저장 모드",
|
"save_mode": "저장 모드",
|
||||||
"score": "점수",
|
"score": "점수",
|
||||||
"score_breakdown": "점수 세부 내역",
|
"score_breakdown": "점수 세부 내역",
|
||||||
"seconds_from_start": "시작부터 몇 초",
|
"seconds_from_start": "시작부터 경과 시간(초)",
|
||||||
"select_profile": "프로필 선택",
|
"select_profile": "프로필 선택",
|
||||||
"setting": "설정",
|
"setting": "설정",
|
||||||
"settings_a": "설정 A (현재)",
|
"settings_a": "설정 A (현재)",
|
||||||
@@ -465,12 +532,12 @@
|
|||||||
"stage3": "3단계 – DTW",
|
"stage3": "3단계 – DTW",
|
||||||
"stage4": "4단계 – 일치도",
|
"stage4": "4단계 – 일치도",
|
||||||
"status": "상태",
|
"status": "상태",
|
||||||
"tail_trim": "테일 트림(들)",
|
"tail_trim": "테일 트림(초)",
|
||||||
"timer_auto_pause": "자동 일시중지",
|
"timer_auto_pause": "자동 일시중지",
|
||||||
"timer_min": "분",
|
"timer_min": "분",
|
||||||
"timer_msg_placeholder": "메시지(선택사항, {device}/{program}/{minutes})",
|
"timer_msg_placeholder": "메시지(선택사항, {device}/{program}/{minutes})",
|
||||||
"to": "끝",
|
"to": "끝",
|
||||||
"ungrouped": "그룹 해제됨",
|
"ungrouped": "그룹 없음",
|
||||||
"unlabelled": "라벨이 지정되지 않음",
|
"unlabelled": "라벨이 지정되지 않음",
|
||||||
"unlabelled_paren": "(라벨 없음)",
|
"unlabelled_paren": "(라벨 없음)",
|
||||||
"warp_path": "워프 경로",
|
"warp_path": "워프 경로",
|
||||||
@@ -488,7 +555,7 @@
|
|||||||
"from_start": "시작부터",
|
"from_start": "시작부터",
|
||||||
"to_end": "끝까지",
|
"to_end": "끝까지",
|
||||||
"click_to_select": "클릭하여 선택",
|
"click_to_select": "클릭하여 선택",
|
||||||
"envelope": "봉투",
|
"envelope": "엔벨로프",
|
||||||
"zoom_hint": "스크롤하여 확대 · 더블클릭하여 초기화",
|
"zoom_hint": "스크롤하여 확대 · 더블클릭하여 초기화",
|
||||||
"loading_paren": "(로드 중…)",
|
"loading_paren": "(로드 중…)",
|
||||||
"time_remaining": "~{v} 남음",
|
"time_remaining": "~{v} 남음",
|
||||||
@@ -539,7 +606,7 @@
|
|||||||
"pg_stress_idle_w": "대기 레벨 (W)",
|
"pg_stress_idle_w": "대기 레벨 (W)",
|
||||||
"pg_stress_idle_w_desc": "자동 감지된 대기 전력 하한값을 재정의합니다(자동의 경우 빈칸으로 두세요).",
|
"pg_stress_idle_w_desc": "자동 감지된 대기 전력 하한값을 재정의합니다(자동의 경우 빈칸으로 두세요).",
|
||||||
"pg_stress_toggle": "대기 상태 종료 테스트",
|
"pg_stress_toggle": "대기 상태 종료 테스트",
|
||||||
"pg_stress_toggle_desc": "녹화 종료 후 기기가 대기 전력 수준에서 계속 작동하는 상황을 시뮬레이션합니다 - WashData가 사이클을 중지하는지, 언제 중지하는지 확인합니다.",
|
"pg_stress_toggle_desc": "기록 종료 후 기기가 대기 전력 수준에서 계속 작동하는 상황을 시뮬레이션합니다 - WashData가 사이클을 중지하는지, 언제 중지하는지 확인합니다.",
|
||||||
"pg_sweep_2d": "2D 히트맵",
|
"pg_sweep_2d": "2D 히트맵",
|
||||||
"pg_sweep_param_y": "두 번째 매개변수",
|
"pg_sweep_param_y": "두 번째 매개변수",
|
||||||
"pg_obj_match": "매칭 정확도",
|
"pg_obj_match": "매칭 정확도",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "이름 충돌",
|
"conflict_resolution": "이름 충돌",
|
||||||
"conflict_import_copy": "사본으로 가져오기",
|
"conflict_import_copy": "사본으로 가져오기",
|
||||||
"conflict_keep_mine": "내 것 유지",
|
"conflict_keep_mine": "내 것 유지",
|
||||||
"conflict_overwrite": "덮어쓰기"
|
"conflict_overwrite": "덮어쓰기",
|
||||||
|
"font_size": "패널 글꼴 크기"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "모든 레벨",
|
"all_levels": "모든 레벨",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "최적 값 적용: {label} = {value}?",
|
"pg_apply_confirm": "최적 값 적용: {label} = {value}?",
|
||||||
"pg_canvas_empty": "위에서 사이클을 선택한 다음 불러오기를 눌러 전력 트레이스를 확인하세요.",
|
"pg_canvas_empty": "위에서 사이클을 선택한 다음 불러오기를 눌러 전력 트레이스를 확인하세요.",
|
||||||
"pg_chart_caption": "{param} 값에 따른 감지/매칭률",
|
"pg_chart_caption": "{param} 값에 따른 감지/매칭률",
|
||||||
|
"pg_ctrl_intro": "값은 이 기기에 적용 중인 통합 설정에서 시작합니다. 편집한 내용은 적용하기 전까지 플레이그라운드에만 남습니다.",
|
||||||
|
"pg_live_unavailable": "적용 중인 설정을 가져올 수 없어 기본값을 표시합니다.",
|
||||||
|
"pg_load_live_confirm": "플레이그라운드 편집 {n}개를 버리고 통합의 현재 설정을 다시 불러오시겠습니까?",
|
||||||
"pg_match_rate": "{total}개 사이클에서 {pct}% 매칭률",
|
"pg_match_rate": "{total}개 사이클에서 {pct}% 매칭률",
|
||||||
|
"pg_matches_live": "적용 중인 설정과 동일",
|
||||||
|
"pg_n_changed": "적용 중인 설정과 {n}개 다름",
|
||||||
|
"pg_sugg_none": "모든 제안이 현재 설정과 이미 일치합니다",
|
||||||
|
"pg_preset_delete_confirm": "프리셋 \"{name}\"을(를) 삭제하시겠습니까?",
|
||||||
|
"pg_preset_limit": "프리셋 개수 제한에 도달했습니다({n})",
|
||||||
|
"pg_preset_overwrite": "프리셋 \"{name}\"을(를) 덮어쓰시겠습니까?",
|
||||||
|
"pg_publish_one_confirm": "{label} = {value}을(를) 이 기기의 설정에 저장하시겠습니까?",
|
||||||
"pg_restart_note": "시뮬레이션 도구를 활성화하려면 Home Assistant를 다시 시작하세요.",
|
"pg_restart_note": "시뮬레이션 도구를 활성화하려면 Home Assistant를 다시 시작하세요.",
|
||||||
"pg_sim_progress": "{done} / {total} 사이클",
|
"pg_sim_progress": "{done} / {total} 사이클",
|
||||||
"pg_starting": "시작 중…",
|
"pg_starting": "시작 중…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "기간이 짧아지는 추세({pct}%/주기) – 최근 평균 {avg}",
|
"trend_duration_shorter": "기간이 짧아지는 추세({pct}%/주기) – 최근 평균 {avg}",
|
||||||
"trend_energy_down": "에너지 감소 추세({pct}%/주기)",
|
"trend_energy_down": "에너지 감소 추세({pct}%/주기)",
|
||||||
"trend_energy_up": "에너지 상승 추세({pct}%/주기) – 최근 평균 {avg}",
|
"trend_energy_up": "에너지 상승 추세({pct}%/주기) – 최근 평균 {avg}",
|
||||||
|
"trim_destructive_confirm": "사이클의 {pct}%만 남으며 이 작업은 취소할 수 없습니다. 계속하시겠습니까?",
|
||||||
"trim_intro": "빨간색 핸들을 드래그하거나 값을 입력합니다. 창 밖의 모든 것이 제거됩니다.",
|
"trim_intro": "빨간색 핸들을 드래그하거나 값을 입력합니다. 창 밖의 모든 것이 제거됩니다.",
|
||||||
"tuning_suggestions_available": "관찰된 주기에서 사용할 수 있는 {count} 조정 제안입니다. 관련 필드 옆에 표시됩니다.",
|
"tuning_suggestions_available": "관찰된 주기에서 사용할 수 있는 {count} 조정 제안입니다. 관련 필드 옆에 표시됩니다.",
|
||||||
"unsure_detected_prefix": "WashData가 감지되었는지 확실하지 않습니다.",
|
"unsure_detected_prefix": "WashData가 감지되었는지 확실하지 않습니다.",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "가져온 항목이 추가되며 로컬 데이터는 손실되지 않습니다. 이름 충돌은 아래에서 해결합니다.",
|
"merge_hint": "가져온 항목이 추가되며 로컬 데이터는 손실되지 않습니다. 이름 충돌은 아래에서 해결합니다.",
|
||||||
"replace_warn": "선택한 각 범주는 삭제되고 파일 내용으로 교체됩니다. 선택하지 않은 범주는 그대로 유지됩니다.",
|
"replace_warn": "선택한 각 범주는 삭제되고 파일 내용으로 교체됩니다. 선택하지 않은 범주는 그대로 유지됩니다.",
|
||||||
"dest_reference_hint": "가져온 사이클은 프로그램 인식만 개선하며 사용량/에너지 통계에는 영향을 주지 않습니다.",
|
"dest_reference_hint": "가져온 사이클은 프로그램 인식만 개선하며 사용량/에너지 통계에는 영향을 주지 않습니다.",
|
||||||
"dest_real_history_hint": "가져온 사이클은 이 기기 자체의 기록으로 집계되어 에너지/사용량 통계에 반영됩니다. 기기 하나를 새 설치 환경으로 옮길 때 사용하세요."
|
"dest_real_history_hint": "가져온 사이클은 이 기기 자체의 기록으로 집계되어 에너지/사용량 통계에 반영됩니다. 기기 하나를 새 설치 환경으로 옮길 때 사용하세요.",
|
||||||
|
"sug_muted": "이 설정은 더 이상 제안되지 않습니다",
|
||||||
|
"sug_mute_failed": "제안을 음소거할 수 없습니다",
|
||||||
|
"sug_unmuted_all": "뮤트된 제안을 초기화했습니다",
|
||||||
|
"n_suggestions_muted": "{count}개 뮤트됨. 자동 튜너가 이 설정들을 제안하지 않습니다.",
|
||||||
|
"font_size_hint": "이 패널의 모든 내용을 크거나 작게 표시합니다. 이 기기의 내 계정에 적용됩니다."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
"completion_min_seconds": "실제 사이클로 인정되는 최단 실행",
|
"completion_min_seconds": "실제 사이클로 인정되는 최단 실행",
|
||||||
@@ -950,7 +1034,8 @@
|
|||||||
"dtw_ddtw_scale": "Stage 3: DDTW 반포화 거리; 작을수록 형상에 민감(기본값 30)",
|
"dtw_ddtw_scale": "Stage 3: DDTW 반포화 거리; 작을수록 형상에 민감(기본값 30)",
|
||||||
"dtw_refine_top_n": "Stage 3: DTW가 재점수화하는 후보 수; 올바른 프로파일이 4-5위면 7-9로 높임(기본값 5)",
|
"dtw_refine_top_n": "Stage 3: DTW가 재점수화하는 후보 수; 올바른 프로파일이 4-5위면 7-9로 높임(기본값 5)",
|
||||||
"duration_scale": "Stage 4: 지속 시간 일치 점수가 반으로 줄어드는 로그 비율; 작을수록 엄격한 패널티(기본값 0.175)",
|
"duration_scale": "Stage 4: 지속 시간 일치 점수가 반으로 줄어드는 로그 비율; 작을수록 엄격한 패널티(기본값 0.175)",
|
||||||
"energy_scale": "Stage 4: 에너지 일치 점수가 반으로 줄어드는 로그 비율; 작을수록 엄격한 패널티(기본값 0.25)"
|
"energy_scale": "Stage 4: 에너지 일치 점수가 반으로 줄어드는 로그 비율; 작을수록 엄격한 패널티(기본값 0.25)",
|
||||||
|
"dishwasher_end_spike_quiet_release": "식기세척기: 예상 소요 시간 이후 사이클 종료 배수 대기가 해제되기 전 조용히 유지되는 초"
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "메인 사이클 후 드럼이 간헐적으로 회전하여 의류 구김을 방지합니다.",
|
"anti_crease": "메인 사이클 후 드럼이 간헐적으로 회전하여 의류 구김을 방지합니다.",
|
||||||
@@ -1037,6 +1122,10 @@
|
|||||||
"phase_eta": {
|
"phase_eta": {
|
||||||
"label": "남은 시간",
|
"label": "남은 시간",
|
||||||
"intro": "사이클 길이가 온도나 탈수에 따라 달라지는 기기를 위한, 단계를 고려한 남은 시간."
|
"intro": "사이클 길이가 온도나 탈수에 따라 달라지는 기기를 위한, 단계를 고려한 남은 시간."
|
||||||
|
},
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "식기세척기",
|
||||||
|
"intro": "식기세척기의 사이클 종료 처리입니다. 식기세척기는 일반적으로 짧은 최종 배수 전에 전력을 거의 소비하지 않는 긴 건조 단계로 끝납니다."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
@@ -1260,6 +1349,10 @@
|
|||||||
"doc": "사이클이 종료된 후 아직 대기 중인 \"머신 언로드\" 알림을 전송하기 몇 분 전입니다. 알림을 비활성화하려면 0을 설정합니다.",
|
"doc": "사이클이 종료된 후 아직 대기 중인 \"머신 언로드\" 알림을 전송하기 몇 분 전입니다. 알림을 비활성화하려면 0을 설정합니다.",
|
||||||
"label": "꺼내기 알림 지연"
|
"label": "꺼내기 알림 지연"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "문을 열거나 알림에서 \"알림 중지\"를 누를 때까지 \"꺼내기 알림 지연\" 분마다 꺼내기 알림을 계속 다시 보냅니다. 문 센서 엔티티가 필요합니다(알림 자체가 필요로 합니다). 해제 버튼은 Home Assistant 컴패니언 앱(모바일) 알림에서 작동합니다.",
|
||||||
|
"label": "문이 열릴 때까지 반복"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "사이클 완료를 선언하기 전에 전원이 꺼진 후 기다리는 시간입니다. 이 창 내에서 전원이 재개되면 주기가 원활하게 계속됩니다. 이로 인해 세탁 단계 사이가 일시 중지됩니다. 식기세척기는 건조 단계가 길기 때문에(20~60분 동안 전원 꺼짐) 전체 세탁+건조를 하나의 주기로 유지하려면 꺼짐 지연이 이를 초과해야 합니다.",
|
"doc": "사이클 완료를 선언하기 전에 전원이 꺼진 후 기다리는 시간입니다. 이 창 내에서 전원이 재개되면 주기가 원활하게 계속됩니다. 이로 인해 세탁 단계 사이가 일시 중지됩니다. 식기세척기는 건조 단계가 길기 때문에(20~60분 동안 전원 꺼짐) 전체 세탁+건조를 하나의 주기로 유지하려면 꺼짐 지연이 이를 초과해야 합니다.",
|
||||||
"label": "오프 지연"
|
"label": "오프 지연"
|
||||||
@@ -1434,6 +1527,30 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "에너지 선명도",
|
"label": "에너지 선명도",
|
||||||
"doc": "Stage 4 에너지 일치 패널티의 날카로움입니다. 작을수록 엄격합니다. 에너지 불일치가 더 큰 영향을 미칩니다. 기본값 0.25는 에너지가 부하에 따라 변하기 때문에 지속 시간 날카로움보다 의도적으로 더 허용적입니다. 에너지 가중치와 함께 사용하세요."
|
"doc": "Stage 4 에너지 일치 패널티의 날카로움입니다. 작을수록 엄격합니다. 에너지 불일치가 더 큰 영향을 미칩니다. 기본값 0.25는 에너지가 부하에 따라 변하기 때문에 지속 시간 날카로움보다 의도적으로 더 허용적입니다. 에너지 가중치와 함께 사용하세요."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "전력 프로파일 간격",
|
||||||
|
"doc": "EMHASS, tibber_prices 등 외부 계획 도구가 사용하는 per-profile power_profile 센서 속성(슬롯당 평균 와트 배열)의 버킷 크기입니다. 작은 버킷은 짧은 전력 급등을 선명하게 유지하고, 큰 버킷은 형태를 완만하게 합니다. 기본값 15분. 읽기 시에만 사용되며 검출에는 영향을 주지 않습니다."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "탭 후 실시간 알림 유지",
|
||||||
|
"doc": "Android 전용. 실시간 진행 알림을 고정(스티키)으로 만들어 탭해도 진행 중인 알림 스레드가 사라지지 않도록 합니다. 꺼져 있으면 탭 시 알림이 사라지는 기본 동작이 유지됩니다."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "실시간 알림 탭 대상",
|
||||||
|
"doc": "Android 전용. 실시간 진행 알림을 탭했을 때 열리는 위치(예: /lovelace/laundry 또는 전체 URL)를 앱 기본 시작 페이지 대신 지정합니다. 기본값으로 두려면 비워 두세요."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "종료 시 자동으로 문 열림",
|
||||||
|
"doc": "세척 후 건조를 위해 자동으로 문이 열리는 식기세척기(AirDry 등)용 설정입니다. 이 기능을 켜면 실행 중인 사이클에서 문이 열려도 사이클이 영구적으로 일시 정지되지 않습니다. 대신 문이 아래의 대기 시간 이상 열려 있으면 WashData가 사이클을 완료로 처리합니다. 잠깐 여는 동작(식기 추가 등)은 무시됩니다. 문 센서 엔티티가 필요합니다."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "문 열림 종료 대기 시간",
|
||||||
|
"doc": "\"종료 시 자동으로 문 열림\"이 켜져 있을 때, WashData가 사이클을 종료하기 전에 문이 열려 있어야 하는 시간입니다. 식기를 빨리 추가하는 경우(바로 닫힘)는 무시하면서도 기기가 문을 열었을 때 신속하게 종료할 수 있을 만큼 짧게 설정합니다(기본값 60초)."
|
||||||
|
},
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "자연 건조 조용 시 해제",
|
||||||
|
"doc": "사이클이 예상 소요 시간을 지난 후, WashData가 최종 배수를 더 이상 기다리지 않고 사이클을 종료하기까지 식기세척기가 조용한 상태(중지 임계값 미만)를 유지해야 하는 시간입니다. 늦게 발생하는 최종 배수 전에 긴 무음 건조 단계가 있고 그 배수가 감지되지 않고 있다면 값을 높이세요. 창을 넓히면 학습된 소요 시간이 예전 평균값에 고정되지 않고 계절적 변동(급수 온도가 낮을수록 사이클이 길어짐)을 따라갈 수 있습니다. 이 설정은 내부의 30분 종료 스파이크 상한에 비해 대기 시간을 단축할 수만 있고 연장하지는 않습니다."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1520,18 +1637,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"active": "활동적인",
|
"active": "활성",
|
||||||
"all_statuses": "모든 상태",
|
"all_statuses": "모든 상태",
|
||||||
"ambiguous": "모호한",
|
"ambiguous": "모호함",
|
||||||
"auto_detect": "자동 감지",
|
"auto_detect": "자동 감지",
|
||||||
"clear": "분명한",
|
"clear": "지우기",
|
||||||
"completed": "완전한",
|
"completed": "완료됨",
|
||||||
"fine_tuning": "지금 미세 조정 중…",
|
"fine_tuning": "지금 미세 조정 중…",
|
||||||
"force_stopped": "강제 정지됨",
|
"force_stopped": "강제 정지됨",
|
||||||
"idle": "게으른",
|
"idle": "대기",
|
||||||
"interrupted": "중단된",
|
"interrupted": "중단됨",
|
||||||
"ready": "처리 준비 완료",
|
"ready": "처리 준비 완료",
|
||||||
"recording": "녹화 중",
|
"recording": "기록 중",
|
||||||
"training": "훈련 중…",
|
"training": "훈련 중…",
|
||||||
"saving": "저장 중…",
|
"saving": "저장 중…",
|
||||||
"rebuilding": "재구축 중…",
|
"rebuilding": "재구축 중…",
|
||||||
@@ -1544,12 +1661,12 @@
|
|||||||
"imported": "가져옴"
|
"imported": "가져옴"
|
||||||
},
|
},
|
||||||
"tab": {
|
"tab": {
|
||||||
"advanced": "고급의",
|
"advanced": "고급",
|
||||||
"diagnostics": "진단",
|
"diagnostics": "진단",
|
||||||
"history": "사이클",
|
"history": "사이클",
|
||||||
"ml": "ML 훈련",
|
"ml": "ML 훈련",
|
||||||
"pp_cleanup": "대청소",
|
"pp_cleanup": "정리",
|
||||||
"pp_manage": "관리하다",
|
"pp_manage": "관리",
|
||||||
"pp_overview": "개요",
|
"pp_overview": "개요",
|
||||||
"pp_phases": "단계",
|
"pp_phases": "단계",
|
||||||
"profiles": "프로필",
|
"profiles": "프로필",
|
||||||
@@ -1604,6 +1721,10 @@
|
|||||||
"name_required": "이름이 필요합니다",
|
"name_required": "이름이 필요합니다",
|
||||||
"no_split_found": "분할할 유휴 간격이 발견되지 않았습니다.",
|
"no_split_found": "분할할 유휴 간격이 발견되지 않았습니다.",
|
||||||
"panel_settings_saved": "패널 설정이 저장되었습니다.",
|
"panel_settings_saved": "패널 설정이 저장되었습니다.",
|
||||||
|
"pg_preset_loaded": "프리셋 \"{name}\"을(를) 불러왔습니다",
|
||||||
|
"pg_preset_saved": "프리셋 \"{name}\"을(를) 저장했습니다",
|
||||||
|
"pg_sugg_loaded": "{n}개 제안 값을 적용했습니다 - 플레이그라운드에서 비교해 보세요",
|
||||||
|
"pg_sugg_ml_loaded": "{n}개 ML 조정 값을 적용했습니다 - 플레이그라운드에서 비교해 보세요",
|
||||||
"phase_name_required": "단계 이름은 필수 항목입니다.",
|
"phase_name_required": "단계 이름은 필수 항목입니다.",
|
||||||
"phase_updated": "단계가 업데이트되었습니다.",
|
"phase_updated": "단계가 업데이트되었습니다.",
|
||||||
"phases_saved": "저장된 단계",
|
"phases_saved": "저장된 단계",
|
||||||
@@ -1751,6 +1872,7 @@
|
|||||||
"min_active": "마지막 사이클에서 관측된 최소 활성 전력({min}W) 기반.",
|
"min_active": "마지막 사이클에서 관측된 최소 활성 전력({min}W) 기반.",
|
||||||
"min_duration_ratio": "프로그램을 사이클 초반에 식별할 수 있도록 최대한 낮게 유지합니다. 신뢰도와 모호성 게이트가 조기 확정을 방지합니다.",
|
"min_duration_ratio": "프로그램을 사이클 초반에 식별할 수 있도록 최대한 낮게 유지합니다. 신뢰도와 모호성 게이트가 조기 확정을 방지합니다.",
|
||||||
"min_off_gap": "관측된 {gaps}개 사이클 간 간격 기반(p05={p05}s). 기기 하한: {floor}s.",
|
"min_off_gap": "관측된 {gaps}개 사이클 간 간격 기반(p05={p05}s). 기기 하한: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "사이클 내에서 전력이 거의 없는 가장 긴 구간을 넘기도록 설정: {span}s + 60s 버퍼. {cycles}개 정상 사이클에 걸친 {spans}건의 넘긴 간격에서 산출(연속 실행 사이에 두는 최소 간격 {ceiling}s 미만 유지).",
|
||||||
"min_power": "{cycles}개 정상 사이클의 p05 최저 활성 전력({p05}W)의 40%. 꺼짐 게이트를 실제 소비 전력보다 낮게 유지합니다.{excl}",
|
"min_power": "{cycles}개 정상 사이클의 p05 최저 활성 전력({p05}W)의 40%. 꺼짐 게이트를 실제 소비 전력보다 낮게 유지합니다.{excl}",
|
||||||
"ml_auto_label": "품질 모델이 여전히 정상으로 평가한 최저 신뢰도({cycles}개 정상 사이클의 p10 = {p10}).",
|
"ml_auto_label": "품질 모델이 여전히 정상으로 평가한 최저 신뢰도({cycles}개 정상 사이클의 p10 = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} 사이클({pct}%)에서 종료 검출기가 50% 초과로 평가한 일시정지가 있었습니다. {val}회의 종료 확인을 요구합니다.",
|
"ml_end_repeat": "{false}/{total} 사이클({pct}%)에서 종료 검출기가 50% 초과로 평가한 일시정지가 있었습니다. {val}회의 종료 확인을 요구합니다.",
|
||||||
@@ -1767,7 +1889,7 @@
|
|||||||
"thr_batch": "{cycles} 사이클의 p05 최저 활성 전력({p05}W) 바로 위로 유지합니다. 그래서 시작을 최대한 빨리 포착하고, 정지 임계값은 기기의 최저 작동 전력보다 낮게 유지됩니다.",
|
"thr_batch": "{cycles} 사이클의 p05 최저 활성 전력({p05}W) 바로 위로 유지합니다. 그래서 시작을 최대한 빨리 포착하고, 정지 임계값은 기기의 최저 작동 전력보다 낮게 유지됩니다.",
|
||||||
"tol_per_profile": "{profiles}개 프로필({cycles} 사이클)의 프로필별 시간 분산 p75. 편차가 작은 프로필은 불이익을 받지 않습니다.",
|
"tol_per_profile": "{profiles}개 프로필({cycles} 사이클)의 프로필별 시간 분산 p75. 편차가 작은 프로필은 불이익을 받지 않습니다.",
|
||||||
"tol_pooled": "{cycles}개 최근 라벨 사이클의 통합 시간 분산 기반(p95 편차={dev}).",
|
"tol_pooled": "{cycles}개 최근 라벨 사이클의 통합 시간 분산 기반(p95 편차={dev}).",
|
||||||
"watchdog": "안전한 범위에서 최대한 낮게 유지(p95 업데이트 간격 {p95}s의 3배, 최소 30s). 잘못된 정지 없이 멈춤을 빠르게 감지합니다."
|
"watchdog": "안전한 범위에서 최대한 낮게 유지(p95 업데이트 간격 {p95}s보다 약간 큰 값, 최소 30s). 잘못된 정지 없이 멈춤을 빠르게 감지합니다."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "잘못 감지된 사이클 {total}개를 제외했습니다: {parts}.",
|
"summary": "잘못 감지된 사이클 {total}개를 제외했습니다: {parts}.",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Objektas nerastas",
|
||||||
|
"running_long": "Veikia ilgai",
|
||||||
|
"remaining": "liko",
|
||||||
|
"progress": "eiga",
|
||||||
|
"show_time_remaining": "Rodyti likusį laiką",
|
||||||
|
"show_percentage": "Rodyti procentus",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Plytelė (kompaktiška)",
|
||||||
|
"detail": "Detali (išsami)",
|
||||||
|
"glance": "Apžvalga (keli įrenginiai)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pristabdyti",
|
||||||
|
"resume": "Tęsti",
|
||||||
|
"terminate": "Baigti ciklą",
|
||||||
|
"record_start": "Pradėti įrašymą",
|
||||||
|
"record_stop": "Sustabdyti įrašymą",
|
||||||
|
"program": "Programa",
|
||||||
|
"open_panel": "Atidaryti WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Išdėstymas",
|
||||||
|
"entity": "Prietaiso objektas",
|
||||||
|
"entities": "Prietaisai",
|
||||||
|
"title": "Pavadinimas",
|
||||||
|
"icon": "Piktograma",
|
||||||
|
"show_state": "Rodyti būseną",
|
||||||
|
"show_program": "Rodyti programą",
|
||||||
|
"show_progress_bar": "Rodyti eigos juostą",
|
||||||
|
"spin_icon": "Sukti piktogramą veikiant",
|
||||||
|
"display_mode": "Detalių eilutė",
|
||||||
|
"active_color": "Aktyvios spalvos pakeitimas",
|
||||||
|
"show_phase": "Rodyti fazę",
|
||||||
|
"show_energy": "Rodyti energiją ir kainą",
|
||||||
|
"show_anomaly": "Rodyti užsitęsimo įspėjimą",
|
||||||
|
"show_sparkline": "Rodyti tiesioginį galios grafiką",
|
||||||
|
"buttons": "Veiksmų mygtukai",
|
||||||
|
"program_entity": "Programos objektas (pakeitimas)",
|
||||||
|
"time_entity": "Laiko objektas (pakeitimas)",
|
||||||
|
"pct_entity": "Eigos objektas (pakeitimas)",
|
||||||
|
"power_entity": "Galios objektas (pakeitimas)",
|
||||||
|
"tap_action": "Palietimo veiksmas",
|
||||||
|
"hold_action": "Palaikymo veiksmas",
|
||||||
|
"double_tap_action": "Dvigubo palietimo veiksmas"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Aptikta {n} anomalijų (pvz., durys atidarytos ciklo viduryje) – atidarykite, kad pamatytumėte juos diagramoje",
|
"artifact_tip": "Aptikta {n} anomalijų (pvz., durys atidarytos ciklo viduryje) – atidarykite, kad pamatytumėte juos diagramoje",
|
||||||
"auto": "(aptikta automatiškai)",
|
"auto": "(aptikta automatiškai)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Pristabdyti veikiantį ciklą – prietaisas tęsis nuo tos vietos, kur sustojo",
|
"pause_cycle_tip": "Pristabdyti veikiantį ciklą – prietaisas tęsis nuo tos vietos, kur sustojo",
|
||||||
"pg_apply_device": "Taikyti įrenginiui",
|
"pg_apply_device": "Taikyti įrenginiui",
|
||||||
"pg_autofill": "Automatinis užpildymas",
|
"pg_autofill": "Automatinis užpildymas",
|
||||||
|
"pg_load_calibrated": "Įkelti kalibruotus (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Įkelti ML kalibruotus nustatymus kaip bandymų aikštelės perrašymus",
|
||||||
|
"pg_load_live": "Įkelti aktyvius nustatymus",
|
||||||
|
"pg_load_live_tip": "Iš naujo nuskaityti dabartinius integracijos nustatymus ir atmesti visus bandymų aikštelės pakeitimus",
|
||||||
|
"pg_load_suggested": "Įkelti siūlomus ({n})",
|
||||||
|
"pg_load_suggested_tip": "Įkelti dabartines automatinio derintuvo rekomendacijas kaip bandymų aikštelės perrašymus",
|
||||||
|
"pg_preset_delete": "Ištrinti rinkinį",
|
||||||
|
"pg_preset_load": "Įkelti rinkinį",
|
||||||
|
"pg_preset_load_tip": "Pakeisti bandymų aikštelės reikšmes šiuo rinkiniu (aktyvūs nustatymai nekeičiami)",
|
||||||
|
"pg_preset_save": "Išsaugoti kaip rinkinį",
|
||||||
|
"pg_preset_save_tip": "Išsaugoti visas toliau esančias reikšmes kaip pavadintą šio įrenginio nustatymų rinkinį",
|
||||||
|
"pg_publish_all": "Įrašyti į nustatymus ({n})",
|
||||||
|
"pg_publish_one": "Įrašyti „{label}“ į integracijos nustatymus",
|
||||||
"play": "Leisti",
|
"play": "Leisti",
|
||||||
"process": "Apdoroti",
|
"process": "Apdoroti",
|
||||||
"process_history": "Apdorokite dabar",
|
"process_history": "Apdorokite dabar",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Atsisiųsti eksportą",
|
"download_export": "Atsisiųsti eksportą",
|
||||||
"analyze_import": "Analizuoti failą",
|
"analyze_import": "Analizuoti failą",
|
||||||
"import_selected": "Importuoti pasirinktus",
|
"import_selected": "Importuoti pasirinktus",
|
||||||
"back": "Atgal"
|
"back": "Atgal",
|
||||||
|
"mute_suggestion": "Nebesiūlyti šio nustatymo",
|
||||||
|
"reset_muted": "Atstatyti nutildytus"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Dar jokia automatika nenurodo šio įrenginio.",
|
"no_automations": "Dar jokia automatika nenurodo šio įrenginio.",
|
||||||
"panel_settings": "Skydelio nustatymai",
|
"panel_settings": "Skydelio nustatymai",
|
||||||
"param_sweep": "Parametrų skenavimas",
|
"param_sweep": "Parametrų skenavimas",
|
||||||
|
"pg_settings_source": "Nustatymų šaltinis",
|
||||||
"phase_catalog": "Fazių katalogas",
|
"phase_catalog": "Fazių katalogas",
|
||||||
"playground": "Bandymų aikštelė",
|
"playground": "Bandymų aikštelė",
|
||||||
"process_history": "Proceso istorija",
|
"process_history": "Proceso istorija",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "Atitikties balas",
|
"pg_match_score": "Atitikties balas",
|
||||||
"pg_pct_of": "{p}% iš {total}",
|
"pg_pct_of": "{p}% iš {total}",
|
||||||
"pg_poor_match": "Prasta atitiktis",
|
"pg_poor_match": "Prasta atitiktis",
|
||||||
|
"pg_preset": "Bandymų aikštelės rinkinys",
|
||||||
|
"pg_preset_name": "Naujo rinkinio pavadinimas",
|
||||||
|
"pg_preset_none": "Pasirinkite rinkinį…",
|
||||||
"pg_strong_match": "Stipri atitiktis",
|
"pg_strong_match": "Stipri atitiktis",
|
||||||
"pg_tile_ambiguous": "Dviprasmiška",
|
"pg_tile_ambiguous": "Dviprasmiška",
|
||||||
"pg_tile_ambiguous_tip": "Ciklai, kuriuose dvi programos beveik lygios",
|
"pg_tile_ambiguous_tip": "Ciklai, kuriuose dvi programos beveik lygios",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Pavadinimų konfliktai",
|
"conflict_resolution": "Pavadinimų konfliktai",
|
||||||
"conflict_import_copy": "Importuoti kaip kopiją",
|
"conflict_import_copy": "Importuoti kaip kopiją",
|
||||||
"conflict_keep_mine": "Išlaikyti manuosius",
|
"conflict_keep_mine": "Išlaikyti manuosius",
|
||||||
"conflict_overwrite": "Perrašyti"
|
"conflict_overwrite": "Perrašyti",
|
||||||
|
"font_size": "Skydelio šrifto dydis"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Visi lygiai",
|
"all_levels": "Visi lygiai",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Taikyti geriausią reikšmę: {label} = {value}?",
|
"pg_apply_confirm": "Taikyti geriausią reikšmę: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Pasirinkite ciklą aukščiau, tada paspauskite „Įkelti“, kad pamatytumėte jo galios kreivę.",
|
"pg_canvas_empty": "Pasirinkite ciklą aukščiau, tada paspauskite „Įkelti“, kad pamatytumėte jo galios kreivę.",
|
||||||
"pg_chart_caption": "Aptikimo / atitikties rodiklis pagal {param} reikšmes",
|
"pg_chart_caption": "Aptikimo / atitikties rodiklis pagal {param} reikšmes",
|
||||||
|
"pg_ctrl_intro": "Reikšmės imamos iš aktyvių šio įrenginio integracijos nustatymų. Pakeitimai lieka bandymų aikštelėje, kol jų neįrašysite į nustatymus.",
|
||||||
|
"pg_live_unavailable": "Aktyvūs nustatymai nepasiekiami, rodomos numatytosios reikšmės.",
|
||||||
|
"pg_load_live_confirm": "Atmesti bandymų aikštelės pakeitimus ({n}) ir iš naujo įkelti dabartinius integracijos nustatymus?",
|
||||||
"pg_match_rate": "{pct}% atitikties rodiklis iš {total} ciklų",
|
"pg_match_rate": "{pct}% atitikties rodiklis iš {total} ciklų",
|
||||||
|
"pg_matches_live": "Sutampa su aktyviais nustatymais",
|
||||||
|
"pg_n_changed": "Skirtumų nuo aktyvių nustatymų: {n}",
|
||||||
|
"pg_sugg_none": "Visi pasiūlymai jau atitinka dabartinius nustatymus",
|
||||||
|
"pg_preset_delete_confirm": "Ištrinti rinkinį „{name}“?",
|
||||||
|
"pg_preset_limit": "Pasiekta rinkinių riba ({n})",
|
||||||
|
"pg_preset_overwrite": "Perrašyti rinkinį „{name}“?",
|
||||||
|
"pg_publish_one_confirm": "Įrašyti {label} = {value} į šio įrenginio nustatymus?",
|
||||||
"pg_restart_note": "Iš naujo paleiskite „Home Assistant“, kad įjungtumėte simuliavimo įrankius.",
|
"pg_restart_note": "Iš naujo paleiskite „Home Assistant“, kad įjungtumėte simuliavimo įrankius.",
|
||||||
"pg_sim_progress": "{done} / {total} ciklai",
|
"pg_sim_progress": "{done} / {total} ciklai",
|
||||||
"pg_starting": "Pradedama…",
|
"pg_starting": "Pradedama…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Trukmė mažėja ({pct} %/ciklas) – pastaruoju metu vid. {avg}",
|
"trend_duration_shorter": "Trukmė mažėja ({pct} %/ciklas) – pastaruoju metu vid. {avg}",
|
||||||
"trend_energy_down": "Energijos mažėjimas ({pct} % per ciklą)",
|
"trend_energy_down": "Energijos mažėjimas ({pct} % per ciklą)",
|
||||||
"trend_energy_up": "Energijos augimas ({pct} % per ciklą) – pastaruoju metu vid. {avg}",
|
"trend_energy_up": "Energijos augimas ({pct} % per ciklą) – pastaruoju metu vid. {avg}",
|
||||||
|
"trim_destructive_confirm": "Bus išsaugota tik {pct}% ciklo ir to nebus galima atšaukti. Tęsti?",
|
||||||
"trim_intro": "Vilkite raudonas rankenas arba įveskite vertes. Viskas, kas yra už lango, pašalinama.",
|
"trim_intro": "Vilkite raudonas rankenas arba įveskite vertes. Viskas, kas yra už lango, pašalinama.",
|
||||||
"tuning_suggestions_available": "Galimas {count} derinimo pasiūlymas iš stebimų ciklų. Jie rodomi šalia atitinkamų laukų.",
|
"tuning_suggestions_available": "Galimas {count} derinimo pasiūlymas iš stebimų ciklų. Jie rodomi šalia atitinkamų laukų.",
|
||||||
"unsure_detected_prefix": "„WashData“ nėra tikras, kad aptiko",
|
"unsure_detected_prefix": "„WashData“ nėra tikras, kad aptiko",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "Importuoti elementai pridedami; jokie vietiniai duomenys neprarandami. Pavadinimų konfliktai sprendžiami toliau.",
|
"merge_hint": "Importuoti elementai pridedami; jokie vietiniai duomenys neprarandami. Pavadinimų konfliktai sprendžiami toliau.",
|
||||||
"replace_warn": "Kiekviena pažymėta kategorija ištrinama ir pakeičiama iš failo. Nepažymėtos kategorijos lieka nepaliestos.",
|
"replace_warn": "Kiekviena pažymėta kategorija ištrinama ir pakeičiama iš failo. Nepažymėtos kategorijos lieka nepaliestos.",
|
||||||
"dest_reference_hint": "Importuoti ciklai tik pagerina programų atpažinimą ir niekada neveikia naudojimo/energijos statistikos.",
|
"dest_reference_hint": "Importuoti ciklai tik pagerina programų atpažinimą ir niekada neveikia naudojimo/energijos statistikos.",
|
||||||
"dest_real_history_hint": "Importuoti ciklai laikomi šio prietaiso paties istorija ir papildo energijos/naudojimo statistiką. Naudokite perkeliant vieną prietaisą į naują įdiegimą."
|
"dest_real_history_hint": "Importuoti ciklai laikomi šio prietaiso paties istorija ir papildo energijos/naudojimo statistiką. Naudokite perkeliant vieną prietaisą į naują įdiegimą.",
|
||||||
|
"sug_muted": "Šio nustatymo daugiau nebesiūlys",
|
||||||
|
"sug_mute_failed": "Nepavyko nutildyti pasiūlymo",
|
||||||
|
"sug_unmuted_all": "Nutildyti pasiūlymai atstatyti",
|
||||||
|
"n_suggestions_muted": "{count} nutildyti; automatinis derintuvas jų nebesiūlys.",
|
||||||
|
"font_size_hint": "Padidinkite arba sumažinkite visą tekstą šiame skydelyje. Galioja jūsų paskyrai šiame įrenginyje."
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Po pagrindinio ciklo būgnas intermitiškai sukasi, kad išvengtų audinių raukšlių.",
|
"anti_crease": "Po pagrindinio ciklo būgnas intermitiškai sukasi, kad išvengtų audinių raukšlių.",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Netinkamas naudoti"
|
"unusable": "Netinkamas naudoti"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Indaplovė",
|
||||||
|
"intro": "Ciklo pabaigos apdorojimas indaplovėms, kurios paprastai baigiasi ilga, beveik tylia džiovinimo faze prieš trumpą galutinį vandens išleidimą."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Apsaugos nuo raukšlių režimas aptinka mažos galios sukimosi impulsus po pagrindinės fazės ir prideda juos prie baigto ciklo.",
|
"intro": "Apsaugos nuo raukšlių režimas aptinka mažos galios sukimosi impulsus po pagrindinės fazės ir prideda juos prie baigto ciklo.",
|
||||||
"label": "Apsauga nuo raukšlių"
|
"label": "Apsauga nuo raukšlių"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Pasyvaus džiovinimo tylusis atleidimas",
|
||||||
|
"doc": "Kai ciklas viršija numatytą trukmę, kiek laiko indaplovė turi išlikti tyli (žemiau Sustabdymo slenkstis) prieš tai, kai WashData nustoja laukti galutinio vandens išleidimo ir užbaigia ciklą. Padidinkite, jei jūsų aparatas turi ilgą tylią džiovinimo fazę prieš vėlyvą galutinį vandens išleidimą, kuris praleidžiamas - platesnis langas leidžia išmoktai trukmei sekti sezoninį poslinkį (šaltesnis įleidžiamas vanduo = ilgesni ciklai), užuot užsifiksavus ties senuoju vidurkiu. Jis gali tik sutrumpinti laukimą, palyginti su vidiniu 30 minučių pabaigos smailės ribojimu, bet niekada jo nepailgina."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Atpažinkite trumpus mažos galios būgninius impulsus, kuriuos džiovyklė skleidžia po pagrindinės šildymo fazės, ir laikykite juos prijungtus prie baigto ciklo, o ne skaitykite juos kaip naujus ciklus.",
|
"doc": "Atpažinkite trumpus mažos galios būgninius impulsus, kuriuos džiovyklė skleidžia po pagrindinės šildymo fazės, ir laikykite juos prijungtus prie baigto ciklo, o ne skaitykite juos kaip naujus ciklus.",
|
||||||
"label": "Įjungti apsaugą nuo raukšlių"
|
"label": "Įjungti apsaugą nuo raukšlių"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Minutės po ciklo pabaigos prieš siunčiant vis dar laukiantį priminimą „iškrauti mašiną“. Norėdami išjungti priminimą, nustatykite 0.",
|
"doc": "Minutės po ciklo pabaigos prieš siunčiant vis dar laukiantį priminimą „iškrauti mašiną“. Norėdami išjungti priminimą, nustatykite 0.",
|
||||||
"label": "Iškrovimo priminimo delsimas"
|
"label": "Iškrovimo priminimo delsimas"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Iškrovimo priminimas pakartotinai siunčiamas kas \"Iškrovimo priminimo delsimas\" minučių, kol neatidarysite durų arba pranešime nepaliesite \"Nustoti priminti\". Reikalingas Durų jutiklio objektas (kaip ir pačiam priminimui). Atmetimo mygtukas veikia Home Assistant mobiliosios (companion) programėlės pranešimuose.",
|
||||||
|
"label": "Kartoti, kol atsidarys durys"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Laikas palaukti, kai nukrenta galia, prieš paskelbiant, kad ciklas baigtas. Jei maitinimas atnaujinamas šiame lange, ciklas tęsiasi sklandžiai – tai sujungia pauzes tarp plovimo etapų. Indaplovės turi ilgas džiovinimo fazes (maitinimas išjungiamas 20–60 min.), todėl išjungimo delsa turi būti didesnė už tą, kad visas plovimas+džiovinimas išliktų kaip vienas ciklas.",
|
"doc": "Laikas palaukti, kai nukrenta galia, prieš paskelbiant, kad ciklas baigtas. Jei maitinimas atnaujinamas šiame lange, ciklas tęsiasi sklandžiai – tai sujungia pauzes tarp plovimo etapų. Indaplovės turi ilgas džiovinimo fazes (maitinimas išjungiamas 20–60 min.), todėl išjungimo delsa turi būti didesnė už tą, kad visas plovimas+džiovinimas išliktų kaip vienas ciklas.",
|
||||||
"label": "Išjungimo delsimas"
|
"label": "Išjungimo delsimas"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energijos ryškumas",
|
"label": "Energijos ryškumas",
|
||||||
"doc": "4 etapo energijos atitikimo bausmės ryškumas. Mažesnis = griežtesnis: energijos neatitikimas kenkia labiau. Numatytoji 0,25 sąmoningai atlaidesnė nei trukmės ryškumas, nes energija kinta priklausomai nuo apkrovos. Naudokite su Energijos svoriu."
|
"doc": "4 etapo energijos atitikimo bausmės ryškumas. Mažesnis = griežtesnis: energijos neatitikimas kenkia labiau. Numatytoji 0,25 sąmoningai atlaidesnė nei trukmės ryškumas, nes energija kinta priklausomai nuo apkrovos. Naudokite su Energijos svoriu."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Galios profilio intervalas",
|
||||||
|
"doc": "Kibirio dydis profilio power_profile jutiklio atributui (plokščias per laiko atkarpas vidutinių vatų masyvas, naudojamas išorinių planavimo sistemų, pvz., EMHASS ir tibber_prices). Mažesni kibirai išlaiko trumpus galios šuolius aštresniais; didesni kibirai lygina formą. Numatytasis 15 min. Tik skaitymo metu; neturi įtakos aptikimui."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Išlaikyti tiesioginį pranešimą po paspaudimo",
|
||||||
|
"doc": "Tik Android. Padaryti tiesioginį pažangos pranešimą patvariu (klijuojamu), kad paspaudus nebus atsisakyta vykstančios gijos. Išjungus paliekama numatytoji elgsena, kai paspaudus pranešimas atsisakomas."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Tiesioginio pranešimo paspaudimo tikslas",
|
||||||
|
"doc": "Tik Android. Kur atidaroma paspaudus tiesioginės pažangos pranešimą (pvz., /lovelace/laundry arba visas URL), o ne programos pradžios puslapis. Palikite tuščią, kad naudotumėte numatytąjį."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Durys automatiškai atsidaromos pabaigoje",
|
||||||
|
"doc": "Indaplovėms, kurios ciklo pabaigoje atidaro duris džiovinimui (AirDry ir panašūs). Įjungus, durų atidarymas veikiančio ciklo metu nebepristabdo jo amžinai; vietoj to, jei durys lieka atviros toliau nurodytą laikotarpį, WashData traktuoja ciklą kaip baigtą. Trumpas atidarymas (dedant indą) ignoruojamas. Reikalingas durų jutiklio objektas."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Durų atidarymo pabaigos laukimas",
|
||||||
|
"doc": "Kiek laiko durys turi likti atviros, kad WashData užbaigtų ciklą, kai įjungta parinktis \"Durys automatiškai atsidaromos pabaigoje\". Pakankamai ilgai, kad ignoruotų greitai dedamą indą (numatytasis 60 s), pakankamai trumpai, kad greitai užbaigtų, kai prietaisas atidaro duris."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Reikalingas vardas",
|
"name_required": "Reikalingas vardas",
|
||||||
"no_split_found": "Nerasta tuščiosios eigos spragų, dėl kurių būtų galima suskaidyti",
|
"no_split_found": "Nerasta tuščiosios eigos spragų, dėl kurių būtų galima suskaidyti",
|
||||||
"panel_settings_saved": "Skydelio nustatymai išsaugoti",
|
"panel_settings_saved": "Skydelio nustatymai išsaugoti",
|
||||||
|
"pg_preset_loaded": "Rinkinys „{name}“ įkeltas",
|
||||||
|
"pg_preset_saved": "Rinkinys „{name}” išsaugotas",
|
||||||
|
"pg_sugg_loaded": "Įkelta {n} siūlomų reikšmių - paleiskite bandymų aikštelę palyginti",
|
||||||
|
"pg_sugg_ml_loaded": "Įkelta {n} ML kalibruotų reikšmių - paleiskite bandymų aikštelę palyginti",
|
||||||
"phase_name_required": "Būtinas fazės pavadinimas",
|
"phase_name_required": "Būtinas fazės pavadinimas",
|
||||||
"phase_updated": "Atnaujintas etapas",
|
"phase_updated": "Atnaujintas etapas",
|
||||||
"phases_saved": "Fazės išsaugotos",
|
"phases_saved": "Fazės išsaugotos",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "Pagrįsta mažiausia aktyvia galia ({min}W), stebėta paskutiniame cikle.",
|
"min_active": "Pagrįsta mažiausia aktyvia galia ({min}W), stebėta paskutiniame cikle.",
|
||||||
"min_duration_ratio": "Paliktas kuo mažesnis, kad programa būtų atpažinta ciklo pradžioje; patikimumo ir dviprasmiškumo slenksčiai neleidžia patvirtinti per anksti.",
|
"min_duration_ratio": "Paliktas kuo mažesnis, kad programa būtų atpažinta ciklo pradžioje; patikimumo ir dviprasmiškumo slenksčiai neleidžia patvirtinti per anksti.",
|
||||||
"min_off_gap": "Pagrįsta {gaps} stebimais tarpcikliniais tarpais (p05={p05}s). Prietaiso apatinė riba: {floor}s.",
|
"min_off_gap": "Pagrįsta {gaps} stebimais tarpcikliniais tarpais (p05={p05}s). Prietaiso apatinė riba: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Nustatyta taip, kad perdengtų ilgiausią tylos tarpsnį ciklo viduje: {span}s + 60s buferis, iš {spans} perdengtų tarpų per {cycles} švarius ciklus (lieka žemiau trumpiausio jūsų tarpo tarp dviejų paleidimų iš eilės, kuris yra {ceiling}s).",
|
||||||
"min_power": "40% p05 mažiausios aktyvios galios ({p05}W) per {cycles} švarius ciklus, išlaikant išjungimo slenkstį žemiau realaus suvartojimo.{excl}",
|
"min_power": "40% p05 mažiausios aktyvios galios ({p05}W) per {cycles} švarius ciklus, išlaikant išjungimo slenkstį žemiau realaus suvartojimo.{excl}",
|
||||||
"ml_auto_label": "Mažiausias patikimumas, kurį kokybės modelis vis dar įvertino kaip švarų (p10 iš {cycles} švarių ciklų = {p10}).",
|
"ml_auto_label": "Mažiausias patikimumas, kurį kokybės modelis vis dar įvertino kaip švarų (p10 iš {cycles} švarių ciklų = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciklų ({pct}%) turėjo pauzę, kurią pabaigos detektorius įvertino >50%; reikalauti {val} pabaigos patvirtinimo(-ų).",
|
"ml_end_repeat": "{false}/{total} ciklų ({pct}%) turėjo pauzę, kurią pabaigos detektorius įvertino >50%; reikalauti {val} pabaigos patvirtinimo(-ų).",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Paliktas šiek tiek virš p05 mažiausios aktyvios galios per {cycles} ciklus ({p05}W), kad pradžia būtų aptikta kuo anksčiau, o sustabdymo slenkstis liktų žemiau mažiausios veikiančios mašinos galios.",
|
"thr_batch": "Paliktas šiek tiek virš p05 mažiausios aktyvios galios per {cycles} ciklus ({p05}W), kad pradžia būtų aptikta kuo anksčiau, o sustabdymo slenkstis liktų žemiau mažiausios veikiančios mašinos galios.",
|
||||||
"tol_per_profile": "p75 kiekvieno profilio trukmės dispersijos per {profiles} profilius ({cycles} ciklai); stabilūs profiliai nebaudžiami.",
|
"tol_per_profile": "p75 kiekvieno profilio trukmės dispersijos per {profiles} profilius ({cycles} ciklai); stabilūs profiliai nebaudžiami.",
|
||||||
"tol_pooled": "Pagrįsta sujungta {cycles} naujausių pažymėtų ciklų trukmės dispersija (p95 nuokrypis={dev}).",
|
"tol_pooled": "Pagrįsta sujungta {cycles} naujausių pažymėtų ciklų trukmės dispersija (p95 nuokrypis={dev}).",
|
||||||
"watchdog": "Paliktas kuo mažesnis, kiek saugu (3x p95 atnaujinimo tarpas {p95}s, min. 30s), kad strigtys būtų aptiktos greitai be klaidingų sustabdymų."
|
"watchdog": "Paliktas kuo mažesnis, kiek saugu (vos didesnis nei p95 atnaujinimo tarpas {p95}s, min. 30s), kad strigtys būtų aptiktos greitai be klaidingų sustabdymų."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Neįtraukta {total} klaidingai aptiktų ciklų: {parts}.",
|
"summary": "Neįtraukta {total} klaidingai aptiktų ciklų: {parts}.",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Kita"
|
"other": "Kita"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Indaplovė: tylos sekundės po numatytos trukmės, kol atleidžiamas ciklo pabaigos vandens išleidimo laukimas",
|
||||||
"anti_wrinkle_enabled": "Sugerkite būgninius impulsus po pagrindinės fazės, o ne skaitykite juos kaip naujus ciklus",
|
"anti_wrinkle_enabled": "Sugerkite būgninius impulsus po pagrindinės fazės, o ne skaitykite juos kaip naujus ciklus",
|
||||||
"anti_wrinkle_exit_power": "Kad apsauga nuo raukšlių išliktų aktyvi, galia tarp impulsų turi nukristi žemiau šios ribos",
|
"anti_wrinkle_exit_power": "Kad apsauga nuo raukšlių išliktų aktyvi, galia tarp impulsų turi nukristi žemiau šios ribos",
|
||||||
"anti_wrinkle_idle_timeout": "Tylos laikas, leidžiamas tarp dviejų būgninių impulsų prieš pasibaigiant apsaugai nuo raukšlių",
|
"anti_wrinkle_idle_timeout": "Tylos laikas, leidžiamas tarp dviejų būgninių impulsų prieš pasibaigiant apsaugai nuo raukšlių",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entītija nav atrasta",
|
||||||
|
"running_long": "Darbojas ilgi",
|
||||||
|
"remaining": "atlicis",
|
||||||
|
"progress": "progress",
|
||||||
|
"show_time_remaining": "Rādīt atlikušo laiku",
|
||||||
|
"show_percentage": "Rādīt procentus",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Elements (kompakts)",
|
||||||
|
"detail": "Detalizēts (bagātīgs)",
|
||||||
|
"glance": "Pārskats (vairākas ierīces)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pauzēt",
|
||||||
|
"resume": "Turpināt",
|
||||||
|
"terminate": "Beigt ciklu",
|
||||||
|
"record_start": "Sākt ierakstīšanu",
|
||||||
|
"record_stop": "Apturēt ierakstīšanu",
|
||||||
|
"program": "Programma",
|
||||||
|
"open_panel": "Atvērt WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Izkārtojums",
|
||||||
|
"entity": "Ierīces entītija",
|
||||||
|
"entities": "Ierīces",
|
||||||
|
"title": "Nosaukums",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Rādīt stāvokli",
|
||||||
|
"show_program": "Rādīt programmu",
|
||||||
|
"show_progress_bar": "Rādīt progresa joslu",
|
||||||
|
"spin_icon": "Griezt ikonu darbības laikā",
|
||||||
|
"display_mode": "Detaļu rinda",
|
||||||
|
"active_color": "Aktīvās krāsas aizstāšana",
|
||||||
|
"show_phase": "Rādīt fāzi",
|
||||||
|
"show_energy": "Rādīt enerģiju un izmaksas",
|
||||||
|
"show_anomaly": "Rādīt pārsnieguma brīdinājumu",
|
||||||
|
"show_sparkline": "Rādīt tiešo jaudas grafiku",
|
||||||
|
"buttons": "Darbību pogas",
|
||||||
|
"program_entity": "Programmas entītija (aizstāšana)",
|
||||||
|
"time_entity": "Laika entītija (aizstāšana)",
|
||||||
|
"pct_entity": "Progresa entītija (aizstāšana)",
|
||||||
|
"power_entity": "Jaudas entītija (aizstāšana)",
|
||||||
|
"tap_action": "Pieskāriena darbība",
|
||||||
|
"hold_action": "Turēšanas darbība",
|
||||||
|
"double_tap_action": "Dubultā pieskāriena darbība"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Konstatētas {n} anomālijas (piemēram, durvis atvērtas cikla vidū) – atveriet, lai tās skatītu diagrammā",
|
"artifact_tip": "Konstatētas {n} anomālijas (piemēram, durvis atvērtas cikla vidū) – atveriet, lai tās skatītu diagrammā",
|
||||||
"auto": "(noteikts automātiski)",
|
"auto": "(noteikts automātiski)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Pauzēt pašreizējo ciklu – ierīce turpinās no pārtraukuma vietas",
|
"pause_cycle_tip": "Pauzēt pašreizējo ciklu – ierīce turpinās no pārtraukuma vietas",
|
||||||
"pg_apply_device": "Lietot ierīcei",
|
"pg_apply_device": "Lietot ierīcei",
|
||||||
"pg_autofill": "Automātiskā aizpilde",
|
"pg_autofill": "Automātiskā aizpilde",
|
||||||
|
"pg_load_calibrated": "Ielādēt kalibrētos (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Ielādēt ML kalibrētos iestatījumus kā izmēģinājumu laukuma aizstājumus",
|
||||||
|
"pg_load_live": "Ielādēt aktīvos iestatījumus",
|
||||||
|
"pg_load_live_tip": "No jauna nolasīt pašreizējos integrācijas iestatījumus un atmest visas izmēģinājumu laukuma izmaiņas",
|
||||||
|
"pg_load_suggested": "Ielādēt ieteiktos ({n})",
|
||||||
|
"pg_load_suggested_tip": "Ielādēt automātiskā pielāgotāja pašreizējos ieteikumus kā izmēģinājumu laukuma aizstājumus",
|
||||||
|
"pg_preset_delete": "Dzēst priekšiestatījumu",
|
||||||
|
"pg_preset_load": "Ielādēt priekšiestatījumu",
|
||||||
|
"pg_preset_load_tip": "Aizstāt izmēģinājumu laukuma vērtības ar šo priekšiestatījumu (aktīvie iestatījumi netiek mainīti)",
|
||||||
|
"pg_preset_save": "Saglabāt kā priekšiestatījumu",
|
||||||
|
"pg_preset_save_tip": "Saglabāt visas tālāk norādītās vērtības kā nosauktu šīs ierīces priekšiestatījumu",
|
||||||
|
"pg_publish_all": "Saglabāt iestatījumos ({n})",
|
||||||
|
"pg_publish_one": "Saglabāt \"{label}\" integrācijas iestatījumos",
|
||||||
"play": "Atskaņot",
|
"play": "Atskaņot",
|
||||||
"process": "Apstrādāt",
|
"process": "Apstrādāt",
|
||||||
"process_history": "Apstrādāt tūlīt",
|
"process_history": "Apstrādāt tūlīt",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Lejupielādēt eksportu",
|
"download_export": "Lejupielādēt eksportu",
|
||||||
"analyze_import": "Analizēt failu",
|
"analyze_import": "Analizēt failu",
|
||||||
"import_selected": "Importēt atlasītos",
|
"import_selected": "Importēt atlasītos",
|
||||||
"back": "Atpakaļ"
|
"back": "Atpakaļ",
|
||||||
|
"mute_suggestion": "Pārtraukt ieteikt šo iestatījumu",
|
||||||
|
"reset_muted": "Atiestatīt klusinātos"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Vēl neviena automatizācija neatsaucas uz šo ierīci.",
|
"no_automations": "Vēl neviena automatizācija neatsaucas uz šo ierīci.",
|
||||||
"panel_settings": "Paneļa iestatījumi",
|
"panel_settings": "Paneļa iestatījumi",
|
||||||
"param_sweep": "Parametru skenēšana",
|
"param_sweep": "Parametru skenēšana",
|
||||||
|
"pg_settings_source": "Iestatījumu avots",
|
||||||
"phase_catalog": "Fāzes katalogs",
|
"phase_catalog": "Fāzes katalogs",
|
||||||
"playground": "Izmēģinājumu laukums",
|
"playground": "Izmēģinājumu laukums",
|
||||||
"process_history": "Procesa vēsture",
|
"process_history": "Procesa vēsture",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "Atbilstības rezultāts",
|
"pg_match_score": "Atbilstības rezultāts",
|
||||||
"pg_pct_of": "{p}% no {total}",
|
"pg_pct_of": "{p}% no {total}",
|
||||||
"pg_poor_match": "Slikta atbilstība",
|
"pg_poor_match": "Slikta atbilstība",
|
||||||
|
"pg_preset": "Izmēģinājumu laukuma priekšiestatījums",
|
||||||
|
"pg_preset_name": "Jauna priekšiestatījuma nosaukums",
|
||||||
|
"pg_preset_none": "Atlasiet priekšiestatījumu…",
|
||||||
"pg_strong_match": "Spēcīga atbilstība",
|
"pg_strong_match": "Spēcīga atbilstība",
|
||||||
"pg_tile_ambiguous": "Neviennozīmīgi",
|
"pg_tile_ambiguous": "Neviennozīmīgi",
|
||||||
"pg_tile_ambiguous_tip": "Cikli, kuros divas programmas ir gandrīz vienādas",
|
"pg_tile_ambiguous_tip": "Cikli, kuros divas programmas ir gandrīz vienādas",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Nosaukumu konflikti",
|
"conflict_resolution": "Nosaukumu konflikti",
|
||||||
"conflict_import_copy": "Importēt kā kopiju",
|
"conflict_import_copy": "Importēt kā kopiju",
|
||||||
"conflict_keep_mine": "Paturēt manējos",
|
"conflict_keep_mine": "Paturēt manējos",
|
||||||
"conflict_overwrite": "Pārrakstīt"
|
"conflict_overwrite": "Pārrakstīt",
|
||||||
|
"font_size": "Paneļa fonta lielums"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Visi līmeņi",
|
"all_levels": "Visi līmeņi",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Lietot labāko vērtību: {label} = {value}?",
|
"pg_apply_confirm": "Lietot labāko vērtību: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Atlasiet ciklu augšpusē, pēc tam nospiediet Ielādēt, lai redzētu tā jaudas līkni.",
|
"pg_canvas_empty": "Atlasiet ciklu augšpusē, pēc tam nospiediet Ielādēt, lai redzētu tā jaudas līkni.",
|
||||||
"pg_chart_caption": "Noteikšanas/atbilstības rādītājs pēc {param} vērtībām",
|
"pg_chart_caption": "Noteikšanas/atbilstības rādītājs pēc {param} vērtībām",
|
||||||
|
"pg_ctrl_intro": "Vērtības tiek ņemtas no šīs ierīces aktīvajiem integrācijas iestatījumiem. Izmaiņas paliek izmēģinājumu laukumā, līdz tās saglabājat iestatījumos.",
|
||||||
|
"pg_live_unavailable": "Aktīvie iestatījumi nav pieejami, tiek rādītas noklusējuma vērtības.",
|
||||||
|
"pg_load_live_confirm": "Vai atmest izmēģinājumu laukuma izmaiņas ({n}) un no jauna ielādēt pašreizējos integrācijas iestatījumus?",
|
||||||
"pg_match_rate": "{pct}% atbilstības rādītājs {total} ciklos",
|
"pg_match_rate": "{pct}% atbilstības rādītājs {total} ciklos",
|
||||||
|
"pg_matches_live": "Atbilst aktīvajiem iestatījumiem",
|
||||||
|
"pg_n_changed": "Atšķirību no aktīvajiem iestatījumiem: {n}",
|
||||||
|
"pg_sugg_none": "Visi ieteikumi jau atbilst pašreizējiem iestatījumiem",
|
||||||
|
"pg_preset_delete_confirm": "Vai dzēst priekšiestatījumu \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Sasniegts priekšiestatījumu ierobežojums ({n})",
|
||||||
|
"pg_preset_overwrite": "Vai pārrakstīt priekšiestatījumu \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Vai saglabāt {label} = {value} šīs ierīces iestatījumos?",
|
||||||
"pg_restart_note": "Restartējiet Home Assistant, lai iespējotu simulācijas rīkus.",
|
"pg_restart_note": "Restartējiet Home Assistant, lai iespējotu simulācijas rīkus.",
|
||||||
"pg_sim_progress": "{done} / {total} cikli",
|
"pg_sim_progress": "{done} / {total} cikli",
|
||||||
"pg_starting": "Sākas…",
|
"pg_starting": "Sākas…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Ilguma tendence ir īsāka ({pct}%/cikls) – nesenā vidējā {avg}",
|
"trend_duration_shorter": "Ilguma tendence ir īsāka ({pct}%/cikls) – nesenā vidējā {avg}",
|
||||||
"trend_energy_down": "Enerģijas tendence samazinās ({pct}%/cikls)",
|
"trend_energy_down": "Enerģijas tendence samazinās ({pct}%/cikls)",
|
||||||
"trend_energy_up": "Enerģijas tendence pieaug ({pct}%/ciklā) – nesenā vidējā {avg}",
|
"trend_energy_up": "Enerģijas tendence pieaug ({pct}%/ciklā) – nesenā vidējā {avg}",
|
||||||
|
"trim_destructive_confirm": "Tas saglabā tikai {pct}% no cikla, un šo nevar atsaukt. Turpināt?",
|
||||||
"trim_intro": "Velciet sarkanos rokturus vai ievadiet vērtības. Viss, kas atrodas ārpus loga, tiek noņemts.",
|
"trim_intro": "Velciet sarkanos rokturus vai ievadiet vērtības. Viss, kas atrodas ārpus loga, tiek noņemts.",
|
||||||
"tuning_suggestions_available": "No novērotajiem cikliem pieejams {count} regulēšanas ieteikums. Tie parādās blakus attiecīgajiem laukiem.",
|
"tuning_suggestions_available": "No novērotajiem cikliem pieejams {count} regulēšanas ieteikums. Tie parādās blakus attiecīgajiem laukiem.",
|
||||||
"unsure_detected_prefix": "WashData nav pārliecināts, ka tas ir atklāts",
|
"unsure_detected_prefix": "WashData nav pārliecināts, ka tas ir atklāts",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "Importētie vienumi tiek pievienoti; nekas no vietējiem datiem netiek zaudēts. Nosaukumu konflikti tiek risināti tālāk.",
|
"merge_hint": "Importētie vienumi tiek pievienoti; nekas no vietējiem datiem netiek zaudēts. Nosaukumu konflikti tiek risināti tālāk.",
|
||||||
"replace_warn": "Katra atzīmētā kategorija tiek dzēsta un aizstāta no faila. Neatzīmētās kategorijas paliek neskartas.",
|
"replace_warn": "Katra atzīmētā kategorija tiek dzēsta un aizstāta no faila. Neatzīmētās kategorijas paliek neskartas.",
|
||||||
"dest_reference_hint": "Importētie cikli tikai uzlabo programmu atpazīšanu un nekad neietekmē lietojuma/enerģijas statistiku.",
|
"dest_reference_hint": "Importētie cikli tikai uzlabo programmu atpazīšanu un nekad neietekmē lietojuma/enerģijas statistiku.",
|
||||||
"dest_real_history_hint": "Importētie cikli tiek uzskaitīti kā šīs ierīces pašas vēsture un papildina enerģijas/lietojuma statistiku. Izmantojiet, pārvietojot vienu ierīci uz jaunu instalāciju."
|
"dest_real_history_hint": "Importētie cikli tiek uzskaitīti kā šīs ierīces pašas vēsture un papildina enerģijas/lietojuma statistiku. Izmantojiet, pārvietojot vienu ierīci uz jaunu instalāciju.",
|
||||||
|
"sug_muted": "Šis iestatījums vairs netiks ieteikts",
|
||||||
|
"sug_mute_failed": "Neizdevās klusināt ieteikumu",
|
||||||
|
"sug_unmuted_all": "Klusināto ieteikumu atiestatīšana pabeigta",
|
||||||
|
"n_suggestions_muted": "{count} klusināti; automātiskais regulētājs tos vairs nepiedāvās.",
|
||||||
|
"font_size_hint": "Palieliniet vai samaziniet visu šajā panelī. Attiecas uz jūsu kontu šajā ierīcē."
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Laiku pa laikam pēc pabeigšanas veiciet īsus gājienus, lai samazinātu grumbiņas.",
|
"anti_crease": "Laiku pa laikam pēc pabeigšanas veiciet īsus gājienus, lai samazinātu grumbiņas.",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Nelietojama"
|
"unusable": "Nelietojama"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Trauku mazgājamā mašīna",
|
||||||
|
"intro": "Cikla beigu apstrāde trauku mazgājamām mašīnām, kuras parasti beidzas ar ilgu, gandrīz klusu žāvēšanas fāzi pirms īsas galīgās ūdens izvadīšanas."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Pretgrumbu/pretlocīšanas režīms atpazīst zemas jaudas kratīšanas impulsus pēc galvenās fāzes un pievieno tos pabeigtajam ciklam.",
|
"intro": "Pretgrumbu/pretlocīšanas režīms atpazīst zemas jaudas kratīšanas impulsus pēc galvenās fāzes un pievieno tos pabeigtajam ciklam.",
|
||||||
"label": "Pretgrumbu"
|
"label": "Pretgrumbu"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Pasīvās žāvēšanas klusā atbrīvošana",
|
||||||
|
"doc": "Kad cikls pārsniedz paredzēto ilgumu, cik ilgi trauku mazgājamai mašīnai jāpaliek klusai (zem Apstāšanās slieksnis), pirms WashData pārtrauc gaidīt galīgo ūdens izvadīšanu un pabeidz ciklu. Palieliniet to, ja jūsu mašīnai ir ilga klusa žāvēšanas fāze pirms vēlas galīgās ūdens izvadīšanas, kas tiek palaista garām - plašāks logs ļauj apgūtajam ilgumam sekot sezonālajai novirzei (aukstāks ieplūstošais ūdens = garāki cikli), nevis fiksēties pie vecā vidējā. Tas var tikai saīsināt gaidīšanu attiecībā pret iekšējo 30 minūšu beigu smailes ierobežojumu, nekad to nepagarina."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Atpazīstiet īsos mazjaudas veļas impulsus, ko žāvētājs izstaro pēc galvenās karsēšanas fāzes, un turiet tos pievienotus gatavajam ciklam, nevis nolasiet tos kā jaunus ciklus.",
|
"doc": "Atpazīstiet īsos mazjaudas veļas impulsus, ko žāvētājs izstaro pēc galvenās karsēšanas fāzes, un turiet tos pievienotus gatavajam ciklam, nevis nolasiet tos kā jaunus ciklus.",
|
||||||
"label": "Iespējot pretgrumbu noteikšanu"
|
"label": "Iespējot pretgrumbu noteikšanu"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Dažas minūtes pēc cikla beigām, pirms tiek nosūtīts joprojām gaidošais atgādinājums \"izlādēt iekārtu\". Iestatiet 0, lai atspējotu atgādinājumu.",
|
"doc": "Dažas minūtes pēc cikla beigām, pirms tiek nosūtīts joprojām gaidošais atgādinājums \"izlādēt iekārtu\". Iestatiet 0, lai atspējotu atgādinājumu.",
|
||||||
"label": "Izkraušanas atgādinājuma aizkave"
|
"label": "Izkraušanas atgādinājuma aizkave"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Atkārtoti nosūta izkraušanas atgādinājumu ik pēc \"Izkraušanas atgādinājuma aizkave\" minūtēm, līdz atverat durvis vai paziņojumā pieskaraties \"Pārtraukt atgādināšanu\". Nepieciešama Durvju sensora entītija (tāpat kā pašam atgādinājumam). Atmešanas poga darbojas Home Assistant mobilās (companion) lietotnes paziņojumos.",
|
||||||
|
"label": "Atkārtot, līdz atveras durvis"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Laiks gaidīt, kad jauda samazinās, pirms tiek paziņots, ka cikls ir pabeigts. Ja šajā logā tiek atsākta barošana, cikls turpinās nemanāmi – tas pārslēdz pauzes starp mazgāšanas posmiem. Trauku mazgājamām mašīnām ir garas žāvēšanas fāzes (izslēdziet strāvu uz 20–60 minūtēm), tāpēc izslēgšanas aizkavei ir jābūt lielākai par to, lai visa mazgāšana un žāvēšana būtu viens cikls.",
|
"doc": "Laiks gaidīt, kad jauda samazinās, pirms tiek paziņots, ka cikls ir pabeigts. Ja šajā logā tiek atsākta barošana, cikls turpinās nemanāmi – tas pārslēdz pauzes starp mazgāšanas posmiem. Trauku mazgājamām mašīnām ir garas žāvēšanas fāzes (izslēdziet strāvu uz 20–60 minūtēm), tāpēc izslēgšanas aizkavei ir jābūt lielākai par to, lai visa mazgāšana un žāvēšana būtu viens cikls.",
|
||||||
"label": "Izslēgšanas aizkave"
|
"label": "Izslēgšanas aizkave"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Enerģijas asums",
|
"label": "Enerģijas asums",
|
||||||
"doc": "4. posma enerģijas atbilstības soda asums. Mazāks = bargāks: enerģijas neatbilstība kaitē vairāk. Noklusējums 0,25 ir apzināti piedodošāks nekā ilguma asums, jo enerģija mainās atkarībā no slodzes. Izmantojiet kopā ar Enerģijas svaru."
|
"doc": "4. posma enerģijas atbilstības soda asums. Mazāks = bargāks: enerģijas neatbilstība kaitē vairāk. Noklusējums 0,25 ir apzināti piedodošāks nekā ilguma asums, jo enerģija mainās atkarībā no slodzes. Izmantojiet kopā ar Enerģijas svaru."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Jaudas profila intervāls",
|
||||||
|
"doc": "Spaiņa lielums profilam power_profile sensora atribūtam (vienots vidējo vatu masīvs pa laika nišām, ko izmanto ārējie plānotāji, piemēram, EMHASS un tibber_prices). Mazāki spaini saglabā īsas jaudas pikas asas; lielāki spaini izlīdzina formu. Noklusējums 15 min. Tikai lasīšanas laikā; neietekmē noteikšanu."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Saglabāt tiešraides paziņojumu pēc pieskāriena",
|
||||||
|
"doc": "Tikai Android. Padarīt tiešraides progresa paziņojumu pastāvīgu (lipīgu), lai pieskāriens tam neatceltu notiekošo pavedienu. Izslēgts saglabā noklusēto uzvedību, kad pieskāriens paziņojumu noraida."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Tiešraides paziņojuma pieskāriena mērķis",
|
||||||
|
"doc": "Tikai Android. Kur atveras tiešraides progresa paziņojuma pieskāriens (piemēram, /lovelace/laundry vai pilns URL), nevis lietotnes sākumlapa. Atstājiet tukšu noklusējumam."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Durvis automātiski atveras beigās",
|
||||||
|
"doc": "Trauku mazgājamajām mašīnām, kuras cikla beigās atver durvis žāvēšanai (AirDry un līdzīgas). Ieslēgts, durvju atvēršana darbojošā ciklā vairs nepārtrauc to uz visiem laikiem; tā vietā, ja durvis paliek atvērtas norādīto uzturēšanās laiku zemāk, WashData uzskata ciklu par pabeigtu. Īsa atvēršana (pievienojot trauku) tiek ignorēta. Nepieciešams durvju sensora objekts."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Durvju atvēršanas beigu uzturēšanās laiks",
|
||||||
|
"doc": "Cik ilgi durvis jāpaliek atvērtām, lai WashData beigtu ciklu, kad ir ieslēgts iestatījums \"Durvis automātiski atveras beigās\". Pietiekami ilgi, lai ignorētu ātru trauka pievienošanu (noklusējums 60 s), pietiekami īsi, lai ātri beigtu, kad mašīna atver durvis."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Nepieciešams vārds",
|
"name_required": "Nepieciešams vārds",
|
||||||
"no_split_found": "Nav atrastas tukšgaitas spraugas, uz kurām varētu sadalīties",
|
"no_split_found": "Nav atrastas tukšgaitas spraugas, uz kurām varētu sadalīties",
|
||||||
"panel_settings_saved": "Paneļa iestatījumi ir saglabāti",
|
"panel_settings_saved": "Paneļa iestatījumi ir saglabāti",
|
||||||
|
"pg_preset_loaded": "Priekšiestatījums \"{name}\" ielādēts",
|
||||||
|
"pg_preset_saved": "Priekšiestatījums \"{name}\" saglabāts",
|
||||||
|
"pg_sugg_loaded": "Ielādētas {n} ieteiktās vērtības - palaidiet izmēģinājumu laukumu salīdzināšanai",
|
||||||
|
"pg_sugg_ml_loaded": "Ielādētas {n} ML kalibrētas vērtības - palaidiet izmēģinājumu laukumu salīdzināšanai",
|
||||||
"phase_name_required": "Nepieciešams fāzes nosaukums",
|
"phase_name_required": "Nepieciešams fāzes nosaukums",
|
||||||
"phase_updated": "Fāze atjaunināta",
|
"phase_updated": "Fāze atjaunināta",
|
||||||
"phases_saved": "Fāzes saglabātas",
|
"phases_saved": "Fāzes saglabātas",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "Pamatots ar minimālo aktīvo jaudu ({min}W), kas novērota pēdējā ciklā.",
|
"min_active": "Pamatots ar minimālo aktīvo jaudu ({min}W), kas novērota pēdējā ciklā.",
|
||||||
"min_duration_ratio": "Saglabāts pēc iespējas zemāks, lai programma tiktu atpazīta cikla sākumā; ticamības un neskaidrības sliekšņi novērš pāragru apstiprināšanu.",
|
"min_duration_ratio": "Saglabāts pēc iespējas zemāks, lai programma tiktu atpazīta cikla sākumā; ticamības un neskaidrības sliekšņi novērš pāragru apstiprināšanu.",
|
||||||
"min_off_gap": "Pamatots ar {gaps} novērotiem starpciklu intervāliem (p05={p05}s). Ierīces apakšējā robeža: {floor}s.",
|
"min_off_gap": "Pamatots ar {gaps} novērotiem starpciklu intervāliem (p05={p05}s). Ierīces apakšējā robeža: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Aprēķināts, lai pārsegtu garāko kluso posmu cikla iekšienē: {span}s + 60s buferis, no {spans} pārsegtiem intervāliem {cycles} tīros ciklos (paliek zem jūsu īsākā intervāla starp divām secīgām palaišanas reizēm, kas ir {ceiling}s).",
|
||||||
"min_power": "40% no p05 zemākās aktīvās jaudas ({p05}W) {cycles} tīros ciklos, saglabājot izslēgšanas slieksni zem reālā patēriņa.{excl}",
|
"min_power": "40% no p05 zemākās aktīvās jaudas ({p05}W) {cycles} tīros ciklos, saglabājot izslēgšanas slieksni zem reālā patēriņa.{excl}",
|
||||||
"ml_auto_label": "Zemākā ticamība, ko kvalitātes modelis vēl novērtēja kā tīru (p10 no {cycles} tīriem cikliem = {p10}).",
|
"ml_auto_label": "Zemākā ticamība, ko kvalitātes modelis vēl novērtēja kā tīru (p10 no {cycles} tīriem cikliem = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciklu ({pct}%) bija pauze, ko beigu detektors novērtēja >50%; pieprasīt {val} beigu apstiprinājumu(s).",
|
"ml_end_repeat": "{false}/{total} ciklu ({pct}%) bija pauze, ko beigu detektors novērtēja >50%; pieprasīt {val} beigu apstiprinājumu(s).",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Saglabāts nedaudz virs p05 zemākās aktīvās jaudas {cycles} ciklos ({p05}W), lai sākums tiktu uztverts pēc iespējas agrāk un apturēšanas slieksnis paliktu zem mašīnas zemākās darbības jaudas.",
|
"thr_batch": "Saglabāts nedaudz virs p05 zemākās aktīvās jaudas {cycles} ciklos ({p05}W), lai sākums tiktu uztverts pēc iespējas agrāk un apturēšanas slieksnis paliktu zem mašīnas zemākās darbības jaudas.",
|
||||||
"tol_per_profile": "p75 no katra profila ilguma dispersijas {profiles} profilos ({cycles} cikli); stabili profili netiek sodīti.",
|
"tol_per_profile": "p75 no katra profila ilguma dispersijas {profiles} profilos ({cycles} cikli); stabili profili netiek sodīti.",
|
||||||
"tol_pooled": "Pamatots ar apvienoto ilguma dispersiju {cycles} nesen marķētiem cikliem (p95 novirze={dev}).",
|
"tol_pooled": "Pamatots ar apvienoto ilguma dispersiju {cycles} nesen marķētiem cikliem (p95 novirze={dev}).",
|
||||||
"watchdog": "Saglabāts pēc iespējas zemāks, cik droši (3x p95 atjaunināšanas intervāls {p95}s, min. 30s), lai apstāšanās tiktu atklāta ātri bez viltus apturēšanas."
|
"watchdog": "Saglabāts pēc iespējas zemāks, cik droši (tikai nedaudz virs p95 atjaunināšanas intervāla {p95}s, min. 30s), lai apstāšanās tiktu atklāta ātri bez viltus apturēšanas."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Izslēgti {total} kļūdaini atpazīti cikli: {parts}.",
|
"summary": "Izslēgti {total} kļūdaini atpazīti cikli: {parts}.",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Cits"
|
"other": "Cits"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Trauku mazgājamā mašīna: klusās sekundes pēc paredzētā ilguma, pirms tiek atbrīvota cikla beigu ūdens izvadīšanas gaidīšana",
|
||||||
"anti_wrinkle_enabled": "Absorbējiet griešanās impulsus pēc galvenās fāzes, nevis nolasiet tos kā jaunus ciklus",
|
"anti_wrinkle_enabled": "Absorbējiet griešanās impulsus pēc galvenās fāzes, nevis nolasiet tos kā jaunus ciklus",
|
||||||
"anti_wrinkle_exit_power": "Lai pretgrumbu režīms paliktu aktīvs, jaudai starp impulsiem jānokrītas zem šīs vērtības",
|
"anti_wrinkle_exit_power": "Lai pretgrumbu režīms paliktu aktīvs, jaudai starp impulsiem jānokrītas zem šīs vērtības",
|
||||||
"anti_wrinkle_idle_timeout": "Atļautais klusuma laiks starp diviem griešanās impulsiem, pirms pretgrumbu režīms beidzas",
|
"anti_wrinkle_idle_timeout": "Atļautais klusuma laiks starp diviem griešanās impulsiem, pirms pretgrumbu režīms beidzas",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "мин",
|
||||||
|
"entity_not_found": "Ентитетот не е пронајден",
|
||||||
|
"running_long": "Трае предолго",
|
||||||
|
"remaining": "преостанато",
|
||||||
|
"progress": "напредок",
|
||||||
|
"show_time_remaining": "Прикажи преостанато време",
|
||||||
|
"show_percentage": "Прикажи процент",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Плочка (компактно)",
|
||||||
|
"detail": "Детално (богато)",
|
||||||
|
"glance": "Преглед (повеќе уреди)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Паузирај",
|
||||||
|
"resume": "Продолжи",
|
||||||
|
"terminate": "Заврши циклус",
|
||||||
|
"record_start": "Започни снимање",
|
||||||
|
"record_stop": "Запри снимање",
|
||||||
|
"program": "Програма",
|
||||||
|
"open_panel": "Отвори WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Распоред",
|
||||||
|
"entity": "Ентитет на уредот",
|
||||||
|
"entities": "Уреди",
|
||||||
|
"title": "Наслов",
|
||||||
|
"icon": "Икона",
|
||||||
|
"show_state": "Прикажи состојба",
|
||||||
|
"show_program": "Прикажи програма",
|
||||||
|
"show_progress_bar": "Прикажи лента за напредок",
|
||||||
|
"spin_icon": "Ротирај икона додека работи",
|
||||||
|
"display_mode": "Линија со детали",
|
||||||
|
"active_color": "Замена на активна боја",
|
||||||
|
"show_phase": "Прикажи фаза",
|
||||||
|
"show_energy": "Прикажи енергија и трошок",
|
||||||
|
"show_anomaly": "Прикажи предупредување за пречекорување",
|
||||||
|
"show_sparkline": "Прикажи график на моќност во живо",
|
||||||
|
"buttons": "Копчиња за дејства",
|
||||||
|
"program_entity": "Ентитет на програма (замена)",
|
||||||
|
"time_entity": "Ентитет на време (замена)",
|
||||||
|
"pct_entity": "Ентитет на напредок (замена)",
|
||||||
|
"power_entity": "Ентитет на моќност (замена)",
|
||||||
|
"tap_action": "Дејство при допир",
|
||||||
|
"hold_action": "Дејство при задржување",
|
||||||
|
"double_tap_action": "Дејство при двоен допир"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Откриени се {n} аномалии (на пр. вратата отворена во средината на циклусот) - отворени за да ги видите на графиконот",
|
"artifact_tip": "Откриени се {n} аномалии (на пр. вратата отворена во средината на циклусот) - отворени за да ги видите на графиконот",
|
||||||
"auto": "(автоматски откриено)",
|
"auto": "(автоматски откриено)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Отфрли",
|
"discard": "Отфрли",
|
||||||
"discard_tip": "Отфрли го снимениот траг без зачувување",
|
"discard_tip": "Отфрли го снимениот траг без зачувување",
|
||||||
"dismiss": "Отфрли",
|
"dismiss": "Отфрли",
|
||||||
|
"mute_suggestion": "Запрете да се предлага оваа поставка",
|
||||||
|
"pg_load_calibrated": "Вчитај калибрирани (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Ги вчитува поставките калибрирани со ML како замени во песочникот",
|
||||||
|
"pg_load_live": "Вчитај ги активните поставки",
|
||||||
|
"pg_load_live_tip": "Прочитај ги повторно тековните поставки на интеграцијата и отфрли ги сите измени во песочникот",
|
||||||
|
"pg_load_suggested": "Вчитај предлози ({n})",
|
||||||
|
"pg_load_suggested_tip": "Ги вчитува тековните предлози на автоматскиот подесувач како замени во песочникот",
|
||||||
|
"pg_preset_delete": "Избриши конфигурација",
|
||||||
|
"pg_preset_load": "Вчитај конфигурација",
|
||||||
|
"pg_preset_load_tip": "Замени ги вредностите во песочникот со оваа конфигурација (активните поставки остануваат недопрени)",
|
||||||
|
"pg_preset_save": "Зачувај како конфигурација",
|
||||||
|
"pg_preset_save_tip": "Зачувај ги сите вредности подолу како именувана конфигурација за овој уред",
|
||||||
|
"pg_publish_all": "Примени {n} во интеграцијата",
|
||||||
|
"pg_publish_one": "Примени {label} во интеграцијата",
|
||||||
|
"reset_muted": "Ресетирање на заглушените",
|
||||||
"done": "Готово",
|
"done": "Готово",
|
||||||
"edit": "Уреди",
|
"edit": "Уреди",
|
||||||
"export": "Извоз",
|
"export": "Извоз",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Сè уште нема автоматизација на овој уред.",
|
"no_automations": "Сè уште нема автоматизација на овој уред.",
|
||||||
"panel_settings": "Поставки на панелот",
|
"panel_settings": "Поставки на панелот",
|
||||||
"param_sweep": "Прочешлување на параметар",
|
"param_sweep": "Прочешлување на параметар",
|
||||||
|
"pg_settings_source": "Извор на поставките",
|
||||||
"phase_catalog": "Фазен каталог",
|
"phase_catalog": "Фазен каталог",
|
||||||
"playground": "Песочник",
|
"playground": "Песочник",
|
||||||
"process_history": "Историја на процесот",
|
"process_history": "Историја на процесот",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Стандардно ниво за корисници кои не се наведени подолу",
|
"default_access_level": "Стандардно ниво за корисници кои не се наведени подолу",
|
||||||
"default_other": "Стандардно (други уреди)",
|
"default_other": "Стандардно (други уреди)",
|
||||||
"default_tab": "Стандардна картичка при отворање на панелот",
|
"default_tab": "Стандардна картичка при отворање на панелот",
|
||||||
|
"font_size": "Големина на фонт на панелот",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Опис",
|
"description": "Опис",
|
||||||
"dtw_blend_w": "Тежина на мешање",
|
"dtw_blend_w": "Тежина на мешање",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Оценка на совпаѓање",
|
"pg_match_score": "Оценка на совпаѓање",
|
||||||
"pg_pct_of": "{p}% од {total}",
|
"pg_pct_of": "{p}% од {total}",
|
||||||
"pg_poor_match": "Лошо совпаѓање",
|
"pg_poor_match": "Лошо совпаѓање",
|
||||||
|
"pg_preset": "Конфигурација на песочникот",
|
||||||
|
"pg_preset_name": "Име на новата конфигурација",
|
||||||
|
"pg_preset_none": "Изберете конфигурација…",
|
||||||
"pg_strong_match": "Силно совпаѓање",
|
"pg_strong_match": "Силно совпаѓање",
|
||||||
"pg_tile_ambiguous": "Двосмислени",
|
"pg_tile_ambiguous": "Двосмислени",
|
||||||
"pg_tile_ambiguous_tip": "Циклуси со речиси изедначено совпаѓање меѓу две програми",
|
"pg_tile_ambiguous_tip": "Циклуси со речиси изедначено совпаѓање меѓу две програми",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Да се примени најдобрата вредност: {label} = {value}?",
|
"pg_apply_confirm": "Да се примени најдобрата вредност: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Изберете циклус погоре, потоа притиснете „Вчитај“ за да ја видите неговата крива на моќност.",
|
"pg_canvas_empty": "Изберете циклус погоре, потоа притиснете „Вчитај“ за да ја видите неговата крива на моќност.",
|
||||||
"pg_chart_caption": "Стапка на откривање/совпаѓање по вредности на {param}",
|
"pg_chart_caption": "Стапка на откривање/совпаѓање по вредности на {param}",
|
||||||
|
"pg_ctrl_intro": "Вредностите тргнуваат од активните поставки на интеграцијата за овој уред. Измените остануваат во песочникот сè додека не ги примените.",
|
||||||
|
"pg_live_unavailable": "Активните поставки не се достапни, прикажани се стандардните вредности.",
|
||||||
|
"pg_load_live_confirm": "Да се отфрлат измените во песочникот ({n}) и повторно да се вчитаат тековните поставки на интеграцијата?",
|
||||||
"pg_match_rate": "{pct}% совпаѓања на {total} циклуси",
|
"pg_match_rate": "{pct}% совпаѓања на {total} циклуси",
|
||||||
|
"pg_matches_live": "Се совпаѓа со активните поставки",
|
||||||
|
"pg_n_changed": "Промени наспроти активните поставки: {n}",
|
||||||
|
"pg_sugg_none": "Сите предлози веќе одговараат на тековните поставки",
|
||||||
|
"pg_preset_delete_confirm": "Да се избрише конфигурацијата „{name}“?",
|
||||||
|
"pg_preset_limit": "Достигнат е лимитот на конфигурации ({n})",
|
||||||
|
"pg_preset_overwrite": "Да се пребрише конфигурацијата „{name}“?",
|
||||||
|
"pg_publish_one_confirm": "Да се зачува {label} = {value} во поставките на овој уред?",
|
||||||
"pg_restart_note": "Рестартирајте го Home Assistant за да ги овозможите алатките за симулација.",
|
"pg_restart_note": "Рестартирајте го Home Assistant за да ги овозможите алатките за симулација.",
|
||||||
"pg_sim_progress": "{done} / {total} циклуси",
|
"pg_sim_progress": "{done} / {total} циклуси",
|
||||||
"pg_starting": "Започнување…",
|
"pg_starting": "Започнување…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Преференци, панел и контрола на пристап",
|
"preferences_admin": "Преференци, панел и контрола на пристап",
|
||||||
"preferences_adv": "Преференци",
|
"preferences_adv": "Преференци",
|
||||||
"prefs_personal": "Овие се однесуваат само на вашата сметка на „Помошник за дома“.",
|
"prefs_personal": "Овие се однесуваат само на вашата сметка на „Помошник за дома“.",
|
||||||
|
"font_size_hint": "Направете сè во овој панел поголемо или помало. Се применува на вашата сметка на овој уред.",
|
||||||
"process_history_hint": "Повторно стартувајте совпаѓање на сите зачувани циклуси, освежете предлози за подесување, повторно обучете ML модели (ако се овозможени) и препресметајте го здравјето на циклусите. Стартувајте по серија прегледи.",
|
"process_history_hint": "Повторно стартувајте совпаѓање на сите зачувани циклуси, освежете предлози за подесување, повторно обучете ML модели (ако се овозможени) и препресметајте го здравјето на циклусите. Стартувајте по серија прегледи.",
|
||||||
"profile_deleted": "Профилот е избришан",
|
"profile_deleted": "Профилот е избришан",
|
||||||
"profile_poor_health_detail": "Циклусите доделени на овој профил имаат неконзистентни форми или мала доверба. Размислете за обнова на пликот или прегледување на означените циклуси.",
|
"profile_poor_health_detail": "Циклусите доделени на овој профил имаат неконзистентни форми или мала доверба. Размислете за обнова на пликот или прегледување на означените циклуси.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Кликнете на графиконот за да додадете или отстраните точка на разделување или автоматско откривање со празнини во мирување. Секој добиен сегмент може да добие свој профил.",
|
"split_intro": "Кликнете на графиконот за да додадете или отстраните точка на разделување или автоматско откривање со празнини во мирување. Секој добиен сегмент може да добие свој профил.",
|
||||||
"storage_diagnostics": "Статистика за складирање, одржување, извоз/увоз",
|
"storage_diagnostics": "Статистика за складирање, одржување, извоз/увоз",
|
||||||
"sug_staged": "Поставено {key} = {val}. Зачувајте за примена.",
|
"sug_staged": "Поставено {key} = {val}. Зачувајте за примена.",
|
||||||
|
"sug_muted": "Оваа поставка нема да се предлага повторно",
|
||||||
|
"sug_mute_failed": "Не можеше да се заглуши предлогот",
|
||||||
|
"sug_unmuted_all": "Заглушените предлози се ресетирани",
|
||||||
|
"n_suggestions_muted": "{count} заглушени; авто-подесувачот нема да ги предлага овие.",
|
||||||
"toast_auto_detect_enabled": "Автоматско откривање овозможено",
|
"toast_auto_detect_enabled": "Автоматско откривање овозможено",
|
||||||
"toast_auto_label_complete": "Автоматско означување завршено",
|
"toast_auto_label_complete": "Автоматско означување завршено",
|
||||||
"toast_auto_label_failed": "Автоматско означување неуспешно: {error}",
|
"toast_auto_label_failed": "Автоматско означување неуспешно: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Времетраењето е во тренд пократко ({pct}%/циклус) - неодамнешниот просек {avg}",
|
"trend_duration_shorter": "Времетраењето е во тренд пократко ({pct}%/циклус) - неодамнешниот просек {avg}",
|
||||||
"trend_energy_down": "Енергетскиот тренд надолу ({pct}%/циклус)",
|
"trend_energy_down": "Енергетскиот тренд надолу ({pct}%/циклус)",
|
||||||
"trend_energy_up": "Енергетскиот тренд нагоре ({pct}%/циклус) - неодамнешен просек {avg}",
|
"trend_energy_up": "Енергетскиот тренд нагоре ({pct}%/циклус) - неодамнешен просек {avg}",
|
||||||
|
"trim_destructive_confirm": "Ова задржува само {pct}% од циклусот и не може да се врати. Да се продолжи?",
|
||||||
"trim_intro": "Повлечете ги црвените рачки или внесете вредности. Сè што е надвор од прозорецот е отстрането.",
|
"trim_intro": "Повлечете ги црвените рачки или внесете вредности. Сè што е надвор од прозорецот е отстрането.",
|
||||||
"tuning_suggestions_available": "{count} предлог за подесување е достапен од набљудуваните циклуси. Тие се појавуваат покрај соодветните полиња.",
|
"tuning_suggestions_available": "{count} предлог за подесување е достапен од набљудуваните циклуси. Тие се појавуваат покрај соодветните полиња.",
|
||||||
"unsure_detected_prefix": "WashData не е сигурен дека е откриен",
|
"unsure_detected_prefix": "WashData не е сигурен дека е откриен",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Неупотребливи"
|
"unusable": "Неупотребливи"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"intro": "Ракување со крајот на циклусот за машини за миење садови, кои обично завршуваат со долга фаза на сушење речиси без потрошувачка на енергија пред кратко финално испумпување.",
|
||||||
|
"label": "Машина за миење садови"
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Режимот против брчки/набирање открива импулси со ниска моќност по главната фаза и ги прикачува на завршениот циклус.",
|
"intro": "Режимот против брчки/набирање открива импулси со ниска моќност по главната фаза и ги прикачува на завршениот циклус.",
|
||||||
"label": "Против брчки"
|
"label": "Против брчки"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"doc": "Откако циклусот ќе го надмине очекуваното траење, колку долго машината за миење садови мора да остане неактивна (под «Праг за стоп») пред WashData да престане да чека финално испумпување и да го заврши циклусот. Зголемете го ако вашата машина има долга тивка фаза на сушење пред доцно финално испумпување што се пропушта - поширок прозорец овозможува наученото траење да ги следи сезонските промени (постудена влезна вода = подолги циклуси) наместо да се заклучи на старата просечна вредност. Тоа само го скратува чекањето во однос на внатрешниот лимит од 30 минути за чекање на финалниот скок (испумпување на вода), но никогаш не го продолжува.",
|
||||||
|
"label": "Тивко завршување на пасивното сушење"
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Препознајте ги кратките пулсирања со мала моќност што ги испушта машината за сушење по главната топлинска фаза и држете ги прикачени на завршениот циклус наместо да ги читате како нови циклуси.",
|
"doc": "Препознајте ги кратките пулсирања со мала моќност што ги испушта машината за сушење по главната топлинска фаза и држете ги прикачени на завршениот циклус наместо да ги читате како нови циклуси.",
|
||||||
"label": "Овозможи откривање против брчки"
|
"label": "Овозможи откривање против брчки"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Неколку минути по завршувањето на циклусот пред да го испратите потсетникот за „растоварување на машината“ што се уште чека. Поставете 0 за да го оневозможите потсетникот.",
|
"doc": "Неколку минути по завршувањето на циклусот пред да го испратите потсетникот за „растоварување на машината“ што се уште чека. Поставете 0 за да го оневозможите потсетникот.",
|
||||||
"label": "Задоцнување на потсетникот за истовар"
|
"label": "Задоцнување на потсетникот за истовар"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Продолжува да го испраќа потсетникот за истовар на секои \"Задоцнување на потсетникот за истовар\" минути, додека не ја отворите вратата или не притиснете \"Престани да потсетуваш\" во известувањето. Бара Ентитет на сензор за врата (како и самиот потсетник). Копчето за отфрлање работи на известувањата на мобилната апликација на Home Assistant (companion).",
|
||||||
|
"label": "Повторувај додека не се отвори вратата"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Време е да се чека откако ќе падне напојувањето пред да се прогласи дека циклусот е завршен. Ако напојувањето се обнови во овој прозорец, циклусот продолжува беспрекорно - ова ги премостува паузите помеѓу фазите на перење. Машините за миење садови имаат долги фази на сушење (исклучување на струја 20-60 мин), така што доцнењето на исклучување мора да го надмине тоа за да се задржи целото перење+сушење како еден циклус.",
|
"doc": "Време е да се чека откако ќе падне напојувањето пред да се прогласи дека циклусот е завршен. Ако напојувањето се обнови во овој прозорец, циклусот продолжува беспрекорно - ова ги премостува паузите помеѓу фазите на перење. Машините за миење садови имаат долги фази на сушење (исклучување на струја 20-60 мин), така што доцнењето на исклучување мора да го надмине тоа за да се задржи целото перење+сушење како еден циклус.",
|
||||||
"label": "Одложување на исклучување"
|
"label": "Одложување на исклучување"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Острина на енергија",
|
"label": "Острина на енергија",
|
||||||
"doc": "Острина на казната за несовпаѓање на енергија во Фаза 4. Помал = построг: несовпаѓањето на енергија повеќе го намалува резултатот. Стандардната вредност 0,25 е намерно попустлива отколку Острината на траење бидејќи енергијата варира со оптоварувањето. Употребувајте заедно со Тежината на енергија."
|
"doc": "Острина на казната за несовпаѓање на енергија во Фаза 4. Помал = построг: несовпаѓањето на енергија повеќе го намалува резултатот. Стандардната вредност 0,25 е намерно попустлива отколку Острината на траење бидејќи енергијата варира со оптоварувањето. Употребувајте заедно со Тежината на енергија."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Интервал на профилот на моќност",
|
||||||
|
"doc": "Големина на сегментот за атрибутот на сензорот power_profile по профил (рамна низа просечни вати по слот, користена од надворешни планери како EMHASS и tibber_prices). Помали сегменти ги задржуваат кратките врвови на моќноста остри; поголемите ја израмнуваат формата. Стандардно 15 мин. Само за читање; не влијае на откривањето."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Задржи живото известување при допир",
|
||||||
|
"doc": "Само за Android. Нека известувањето за напредокот во живо биде постојано (прикачено) за да не се отфрли со допир. Исклучено го задржува стандарното однесување каде допирот го отфрлува."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Цел при допир на живото известување",
|
||||||
|
"doc": "Само за Android. Каде се отвора допирот на известувањето за напредок во живо (на пр. /lovelace/laundry или целосен URL) наместо почетната страна на апликацијата. Оставете празно за стандарното однесување."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Вратата се отвора автоматски на крај",
|
||||||
|
"doc": "За машини за миење садови чија врата се отвора на крајот на циклусот за сушење (AirDry и слично). Со вклучено, отворање на вратата за време на тековниот циклус повеќе не го паузира засекогаш; наместо тоа, ако вратата остане отворена за времето на задржување подолу, WashData го третира циклусот како завршен. Кратко отворање (додавање предмет) се игнорира. Потребен е ентитет на сензор за врата."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Задржување при отворена врата",
|
||||||
|
"doc": "Колку долго вратата мора да остане отворена пред WashData да го заврши циклусот, кога е вклучено \"Вратата се отвора автоматски на крај\". Доволно долго за да се игнора брзото додавање сад (стандардно 60 с), доволно кратко за брзо завршување откако машината ја отвора вратата."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Потребно е име",
|
"name_required": "Потребно е име",
|
||||||
"no_split_found": "Не се пронајдени празни празнини за да се подели",
|
"no_split_found": "Не се пронајдени празни празнини за да се подели",
|
||||||
"panel_settings_saved": "Поставките на панелот се зачувани",
|
"panel_settings_saved": "Поставките на панелот се зачувани",
|
||||||
|
"pg_preset_loaded": "Конфигурацијата „{name}“ е вчитана",
|
||||||
|
"pg_preset_saved": "Конфигурацијата „{name}“ е зачувана",
|
||||||
|
"pg_sugg_loaded": "Вчитани {n} предложени вредности - стартувај го песочникот за споредба",
|
||||||
|
"pg_sugg_ml_loaded": "Вчитани {n} ML калибрирани вредности - стартувај го песочникот за споредба",
|
||||||
"phase_name_required": "Потребно е име на фаза",
|
"phase_name_required": "Потребно е име на фаза",
|
||||||
"phase_updated": "Фазата е ажурирана",
|
"phase_updated": "Фазата е ажурирана",
|
||||||
"phases_saved": "Фазите се зачувани",
|
"phases_saved": "Фазите се зачувани",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "Врз основа на минималната работна моќност ({min}W) забележана во последниот циклус.",
|
"min_active": "Врз основа на минималната работна моќност ({min}W) забележана во последниот циклус.",
|
||||||
"min_duration_ratio": "Задржано што е можно пониско за програмата да се препознае рано во циклусот; праговите на доверба и двосмисленост спречуваат прерани потврди.",
|
"min_duration_ratio": "Задржано што е можно пониско за програмата да се препознае рано во циклусот; праговите на доверба и двосмисленост спречуваат прерани потврди.",
|
||||||
"min_off_gap": "Врз основа на {gaps} забележани интервали меѓу циклусите (p05={p05}s). Долна граница на уредот: {floor}s.",
|
"min_off_gap": "Врз основа на {gaps} забележани интервали меѓу циклусите (p05={p05}s). Долна граница на уредот: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Димензионирано да го премости најдолгиот тивок период во рамките на циклусот: {span}s + 60s резерва, од {spans} премостени интервали низ {cycles} чисти циклуси (останува под вашиот најкраток размак меѓу две последователни вклучувања, кој изнесува {ceiling}s).",
|
||||||
"min_power": "40 % од најниската работна моќност p05 ({p05}W) низ {cycles} чисти циклуси, за прагот на исклучување да остане под реалната потрошувачка.{excl}",
|
"min_power": "40 % од најниската работна моќност p05 ({p05}W) низ {cycles} чисти циклуси, за прагот на исклучување да остане под реалната потрошувачка.{excl}",
|
||||||
"ml_auto_label": "Најниската доверба што моделот за квалитет сепак ја оценил како чиста (p10 од {cycles} чисти циклуси = {p10}).",
|
"ml_auto_label": "Најниската доверба што моделот за квалитет сепак ја оценил како чиста (p10 од {cycles} чисти циклуси = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} циклуси ({pct}%) имале пауза што детекторот за крај ја оценил над 50 %; барај {val} потврда(и) за крај.",
|
"ml_end_repeat": "{false}/{total} циклуси ({pct}%) имале пауза што детекторот за крај ја оценил над 50 %; барај {val} потврда(и) за крај.",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Задржано веднаш над најниската работна моќност p05 низ {cycles} циклуси ({p05}W) за стартот да се фати што е можно порано, а прагот на запирање да остане под најниската работна моќност на машината.",
|
"thr_batch": "Задржано веднаш над најниската работна моќност p05 низ {cycles} циклуси ({p05}W) за стартот да се фати што е можно порано, а прагот на запирање да остане под најниската работна моќност на машината.",
|
||||||
"tol_per_profile": "p75 на варијансата на траењето по профил низ {profiles} профили ({cycles} циклуси); доследните профили не се казнуваат.",
|
"tol_per_profile": "p75 на варијансата на траењето по профил низ {profiles} профили ({cycles} циклуси); доследните профили не се казнуваат.",
|
||||||
"tol_pooled": "Врз основа на здружената варијанса на траењето на {cycles} неодамнешни означени циклуси (p95 отстапување={dev}).",
|
"tol_pooled": "Врз основа на здружената варијанса на траењето на {cycles} неодамнешни означени циклуси (p95 отстапување={dev}).",
|
||||||
"watchdog": "Задржано што е можно пониско додека е безбедно (3x интервалот на ажурирање p95 од {p95}s, мин. 30s) за застоите брзо да се фатат без лажни запирања."
|
"watchdog": "Задржано што е можно пониско додека е безбедно (малку над интервалот на ажурирање p95 од {p95}s, мин. 30s) за застоите брзо да се фатат без лажни запирања."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Исклучени се {total} погрешно откриени циклуси: {parts}.",
|
"summary": "Исклучени се {total} погрешно откриени циклуси: {parts}.",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Друго"
|
"other": "Друго"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Машина за миење садови: секунди неактивност по очекуваното траење пред да се ослободи чекањето за испумпување на крајот од циклусот",
|
||||||
"completion_min_seconds": "Најкратко извршување што се смета за вистински циклус",
|
"completion_min_seconds": "Најкратко извршување што се смета за вистински циклус",
|
||||||
"end_repeat_count": "Ниски отчитувања по ред пред завршување",
|
"end_repeat_count": "Ниски отчитувања по ред пред завршување",
|
||||||
"interrupted_min_seconds": "Кратки циклуси означени како прекинати",
|
"interrupted_min_seconds": "Кратки циклуси означени како прекинати",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entitet ikke funnet",
|
||||||
|
"running_long": "Kjører lenger",
|
||||||
|
"remaining": "gjenstår",
|
||||||
|
"progress": "fremdrift",
|
||||||
|
"show_time_remaining": "Vis gjenstående tid",
|
||||||
|
"show_percentage": "Vis prosent",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Flis (kompakt)",
|
||||||
|
"detail": "Detalj (fyldig)",
|
||||||
|
"glance": "Oversikt (flere enheter)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pause",
|
||||||
|
"resume": "Fortsett",
|
||||||
|
"terminate": "Avslutt syklus",
|
||||||
|
"record_start": "Start opptak",
|
||||||
|
"record_stop": "Stopp opptak",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Åpne WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Oppsett",
|
||||||
|
"entity": "Apparatentitet",
|
||||||
|
"entities": "Apparater",
|
||||||
|
"title": "Tittel",
|
||||||
|
"icon": "Ikon",
|
||||||
|
"show_state": "Vis tilstand",
|
||||||
|
"show_program": "Vis program",
|
||||||
|
"show_progress_bar": "Vis fremdriftslinje",
|
||||||
|
"spin_icon": "Roter ikon under kjøring",
|
||||||
|
"display_mode": "Detaljlinje",
|
||||||
|
"active_color": "Overstyr aktiv farge",
|
||||||
|
"show_phase": "Vis fase",
|
||||||
|
"show_energy": "Vis energi og kostnad",
|
||||||
|
"show_anomaly": "Vis varsel om lang kjøring",
|
||||||
|
"show_sparkline": "Vis sanntids effektgraf",
|
||||||
|
"buttons": "Handlingsknapper",
|
||||||
|
"program_entity": "Programentitet (overstyr)",
|
||||||
|
"time_entity": "Tidsentitet (overstyr)",
|
||||||
|
"pct_entity": "Fremdriftsentitet (overstyr)",
|
||||||
|
"power_entity": "Effektentitet (overstyr)",
|
||||||
|
"tap_action": "Trykkhandling",
|
||||||
|
"hold_action": "Holdhandling",
|
||||||
|
"double_tap_action": "Dobbelttrykkhandling"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} avvik oppdaget (f.eks. dør åpnet midt i syklusen) – åpne for å se dem på grafen",
|
"artifact_tip": "{n} avvik oppdaget (f.eks. dør åpnet midt i syklusen) – åpne for å se dem på grafen",
|
||||||
"auto": "(automatisk oppdaget)",
|
"auto": "(automatisk oppdaget)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Sett den kjørende syklusen på pause – apparatet fortsetter der det slapp",
|
"pause_cycle_tip": "Sett den kjørende syklusen på pause – apparatet fortsetter der det slapp",
|
||||||
"pg_apply_device": "Bruk på enhet",
|
"pg_apply_device": "Bruk på enhet",
|
||||||
"pg_autofill": "Autofyll",
|
"pg_autofill": "Autofyll",
|
||||||
|
"pg_load_calibrated": "Last inn kalibrerte (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Laster inn ML-kalibrerte innstillinger som sandkasse-overstyringer",
|
||||||
|
"pg_load_live": "Last inn aktive innstillinger",
|
||||||
|
"pg_load_live_tip": "Les inn integrasjonens gjeldende innstillinger på nytt og forkast alle endringer i sandkassen",
|
||||||
|
"pg_load_suggested": "Last inn forslag ({n})",
|
||||||
|
"pg_load_suggested_tip": "Laster inn auto-tunerens gjeldende forslag som sandkasse-overstyringer",
|
||||||
|
"pg_preset_delete": "Slett forhåndsinnstilling",
|
||||||
|
"pg_preset_load": "Last inn forhåndsinnstilling",
|
||||||
|
"pg_preset_load_tip": "Erstatt verdiene i sandkassen med denne forhåndsinnstillingen (de aktive innstillingene berøres ikke)",
|
||||||
|
"pg_preset_save": "Lagre som forhåndsinnstilling",
|
||||||
|
"pg_preset_save_tip": "Lagre alle verdiene nedenfor som en navngitt forhåndsinnstilling for denne enheten",
|
||||||
|
"pg_publish_all": "Lagre {n} i integrasjonen",
|
||||||
|
"pg_publish_one": "Lagre {label} i integrasjonen",
|
||||||
"play": "Spill av",
|
"play": "Spill av",
|
||||||
"process": "Behandl",
|
"process": "Behandl",
|
||||||
"process_history": "Behandl nå",
|
"process_history": "Behandl nå",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Last ned eksport",
|
"download_export": "Last ned eksport",
|
||||||
"analyze_import": "Analyser fil",
|
"analyze_import": "Analyser fil",
|
||||||
"import_selected": "Importer valgte",
|
"import_selected": "Importer valgte",
|
||||||
"back": "Tilbake"
|
"back": "Tilbake",
|
||||||
|
"mute_suggestion": "Slutt å foreslå denne innstillingen",
|
||||||
|
"reset_muted": "Tilbakestill dempede forslag"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Ingen automatiseringer refererer til denne enheten ennå.",
|
"no_automations": "Ingen automatiseringer refererer til denne enheten ennå.",
|
||||||
"panel_settings": "Panelinnstillinger",
|
"panel_settings": "Panelinnstillinger",
|
||||||
"param_sweep": "Parametersveip",
|
"param_sweep": "Parametersveip",
|
||||||
|
"pg_settings_source": "Kilde for innstillingene",
|
||||||
"phase_catalog": "Fasekatalog",
|
"phase_catalog": "Fasekatalog",
|
||||||
"playground": "Sandkasse",
|
"playground": "Sandkasse",
|
||||||
"process_history": "Prosesshistorie",
|
"process_history": "Prosesshistorie",
|
||||||
@@ -410,6 +474,9 @@
|
|||||||
"pg_group_detection": "Deteksjonsutløsere",
|
"pg_group_detection": "Deteksjonsutløsere",
|
||||||
"pg_group_timing": "Tidsregler",
|
"pg_group_timing": "Tidsregler",
|
||||||
"pg_idle": "Inaktiv",
|
"pg_idle": "Inaktiv",
|
||||||
|
"pg_preset": "Forhåndsinnstilling for sandkassen",
|
||||||
|
"pg_preset_name": "Navn på ny forhåndsinnstilling",
|
||||||
|
"pg_preset_none": "Velg en forhåndsinnstilling…",
|
||||||
"pg_stress_group": "Test av inaktiv avslutning",
|
"pg_stress_group": "Test av inaktiv avslutning",
|
||||||
"pg_stress_idle_auto": "Auto",
|
"pg_stress_idle_auto": "Auto",
|
||||||
"pg_stress_idle_w": "Inaktivt nivå (W)",
|
"pg_stress_idle_w": "Inaktivt nivå (W)",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_import_copy": "Importer som kopi",
|
"conflict_import_copy": "Importer som kopi",
|
||||||
"conflict_keep_mine": "Behold mine",
|
"conflict_keep_mine": "Behold mine",
|
||||||
"conflict_overwrite": "Overskriv",
|
"conflict_overwrite": "Overskriv",
|
||||||
"pg_anti_wrinkle": "Anti-rynke"
|
"pg_anti_wrinkle": "Anti-rynke",
|
||||||
|
"font_size": "Panelets skriftstørrelse"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Alle nivåer",
|
"all_levels": "Alle nivåer",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Bruke beste verdi: {label} = {value}?",
|
"pg_apply_confirm": "Bruke beste verdi: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Velg en syklus ovenfor, og trykk deretter Last inn for å se effektkurven.",
|
"pg_canvas_empty": "Velg en syklus ovenfor, og trykk deretter Last inn for å se effektkurven.",
|
||||||
"pg_chart_caption": "Deteksjons-/treffrate på tvers av verdier for {param}",
|
"pg_chart_caption": "Deteksjons-/treffrate på tvers av verdier for {param}",
|
||||||
|
"pg_ctrl_intro": "Verdiene tar utgangspunkt i denne enhetens aktive innstillinger i integrasjonen. Endringer blir værende i sandkassen til du lagrer dem i integrasjonen.",
|
||||||
|
"pg_live_unavailable": "Aktive innstillinger er ikke tilgjengelige, viser standardverdier.",
|
||||||
|
"pg_load_live_confirm": "Forkaste {n} endring(er) i sandkassen og laste inn integrasjonens gjeldende innstillinger på nytt?",
|
||||||
"pg_match_rate": "{pct}% treffrate på {total} sykluser",
|
"pg_match_rate": "{pct}% treffrate på {total} sykluser",
|
||||||
|
"pg_matches_live": "Samsvarer med de aktive innstillingene",
|
||||||
|
"pg_n_changed": "{n} endret sammenlignet med de aktive innstillingene",
|
||||||
|
"pg_sugg_none": "Alle forslag samsvarer allerede med de aktive innstillingene",
|
||||||
|
"pg_preset_delete_confirm": "Slette forhåndsinnstillingen \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Grensen for forhåndsinnstillinger er nådd ({n})",
|
||||||
|
"pg_preset_overwrite": "Overskrive forhåndsinnstillingen \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Lagre {label} = {value} i innstillingene for denne enheten?",
|
||||||
"pg_restart_note": "Start Home Assistant på nytt for å aktivere simuleringsverktøyene.",
|
"pg_restart_note": "Start Home Assistant på nytt for å aktivere simuleringsverktøyene.",
|
||||||
"pg_sim_progress": "{done} / {total} sykluser",
|
"pg_sim_progress": "{done} / {total} sykluser",
|
||||||
"pg_starting": "Starter…",
|
"pg_starting": "Starter…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Varighet trender kortere ({pct} %/syklus) – nylig snitt {avg}",
|
"trend_duration_shorter": "Varighet trender kortere ({pct} %/syklus) – nylig snitt {avg}",
|
||||||
"trend_energy_down": "Energi på vei ned ({pct} %/syklus)",
|
"trend_energy_down": "Energi på vei ned ({pct} %/syklus)",
|
||||||
"trend_energy_up": "Energi på vei opp ({pct} %/syklus) – nylig gjennomsnittlig {avg}",
|
"trend_energy_up": "Energi på vei opp ({pct} %/syklus) – nylig gjennomsnittlig {avg}",
|
||||||
|
"trim_destructive_confirm": "Kun {pct}% av syklusen beholdes. Dette kan ikke angres. Fortsette?",
|
||||||
"trim_intro": "Dra de røde håndtakene, eller skriv inn verdier. Alt utenfor vinduet fjernes.",
|
"trim_intro": "Dra de røde håndtakene, eller skriv inn verdier. Alt utenfor vinduet fjernes.",
|
||||||
"tuning_suggestions_available": "{count} justeringsforslag tilgjengelig fra observerte sykluser. De vises ved siden av de relevante feltene.",
|
"tuning_suggestions_available": "{count} justeringsforslag tilgjengelig fra observerte sykluser. De vises ved siden av de relevante feltene.",
|
||||||
"unsure_detected_prefix": "WashData er usikker på om det er oppdaget",
|
"unsure_detected_prefix": "WashData er usikker på om det er oppdaget",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Importerte elementer legges til; ingenting lokalt går tapt. Navnekonflikter løses nedenfor.",
|
"merge_hint": "Importerte elementer legges til; ingenting lokalt går tapt. Navnekonflikter løses nedenfor.",
|
||||||
"replace_warn": "Hver avkrysset kategori slettes og erstattes fra filen. Ikke-avkryssede kategorier forblir uendret.",
|
"replace_warn": "Hver avkrysset kategori slettes og erstattes fra filen. Ikke-avkryssede kategorier forblir uendret.",
|
||||||
"dest_reference_hint": "Importerte sykluser forbedrer bare programgjenkjenning og påvirker aldri bruks-/energistatistikk.",
|
"dest_reference_hint": "Importerte sykluser forbedrer bare programgjenkjenning og påvirker aldri bruks-/energistatistikk.",
|
||||||
"dest_real_history_hint": "Importerte sykluser teller som dette apparatets egen historikk og mater energi-/bruksstatistikk. Bruk dette til å flytte ett apparat til en ny installasjon."
|
"dest_real_history_hint": "Importerte sykluser teller som dette apparatets egen historikk og mater energi-/bruksstatistikk. Bruk dette til å flytte ett apparat til en ny installasjon.",
|
||||||
|
"sug_muted": "Vil ikke foreslå denne innstillingen igjen",
|
||||||
|
"sug_mute_failed": "Kunne ikke dempe forslaget",
|
||||||
|
"sug_unmuted_all": "Dempede forslag tilbakestilt",
|
||||||
|
"n_suggestions_muted": "{count} dempet; autotuner vil ikke foreslå disse.",
|
||||||
|
"font_size_hint": "Gjør alt i dette panelet større eller mindre. Gjelder for kontoen din på denne enheten."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Oppvaskmaskin: stille sekunder etter forventet varighet før ventingen på tømming ved slutten av syklusen frigjøres",
|
||||||
"completion_min_seconds": "Korteste kjøring som teller som en ekte syklus",
|
"completion_min_seconds": "Korteste kjøring som teller som en ekte syklus",
|
||||||
"end_repeat_count": "Lave avlesninger på rad før avslutning",
|
"end_repeat_count": "Lave avlesninger på rad før avslutning",
|
||||||
"interrupted_min_seconds": "Korte sykluser merkes som avbrutt",
|
"interrupted_min_seconds": "Korte sykluser merkes som avbrutt",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Ubrukelig"
|
"unusable": "Ubrukelig"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Oppvaskmaskin",
|
||||||
|
"intro": "Håndtering av syklusslutt for oppvaskmaskiner, som vanligvis avsluttes med en lang, nesten lydløs tørkefase før en kort siste tømming."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Anti-rynke-/anti-krøll-modus oppdager lavomsatt tumle-pulser etter hoveddelen og holder dem festet til den ferdige syklusen.",
|
"intro": "Anti-rynke-/anti-krøll-modus oppdager lavomsatt tumle-pulser etter hoveddelen og holder dem festet til den ferdige syklusen.",
|
||||||
"label": "Anti-rynke"
|
"label": "Anti-rynke"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Frigjøring etter stille tørkefase",
|
||||||
|
"doc": "Når syklusen passerer forventet varighet: hvor lenge oppvaskmaskinen må holde seg stille (under Stoppterskel) før WashData slutter å vente på en siste tømming og avslutter syklusen. Øk den hvis maskinen din har en lang stille tørkefase før en sen siste tømming som blir oversett - et bredere vindu lar den innlærte varigheten følge sesongvariasjoner (kaldere tilførselsvann = lengre sykluser) i stedet for å låse seg til det gamle gjennomsnittet. Den forkorter bare ventetiden i forhold til den interne grensen på 30 minutter for sluttoppen, aldri forlenger den."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Gjenkjenn de korte laveffekttrommelpulsene en tørketrommel sender ut etter hovedvarmefasen, og hold dem festet til den ferdige syklusen i stedet for å lese dem som nye sykluser.",
|
"doc": "Gjenkjenn de korte laveffekttrommelpulsene en tørketrommel sender ut etter hovedvarmefasen, og hold dem festet til den ferdige syklusen i stedet for å lese dem som nye sykluser.",
|
||||||
"label": "Aktiver anti-rynke-deteksjon"
|
"label": "Aktiver anti-rynke-deteksjon"
|
||||||
@@ -1260,6 +1353,10 @@
|
|||||||
"doc": "Minutter etter at en syklus avsluttes før du sender den fortsatt ventende påminnelsen om \"last av maskinen\". Sett 0 for å deaktivere påminnelsen.",
|
"doc": "Minutter etter at en syklus avsluttes før du sender den fortsatt ventende påminnelsen om \"last av maskinen\". Sett 0 for å deaktivere påminnelsen.",
|
||||||
"label": "Utlastingspåminnelsesforsinkelse"
|
"label": "Utlastingspåminnelsesforsinkelse"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Fortsetter å sende utlastingspåminnelsen på nytt hvert \"Utlastingspåminnelsesforsinkelse\" minutt til du åpner døren eller trykker på \"Stopp påminnelser\" i varselet. Krever en Dørensorenhet (det gjør selve påminnelsen). Avvis-knappen fungerer på varsler fra Home Assistant companion-appen (mobil).",
|
||||||
|
"label": "Gjenta til døren åpnes"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "På tide å vente etter at strømmen faller før du erklærer at syklusen er fullført. Hvis strømmen gjenopptas innenfor dette vinduet, fortsetter syklusen sømløst - dette slår bro mellom pauser mellom vasketrinn. Oppvaskmaskiner har lange tørkefaser (strøm av i 20-60 min) så avslåingsforsinkelsen må overstige det for å holde hele vask+tørr som én syklus.",
|
"doc": "På tide å vente etter at strømmen faller før du erklærer at syklusen er fullført. Hvis strømmen gjenopptas innenfor dette vinduet, fortsetter syklusen sømløst - dette slår bro mellom pauser mellom vasketrinn. Oppvaskmaskiner har lange tørkefaser (strøm av i 20-60 min) så avslåingsforsinkelsen må overstige det for å holde hele vask+tørr som én syklus.",
|
||||||
"label": "Av-forsinkelse"
|
"label": "Av-forsinkelse"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energiskarphet",
|
"label": "Energiskarphet",
|
||||||
"doc": "Skarphet i Trinn 4 sitt straff for energioverensstemmelse. Lavere = strengere: et energiavvik straffes mer. Standard 0,25 er bevisst mer tillåtende enn varighetsskarphet fordi energi varierer med last. Par med Energivekt."
|
"doc": "Skarphet i Trinn 4 sitt straff for energioverensstemmelse. Lavere = strengere: et energiavvik straffes mer. Standard 0,25 er bevisst mer tillåtende enn varighetsskarphet fordi energi varierer med last. Par med Energivekt."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Effektprofil-intervall",
|
||||||
|
"doc": "Bucket-størrelse for effektprofilsensorens attributt power_profile (det flate arrayet med gjennomsnittlige wattverdier per slot som brukes av eksterne planleggere som EMHASS og tibber_prices). Mindre buckets holder korte effekttopper skarpe; større buckets glatter kurven. Standard 15 min. Kun for visning; påvirker ikke deteksjon."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Behold live-varsel ved trykk",
|
||||||
|
"doc": "Kun Android. Gjør live-fremdriftsvarselet vedvarende (sticky) slik at et trykk ikke avviser det. Av: standardadferd der et trykk avviser varselet."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Trykkdestinasjon for live-varsel",
|
||||||
|
"doc": "Kun Android. Hvor et trykk på live-fremdriftsvarselet åpner (f.eks. /lovelace/laundry eller en full URL) i stedet for appens startside. La stå tomt for standard."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Dør åpnes automatisk ved avslutning",
|
||||||
|
"doc": "For oppvaskmaskiner som spretter opp døren på slutten av syklusen for tørking (AirDry og lignende). Med dette aktivert vil en døråpning under en aktiv syklus ikke sette den på pause for alltid; hvis døren forblir åpen i den konfigurerte oppholdstiden, behandler WashData syklusen som ferdig. En kort åpning (legge til et element) ignoreres. Krever en dørsensorenhet."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Dørens åpningstid ved avslutning",
|
||||||
|
"doc": "Hvor lenge døren må forbli åpen før WashData avslutter syklusen, når \"Dør åpnes automatisk ved avslutning\" er aktivert. Lang nok til å ignorere rask tillegging av et fat (standard 60 s), kort nok til å avslutte raskt når maskinen spretter opp døren."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1620,6 +1737,7 @@
|
|||||||
"min_active": "Basert på laveste aktive effekt ({min}W) observert i siste syklus.",
|
"min_active": "Basert på laveste aktive effekt ({min}W) observert i siste syklus.",
|
||||||
"min_duration_ratio": "Holdt så lav som mulig slik at et program gjenkjennes tidlig i syklusen; konfidens- og tvetydighetsgrensene hindrer forhastede beslutninger.",
|
"min_duration_ratio": "Holdt så lav som mulig slik at et program gjenkjennes tidlig i syklusen; konfidens- og tvetydighetsgrensene hindrer forhastede beslutninger.",
|
||||||
"min_off_gap": "Basert på {gaps} observerte mellomrom mellom sykluser (p05={p05}s). Enhetsgulv: {floor}s.",
|
"min_off_gap": "Basert på {gaps} observerte mellomrom mellom sykluser (p05={p05}s). Enhetsgulv: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensjonert for å bygge bro over den lengste stille perioden i en syklus: {span}s + 60s buffer, fra {spans} dekkede mellomrom på tvers av {cycles} rene sykluser (holder seg under ditt korteste mellomrom på {ceiling}s mellom to kjøringer).",
|
||||||
"min_power": "40% av den laveste aktive effekten ved p05 ({p05}W) på tvers av {cycles} rene sykluser, noe som holder av-terskelen under reelt forbruk.{excl}",
|
"min_power": "40% av den laveste aktive effekten ved p05 ({p05}W) på tvers av {cycles} rene sykluser, noe som holder av-terskelen under reelt forbruk.{excl}",
|
||||||
"ml_auto_label": "Laveste konfidens som kvalitetsmodellen fortsatt vurderte som ren (p10 av {cycles} rene sykluser = {p10}).",
|
"ml_auto_label": "Laveste konfidens som kvalitetsmodellen fortsatt vurderte som ren (p10 av {cycles} rene sykluser = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} sykluser ({pct}%) hadde en pause som sluttdetektoren vurderte til >50%; krever {val} sluttbekreftelse(r).",
|
"ml_end_repeat": "{false}/{total} sykluser ({pct}%) hadde en pause som sluttdetektoren vurderte til >50%; krever {val} sluttbekreftelse(r).",
|
||||||
@@ -1636,7 +1754,7 @@
|
|||||||
"thr_batch": "Holdt like over den laveste aktive effekten ved p05 på tvers av {cycles} sykluser ({p05}W) slik at en start fanges så tidlig som mulig og stoppterskelen holder seg under maskinens laveste driftseffekt.",
|
"thr_batch": "Holdt like over den laveste aktive effekten ved p05 på tvers av {cycles} sykluser ({p05}W) slik at en start fanges så tidlig som mulig og stoppterskelen holder seg under maskinens laveste driftseffekt.",
|
||||||
"tol_per_profile": "p75 for varighetsvariansen per profil på tvers av {profiles} profiler ({cycles} sykluser); stramme profiler straffes ikke.",
|
"tol_per_profile": "p75 for varighetsvariansen per profil på tvers av {profiles} profiler ({cycles} sykluser); stramme profiler straffes ikke.",
|
||||||
"tol_pooled": "Basert på samlet varighetsvarians for {cycles} nyeste merkede sykluser (p95 avvik={dev}).",
|
"tol_pooled": "Basert på samlet varighetsvarians for {cycles} nyeste merkede sykluser (p95 avvik={dev}).",
|
||||||
"watchdog": "Holdt så lavt som forsvarlig (3x p95-oppdateringsmellomrommet på {p95}s, min 30s) slik at stans fanges raskt uten falske stopp."
|
"watchdog": "Holdt så lavt som forsvarlig (like over p95-oppdateringsmellomrommet på {p95}s, min 30s) slik at stans fanges raskt uten falske stopp."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Ekskluderte {total} feildetekterte syklus(er): {parts}.",
|
"summary": "Ekskluderte {total} feildetekterte syklus(er): {parts}.",
|
||||||
@@ -1716,6 +1834,10 @@
|
|||||||
"name_required": "Navn kreves",
|
"name_required": "Navn kreves",
|
||||||
"no_split_found": "Ingen ledige mellomrom funnet å dele seg på",
|
"no_split_found": "Ingen ledige mellomrom funnet å dele seg på",
|
||||||
"panel_settings_saved": "Panelinnstillinger lagret",
|
"panel_settings_saved": "Panelinnstillinger lagret",
|
||||||
|
"pg_preset_loaded": "Forhåndsinnstillingen \"{name}\" er lastet inn",
|
||||||
|
"pg_preset_saved": "Forhåndsinnstillingen \"{name}\" er lagret",
|
||||||
|
"pg_sugg_loaded": "{n} foreslåtte verdi(er) lest inn - kjør sandkassen for å sammenligne",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-kalibrerte verdi(er) lest inn - kjør sandkassen for å sammenligne",
|
||||||
"phase_name_required": "Fasenavn er påkrevd",
|
"phase_name_required": "Fasenavn er påkrevd",
|
||||||
"phase_updated": "Fase oppdatert",
|
"phase_updated": "Fase oppdatert",
|
||||||
"phases_saved": "Faser lagret",
|
"phases_saved": "Faser lagret",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entiteit niet gevonden",
|
||||||
|
"running_long": "Loopt langer",
|
||||||
|
"remaining": "resterend",
|
||||||
|
"progress": "voortgang",
|
||||||
|
"show_time_remaining": "Resterende tijd tonen",
|
||||||
|
"show_percentage": "Percentage tonen",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Tegel (compact)",
|
||||||
|
"detail": "Detail (uitgebreid)",
|
||||||
|
"glance": "Overzicht (meerdere apparaten)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pauzeren",
|
||||||
|
"resume": "Hervatten",
|
||||||
|
"terminate": "Cyclus beëindigen",
|
||||||
|
"record_start": "Opname starten",
|
||||||
|
"record_stop": "Opname stoppen",
|
||||||
|
"program": "Programma",
|
||||||
|
"open_panel": "WashData openen"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Lay-out",
|
||||||
|
"entity": "Apparaatentiteit",
|
||||||
|
"entities": "Apparaten",
|
||||||
|
"title": "Titel",
|
||||||
|
"icon": "Pictogram",
|
||||||
|
"show_state": "Status tonen",
|
||||||
|
"show_program": "Programma tonen",
|
||||||
|
"show_progress_bar": "Voortgangsbalk tonen",
|
||||||
|
"spin_icon": "Pictogram laten draaien tijdens uitvoering",
|
||||||
|
"display_mode": "Detailregel",
|
||||||
|
"active_color": "Actieve kleur overschrijven",
|
||||||
|
"show_phase": "Fase tonen",
|
||||||
|
"show_energy": "Energie en kosten tonen",
|
||||||
|
"show_anomaly": "Waarschuwing voor uitloop tonen",
|
||||||
|
"show_sparkline": "Live vermogensgrafiek tonen",
|
||||||
|
"buttons": "Actieknoppen",
|
||||||
|
"program_entity": "Programma-entiteit (overschrijven)",
|
||||||
|
"time_entity": "Tijdentiteit (overschrijven)",
|
||||||
|
"pct_entity": "Voortgangsentiteit (overschrijven)",
|
||||||
|
"power_entity": "Vermogensentiteit (overschrijven)",
|
||||||
|
"tap_action": "Tikactie",
|
||||||
|
"hold_action": "Vasthoudactie",
|
||||||
|
"double_tap_action": "Dubbeltikactie"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} afwijkingen gedetecteerd (bijvoorbeeld de deur werd halverwege de cyclus geopend) – open om ze in de grafiek te zien",
|
"artifact_tip": "{n} afwijkingen gedetecteerd (bijvoorbeeld de deur werd halverwege de cyclus geopend) – open om ze in de grafiek te zien",
|
||||||
"auto": "(automatisch gedetecteerd)",
|
"auto": "(automatisch gedetecteerd)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "De actieve cyclus pauzeren – het apparaat hervat waar het was gestopt",
|
"pause_cycle_tip": "De actieve cyclus pauzeren – het apparaat hervat waar het was gestopt",
|
||||||
"pg_apply_device": "Toepassen op apparaat",
|
"pg_apply_device": "Toepassen op apparaat",
|
||||||
"pg_autofill": "Automatisch invullen",
|
"pg_autofill": "Automatisch invullen",
|
||||||
|
"pg_load_calibrated": "Gekalibreerde (ML) laden ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Laadt ML-gekalibreerde instellingen als speeltuin-overschrijvingen",
|
||||||
|
"pg_load_live": "Actieve instellingen laden",
|
||||||
|
"pg_load_live_tip": "De huidige instellingen van de integratie opnieuw inlezen en alle wijzigingen in de speeltuin weggooien",
|
||||||
|
"pg_load_suggested": "Suggesties laden ({n})",
|
||||||
|
"pg_load_suggested_tip": "Laadt de huidige suggesties van de auto-tuner als speeltuin-overschrijvingen",
|
||||||
|
"pg_preset_delete": "Voorinstelling verwijderen",
|
||||||
|
"pg_preset_load": "Voorinstelling laden",
|
||||||
|
"pg_preset_load_tip": "De waarden in de speeltuin vervangen door deze voorinstelling (de actieve instellingen blijven ongewijzigd)",
|
||||||
|
"pg_preset_save": "Opslaan als voorinstelling",
|
||||||
|
"pg_preset_save_tip": "Alle onderstaande waarden opslaan als voorinstelling met een naam voor dit apparaat",
|
||||||
|
"pg_publish_all": "{n} opslaan in integratie",
|
||||||
|
"pg_publish_one": "{label} opslaan in de integratie",
|
||||||
"play": "Afspelen",
|
"play": "Afspelen",
|
||||||
"process": "Verwerken",
|
"process": "Verwerken",
|
||||||
"process_history": "Verwerk nu",
|
"process_history": "Verwerk nu",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Export downloaden",
|
"download_export": "Export downloaden",
|
||||||
"analyze_import": "Bestand analyseren",
|
"analyze_import": "Bestand analyseren",
|
||||||
"import_selected": "Selectie importeren",
|
"import_selected": "Selectie importeren",
|
||||||
"back": "Terug"
|
"back": "Terug",
|
||||||
|
"mute_suggestion": "Deze instelling niet meer voorstellen",
|
||||||
|
"reset_muted": "Gedempte suggesties herstellen"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Er zijn nog geen automatiseringen die naar dit apparaat verwijzen.",
|
"no_automations": "Er zijn nog geen automatiseringen die naar dit apparaat verwijzen.",
|
||||||
"panel_settings": "Paneelinstellingen",
|
"panel_settings": "Paneelinstellingen",
|
||||||
"param_sweep": "Parameterscan",
|
"param_sweep": "Parameterscan",
|
||||||
|
"pg_settings_source": "Herkomst van de instellingen",
|
||||||
"phase_catalog": "Fasecatalogus",
|
"phase_catalog": "Fasecatalogus",
|
||||||
"playground": "Speeltuin",
|
"playground": "Speeltuin",
|
||||||
"process_history": "Procesgeschiedenis",
|
"process_history": "Procesgeschiedenis",
|
||||||
@@ -410,6 +474,9 @@
|
|||||||
"pg_group_detection": "Detectietriggers",
|
"pg_group_detection": "Detectietriggers",
|
||||||
"pg_group_timing": "Timingregels",
|
"pg_group_timing": "Timingregels",
|
||||||
"pg_idle": "Inactief",
|
"pg_idle": "Inactief",
|
||||||
|
"pg_preset": "Speeltuin-voorinstelling",
|
||||||
|
"pg_preset_name": "Naam van nieuwe voorinstelling",
|
||||||
|
"pg_preset_none": "Kies een voorinstelling…",
|
||||||
"pg_stress_group": "Test voor inactieve beëindiging",
|
"pg_stress_group": "Test voor inactieve beëindiging",
|
||||||
"pg_stress_idle_auto": "Auto",
|
"pg_stress_idle_auto": "Auto",
|
||||||
"pg_stress_idle_w": "Inactief vermogen (W)",
|
"pg_stress_idle_w": "Inactief vermogen (W)",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_import_copy": "Importeren als kopie",
|
"conflict_import_copy": "Importeren als kopie",
|
||||||
"conflict_keep_mine": "Die van mij behouden",
|
"conflict_keep_mine": "Die van mij behouden",
|
||||||
"conflict_overwrite": "Overschrijven",
|
"conflict_overwrite": "Overschrijven",
|
||||||
"pg_anti_wrinkle": "Anti-kreuk"
|
"pg_anti_wrinkle": "Anti-kreuk",
|
||||||
|
"font_size": "Paneel lettergrootte"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Alle niveaus",
|
"all_levels": "Alle niveaus",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Beste waarde toepassen: {label} = {value}?",
|
"pg_apply_confirm": "Beste waarde toepassen: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Selecteer hierboven een cyclus en druk vervolgens op Laden om de vermogenscurve te bekijken.",
|
"pg_canvas_empty": "Selecteer hierboven een cyclus en druk vervolgens op Laden om de vermogenscurve te bekijken.",
|
||||||
"pg_chart_caption": "Detectie-/matchpercentage over de waarden van {param}",
|
"pg_chart_caption": "Detectie-/matchpercentage over de waarden van {param}",
|
||||||
|
"pg_ctrl_intro": "De waarden beginnen bij de actieve instellingen van dit apparaat in de integratie. Wijzigingen blijven in de speeltuin totdat je ze opslaat in de integratie.",
|
||||||
|
"pg_live_unavailable": "Actieve instellingen niet beschikbaar, standaardwaarden worden getoond.",
|
||||||
|
"pg_load_live_confirm": "{n} wijziging(en) in de speeltuin weggooien en de huidige instellingen van de integratie opnieuw laden?",
|
||||||
"pg_match_rate": "{pct}% matchpercentage op {total} cycli",
|
"pg_match_rate": "{pct}% matchpercentage op {total} cycli",
|
||||||
|
"pg_matches_live": "Gelijk aan de actieve instellingen",
|
||||||
|
"pg_n_changed": "{n} gewijzigd t.o.v. de actieve instellingen",
|
||||||
|
"pg_sugg_none": "Alle suggesties komen al overeen met de huidige instellingen",
|
||||||
|
"pg_preset_delete_confirm": "De voorinstelling \"{name}\" verwijderen?",
|
||||||
|
"pg_preset_limit": "Maximum aantal voorinstellingen bereikt ({n})",
|
||||||
|
"pg_preset_overwrite": "De voorinstelling \"{name}\" overschrijven?",
|
||||||
|
"pg_publish_one_confirm": "{label} = {value} opslaan in de instellingen van dit apparaat?",
|
||||||
"pg_restart_note": "Start Home Assistant opnieuw op om de simulatiehulpmiddelen in te schakelen.",
|
"pg_restart_note": "Start Home Assistant opnieuw op om de simulatiehulpmiddelen in te schakelen.",
|
||||||
"pg_sim_progress": "{done} / {total} cycli",
|
"pg_sim_progress": "{done} / {total} cycli",
|
||||||
"pg_starting": "Bezig met starten…",
|
"pg_starting": "Bezig met starten…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Duur trending korter ({pct}%/cyclus) – recent gemiddelde {avg}",
|
"trend_duration_shorter": "Duur trending korter ({pct}%/cyclus) – recent gemiddelde {avg}",
|
||||||
"trend_energy_down": "Energietrend omlaag ({pct}%/cyclus)",
|
"trend_energy_down": "Energietrend omlaag ({pct}%/cyclus)",
|
||||||
"trend_energy_up": "Energie stijgt ({pct}%/cyclus) – recent gemiddelde {avg}",
|
"trend_energy_up": "Energie stijgt ({pct}%/cyclus) – recent gemiddelde {avg}",
|
||||||
|
"trim_destructive_confirm": "Hiermee wordt slechts {pct}% van de cyclus behouden. Dit kan niet ongedaan worden gemaakt. Doorgaan?",
|
||||||
"trim_intro": "Versleep de rode grepen of voer waarden in. Alles buiten het raam wordt verwijderd.",
|
"trim_intro": "Versleep de rode grepen of voer waarden in. Alles buiten het raam wordt verwijderd.",
|
||||||
"tuning_suggestions_available": "{count} afstemmingssuggestie beschikbaar op basis van waargenomen cycli. Ze verschijnen naast de relevante velden.",
|
"tuning_suggestions_available": "{count} afstemmingssuggestie beschikbaar op basis van waargenomen cycli. Ze verschijnen naast de relevante velden.",
|
||||||
"unsure_detected_prefix": "WashData weet niet zeker of het is gedetecteerd",
|
"unsure_detected_prefix": "WashData weet niet zeker of het is gedetecteerd",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Geïmporteerde items worden toegevoegd; er gaat lokaal niets verloren. Naamconflicten worden hieronder opgelost.",
|
"merge_hint": "Geïmporteerde items worden toegevoegd; er gaat lokaal niets verloren. Naamconflicten worden hieronder opgelost.",
|
||||||
"replace_warn": "Elke aangevinkte categorie wordt gewist en vervangen vanuit het bestand. Niet-aangevinkte categorieën blijven ongewijzigd.",
|
"replace_warn": "Elke aangevinkte categorie wordt gewist en vervangen vanuit het bestand. Niet-aangevinkte categorieën blijven ongewijzigd.",
|
||||||
"dest_reference_hint": "Geïmporteerde cycli verbeteren alleen de programmaherkenning en hebben nooit invloed op de gebruiks-/energiestatistieken.",
|
"dest_reference_hint": "Geïmporteerde cycli verbeteren alleen de programmaherkenning en hebben nooit invloed op de gebruiks-/energiestatistieken.",
|
||||||
"dest_real_history_hint": "Geïmporteerde cycli tellen als de eigen geschiedenis van dit apparaat en voeden de energie-/gebruiksstatistieken. Gebruik dit om één apparaat naar een nieuwe installatie te verplaatsen."
|
"dest_real_history_hint": "Geïmporteerde cycli tellen als de eigen geschiedenis van dit apparaat en voeden de energie-/gebruiksstatistieken. Gebruik dit om één apparaat naar een nieuwe installatie te verplaatsen.",
|
||||||
|
"sug_muted": "Deze instelling wordt niet meer voorgesteld",
|
||||||
|
"sug_mute_failed": "Instelling kon niet worden gedempt",
|
||||||
|
"sug_unmuted_all": "Gedempte suggesties hersteld",
|
||||||
|
"n_suggestions_muted": "{count} gedempt; de autotuner stelt deze niet meer voor.",
|
||||||
|
"font_size_hint": "Maak alles in dit paneel groter of kleiner. Geldt voor uw account op dit apparaat."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Vaatwasser: stille seconden na de verwachte duur voordat de wachttijd op het wegpompen aan het einde van de cyclus wordt vrijgegeven",
|
||||||
"completion_min_seconds": "Kortste run die als een echte cyclus telt",
|
"completion_min_seconds": "Kortste run die als een echte cyclus telt",
|
||||||
"end_repeat_count": "Opeenvolgende lage metingen voor het einde",
|
"end_repeat_count": "Opeenvolgende lage metingen voor het einde",
|
||||||
"interrupted_min_seconds": "Korte cycli gemarkeerd als onderbroken",
|
"interrupted_min_seconds": "Korte cycli gemarkeerd als onderbroken",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Onbruikbaar"
|
"unusable": "Onbruikbaar"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Vaatwasser",
|
||||||
|
"intro": "Afhandeling van het einde van de cyclus voor vaatwassers, die doorgaans eindigen met een lange, vrijwel stille droogfase vóór een kort laatste wegpompen."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "De anti-kreuk-/anti-vouw-modus detecteert lage-vermogen trommelimpulsen na de hoofdfase en houdt ze bevestigd aan de voltooide cyclus.",
|
"intro": "De anti-kreuk-/anti-vouw-modus detecteert lage-vermogen trommelimpulsen na de hoofdfase en houdt ze bevestigd aan de voltooide cyclus.",
|
||||||
"label": "Anti-kreuk"
|
"label": "Anti-kreuk"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Vrijgave na stille droogfase",
|
||||||
|
"doc": "Zodra de cyclus zijn verwachte duur voorbij is: hoe lang de vaatwasser stil moet blijven (onder de Stopdrempel) voordat WashData niet langer op een laatste wegpompen wacht en de cyclus beëindigt. Verhoog dit als uw machine een lange stille droogfase heeft vóór een laat laatste wegpompen dat wordt gemist - een breder venster laat de geleerde duur de seizoensdrift volgen (kouder toevoerwater = langere cycli) in plaats van vast te houden aan het oude gemiddelde. Het verkort de wachttijd alleen ten opzichte van de interne limiet van 30 minuten voor de eindpiek, en verlengt die nooit."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Herken de korte tuimelpulsen met laag vermogen die een droger afgeeft na de hoofdverwarmingsfase en houd ze vast aan het voltooide programma in plaats van ze als nieuwe cycli te lezen.",
|
"doc": "Herken de korte tuimelpulsen met laag vermogen die een droger afgeeft na de hoofdverwarmingsfase en houd ze vast aan het voltooide programma in plaats van ze als nieuwe cycli te lezen.",
|
||||||
"label": "Anti-kreuk detectie inschakelen"
|
"label": "Anti-kreuk detectie inschakelen"
|
||||||
@@ -1260,6 +1353,10 @@
|
|||||||
"doc": "Minuten nadat een cyclus is geëindigd voordat de nog wachtende herinnering voor het leegmaken van de machine wordt verzonden. Stel 0 in om de herinnering uit te schakelen.",
|
"doc": "Minuten nadat een cyclus is geëindigd voordat de nog wachtende herinnering voor het leegmaken van de machine wordt verzonden. Stel 0 in om de herinnering uit te schakelen.",
|
||||||
"label": "Vertraging uitlaadherinnering"
|
"label": "Vertraging uitlaadherinnering"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Blijft de uitlaadherinnering elke \"Vertraging uitlaadherinnering\" minuten opnieuw verzenden totdat u de deur opent of in de melding op \"Stop met herinneren\" tikt. Vereist een Deursensorentiteit (de herinnering zelf ook). De sluitknop werkt bij meldingen van de Home Assistant companion-app (mobiel).",
|
||||||
|
"label": "Herhalen tot de deur opengaat"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Tijd om te wachten nadat de stroom is uitgevallen voordat de cyclus als voltooid wordt verklaard. Als de stroom binnen dit venster wordt hervat, gaat de cyclus naadloos verder - dit overbrugt pauzes tussen wasfasen. Vaatwassers hebben lange droogfasen (uitschakeling gedurende 20-60 minuten), dus de uitschakelvertraging moet groter zijn dan die om de hele was+droogcyclus als één cyclus te laten verlopen.",
|
"doc": "Tijd om te wachten nadat de stroom is uitgevallen voordat de cyclus als voltooid wordt verklaard. Als de stroom binnen dit venster wordt hervat, gaat de cyclus naadloos verder - dit overbrugt pauzes tussen wasfasen. Vaatwassers hebben lange droogfasen (uitschakeling gedurende 20-60 minuten), dus de uitschakelvertraging moet groter zijn dan die om de hele was+droogcyclus als één cyclus te laten verlopen.",
|
||||||
"label": "Uitschakelvertraging"
|
"label": "Uitschakelvertraging"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energie-scherpte",
|
"label": "Energie-scherpte",
|
||||||
"doc": "Scherpte van de energieovereenkomststraf. Kleiner = strenger: een energiemismatch kost meer punten. Standaard 0,25 is bewust meer vergevingsgezind dan Duurscherpte, omdat energie varieert met de belasting. Combineer met Energiegewicht."
|
"doc": "Scherpte van de energieovereenkomststraf. Kleiner = strenger: een energiemismatch kost meer punten. Standaard 0,25 is bewust meer vergevingsgezind dan Duurscherpte, omdat energie varieert met de belasting. Combineer met Energiegewicht."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Vermogensprofiel-interval",
|
||||||
|
"doc": "Bucketgrootte voor het attribuut power_profile van de profielsensor (het platte array van gemiddelde wattwaarden per slot dat door externe planners zoals EMHASS en tibber_prices wordt gebruikt). Kleinere buckets houden korte vermogenspieken scherp; grotere buckets gladden de vorm. Standaard 15 min. Alleen voor weergave; heeft geen invloed op de detectie."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Live-melding bij aanraken behouden",
|
||||||
|
"doc": "Alleen Android. Maak de live-voortgangsmelding aanhoudend (sticky), zodat deze bij aanraken niet wordt gesloten. Uitgeschakeld: standaardgedrag waarbij een aanraking de melding sluit."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Aanraakdoel live-melding",
|
||||||
|
"doc": "Alleen Android. Waarheen een aanraking van de live-voortgangsmelding navigeert (bijv. /lovelace/laundry of een volledige URL) in plaats van de standaard startpagina van de app. Leeg laten voor standaard."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Deur opent automatisch aan het einde",
|
||||||
|
"doc": "Voor vaatwassers die aan het einde van de cyclus de deur openen om te drogen (AirDry en vergelijkbaar). Als dit is ingeschakeld, pauzeert een deur openen tijdens een actieve cyclus de cyclus niet permanent; als de deur de ingestelde verwijltijd lang open blijft, beschouwt WashData de cyclus als voltooid. Een korte opening (om een artikel toe te voegen) wordt genegeerd. Vereist een deursensorentiteit."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Deuropen-eindverwijltijd",
|
||||||
|
"doc": "Hoe lang de deur open moet blijven voordat WashData de cyclus beëindigt, wanneer \"Deur opent automatisch aan het einde\" is ingeschakeld. Lang genoeg om het snel toevoegen van een bord te negeren (standaard 60 s), kort genoeg om de cyclus snel te beëindigen zodra de machine de deur opent."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1620,6 +1737,7 @@
|
|||||||
"min_active": "Op basis van het minimale actieve vermogen ({min}W) dat in de laatste cyclus is waargenomen.",
|
"min_active": "Op basis van het minimale actieve vermogen ({min}W) dat in de laatste cyclus is waargenomen.",
|
||||||
"min_duration_ratio": "Zo laag mogelijk gehouden zodat een programma vroeg in de cyclus wordt herkend; de betrouwbaarheids- en ambiguïteitsdrempels voorkomen voortijdige beslissingen.",
|
"min_duration_ratio": "Zo laag mogelijk gehouden zodat een programma vroeg in de cyclus wordt herkend; de betrouwbaarheids- en ambiguïteitsdrempels voorkomen voortijdige beslissingen.",
|
||||||
"min_off_gap": "Op basis van {gaps} waargenomen tussenpozen tussen cycli (p05={p05}s). Ondergrens van het apparaat: {floor}s.",
|
"min_off_gap": "Op basis van {gaps} waargenomen tussenpozen tussen cycli (p05={p05}s). Ondergrens van het apparaat: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Zo gedimensioneerd dat de langste stille periode binnen een cyclus wordt overbrugd: {span}s + 60s buffer, uit {spans} overbrugde tussenpozen over {cycles} schone cycli (blijft onder uw kortste tussenpoos van {ceiling}s tussen twee opeenvolgende ladingen).",
|
||||||
"min_power": "40% van het laagste actieve vermogen op p05 ({p05}W) over {cycles} schone cycli, zodat de uitschakeldrempel onder het werkelijke verbruik blijft.{excl}",
|
"min_power": "40% van het laagste actieve vermogen op p05 ({p05}W) over {cycles} schone cycli, zodat de uitschakeldrempel onder het werkelijke verbruik blijft.{excl}",
|
||||||
"ml_auto_label": "Laagste betrouwbaarheid die het kwaliteitsmodel nog als schoon beoordeelde (p10 van {cycles} schone cycli = {p10}).",
|
"ml_auto_label": "Laagste betrouwbaarheid die het kwaliteitsmodel nog als schoon beoordeelde (p10 van {cycles} schone cycli = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cycli ({pct}%) hadden een pauze die de einddetector >50% scoorde; vereis {val} eindbevestiging(en).",
|
"ml_end_repeat": "{false}/{total} cycli ({pct}%) hadden een pauze die de einddetector >50% scoorde; vereis {val} eindbevestiging(en).",
|
||||||
@@ -1636,7 +1754,7 @@
|
|||||||
"thr_batch": "Net boven het laagste actieve vermogen op p05 over {cycles} cycli ({p05}W) gehouden zodat een start zo vroeg mogelijk wordt opgemerkt en de stopdrempel onder het laagste draaivermogen van de machine blijft.",
|
"thr_batch": "Net boven het laagste actieve vermogen op p05 over {cycles} cycli ({p05}W) gehouden zodat een start zo vroeg mogelijk wordt opgemerkt en de stopdrempel onder het laagste draaivermogen van de machine blijft.",
|
||||||
"tol_per_profile": "p75 van de duurvariantie per profiel over {profiles} profielen ({cycles} cycli); strakke profielen worden niet benadeeld.",
|
"tol_per_profile": "p75 van de duurvariantie per profiel over {profiles} profielen ({cycles} cycli); strakke profielen worden niet benadeeld.",
|
||||||
"tol_pooled": "Op basis van de gebundelde duurvariantie van {cycles} recent gelabelde cycli (p95-afwijking={dev}).",
|
"tol_pooled": "Op basis van de gebundelde duurvariantie van {cycles} recent gelabelde cycli (p95-afwijking={dev}).",
|
||||||
"watchdog": "Zo laag als veilig gehouden (3x de p95-updatekloof van {p95}s, min. 30s) zodat vastlopers snel worden opgemerkt zonder valse stops."
|
"watchdog": "Zo laag als veilig gehouden (net boven de p95-updatekloof van {p95}s, min. 30s) zodat vastlopers snel worden opgemerkt zonder valse stops."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "{total} verkeerd gedetecteerde cyclus(sen) uitgesloten: {parts}.",
|
"summary": "{total} verkeerd gedetecteerde cyclus(sen) uitgesloten: {parts}.",
|
||||||
@@ -1716,6 +1834,10 @@
|
|||||||
"name_required": "Naam vereist",
|
"name_required": "Naam vereist",
|
||||||
"no_split_found": "Er zijn geen lege gaten gevonden om op te splitsen",
|
"no_split_found": "Er zijn geen lege gaten gevonden om op te splitsen",
|
||||||
"panel_settings_saved": "Paneelinstellingen opgeslagen",
|
"panel_settings_saved": "Paneelinstellingen opgeslagen",
|
||||||
|
"pg_preset_loaded": "Voorinstelling \"{name}\" geladen",
|
||||||
|
"pg_preset_saved": "Voorinstelling \"{name}\" opgeslagen",
|
||||||
|
"pg_sugg_loaded": "{n} gesuggereerde waarde(n) geladen - voer de speeltuin uit om te vergelijken",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-gekalibreerde waarde(n) geladen - voer de speeltuin uit om te vergelijken",
|
||||||
"phase_name_required": "Fasenaam is vereist",
|
"phase_name_required": "Fasenaam is vereist",
|
||||||
"phase_updated": "Fase bijgewerkt",
|
"phase_updated": "Fase bijgewerkt",
|
||||||
"phases_saved": "Fasen opgeslagen",
|
"phases_saved": "Fasen opgeslagen",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Nie znaleziono encji",
|
||||||
|
"running_long": "Działa długo",
|
||||||
|
"remaining": "pozostało",
|
||||||
|
"progress": "postęp",
|
||||||
|
"show_time_remaining": "Pokaż pozostały czas",
|
||||||
|
"show_percentage": "Pokaż procenty",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Kafelek (kompaktowy)",
|
||||||
|
"detail": "Szczegóły (rozbudowany)",
|
||||||
|
"glance": "Podgląd (wiele urządzeń)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Wstrzymaj",
|
||||||
|
"resume": "Wznów",
|
||||||
|
"terminate": "Zakończ cykl",
|
||||||
|
"record_start": "Rozpocznij nagrywanie",
|
||||||
|
"record_stop": "Zatrzymaj nagrywanie",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Otwórz WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Układ",
|
||||||
|
"entity": "Encja urządzenia",
|
||||||
|
"entities": "Urządzenia",
|
||||||
|
"title": "Tytuł",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Pokaż stan",
|
||||||
|
"show_program": "Pokaż program",
|
||||||
|
"show_progress_bar": "Pokaż pasek postępu",
|
||||||
|
"spin_icon": "Obracaj ikonę podczas działania",
|
||||||
|
"display_mode": "Wiersz szczegółów",
|
||||||
|
"active_color": "Zastąpienie koloru aktywnego",
|
||||||
|
"show_phase": "Pokaż fazę",
|
||||||
|
"show_energy": "Pokaż energię i koszt",
|
||||||
|
"show_anomaly": "Pokaż ostrzeżenie o przekroczeniu",
|
||||||
|
"show_sparkline": "Pokaż wykres mocy na żywo",
|
||||||
|
"buttons": "Przyciski akcji",
|
||||||
|
"program_entity": "Encja programu (zastąpienie)",
|
||||||
|
"time_entity": "Encja czasu (zastąpienie)",
|
||||||
|
"pct_entity": "Encja postępu (zastąpienie)",
|
||||||
|
"power_entity": "Encja mocy (zastąpienie)",
|
||||||
|
"tap_action": "Akcja dotknięcia",
|
||||||
|
"hold_action": "Akcja przytrzymania",
|
||||||
|
"double_tap_action": "Akcja podwójnego dotknięcia"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Wykryto {n} anomalii (np. drzwi otwarte w połowie cyklu) – otwórz, aby zobaczyć je na wykresie",
|
"artifact_tip": "Wykryto {n} anomalii (np. drzwi otwarte w połowie cyklu) – otwórz, aby zobaczyć je na wykresie",
|
||||||
"auto": "(automatycznie wykryty)",
|
"auto": "(automatycznie wykryty)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Odrzuć",
|
"discard": "Odrzuć",
|
||||||
"discard_tip": "Odrzuć nagranie bez zapisywania",
|
"discard_tip": "Odrzuć nagranie bez zapisywania",
|
||||||
"dismiss": "Odrzuć",
|
"dismiss": "Odrzuć",
|
||||||
|
"mute_suggestion": "Przestań sugerować to ustawienie",
|
||||||
|
"pg_load_calibrated": "Wczytaj skalibrowane (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Załaduj ustawienia skalibrowane przez ML jako nadpisania w piaskownicy",
|
||||||
|
"pg_load_live": "Wczytaj aktywne ustawienia",
|
||||||
|
"pg_load_live_tip": "Wczytaj ponownie bieżące ustawienia integracji i odrzuć wszystkie zmiany z piaskownicy",
|
||||||
|
"pg_load_suggested": "Wczytaj sugerowane ({n})",
|
||||||
|
"pg_load_suggested_tip": "Załaduj bieżące sugestie automatycznego dostrajania jako nadpisania w piaskownicy",
|
||||||
|
"pg_preset_delete": "Usuń preset",
|
||||||
|
"pg_preset_load": "Wczytaj preset",
|
||||||
|
"pg_preset_load_tip": "Zastąp wartości w piaskownicy tym presetem (aktywne ustawienia pozostają nietknięte)",
|
||||||
|
"pg_preset_save": "Zapisz jako preset",
|
||||||
|
"pg_preset_save_tip": "Zapisz wszystkie poniższe wartości jako nazwany preset dla tego urządzenia",
|
||||||
|
"pg_publish_all": "Zapisz w integracji ({n})",
|
||||||
|
"pg_publish_one": "Zapisz {label} w integracji",
|
||||||
|
"reset_muted": "Zresetuj wyciszone",
|
||||||
"done": "Zrobione",
|
"done": "Zrobione",
|
||||||
"edit": "Edytuj",
|
"edit": "Edytuj",
|
||||||
"export": "Eksportuj",
|
"export": "Eksportuj",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Żadna automatyzacja nie odwołuje się jeszcze do tego urządzenia.",
|
"no_automations": "Żadna automatyzacja nie odwołuje się jeszcze do tego urządzenia.",
|
||||||
"panel_settings": "Ustawienia panelu",
|
"panel_settings": "Ustawienia panelu",
|
||||||
"param_sweep": "Przemiatanie parametru",
|
"param_sweep": "Przemiatanie parametru",
|
||||||
|
"pg_settings_source": "Źródło ustawień",
|
||||||
"phase_catalog": "Katalog faz",
|
"phase_catalog": "Katalog faz",
|
||||||
"playground": "Piaskownica",
|
"playground": "Piaskownica",
|
||||||
"process_history": "Historia procesu",
|
"process_history": "Historia procesu",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Domyślny poziom dla użytkowników niewymienionych poniżej",
|
"default_access_level": "Domyślny poziom dla użytkowników niewymienionych poniżej",
|
||||||
"default_other": "Domyślne (inne urządzenia)",
|
"default_other": "Domyślne (inne urządzenia)",
|
||||||
"default_tab": "Domyślna zakładka podczas otwierania panelu",
|
"default_tab": "Domyślna zakładka podczas otwierania panelu",
|
||||||
|
"font_size": "Rozmiar czcionki panelu",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Opis",
|
"description": "Opis",
|
||||||
"dtw_blend_w": "Waga mieszania",
|
"dtw_blend_w": "Waga mieszania",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Wynik dopasowania",
|
"pg_match_score": "Wynik dopasowania",
|
||||||
"pg_pct_of": "{p}% z {total}",
|
"pg_pct_of": "{p}% z {total}",
|
||||||
"pg_poor_match": "Kiepskie dopasowanie",
|
"pg_poor_match": "Kiepskie dopasowanie",
|
||||||
|
"pg_preset": "Preset piaskownicy",
|
||||||
|
"pg_preset_name": "Nazwa nowego presetu",
|
||||||
|
"pg_preset_none": "Wybierz preset…",
|
||||||
"pg_strong_match": "Silne dopasowanie",
|
"pg_strong_match": "Silne dopasowanie",
|
||||||
"pg_tile_ambiguous": "Niejednoznaczny",
|
"pg_tile_ambiguous": "Niejednoznaczny",
|
||||||
"pg_tile_ambiguous_tip": "Cykle z niemal równym dopasowaniem do dwóch programów",
|
"pg_tile_ambiguous_tip": "Cykle z niemal równym dopasowaniem do dwóch programów",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Zastosować najlepszą wartość: {label} = {value}?",
|
"pg_apply_confirm": "Zastosować najlepszą wartość: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Wybierz cykl powyżej, a następnie naciśnij Wczytaj, aby zobaczyć jego przebieg mocy.",
|
"pg_canvas_empty": "Wybierz cykl powyżej, a następnie naciśnij Wczytaj, aby zobaczyć jego przebieg mocy.",
|
||||||
"pg_chart_caption": "Współczynnik wykrywania/dopasowania dla wartości {param}",
|
"pg_chart_caption": "Współczynnik wykrywania/dopasowania dla wartości {param}",
|
||||||
|
"pg_ctrl_intro": "Wartości pochodzą z aktywnych ustawień integracji dla tego urządzenia. Zmiany pozostają w piaskownicy, dopóki nie zapiszesz ich w integracji.",
|
||||||
|
"pg_live_unavailable": "Aktywne ustawienia niedostępne, wyświetlane są wartości domyślne.",
|
||||||
|
"pg_load_live_confirm": "Odrzucić zmiany w piaskownicy ({n}) i wczytać ponownie bieżące ustawienia integracji?",
|
||||||
"pg_match_rate": "{pct}% skuteczności dopasowania na {total} cyklach",
|
"pg_match_rate": "{pct}% skuteczności dopasowania na {total} cyklach",
|
||||||
|
"pg_matches_live": "Zgodne z aktywnymi ustawieniami",
|
||||||
|
"pg_n_changed": "Zmienione względem aktywnych ustawień: {n}",
|
||||||
|
"pg_sugg_none": "Wszystkie sugestie już odpowiadają bieżącym ustawieniom",
|
||||||
|
"pg_preset_delete_confirm": "Usunąć preset \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Osiągnięto limit presetów ({n})",
|
||||||
|
"pg_preset_overwrite": "Nadpisać preset \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Zapisać {label} = {value} w ustawieniach tego urządzenia?",
|
||||||
"pg_restart_note": "Uruchom ponownie Home Assistant, aby włączyć narzędzia symulacji.",
|
"pg_restart_note": "Uruchom ponownie Home Assistant, aby włączyć narzędzia symulacji.",
|
||||||
"pg_sim_progress": "{done} / {total} cykli",
|
"pg_sim_progress": "{done} / {total} cykli",
|
||||||
"pg_starting": "Rozpoczynanie…",
|
"pg_starting": "Rozpoczynanie…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Preferencje, panel i kontrola dostępu",
|
"preferences_admin": "Preferencje, panel i kontrola dostępu",
|
||||||
"preferences_adv": "Preferencje",
|
"preferences_adv": "Preferencje",
|
||||||
"prefs_personal": "Dotyczą one wyłącznie Twojego konta Home Assistant.",
|
"prefs_personal": "Dotyczą one wyłącznie Twojego konta Home Assistant.",
|
||||||
|
"font_size_hint": "Powiększ lub pomniejsz wszystko w tym panelu. Dotyczy Twojego konta na tym urządzeniu.",
|
||||||
"process_history_hint": "Ponownie uruchom dopasowywanie na wszystkich zapisanych cyklach, odśwież sugestie dostrajania, ponownie wytrenuj modele ML (jeśli włączone) i przelicz kondycję cykli. Uruchom po serii przeglądów.",
|
"process_history_hint": "Ponownie uruchom dopasowywanie na wszystkich zapisanych cyklach, odśwież sugestie dostrajania, ponownie wytrenuj modele ML (jeśli włączone) i przelicz kondycję cykli. Uruchom po serii przeglądów.",
|
||||||
"profile_deleted": "Profil usunięty",
|
"profile_deleted": "Profil usunięty",
|
||||||
"profile_poor_health_detail": "Cykle przypisane do tego profilu mają niespójne kształty lub niską pewność. Rozważ przebudowę koperty lub przejrzenie oznakowanych cykli.",
|
"profile_poor_health_detail": "Cykle przypisane do tego profilu mają niespójne kształty lub niską pewność. Rozważ przebudowę koperty lub przejrzenie oznakowanych cykli.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Kliknij wykres, aby dodać lub usunąć punkt podziału albo automatycznie wykryć na podstawie pustych przerw. Każdy powstały segment może otrzymać swój własny profil.",
|
"split_intro": "Kliknij wykres, aby dodać lub usunąć punkt podziału albo automatycznie wykryć na podstawie pustych przerw. Każdy powstały segment może otrzymać swój własny profil.",
|
||||||
"storage_diagnostics": "Statystyki przechowywania, konserwacja, eksport/import",
|
"storage_diagnostics": "Statystyki przechowywania, konserwacja, eksport/import",
|
||||||
"sug_staged": "Ustawiono {key} = {val}. Zapisz, aby zastosować.",
|
"sug_staged": "Ustawiono {key} = {val}. Zapisz, aby zastosować.",
|
||||||
|
"sug_muted": "To ustawienie nie będzie więcej sugerowane",
|
||||||
|
"sug_mute_failed": "Nie udało się wyciszyć sugestii",
|
||||||
|
"sug_unmuted_all": "Wyciszone sugestie przywrócone",
|
||||||
|
"n_suggestions_muted": "{count} wyciszonych; automatyczny tuner nie będzie proponować tych ustawień.",
|
||||||
"toast_auto_detect_enabled": "Automatyczne wykrywanie włączone",
|
"toast_auto_detect_enabled": "Automatyczne wykrywanie włączone",
|
||||||
"toast_auto_label_complete": "Automatyczne oznaczanie zakończone",
|
"toast_auto_label_complete": "Automatyczne oznaczanie zakończone",
|
||||||
"toast_auto_label_failed": "Automatyczne oznaczanie nie powiodło się: {error}",
|
"toast_auto_label_failed": "Automatyczne oznaczanie nie powiodło się: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Trwanie w trendzie krótszym ({pct}%/cykl) – ostatnia średnia {avg}",
|
"trend_duration_shorter": "Trwanie w trendzie krótszym ({pct}%/cykl) – ostatnia średnia {avg}",
|
||||||
"trend_energy_down": "Energia wykazuje tendencję spadkową ({pct}%/cykl)",
|
"trend_energy_down": "Energia wykazuje tendencję spadkową ({pct}%/cykl)",
|
||||||
"trend_energy_up": "Trend wzrostowy w zakresie energii ({pct}%/cykl) – ostatnia średnia {avg}",
|
"trend_energy_up": "Trend wzrostowy w zakresie energii ({pct}%/cykl) – ostatnia średnia {avg}",
|
||||||
|
"trim_destructive_confirm": "To zachowa tylko {pct}% cyklu i tej operacji nie można cofnąć. Kontynuować?",
|
||||||
"trim_intro": "Przeciągnij czerwone uchwyty lub wprowadź wartości. Wszystko za oknem jest usuwane.",
|
"trim_intro": "Przeciągnij czerwone uchwyty lub wprowadź wartości. Wszystko za oknem jest usuwane.",
|
||||||
"tuning_suggestions_available": "Sugestia dostrojenia {count} dostępna z obserwowanych cykli. Pojawiają się obok odpowiednich pól.",
|
"tuning_suggestions_available": "Sugestia dostrojenia {count} dostępna z obserwowanych cykli. Pojawiają się obok odpowiednich pól.",
|
||||||
"unsure_detected_prefix": "WashData nie jest pewien, czy został wykryty",
|
"unsure_detected_prefix": "WashData nie jest pewien, czy został wykryty",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Nie nadaje się do użytku"
|
"unusable": "Nie nadaje się do użytku"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Zmywarka",
|
||||||
|
"intro": "Obsługa końca cyklu w zmywarkach, które zazwyczaj kończą długą, niemal cichą fazą suszenia przed krótkim końcowym odpompowaniem wody."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Tryb antygniotowy wykrywa impulsy bębnowania przy niskiej mocy po fazie głównej i utrzymuje je przyłączone do zakończonego cyklu.",
|
"intro": "Tryb antygniotowy wykrywa impulsy bębnowania przy niskiej mocy po fazie głównej i utrzymuje je przyłączone do zakończonego cyklu.",
|
||||||
"label": "Antygniotowy"
|
"label": "Antygniotowy"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Zwolnienie po cichej fazie suszenia",
|
||||||
|
"doc": "Gdy cykl przekroczy oczekiwany czas trwania, jak długo zmywarka musi pozostać cicha (poniżej Progu Zatrzymania), zanim WashData przestanie czekać na końcowe odpompowanie wody i zakończy cykl. Zwiększ tę wartość, jeśli Twoje urządzenie ma długą cichą fazę suszenia przed późnym końcowym odpompowaniem, które jest pomijane - szersze okno pozwala, aby wyuczony czas trwania podążał za sezonowym dryfem (chłodniejsza woda na wlocie = dłuższe cykle), zamiast trzymać się starej średniej. Może jedynie skrócić oczekiwanie względem wewnętrznego 30-minutowego limitu końcowego odpompowania, nigdy go nie wydłuża."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Rozpoznawaj krótkie impulsy suszenia o małej mocy, które suszarka emituje po głównej fazie nagrzewania, i pamiętaj o ich dołączeniu do zakończonego cyklu, zamiast odczytywać je jako nowe cykle.",
|
"doc": "Rozpoznawaj krótkie impulsy suszenia o małej mocy, które suszarka emituje po głównej fazie nagrzewania, i pamiętaj o ich dołączeniu do zakończonego cyklu, zamiast odczytywać je jako nowe cykle.",
|
||||||
"label": "Włącz Wykrywanie Antygniotowe"
|
"label": "Włącz Wykrywanie Antygniotowe"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Minuty po zakończeniu cyklu przed wysłaniem wciąż oczekującego przypomnienia o „rozładowaniu maszyny”. Ustaw 0, aby wyłączyć przypomnienie.",
|
"doc": "Minuty po zakończeniu cyklu przed wysłaniem wciąż oczekującego przypomnienia o „rozładowaniu maszyny”. Ustaw 0, aby wyłączyć przypomnienie.",
|
||||||
"label": "Opóźnienie Przypomnienia o Rozładunku"
|
"label": "Opóźnienie Przypomnienia o Rozładunku"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Ponownie wysyła przypomnienie o rozładunku co \"Opóźnienie Przypomnienia o Rozładunku\" minut, dopóki nie otworzysz drzwi lub nie dotkniesz \"Przestań przypominać\" w powiadomieniu. Wymaga Encji Czujnika Drzwi (tak jak samo przypomnienie). Przycisk odrzucenia działa w powiadomieniach aplikacji mobilnej Home Assistant (companion app).",
|
||||||
|
"label": "Powtarzaj, aż otworzą się drzwi"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Czas oczekiwania po spadku mocy przed ogłoszeniem zakończenia cyklu. Jeżeli w tym oknie zasilanie zostanie przywrócone, cykl będzie przebiegał płynnie – eliminując przerwy pomiędzy etapami prania. Zmywarki mają długie fazy suszenia (wyłączenie zasilania na 20–60 minut), więc opóźnienie wyłączenia musi być dłuższe, aby całe pranie+suszenie trwało w jednym cyklu.",
|
"doc": "Czas oczekiwania po spadku mocy przed ogłoszeniem zakończenia cyklu. Jeżeli w tym oknie zasilanie zostanie przywrócone, cykl będzie przebiegał płynnie – eliminując przerwy pomiędzy etapami prania. Zmywarki mają długie fazy suszenia (wyłączenie zasilania na 20–60 minut), więc opóźnienie wyłączenia musi być dłuższe, aby całe pranie+suszenie trwało w jednym cyklu.",
|
||||||
"label": "Opóźnienie Wyłączenia"
|
"label": "Opóźnienie Wyłączenia"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Ostrość energii",
|
"label": "Ostrość energii",
|
||||||
"doc": "Ostrość kary za niezgodność energii w Etapie 4. Mniejszy = surowszy: niezgodność energii bardziej obniża wynik. Domyślna wartość 0,25 jest celowo bardziej łagodna niż Ostrość Czasu Trwania, ponieważ energia zmienia się z obciążeniem. Używaj razem z Wagą Energii."
|
"doc": "Ostrość kary za niezgodność energii w Etapie 4. Mniejszy = surowszy: niezgodność energii bardziej obniża wynik. Domyślna wartość 0,25 jest celowo bardziej łagodna niż Ostrość Czasu Trwania, ponieważ energia zmienia się z obciążeniem. Używaj razem z Wagą Energii."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interwał profilu mocy",
|
||||||
|
"doc": "Rozmiar segmentu dla atrybutu senzora power_profile na profil (płaska tablica średnich watów na slot zużywana przez zewnętrzne planerzy jak EMHASS i tibber_prices). Mniejsze segmenty zachowują krótkie skoki mocy ostre; większe segmenty wygładzają kształt. Domyślnie 15 min. Tylko do odczytu; nie wpływa na wykrywanie."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Zachowaj powiadomienie na żywo po dotknięciu",
|
||||||
|
"doc": "Tylko Android. Ustaw powiadomienie o postępie na żywo jako trwałe (przypięte), aby dotknięcie nie odrzucało aktywnego wątku. Wyłączone zachowuje domyślne zachowanie, gdzie dotknięcie odrzuca powiadomienie."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Cel dotknięcia powiadomienia na żywo",
|
||||||
|
"doc": "Tylko Android. Gdzie dotknięcie powiadomienia o postępie na żywo otwiera (np. /lovelace/laundry lub pełny URL) zamiast strony startowej aplikacji. Pozostaw puste dla wartości domyślnej."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Drzwi otwierają się automatycznie na końcu",
|
||||||
|
"doc": "Dla zmywarek, które na końcu cyklu otwierają drzwi w celu suszenia (AirDry i podobne). Po włączeniu otwarcie drzwi podczas działającego cyklu nie zatrzymuje go na zawsze; jeśli drzwi pozostaną otwarte przez czas oczekiwania poniżej, WashData uznaje cykl za zakończony. Krótkie otwarcie (dodawanie naczynia) jest ignorowane. Wymaga encji czujnika drzwi."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Czas otwarcia drzwi do zakończenia cyklu",
|
||||||
|
"doc": "Jak długo drzwi muszą pozostać otwarte, zanim WashData zakończy cykl, gdy włączone jest \"Drzwi otwierają się automatycznie na końcu\". Wystarczająco długo, aby zignorować szybkie dodawanie naczyń (domyślnie 60 s), wystarczająco krótko, aby szybko zakończyć, gdy maszyna otworzy drzwi."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1592,6 +1708,7 @@
|
|||||||
"min_active": "Na podstawie minimalnej mocy czynnej ({min}W) zaobserwowanej w ostatnim cyklu.",
|
"min_active": "Na podstawie minimalnej mocy czynnej ({min}W) zaobserwowanej w ostatnim cyklu.",
|
||||||
"min_duration_ratio": "Utrzymane jak najniżej, aby program był rozpoznawany na wczesnym etapie cyklu; progi pewności i niejednoznaczności zapobiegają przedwczesnym decyzjom.",
|
"min_duration_ratio": "Utrzymane jak najniżej, aby program był rozpoznawany na wczesnym etapie cyklu; progi pewności i niejednoznaczności zapobiegają przedwczesnym decyzjom.",
|
||||||
"min_off_gap": "Na podstawie {gaps} zaobserwowanych przerw między cyklami (p05={p05}s). Minimum urządzenia: {floor}s.",
|
"min_off_gap": "Na podstawie {gaps} zaobserwowanych przerw między cyklami (p05={p05}s). Minimum urządzenia: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dobrane tak, aby pokryć najdłuższy cichy odcinek wewnątrz cyklu: {span}s + zapas 60s, z {spans} pokrytych przerw w {cycles} poprawnych cyklach (pozostaje poniżej {ceiling}s, czyli najkrótszej przerwy, jaką zostawiasz między kolejnymi uruchomieniami).",
|
||||||
"min_power": "40% najniższej mocy czynnej p05 ({p05}W) w {cycles} poprawnych cyklach, tak aby próg wyłączenia pozostał poniżej rzeczywistego poboru.{excl}",
|
"min_power": "40% najniższej mocy czynnej p05 ({p05}W) w {cycles} poprawnych cyklach, tak aby próg wyłączenia pozostał poniżej rzeczywistego poboru.{excl}",
|
||||||
"ml_auto_label": "Najniższa pewność, przy której model jakości nadal uznawał cykl za poprawny (p10 z {cycles} poprawnych cykli = {p10}).",
|
"ml_auto_label": "Najniższa pewność, przy której model jakości nadal uznawał cykl za poprawny (p10 z {cycles} poprawnych cykli = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cykli ({pct}%) miało pauzę, którą detektor końca ocenił powyżej 50%; wymagaj {val} potwierdzeń zakończenia.",
|
"ml_end_repeat": "{false}/{total} cykli ({pct}%) miało pauzę, którą detektor końca ocenił powyżej 50%; wymagaj {val} potwierdzeń zakończenia.",
|
||||||
@@ -1608,7 +1725,7 @@
|
|||||||
"thr_batch": "Utrzymane tuż powyżej najniższej mocy czynnej p05 w {cycles} cyklach ({p05}W), aby start był wykrywany jak najwcześniej, a próg zatrzymania pozostawał poniżej najniższej mocy pracy urządzenia.",
|
"thr_batch": "Utrzymane tuż powyżej najniższej mocy czynnej p05 w {cycles} cyklach ({p05}W), aby start był wykrywany jak najwcześniej, a próg zatrzymania pozostawał poniżej najniższej mocy pracy urządzenia.",
|
||||||
"tol_per_profile": "p75 wariancji czasu trwania na profil w {profiles} profilach ({cycles} cykli); spójne profile nie są karane.",
|
"tol_per_profile": "p75 wariancji czasu trwania na profil w {profiles} profilach ({cycles} cykli); spójne profile nie są karane.",
|
||||||
"tol_pooled": "Na podstawie łącznej wariancji czasu trwania {cycles} ostatnich oznaczonych cykli (odchylenie p95={dev}).",
|
"tol_pooled": "Na podstawie łącznej wariancji czasu trwania {cycles} ostatnich oznaczonych cykli (odchylenie p95={dev}).",
|
||||||
"watchdog": "Utrzymane tak nisko, jak to bezpieczne (3x przerwa aktualizacji p95 wynosząca {p95}s, min. 30s), aby zawieszenia były szybko wykrywane bez fałszywych zatrzymań."
|
"watchdog": "Utrzymane tak nisko, jak to bezpieczne (tuż powyżej przerwy aktualizacji p95 wynoszącej {p95}s, min. 30s), aby zawieszenia były szybko wykrywane bez fałszywych zatrzymań."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Wykluczono {total} błędnie wykrytych cykli: {parts}.",
|
"summary": "Wykluczono {total} błędnie wykrytych cykli: {parts}.",
|
||||||
@@ -1688,6 +1805,10 @@
|
|||||||
"name_required": "Wymagane imię i nazwisko",
|
"name_required": "Wymagane imię i nazwisko",
|
||||||
"no_split_found": "Nie znaleziono żadnych wolnych luk, które można by podzielić",
|
"no_split_found": "Nie znaleziono żadnych wolnych luk, które można by podzielić",
|
||||||
"panel_settings_saved": "Ustawienia panelu zostały zapisane",
|
"panel_settings_saved": "Ustawienia panelu zostały zapisane",
|
||||||
|
"pg_preset_loaded": "Preset \"{name}\" wczytany",
|
||||||
|
"pg_preset_saved": "Preset \"{name}\" zapisany",
|
||||||
|
"pg_sugg_loaded": "Załadowano {n} sugerowanych wartości - uruchom piaskownicę, aby porównać",
|
||||||
|
"pg_sugg_ml_loaded": "Załadowano {n} wartości skalibrowanych przez ML - uruchom piaskownicę, aby porównać",
|
||||||
"phase_name_required": "Nazwa fazy jest wymagana",
|
"phase_name_required": "Nazwa fazy jest wymagana",
|
||||||
"phase_updated": "Faza zaktualizowana",
|
"phase_updated": "Faza zaktualizowana",
|
||||||
"phases_saved": "Fazy zapisane",
|
"phases_saved": "Fazy zapisane",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Inne"
|
"other": "Inne"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Zmywarka: sekundy ciszy po oczekiwanym czasie trwania, zanim zwolnione zostanie oczekiwanie na końcowe odpompowanie wody",
|
||||||
"anti_wrinkle_enabled": "Pochłaniaj impulsy bębna po głównej fazie, zamiast odczytywać je jako nowe cykle",
|
"anti_wrinkle_enabled": "Pochłaniaj impulsy bębna po głównej fazie, zamiast odczytywać je jako nowe cykle",
|
||||||
"anti_wrinkle_exit_power": "Moc musi spaść poniżej tej wartości pomiędzy impulsami, aby tryb antygniotowy pozostał aktywny",
|
"anti_wrinkle_exit_power": "Moc musi spaść poniżej tej wartości pomiędzy impulsami, aby tryb antygniotowy pozostał aktywny",
|
||||||
"anti_wrinkle_idle_timeout": "Dozwolony czas ciszy między dwoma impulsami bębna, zanim tryb antygniotowy się zakończy",
|
"anti_wrinkle_idle_timeout": "Dozwolony czas ciszy między dwoma impulsami bębna, zanim tryb antygniotowy się zakończy",
|
||||||
|
|||||||
@@ -92,6 +92,19 @@
|
|||||||
"pause_cycle_tip": "Pausar o ciclo em andamento – o eletrodoméstico retomará onde parou",
|
"pause_cycle_tip": "Pausar o ciclo em andamento – o eletrodoméstico retomará onde parou",
|
||||||
"pg_apply_device": "Aplicar ao dispositivo",
|
"pg_apply_device": "Aplicar ao dispositivo",
|
||||||
"pg_autofill": "Preencher automaticamente",
|
"pg_autofill": "Preencher automaticamente",
|
||||||
|
"pg_load_calibrated": "Carregar Calibrado (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Carregar as configurações calibradas por ML como substituições na Área de testes",
|
||||||
|
"pg_load_live": "Carregar as configurações ativas",
|
||||||
|
"pg_load_live_tip": "Reler as configurações atuais da integração e descartar todas as edições feitas na Área de testes",
|
||||||
|
"pg_load_suggested": "Carregar sugestões ({n})",
|
||||||
|
"pg_load_suggested_tip": "Carregar as sugestões atuais do ajustador automático como substituições na Área de testes",
|
||||||
|
"pg_preset_delete": "Excluir predefinição",
|
||||||
|
"pg_preset_load": "Carregar predefinição",
|
||||||
|
"pg_preset_load_tip": "Substituir os valores da Área de testes por esta predefinição (as configurações ativas não são alteradas)",
|
||||||
|
"pg_preset_save": "Salvar como predefinição",
|
||||||
|
"pg_preset_save_tip": "Salvar todos os valores abaixo como uma predefinição nomeada para este dispositivo",
|
||||||
|
"pg_publish_all": "Salvar {n} configuração(ões) na integração",
|
||||||
|
"pg_publish_one": "Salvar {label} na integração",
|
||||||
"play": "Reproduzir",
|
"play": "Reproduzir",
|
||||||
"process": "Processar",
|
"process": "Processar",
|
||||||
"process_history": "Processar agora",
|
"process_history": "Processar agora",
|
||||||
@@ -178,7 +191,9 @@
|
|||||||
"download_export": "Baixar exportação",
|
"download_export": "Baixar exportação",
|
||||||
"analyze_import": "Analisar arquivo",
|
"analyze_import": "Analisar arquivo",
|
||||||
"import_selected": "Importar seleção",
|
"import_selected": "Importar seleção",
|
||||||
"back": "Voltar"
|
"back": "Voltar",
|
||||||
|
"mute_suggestion": "Parar de sugerir esta configuração",
|
||||||
|
"reset_muted": "Redefinir silenciados"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +290,7 @@
|
|||||||
"no_automations": "Ainda não há automações que referenciem este dispositivo.",
|
"no_automations": "Ainda não há automações que referenciem este dispositivo.",
|
||||||
"panel_settings": "Configurações do painel",
|
"panel_settings": "Configurações do painel",
|
||||||
"param_sweep": "Varredura de parâmetros",
|
"param_sweep": "Varredura de parâmetros",
|
||||||
|
"pg_settings_source": "Origem das configurações",
|
||||||
"phase_catalog": "Catálogo de fases",
|
"phase_catalog": "Catálogo de fases",
|
||||||
"playground": "Área de testes",
|
"playground": "Área de testes",
|
||||||
"process_history": "Histórico de processamento",
|
"process_history": "Histórico de processamento",
|
||||||
@@ -415,6 +431,9 @@
|
|||||||
"pg_match_score": "Pontuação de correspondência",
|
"pg_match_score": "Pontuação de correspondência",
|
||||||
"pg_pct_of": "{p}% de {total}",
|
"pg_pct_of": "{p}% de {total}",
|
||||||
"pg_poor_match": "Correspondência ruim",
|
"pg_poor_match": "Correspondência ruim",
|
||||||
|
"pg_preset": "Predefinição da Área de testes",
|
||||||
|
"pg_preset_name": "Nome da nova predefinição",
|
||||||
|
"pg_preset_none": "Selecione uma predefinição…",
|
||||||
"pg_strong_match": "Correspondência forte",
|
"pg_strong_match": "Correspondência forte",
|
||||||
"pg_tile_ambiguous": "Ambíguo",
|
"pg_tile_ambiguous": "Ambíguo",
|
||||||
"pg_tile_ambiguous_tip": "Ciclos com empate quase perfeito entre dois programas",
|
"pg_tile_ambiguous_tip": "Ciclos com empate quase perfeito entre dois programas",
|
||||||
@@ -609,7 +628,8 @@
|
|||||||
"conflict_resolution": "Conflitos de nomes",
|
"conflict_resolution": "Conflitos de nomes",
|
||||||
"conflict_import_copy": "Importar como cópia",
|
"conflict_import_copy": "Importar como cópia",
|
||||||
"conflict_keep_mine": "Manter o meu",
|
"conflict_keep_mine": "Manter o meu",
|
||||||
"conflict_overwrite": "Sobrescrever"
|
"conflict_overwrite": "Sobrescrever",
|
||||||
|
"font_size": "Tamanho da fonte do painel"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Todos os níveis",
|
"all_levels": "Todos os níveis",
|
||||||
@@ -771,7 +791,17 @@
|
|||||||
"pg_apply_confirm": "Aplicar o melhor valor: {label} = {value}?",
|
"pg_apply_confirm": "Aplicar o melhor valor: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Selecione um ciclo acima e pressione Carregar para ver o rastro de potência.",
|
"pg_canvas_empty": "Selecione um ciclo acima e pressione Carregar para ver o rastro de potência.",
|
||||||
"pg_chart_caption": "Taxa de detecção/correspondência ao longo dos valores de {param}",
|
"pg_chart_caption": "Taxa de detecção/correspondência ao longo dos valores de {param}",
|
||||||
|
"pg_ctrl_intro": "Os valores partem das configurações ativas deste dispositivo na integração. As edições ficam na Área de testes até você salvá-las na integração.",
|
||||||
|
"pg_live_unavailable": "Configurações ativas indisponíveis, exibindo os valores padrão.",
|
||||||
|
"pg_load_live_confirm": "Descartar {n} edição(ões) da Área de testes e recarregar as configurações atuais da integração?",
|
||||||
"pg_match_rate": "{pct}% de taxa de correspondência em {total} ciclos",
|
"pg_match_rate": "{pct}% de taxa de correspondência em {total} ciclos",
|
||||||
|
"pg_matches_live": "Corresponde às configurações ativas",
|
||||||
|
"pg_n_changed": "{n} valor(es) diferente(s) das configurações ativas",
|
||||||
|
"pg_sugg_none": "Todas as sugestões já correspondem às configurações atuais",
|
||||||
|
"pg_preset_delete_confirm": "Excluir a predefinição \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Limite de predefinições atingido ({n})",
|
||||||
|
"pg_preset_overwrite": "Sobrescrever a predefinição \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Salvar {label} = {value} nas configurações deste dispositivo?",
|
||||||
"pg_restart_note": "Reinicie o Home Assistant para ativar as ferramentas de simulação.",
|
"pg_restart_note": "Reinicie o Home Assistant para ativar as ferramentas de simulação.",
|
||||||
"pg_sim_progress": "{done} / {total} ciclos",
|
"pg_sim_progress": "{done} / {total} ciclos",
|
||||||
"pg_starting": "Iniciando…",
|
"pg_starting": "Iniciando…",
|
||||||
@@ -845,6 +875,7 @@
|
|||||||
"trend_duration_shorter": "Duração com tendência decrescente ({pct}%/ciclo) – média recente {avg}",
|
"trend_duration_shorter": "Duração com tendência decrescente ({pct}%/ciclo) – média recente {avg}",
|
||||||
"trend_energy_down": "Energia com tendência decrescente ({pct}%/ciclo)",
|
"trend_energy_down": "Energia com tendência decrescente ({pct}%/ciclo)",
|
||||||
"trend_energy_up": "Energia com tendência crescente ({pct}%/ciclo) – média recente {avg}",
|
"trend_energy_up": "Energia com tendência crescente ({pct}%/ciclo) – média recente {avg}",
|
||||||
|
"trim_destructive_confirm": "Isso mantém apenas {pct}% do ciclo e esta ação não pode ser desfeita. Continuar?",
|
||||||
"trim_intro": "Arraste as alças vermelhas ou insira valores. Tudo fora da janela é removido.",
|
"trim_intro": "Arraste as alças vermelhas ou insira valores. Tudo fora da janela é removido.",
|
||||||
"tuning_suggestions_available": "{count} sugestão de ajuste disponível a partir dos ciclos observados. Aparecem ao lado dos campos relevantes.",
|
"tuning_suggestions_available": "{count} sugestão de ajuste disponível a partir dos ciclos observados. Aparecem ao lado dos campos relevantes.",
|
||||||
"unsure_detected_prefix": "O WashData não tem certeza se detectou",
|
"unsure_detected_prefix": "O WashData não tem certeza se detectou",
|
||||||
@@ -922,7 +953,12 @@
|
|||||||
"merge_hint": "Os itens importados são adicionados; nada local é perdido. Os conflitos de nomes são resolvidos abaixo.",
|
"merge_hint": "Os itens importados são adicionados; nada local é perdido. Os conflitos de nomes são resolvidos abaixo.",
|
||||||
"replace_warn": "Cada categoria marcada é apagada e substituída pelo conteúdo do arquivo. As categorias não marcadas ficam intactas.",
|
"replace_warn": "Cada categoria marcada é apagada e substituída pelo conteúdo do arquivo. As categorias não marcadas ficam intactas.",
|
||||||
"dest_reference_hint": "Os ciclos importados só melhoram o reconhecimento de programas e nunca afetam as estatísticas de uso/energia.",
|
"dest_reference_hint": "Os ciclos importados só melhoram o reconhecimento de programas e nunca afetam as estatísticas de uso/energia.",
|
||||||
"dest_real_history_hint": "Os ciclos importados contam como histórico próprio deste dispositivo e alimentam as estatísticas de energia/uso. Use para mover um eletrodoméstico para uma nova instalação."
|
"dest_real_history_hint": "Os ciclos importados contam como histórico próprio deste dispositivo e alimentam as estatísticas de energia/uso. Use para mover um eletrodoméstico para uma nova instalação.",
|
||||||
|
"sug_muted": "Não vai sugerir esta configuração novamente",
|
||||||
|
"sug_mute_failed": "Não foi possível silenciar a sugestão",
|
||||||
|
"sug_unmuted_all": "Sugestões silenciadas redefinidas",
|
||||||
|
"n_suggestions_muted": "{count} silenciadas; o ajuste automático não irá propô-las.",
|
||||||
|
"font_size_hint": "Amplie ou reduza o texto neste painel. Aplica-se à sua conta neste dispositivo."
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Giros curtos ocasionais após a conclusão para reduzir amassados.",
|
"anti_crease": "Giros curtos ocasionais após a conclusão para reduzir amassados.",
|
||||||
@@ -970,6 +1006,10 @@
|
|||||||
"unusable": "Inutilizável"
|
"unusable": "Inutilizável"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Lava-louças",
|
||||||
|
"intro": "Tratamento de fim de ciclo para lava-louças, que normalmente terminam com uma longa fase de secagem quase silenciosa antes de uma breve descarga final."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "O modo antiamasso detecta pulsos de giro de baixa potência após a fase principal e os mantém anexados ao ciclo terminado.",
|
"intro": "O modo antiamasso detecta pulsos de giro de baixa potência após a fase principal e os mantém anexados ao ciclo terminado.",
|
||||||
"label": "Antiamasso"
|
"label": "Antiamasso"
|
||||||
@@ -1012,6 +1052,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Liberação em silêncio da secagem passiva",
|
||||||
|
"doc": "Assim que o ciclo ultrapassa a duração esperada, por quanto tempo a lava-louças deve permanecer silenciosa (abaixo do Limite de Parada) antes de o WashData parar de aguardar uma descarga final e encerrar o ciclo. Aumente este valor se a sua máquina tiver uma longa fase de secagem silenciosa antes de uma descarga final tardia que está passando despercebida - uma janela mais ampla permite que a duração aprendida acompanhe a variação sazonal (água de entrada mais fria = ciclos mais longos) em vez de se fixar na média antiga. Ele apenas encurta a espera em relação ao limite interno de 30 minutos para o pico de fim, nunca a prolonga."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Reconheça os pulsos curtos de baixa potência que uma secadora emite após a fase de aquecimento principal e mantenha-os anexados ao ciclo finalizado, em vez de lê-los como novos ciclos.",
|
"doc": "Reconheça os pulsos curtos de baixa potência que uma secadora emite após a fase de aquecimento principal e mantenha-os anexados ao ciclo finalizado, em vez de lê-los como novos ciclos.",
|
||||||
"label": "Ativar Detecção Antiamasso"
|
"label": "Ativar Detecção Antiamasso"
|
||||||
@@ -1232,6 +1276,10 @@
|
|||||||
"doc": "Minutos após o término de um ciclo, antes de enviar o lembrete de \"descarregar a máquina\" ainda em espera. Defina 0 para desativar o lembrete.",
|
"doc": "Minutos após o término de um ciclo, antes de enviar o lembrete de \"descarregar a máquina\" ainda em espera. Defina 0 para desativar o lembrete.",
|
||||||
"label": "Atraso de Lembrete de Descarga"
|
"label": "Atraso de Lembrete de Descarga"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Continua reenviando o lembrete de descarga a cada \"Atraso de Lembrete de Descarga\" minutos até você abrir a porta ou tocar em \"Parar de lembrar\" na notificação. Requer uma Entidade do Sensor de Porta (o próprio lembrete a exige). O botão de dispensar funciona nas notificações do aplicativo complementar (móvel) do Home Assistant.",
|
||||||
|
"label": "Repetir Até a Porta Abrir"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Tempo de espera após a queda de energia antes de declarar o término do ciclo. Se a energia for retomada dentro desta janela, o ciclo continua perfeitamente - isso faz a ponte entre as etapas de lavagem. As máquinas de lavar louça têm longas fases de secagem (desligadas por 20-60 minutos), portanto o atraso no desligamento deve exceder esse valor para manter toda a lavagem + secagem em um único ciclo.",
|
"doc": "Tempo de espera após a queda de energia antes de declarar o término do ciclo. Se a energia for retomada dentro desta janela, o ciclo continua perfeitamente - isso faz a ponte entre as etapas de lavagem. As máquinas de lavar louça têm longas fases de secagem (desligadas por 20-60 minutos), portanto o atraso no desligamento deve exceder esse valor para manter toda a lavagem + secagem em um único ciclo.",
|
||||||
"label": "Atraso de Desligamento"
|
"label": "Atraso de Desligamento"
|
||||||
@@ -1406,6 +1454,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Nitidez de energia",
|
"label": "Nitidez de energia",
|
||||||
"doc": "Precisão da penalidade de concordância de energia. Menor = mais rigoroso: uma discordância de energia penaliza mais. O padrão 0,25 é intencionalmente mais permissivo do que a Precisão de duração, porque a energia varia com a carga. Use em conjunto com o Peso de energia."
|
"doc": "Precisão da penalidade de concordância de energia. Menor = mais rigoroso: uma discordância de energia penaliza mais. O padrão 0,25 é intencionalmente mais permissivo do que a Precisão de duração, porque a energia varia com a carga. Use em conjunto com o Peso de energia."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Intervalo do Perfil de Potência",
|
||||||
|
"doc": "Tamanho do intervalo para o atributo de sensor power_profile por perfil (a matriz plana de watts médios por slot consumida por planejadores externos como EMHASS e tibber_prices). Intervalos menores preservam picos curtos de potência com mais nitidez; intervalos maiores suavizam o perfil. Padrão: 15 min. Apenas em tempo de leitura; não afeta a detecção."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Manter Notificação ao Vivo ao Toque",
|
||||||
|
"doc": "Apenas Android. Torna a notificação de progresso ao vivo persistente (fixada) para que tocá-la não dispense o encadeamento em andamento. Desativado mantém o comportamento padrão, em que um toque a dispensa."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Destino de Toque da Notificação ao Vivo",
|
||||||
|
"doc": "Apenas Android. Para onde um toque na notificação de progresso ao vivo abre (por exemplo, /lovelace/lavanderia, ou uma URL completa) em vez da página inicial do aplicativo. Deixe em branco para o padrão."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Porta Abre Automaticamente ao Final",
|
||||||
|
"doc": "Para máquinas de lavar louça que abrem a porta automaticamente ao final do ciclo para secar (AirDry e similares). Com esta opção ativa, a abertura de porta durante um ciclo em execução não o pausa indefinidamente; em vez disso, se a porta permanecer aberta pelo tempo de espera configurado abaixo, o WashData considera o ciclo como concluído. Uma abertura breve (para adicionar um item) é ignorada. Requer uma Entidade de Sensor de Porta."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Tempo de Espera da Porta Aberta",
|
||||||
|
"doc": "Por quanto tempo a porta deve permanecer aberta antes de o WashData encerrar o ciclo, quando a opção \"Porta Abre Automaticamente ao Final\" está ativa. Longo o suficiente para ignorar a adição rápida de um prato (padrão 60 s), curto o suficiente para encerrar prontamente assim que a máquina abre a porta."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1644,10 @@
|
|||||||
"name_required": "Nome obrigatório",
|
"name_required": "Nome obrigatório",
|
||||||
"no_split_found": "Nenhum intervalo de inatividade encontrado para dividir",
|
"no_split_found": "Nenhum intervalo de inatividade encontrado para dividir",
|
||||||
"panel_settings_saved": "Configurações do painel salvas",
|
"panel_settings_saved": "Configurações do painel salvas",
|
||||||
|
"pg_preset_loaded": "Predefinição \"{name}\" carregada",
|
||||||
|
"pg_preset_saved": "Predefinição \"{name}\" salva",
|
||||||
|
"pg_sugg_loaded": "{n} valor(es) sugerido(s) carregado(s) - execute a Área de testes para comparar",
|
||||||
|
"pg_sugg_ml_loaded": "{n} valor(es) calibrado(s) por ML carregado(s) - execute a Área de testes para comparar",
|
||||||
"phase_name_required": "O nome da fase é obrigatório",
|
"phase_name_required": "O nome da fase é obrigatório",
|
||||||
"phase_updated": "Fase atualizada",
|
"phase_updated": "Fase atualizada",
|
||||||
"phases_saved": "Fases salvas",
|
"phases_saved": "Fases salvas",
|
||||||
@@ -1723,6 +1795,7 @@
|
|||||||
"min_active": "Com base na potência ativa mínima ({min}W) observada no último ciclo.",
|
"min_active": "Com base na potência ativa mínima ({min}W) observada no último ciclo.",
|
||||||
"min_duration_ratio": "Mantido o mais baixo possível para que um programa seja reconhecido logo no início do ciclo; os limiares de confiança e de ambiguidade evitam confirmações prematuras.",
|
"min_duration_ratio": "Mantido o mais baixo possível para que um programa seja reconhecido logo no início do ciclo; os limiares de confiança e de ambiguidade evitam confirmações prematuras.",
|
||||||
"min_off_gap": "Com base em {gaps} intervalos entre ciclos observados (p05={p05}s). Piso do dispositivo: {floor}s.",
|
"min_off_gap": "Com base em {gaps} intervalos entre ciclos observados (p05={p05}s). Piso do dispositivo: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensionado para cobrir o período de silêncio mais longo dentro de um ciclo: {span}s + margem de 60s, de {spans} intervalos cobertos em {cycles} ciclos limpos (fica abaixo do seu intervalo mínimo de {ceiling}s entre cargas consecutivas).",
|
||||||
"min_power": "40% da menor potência ativa p05 ({p05}W) em {cycles} ciclos limpos, mantendo o limiar de desligamento abaixo do consumo real.{excl}",
|
"min_power": "40% da menor potência ativa p05 ({p05}W) em {cycles} ciclos limpos, mantendo o limiar de desligamento abaixo do consumo real.{excl}",
|
||||||
"ml_auto_label": "Menor confiança que o modelo de qualidade ainda classificou como limpa (p10 de {cycles} ciclos limpos = {p10}).",
|
"ml_auto_label": "Menor confiança que o modelo de qualidade ainda classificou como limpa (p10 de {cycles} ciclos limpos = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciclos ({pct}%) tiveram uma pausa que o detector de fim pontuou em >50%; exigir {val} confirmação(ões) de fim.",
|
"ml_end_repeat": "{false}/{total} ciclos ({pct}%) tiveram uma pausa que o detector de fim pontuou em >50%; exigir {val} confirmação(ões) de fim.",
|
||||||
@@ -1739,7 +1812,7 @@
|
|||||||
"thr_batch": "Mantido logo acima da menor potência ativa p05 em {cycles} ciclos ({p05}W) para que um início seja captado o mais cedo possível e o limiar de parada permaneça abaixo da menor potência de funcionamento da máquina.",
|
"thr_batch": "Mantido logo acima da menor potência ativa p05 em {cycles} ciclos ({p05}W) para que um início seja captado o mais cedo possível e o limiar de parada permaneça abaixo da menor potência de funcionamento da máquina.",
|
||||||
"tol_per_profile": "p75 da variância de duração por perfil em {profiles} perfis ({cycles} ciclos); perfis consistentes não são penalizados.",
|
"tol_per_profile": "p75 da variância de duração por perfil em {profiles} perfis ({cycles} ciclos); perfis consistentes não são penalizados.",
|
||||||
"tol_pooled": "Com base na variância de duração agregada de {cycles} ciclos rotulados recentes (desvio p95={dev}).",
|
"tol_pooled": "Com base na variância de duração agregada de {cycles} ciclos rotulados recentes (desvio p95={dev}).",
|
||||||
"watchdog": "Mantido tão baixo quanto é seguro (3x o intervalo de atualização p95 de {p95}s, mín. 30s) para que travamentos sejam detectados rapidamente sem paradas falsas."
|
"watchdog": "Mantido tão baixo quanto é seguro (logo acima do intervalo de atualização p95 de {p95}s, mín. 30s) para que travamentos sejam detectados rapidamente sem paradas falsas."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Excluído(s) {total} ciclo(s) mal detectado(s): {parts}.",
|
"summary": "Excluído(s) {total} ciclo(s) mal detectado(s): {parts}.",
|
||||||
@@ -1770,6 +1843,7 @@
|
|||||||
"other": "Outro"
|
"other": "Outro"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Lava-louças: segundos de silêncio após a duração esperada antes de liberar a espera da descarga de fim de ciclo",
|
||||||
"anti_wrinkle_enabled": "Absorver os pulsos de giro após a fase principal em vez de lê-los como novos ciclos",
|
"anti_wrinkle_enabled": "Absorver os pulsos de giro após a fase principal em vez de lê-los como novos ciclos",
|
||||||
"anti_wrinkle_exit_power": "A potência deve cair abaixo deste valor entre os pulsos para que o modo antiamasso permaneça ativo",
|
"anti_wrinkle_exit_power": "A potência deve cair abaixo deste valor entre os pulsos para que o modo antiamasso permaneça ativo",
|
||||||
"anti_wrinkle_idle_timeout": "Tempo de silêncio permitido entre dois pulsos de giro antes de o modo antiamasso terminar",
|
"anti_wrinkle_idle_timeout": "Tempo de silêncio permitido entre dois pulsos de giro antes de o modo antiamasso terminar",
|
||||||
@@ -1944,5 +2018,53 @@
|
|||||||
"hide_guidance": "Ocultar guia",
|
"hide_guidance": "Ocultar guia",
|
||||||
"show_guidance": "Exibir guia"
|
"show_guidance": "Exibir guia"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entidade não encontrada",
|
||||||
|
"running_long": "Em atraso",
|
||||||
|
"remaining": "restante",
|
||||||
|
"progress": "progresso",
|
||||||
|
"show_time_remaining": "Mostrar tempo restante",
|
||||||
|
"show_percentage": "Mostrar porcentagem",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Bloco (compacto)",
|
||||||
|
"detail": "Detalhe (completo)",
|
||||||
|
"glance": "Visão geral (vários dispositivos)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pausar",
|
||||||
|
"resume": "Retomar",
|
||||||
|
"terminate": "Encerrar ciclo",
|
||||||
|
"record_start": "Iniciar gravação",
|
||||||
|
"record_stop": "Parar gravação",
|
||||||
|
"program": "Programa",
|
||||||
|
"open_panel": "Abrir WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Layout",
|
||||||
|
"entity": "Entidade do eletrodoméstico",
|
||||||
|
"entities": "Eletrodomésticos",
|
||||||
|
"title": "Título",
|
||||||
|
"icon": "Ícone",
|
||||||
|
"show_state": "Mostrar estado",
|
||||||
|
"show_program": "Mostrar programa",
|
||||||
|
"show_progress_bar": "Mostrar barra de progresso",
|
||||||
|
"spin_icon": "Girar o ícone durante o funcionamento",
|
||||||
|
"display_mode": "Linha de detalhe",
|
||||||
|
"active_color": "Cor ativa personalizada",
|
||||||
|
"show_phase": "Mostrar fase",
|
||||||
|
"show_energy": "Mostrar energia e custo",
|
||||||
|
"show_anomaly": "Mostrar aviso de atraso",
|
||||||
|
"show_sparkline": "Mostrar gráfico de potência ao vivo",
|
||||||
|
"buttons": "Botões de ação",
|
||||||
|
"program_entity": "Entidade de programa (personalizada)",
|
||||||
|
"time_entity": "Entidade de tempo (personalizada)",
|
||||||
|
"pct_entity": "Entidade de progresso (personalizada)",
|
||||||
|
"power_entity": "Entidade de potência (personalizada)",
|
||||||
|
"tap_action": "Ação ao tocar",
|
||||||
|
"hold_action": "Ação ao manter pressionado",
|
||||||
|
"double_tap_action": "Ação ao tocar duas vezes"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,19 @@
|
|||||||
"pause_cycle_tip": "Pausar o ciclo em curso – o aparelho retomará onde parou",
|
"pause_cycle_tip": "Pausar o ciclo em curso – o aparelho retomará onde parou",
|
||||||
"pg_apply_device": "Aplicar ao dispositivo",
|
"pg_apply_device": "Aplicar ao dispositivo",
|
||||||
"pg_autofill": "Preenchimento automático",
|
"pg_autofill": "Preenchimento automático",
|
||||||
|
"pg_load_calibrated": "Carregar Calibrado (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Carregar as definições calibradas por ML como substituições na Área de testes",
|
||||||
|
"pg_load_live": "Carregar as definições ativas",
|
||||||
|
"pg_load_live_tip": "Voltar a ler as definições atuais da integração e descartar todas as edições feitas na Área de testes",
|
||||||
|
"pg_load_suggested": "Carregar sugestões ({n})",
|
||||||
|
"pg_load_suggested_tip": "Carregar as sugestões atuais do ajustador automático como substituições na Área de testes",
|
||||||
|
"pg_preset_delete": "Eliminar preset",
|
||||||
|
"pg_preset_load": "Carregar preset",
|
||||||
|
"pg_preset_load_tip": "Substituir os valores da Área de testes por este preset (as definições ativas não são alteradas)",
|
||||||
|
"pg_preset_save": "Guardar como preset",
|
||||||
|
"pg_preset_save_tip": "Guardar todos os valores abaixo como um preset com nome para este dispositivo",
|
||||||
|
"pg_publish_all": "Guardar {n} definição(ões) na integração",
|
||||||
|
"pg_publish_one": "Guardar {label} na integração",
|
||||||
"play": "Reproduzir",
|
"play": "Reproduzir",
|
||||||
"process": "Processar",
|
"process": "Processar",
|
||||||
"process_history": "Processar agora",
|
"process_history": "Processar agora",
|
||||||
@@ -178,7 +191,9 @@
|
|||||||
"download_export": "Transferir exportação",
|
"download_export": "Transferir exportação",
|
||||||
"analyze_import": "Analisar ficheiro",
|
"analyze_import": "Analisar ficheiro",
|
||||||
"import_selected": "Importar seleção",
|
"import_selected": "Importar seleção",
|
||||||
"back": "Voltar"
|
"back": "Voltar",
|
||||||
|
"mute_suggestion": "Não sugerir mais esta definição",
|
||||||
|
"reset_muted": "Repor silenciados"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +290,7 @@
|
|||||||
"no_automations": "Ainda não há automatizações que referenciem este dispositivo.",
|
"no_automations": "Ainda não há automatizações que referenciem este dispositivo.",
|
||||||
"panel_settings": "Definições do painel",
|
"panel_settings": "Definições do painel",
|
||||||
"param_sweep": "Varrimento de parâmetro",
|
"param_sweep": "Varrimento de parâmetro",
|
||||||
|
"pg_settings_source": "Origem das definições",
|
||||||
"phase_catalog": "Catálogo de fases",
|
"phase_catalog": "Catálogo de fases",
|
||||||
"playground": "Área de testes",
|
"playground": "Área de testes",
|
||||||
"process_history": "Histórico de processamento",
|
"process_history": "Histórico de processamento",
|
||||||
@@ -415,6 +431,9 @@
|
|||||||
"pg_match_score": "Pontuação de correspondência",
|
"pg_match_score": "Pontuação de correspondência",
|
||||||
"pg_pct_of": "{p}% de {total}",
|
"pg_pct_of": "{p}% de {total}",
|
||||||
"pg_poor_match": "Correspondência má",
|
"pg_poor_match": "Correspondência má",
|
||||||
|
"pg_preset": "Preset da Área de testes",
|
||||||
|
"pg_preset_name": "Nome do novo preset",
|
||||||
|
"pg_preset_none": "Selecione um preset…",
|
||||||
"pg_strong_match": "Correspondência forte",
|
"pg_strong_match": "Correspondência forte",
|
||||||
"pg_tile_ambiguous": "Ambíguo",
|
"pg_tile_ambiguous": "Ambíguo",
|
||||||
"pg_tile_ambiguous_tip": "Ciclos com um quase empate entre dois programas",
|
"pg_tile_ambiguous_tip": "Ciclos com um quase empate entre dois programas",
|
||||||
@@ -609,7 +628,8 @@
|
|||||||
"conflict_resolution": "Conflitos de nomes",
|
"conflict_resolution": "Conflitos de nomes",
|
||||||
"conflict_import_copy": "Importar como cópia",
|
"conflict_import_copy": "Importar como cópia",
|
||||||
"conflict_keep_mine": "Manter o meu",
|
"conflict_keep_mine": "Manter o meu",
|
||||||
"conflict_overwrite": "Substituir"
|
"conflict_overwrite": "Substituir",
|
||||||
|
"font_size": "Tamanho da letra do painel"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Todos os níveis",
|
"all_levels": "Todos os níveis",
|
||||||
@@ -771,7 +791,17 @@
|
|||||||
"pg_apply_confirm": "Aplicar o melhor valor: {label} = {value}?",
|
"pg_apply_confirm": "Aplicar o melhor valor: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Selecione um ciclo acima e, em seguida, prima Carregar para ver a sua curva de potência.",
|
"pg_canvas_empty": "Selecione um ciclo acima e, em seguida, prima Carregar para ver a sua curva de potência.",
|
||||||
"pg_chart_caption": "Taxa de deteção/correspondência ao longo dos valores de {param}",
|
"pg_chart_caption": "Taxa de deteção/correspondência ao longo dos valores de {param}",
|
||||||
|
"pg_ctrl_intro": "Os valores partem das definições ativas deste dispositivo na integração. As edições ficam na Área de testes até as guardar na integração.",
|
||||||
|
"pg_live_unavailable": "Definições ativas indisponíveis, a mostrar os valores predefinidos.",
|
||||||
|
"pg_load_live_confirm": "Descartar {n} edição(ões) da Área de testes e recarregar as definições atuais da integração?",
|
||||||
"pg_match_rate": "{pct}% de taxa de correspondência em {total} ciclos",
|
"pg_match_rate": "{pct}% de taxa de correspondência em {total} ciclos",
|
||||||
|
"pg_matches_live": "Corresponde às definições ativas",
|
||||||
|
"pg_n_changed": "{n} valor(es) diferente(s) das definições ativas",
|
||||||
|
"pg_sugg_none": "Todas as sugestões já correspondem às definições atuais",
|
||||||
|
"pg_preset_delete_confirm": "Eliminar o preset \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Limite de presets atingido ({n})",
|
||||||
|
"pg_preset_overwrite": "Substituir o preset \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Guardar {label} = {value} nas definições deste dispositivo?",
|
||||||
"pg_restart_note": "Reinicie o Home Assistant para ativar as ferramentas de simulação.",
|
"pg_restart_note": "Reinicie o Home Assistant para ativar as ferramentas de simulação.",
|
||||||
"pg_sim_progress": "{done} / {total} ciclos",
|
"pg_sim_progress": "{done} / {total} ciclos",
|
||||||
"pg_starting": "A iniciar…",
|
"pg_starting": "A iniciar…",
|
||||||
@@ -845,6 +875,7 @@
|
|||||||
"trend_duration_shorter": "Duração com tendência decrescente ({pct}%/ciclo) – média recente {avg}",
|
"trend_duration_shorter": "Duração com tendência decrescente ({pct}%/ciclo) – média recente {avg}",
|
||||||
"trend_energy_down": "Energia com tendência decrescente ({pct}%/ciclo)",
|
"trend_energy_down": "Energia com tendência decrescente ({pct}%/ciclo)",
|
||||||
"trend_energy_up": "Energia com tendência crescente ({pct}%/ciclo) – média recente {avg}",
|
"trend_energy_up": "Energia com tendência crescente ({pct}%/ciclo) – média recente {avg}",
|
||||||
|
"trim_destructive_confirm": "Isto mantém apenas {pct}% do ciclo e esta ação não pode ser anulada. Continuar?",
|
||||||
"trim_intro": "Arraste os puxadores vermelhos ou introduza valores. Tudo o que estiver fora da janela é removido.",
|
"trim_intro": "Arraste os puxadores vermelhos ou introduza valores. Tudo o que estiver fora da janela é removido.",
|
||||||
"tuning_suggestions_available": "{count} sugestão de ajuste disponível a partir dos ciclos observados. Aparecem junto dos campos relevantes.",
|
"tuning_suggestions_available": "{count} sugestão de ajuste disponível a partir dos ciclos observados. Aparecem junto dos campos relevantes.",
|
||||||
"unsure_detected_prefix": "O WashData não tem a certeza de que detectou",
|
"unsure_detected_prefix": "O WashData não tem a certeza de que detectou",
|
||||||
@@ -922,9 +953,15 @@
|
|||||||
"merge_hint": "Os itens importados são adicionados; nada local é perdido. Os conflitos de nomes são resolvidos abaixo.",
|
"merge_hint": "Os itens importados são adicionados; nada local é perdido. Os conflitos de nomes são resolvidos abaixo.",
|
||||||
"replace_warn": "Cada categoria marcada é apagada e substituída pelo conteúdo do ficheiro. As categorias não marcadas ficam intactas.",
|
"replace_warn": "Cada categoria marcada é apagada e substituída pelo conteúdo do ficheiro. As categorias não marcadas ficam intactas.",
|
||||||
"dest_reference_hint": "Os ciclos importados só melhoram o reconhecimento de programas e nunca afetam as estatísticas de utilização/energia.",
|
"dest_reference_hint": "Os ciclos importados só melhoram o reconhecimento de programas e nunca afetam as estatísticas de utilização/energia.",
|
||||||
"dest_real_history_hint": "Os ciclos importados contam como histórico próprio deste dispositivo e alimentam as estatísticas de energia/utilização. Use para mover um eletrodoméstico para uma nova instalação."
|
"dest_real_history_hint": "Os ciclos importados contam como histórico próprio deste dispositivo e alimentam as estatísticas de energia/utilização. Use para mover um eletrodoméstico para uma nova instalação.",
|
||||||
|
"sug_muted": "Esta definição não será sugerida novamente",
|
||||||
|
"sug_mute_failed": "Não foi possível silenciar a sugestão",
|
||||||
|
"sug_unmuted_all": "Sugestões silenciadas repostas",
|
||||||
|
"n_suggestions_muted": "{count} silenciadas; o ajustador automático não proporá estas definições.",
|
||||||
|
"font_size_hint": "Torna tudo neste painel maior ou menor. Aplica-se à sua conta neste dispositivo."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Máquina de lavar louça: segundos de silêncio após a duração esperada antes de libertar a espera da descarga de fim de ciclo",
|
||||||
"anti_wrinkle_enabled": "Absorver os pulsos de rotação após a fase principal em vez de os ler como novos ciclos",
|
"anti_wrinkle_enabled": "Absorver os pulsos de rotação após a fase principal em vez de os ler como novos ciclos",
|
||||||
"anti_wrinkle_exit_power": "A potência deve descer abaixo deste valor entre pulsos para que o modo anti-vincos permaneça ativo",
|
"anti_wrinkle_exit_power": "A potência deve descer abaixo deste valor entre pulsos para que o modo anti-vincos permaneça ativo",
|
||||||
"anti_wrinkle_idle_timeout": "Tempo de silêncio permitido entre dois pulsos de rotação antes de o modo anti-vincos terminar",
|
"anti_wrinkle_idle_timeout": "Tempo de silêncio permitido entre dois pulsos de rotação antes de o modo anti-vincos terminar",
|
||||||
@@ -998,6 +1035,10 @@
|
|||||||
"unusable": "Inutilizável"
|
"unusable": "Inutilizável"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Máquina de lavar louça",
|
||||||
|
"intro": "Gestão de fim de ciclo para máquinas de lavar louça, que normalmente terminam com uma longa fase de secagem quase silenciosa antes de uma breve descarga final."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "O modo anti-vincos detecta pulsos de rotação a baixa potência após a fase principal e mantém-nos ligados ao ciclo terminado.",
|
"intro": "O modo anti-vincos detecta pulsos de rotação a baixa potência após a fase principal e mantém-nos ligados ao ciclo terminado.",
|
||||||
"label": "Anti-Vincos"
|
"label": "Anti-Vincos"
|
||||||
@@ -1040,6 +1081,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Libertação em silêncio da secagem passiva",
|
||||||
|
"doc": "Assim que o ciclo ultrapassa a sua duração esperada, durante quanto tempo a máquina de lavar louça deve permanecer silenciosa (abaixo do Limiar de Paragem) antes de o WashData deixar de aguardar uma descarga final e terminar o ciclo. Aumente este valor se a sua máquina tiver uma longa fase de secagem silenciosa antes de uma descarga final tardia que está a ser ignorada - uma janela mais ampla permite que a duração aprendida acompanhe a variação sazonal (água de entrada mais fria = ciclos mais longos) em vez de se fixar na média antiga. Apenas encurta a espera face ao limite interno de 30 minutos para o pico de fim, nunca a prolonga."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Reconheça os pulsos curtos de baixa potência que uma secadora emite após a fase de aquecimento principal e mantenha-os anexados ao ciclo finalizado, em vez de lê-los como novos ciclos.",
|
"doc": "Reconheça os pulsos curtos de baixa potência que uma secadora emite após a fase de aquecimento principal e mantenha-os anexados ao ciclo finalizado, em vez de lê-los como novos ciclos.",
|
||||||
"label": "Activar Detecção Anti-Vincos"
|
"label": "Activar Detecção Anti-Vincos"
|
||||||
@@ -1260,6 +1305,10 @@
|
|||||||
"doc": "Minutos após o término de um ciclo, antes de enviar o lembrete de \"descarregar a máquina\" ainda em espera. Defina 0 para desativar o lembrete.",
|
"doc": "Minutos após o término de um ciclo, antes de enviar o lembrete de \"descarregar a máquina\" ainda em espera. Defina 0 para desativar o lembrete.",
|
||||||
"label": "Atraso de Lembrete de Descarga"
|
"label": "Atraso de Lembrete de Descarga"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Continua a reenviar o lembrete de descarga a cada \"Atraso de Lembrete de Descarga\" minutos até abrir a porta ou tocar em \"Parar de lembrar\" na notificação. Requer uma Entidade do Sensor de Porta (o próprio lembrete a exige). O botão de dispensar funciona nas notificações do aplicativo complementar (móvel) do Home Assistant.",
|
||||||
|
"label": "Repetir Até a Porta Abrir"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Tempo de espera após a queda de energia antes de declarar o término do ciclo. Se a energia for retomada dentro desta janela, o ciclo continua perfeitamente - isso faz a ponte entre as etapas de lavagem. As máquinas de lavar louça têm longas fases de secagem (desligadas por 20-60 minutos), portanto o atraso no desligamento deve exceder esse valor para manter toda a lavagem + secagem em um único ciclo.",
|
"doc": "Tempo de espera após a queda de energia antes de declarar o término do ciclo. Se a energia for retomada dentro desta janela, o ciclo continua perfeitamente - isso faz a ponte entre as etapas de lavagem. As máquinas de lavar louça têm longas fases de secagem (desligadas por 20-60 minutos), portanto o atraso no desligamento deve exceder esse valor para manter toda a lavagem + secagem em um único ciclo.",
|
||||||
"label": "Atraso de Desligamento"
|
"label": "Atraso de Desligamento"
|
||||||
@@ -1434,6 +1483,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Nitidez de energia",
|
"label": "Nitidez de energia",
|
||||||
"doc": "Precisão da penalidade de concordância de energia. Menor = mais rigoroso: uma discordância de energia penaliza mais. A predefinição 0,25 é intencionalmente mais permissiva do que a Precisão de duração, porque a energia varia com a carga. Use em conjunto com o Peso de energia."
|
"doc": "Precisão da penalidade de concordância de energia. Menor = mais rigoroso: uma discordância de energia penaliza mais. A predefinição 0,25 é intencionalmente mais permissiva do que a Precisão de duração, porque a energia varia com a carga. Use em conjunto com o Peso de energia."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Intervalo do Perfil de Potência",
|
||||||
|
"doc": "Tamanho do intervalo para o atributo do sensor power_profile por perfil (o array plano de watts médios por slot consumido por planeadores externos como EMHASS e tibber_prices). Intervalos menores mantêm os picos de potência curtos nítidos; intervalos maiores suavizam a forma. Predefinição: 15 min. Apenas de leitura; não afeta a deteção."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Manter a Notificação em Tempo Real ao Tocar",
|
||||||
|
"doc": "Apenas Android. Torna a notificação de progresso em tempo real persistente (fixada) para que ao tocar nela não a dispense. Desativado mantém o comportamento padrão em que o toque a dispensa."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Destino ao Tocar na Notificação em Tempo Real",
|
||||||
|
"doc": "Apenas Android. Para onde abre o toque na notificação de progresso em tempo real (por exemplo, /lovelace/lavandaria, ou um URL completo) em vez da página inicial da aplicação. Deixe em branco para a predefinição."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Porta Abre Automaticamente no Fim",
|
||||||
|
"doc": "Para máquinas de lavar louça que abrem a porta automaticamente no fim do ciclo para secar (AirDry e similares). Com esta opção ativa, a abertura da porta durante um ciclo em execução deixa de o pausar indefinidamente; em vez disso, se a porta permanecer aberta durante o tempo de espera indicado abaixo, o WashData considera o ciclo concluído. Uma abertura breve (ao adicionar um item) é ignorada. Requer uma Entidade do Sensor de Porta."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Tempo de Espera com Porta Aberta para Fim",
|
||||||
|
"doc": "Quanto tempo a porta tem de permanecer aberta antes de o WashData terminar o ciclo, quando a opção \"Porta Abre Automaticamente no Fim\" está ativa. Suficientemente longo para ignorar a adição rápida de um prato (predefinição: 60 s), suficientemente curto para terminar prontamente quando a máquina abre a porta."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1604,6 +1673,10 @@
|
|||||||
"name_required": "Nome obrigatório",
|
"name_required": "Nome obrigatório",
|
||||||
"no_split_found": "Nenhum intervalo de inactividade encontrado para dividir",
|
"no_split_found": "Nenhum intervalo de inactividade encontrado para dividir",
|
||||||
"panel_settings_saved": "Definições do painel guardadas",
|
"panel_settings_saved": "Definições do painel guardadas",
|
||||||
|
"pg_preset_loaded": "Preset \"{name}\" carregado",
|
||||||
|
"pg_preset_saved": "Preset \"{name}\" guardado",
|
||||||
|
"pg_sugg_loaded": "{n} valor(es) sugerido(s) carregado(s) - execute a Área de testes para comparar",
|
||||||
|
"pg_sugg_ml_loaded": "{n} valor(es) calibrado(s) por ML carregado(s) - execute a Área de testes para comparar",
|
||||||
"phase_name_required": "O nome da fase é obrigatório",
|
"phase_name_required": "O nome da fase é obrigatório",
|
||||||
"phase_updated": "Fase actualizada",
|
"phase_updated": "Fase actualizada",
|
||||||
"phases_saved": "Fases guardadas",
|
"phases_saved": "Fases guardadas",
|
||||||
@@ -1751,6 +1824,7 @@
|
|||||||
"min_active": "Com base na potência ativa mínima ({min}W) observada no último ciclo.",
|
"min_active": "Com base na potência ativa mínima ({min}W) observada no último ciclo.",
|
||||||
"min_duration_ratio": "Mantido o mais baixo possível para que um programa seja reconhecido cedo no ciclo; os limiares de confiança e ambiguidade evitam decisões prematuras.",
|
"min_duration_ratio": "Mantido o mais baixo possível para que um programa seja reconhecido cedo no ciclo; os limiares de confiança e ambiguidade evitam decisões prematuras.",
|
||||||
"min_off_gap": "Com base em {gaps} intervalos entre ciclos observados (p05={p05}s). Mínimo do dispositivo: {floor}s.",
|
"min_off_gap": "Com base em {gaps} intervalos entre ciclos observados (p05={p05}s). Mínimo do dispositivo: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensionado para cobrir o período de silêncio mais longo dentro de um ciclo: {span}s + 60s de margem, a partir de {spans} intervalos cobertos ao longo de {cycles} ciclos limpos (mantém-se abaixo do seu intervalo mínimo de {ceiling}s entre cargas consecutivas).",
|
||||||
"min_power": "40% da potência ativa mais baixa no p05 ({p05}W) ao longo de {cycles} ciclos limpos, mantendo o limiar de desligamento abaixo do consumo real.{excl}",
|
"min_power": "40% da potência ativa mais baixa no p05 ({p05}W) ao longo de {cycles} ciclos limpos, mantendo o limiar de desligamento abaixo do consumo real.{excl}",
|
||||||
"ml_auto_label": "Confiança mais baixa que o modelo de qualidade ainda classificou como limpa (p10 de {cycles} ciclos limpos = {p10}).",
|
"ml_auto_label": "Confiança mais baixa que o modelo de qualidade ainda classificou como limpa (p10 de {cycles} ciclos limpos = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciclos ({pct}%) tiveram uma pausa que o detetor de fim pontuou >50%; exigir {val} confirmação(ões) de fim.",
|
"ml_end_repeat": "{false}/{total} ciclos ({pct}%) tiveram uma pausa que o detetor de fim pontuou >50%; exigir {val} confirmação(ões) de fim.",
|
||||||
@@ -1767,7 +1841,7 @@
|
|||||||
"thr_batch": "Mantido logo acima da potência ativa mais baixa no p05 ao longo de {cycles} ciclos ({p05}W) para que um arranque seja captado o mais cedo possível e o limiar de paragem se mantenha abaixo da potência de funcionamento mais baixa da máquina.",
|
"thr_batch": "Mantido logo acima da potência ativa mais baixa no p05 ao longo de {cycles} ciclos ({p05}W) para que um arranque seja captado o mais cedo possível e o limiar de paragem se mantenha abaixo da potência de funcionamento mais baixa da máquina.",
|
||||||
"tol_per_profile": "p75 da variância de duração por perfil em {profiles} perfis ({cycles} ciclos); os perfis restritos não são penalizados.",
|
"tol_per_profile": "p75 da variância de duração por perfil em {profiles} perfis ({cycles} ciclos); os perfis restritos não são penalizados.",
|
||||||
"tol_pooled": "Com base na variância de duração agrupada de {cycles} ciclos rotulados recentes (desvio p95={dev}).",
|
"tol_pooled": "Com base na variância de duração agrupada de {cycles} ciclos rotulados recentes (desvio p95={dev}).",
|
||||||
"watchdog": "Mantido o mais baixo que é seguro (3x o intervalo de atualização p95 de {p95}s, mín. 30s) para detetar rapidamente os bloqueios sem paragens falsas."
|
"watchdog": "Mantido o mais baixo que é seguro (ligeiramente acima do intervalo de atualização p95 de {p95}s, mín. 30s) para detetar rapidamente os bloqueios sem paragens falsas."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Excluído(s) {total} ciclo(s) mal detetado(s): {parts}.",
|
"summary": "Excluído(s) {total} ciclo(s) mal detetado(s): {parts}.",
|
||||||
@@ -1944,5 +2018,53 @@
|
|||||||
"hide_guidance": "Ocultar guia",
|
"hide_guidance": "Ocultar guia",
|
||||||
"show_guidance": "Mostrar guia"
|
"show_guidance": "Mostrar guia"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entidade não encontrada",
|
||||||
|
"running_long": "Em atraso",
|
||||||
|
"remaining": "restante",
|
||||||
|
"progress": "progresso",
|
||||||
|
"show_time_remaining": "Mostrar tempo restante",
|
||||||
|
"show_percentage": "Mostrar percentagem",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Mosaico (compacto)",
|
||||||
|
"detail": "Detalhe (completo)",
|
||||||
|
"glance": "Vista rápida (vários dispositivos)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pausar",
|
||||||
|
"resume": "Retomar",
|
||||||
|
"terminate": "Terminar ciclo",
|
||||||
|
"record_start": "Iniciar gravação",
|
||||||
|
"record_stop": "Parar gravação",
|
||||||
|
"program": "Programa",
|
||||||
|
"open_panel": "Abrir WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Disposição",
|
||||||
|
"entity": "Entidade do eletrodoméstico",
|
||||||
|
"entities": "Eletrodomésticos",
|
||||||
|
"title": "Título",
|
||||||
|
"icon": "Ícone",
|
||||||
|
"show_state": "Mostrar estado",
|
||||||
|
"show_program": "Mostrar programa",
|
||||||
|
"show_progress_bar": "Mostrar barra de progresso",
|
||||||
|
"spin_icon": "Rodar o ícone durante o funcionamento",
|
||||||
|
"display_mode": "Linha de detalhe",
|
||||||
|
"active_color": "Cor ativa personalizada",
|
||||||
|
"show_phase": "Mostrar fase",
|
||||||
|
"show_energy": "Mostrar energia e custo",
|
||||||
|
"show_anomaly": "Mostrar aviso de atraso",
|
||||||
|
"show_sparkline": "Mostrar gráfico de potência em direto",
|
||||||
|
"buttons": "Botões de ação",
|
||||||
|
"program_entity": "Entidade de programa (personalizada)",
|
||||||
|
"time_entity": "Entidade de tempo (personalizada)",
|
||||||
|
"pct_entity": "Entidade de progresso (personalizada)",
|
||||||
|
"power_entity": "Entidade de potência (personalizada)",
|
||||||
|
"tap_action": "Ação ao tocar",
|
||||||
|
"hold_action": "Ação ao manter premido",
|
||||||
|
"double_tap_action": "Ação ao tocar duas vezes"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,19 @@
|
|||||||
"pause_cycle_tip": "Puneți în pauză ciclul în curs – aparatul va relua de unde a rămas",
|
"pause_cycle_tip": "Puneți în pauză ciclul în curs – aparatul va relua de unde a rămas",
|
||||||
"pg_apply_device": "Aplicați pe dispozitiv",
|
"pg_apply_device": "Aplicați pe dispozitiv",
|
||||||
"pg_autofill": "Completare automată",
|
"pg_autofill": "Completare automată",
|
||||||
|
"pg_load_calibrated": "Încarcă Calibrat (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Încarcă setările calibrate de ML ca substituiri în Zona de test",
|
||||||
|
"pg_load_live": "Încarcă setările active",
|
||||||
|
"pg_load_live_tip": "Recitește setările actuale ale integrării și renunță la toate modificările făcute în Zona de test",
|
||||||
|
"pg_load_suggested": "Încarcă sugestii ({n})",
|
||||||
|
"pg_load_suggested_tip": "Încarcă sugestiile curente ale optimizatorului automat ca substituiri în Zona de test",
|
||||||
|
"pg_preset_delete": "Șterge presetarea",
|
||||||
|
"pg_preset_load": "Încarcă presetarea",
|
||||||
|
"pg_preset_load_tip": "Înlocuiește valorile din Zona de test cu această presetare (setările active rămân neatinse)",
|
||||||
|
"pg_preset_save": "Salvează ca presetare",
|
||||||
|
"pg_preset_save_tip": "Salvează toate valorile de mai jos ca presetare denumită pentru acest dispozitiv",
|
||||||
|
"pg_publish_all": "Salvează {n} setări în integrare",
|
||||||
|
"pg_publish_one": "Salvează {label} în integrare",
|
||||||
"play": "Redați",
|
"play": "Redați",
|
||||||
"process": "Procesați",
|
"process": "Procesați",
|
||||||
"process_history": "Procesați acum",
|
"process_history": "Procesați acum",
|
||||||
@@ -178,7 +191,9 @@
|
|||||||
"download_export": "Descarcă exportul",
|
"download_export": "Descarcă exportul",
|
||||||
"analyze_import": "Analizează fișierul",
|
"analyze_import": "Analizează fișierul",
|
||||||
"import_selected": "Importă selecția",
|
"import_selected": "Importă selecția",
|
||||||
"back": "Înapoi"
|
"back": "Înapoi",
|
||||||
|
"mute_suggestion": "Nu mai sugerați această setare",
|
||||||
|
"reset_muted": "Resetați cele ignorate"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +290,7 @@
|
|||||||
"no_automations": "Nicio automatizare nu face referire încă la acest dispozitiv.",
|
"no_automations": "Nicio automatizare nu face referire încă la acest dispozitiv.",
|
||||||
"panel_settings": "Setări panou",
|
"panel_settings": "Setări panou",
|
||||||
"param_sweep": "Scanare parametri",
|
"param_sweep": "Scanare parametri",
|
||||||
|
"pg_settings_source": "Sursa setărilor",
|
||||||
"phase_catalog": "Catalog de faze",
|
"phase_catalog": "Catalog de faze",
|
||||||
"playground": "Zonă de test",
|
"playground": "Zonă de test",
|
||||||
"process_history": "Istoricul procesării",
|
"process_history": "Istoricul procesării",
|
||||||
@@ -415,6 +431,9 @@
|
|||||||
"pg_match_score": "Scor de potrivire",
|
"pg_match_score": "Scor de potrivire",
|
||||||
"pg_pct_of": "{p}% din {total}",
|
"pg_pct_of": "{p}% din {total}",
|
||||||
"pg_poor_match": "Potrivire proastă",
|
"pg_poor_match": "Potrivire proastă",
|
||||||
|
"pg_preset": "Presetare din Zona de test",
|
||||||
|
"pg_preset_name": "Numele noii presetări",
|
||||||
|
"pg_preset_none": "Selectează o presetare…",
|
||||||
"pg_strong_match": "Potrivire puternică",
|
"pg_strong_match": "Potrivire puternică",
|
||||||
"pg_tile_ambiguous": "Ambigue",
|
"pg_tile_ambiguous": "Ambigue",
|
||||||
"pg_tile_ambiguous_tip": "Cicluri cu un rezultat aproape egal între două programe",
|
"pg_tile_ambiguous_tip": "Cicluri cu un rezultat aproape egal între două programe",
|
||||||
@@ -609,7 +628,8 @@
|
|||||||
"conflict_resolution": "Conflicte de nume",
|
"conflict_resolution": "Conflicte de nume",
|
||||||
"conflict_import_copy": "Importă drept copie",
|
"conflict_import_copy": "Importă drept copie",
|
||||||
"conflict_keep_mine": "Păstrează-l pe al meu",
|
"conflict_keep_mine": "Păstrează-l pe al meu",
|
||||||
"conflict_overwrite": "Suprascrie"
|
"conflict_overwrite": "Suprascrie",
|
||||||
|
"font_size": "Dimensiunea fontului panoului"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Toate nivelurile",
|
"all_levels": "Toate nivelurile",
|
||||||
@@ -771,7 +791,17 @@
|
|||||||
"pg_apply_confirm": "Aplicați cea mai bună valoare: {label} = {value}?",
|
"pg_apply_confirm": "Aplicați cea mai bună valoare: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Selectați un ciclu de mai sus, apoi apăsați Încărcați pentru a vedea curba sa de putere.",
|
"pg_canvas_empty": "Selectați un ciclu de mai sus, apoi apăsați Încărcați pentru a vedea curba sa de putere.",
|
||||||
"pg_chart_caption": "Rata de detectare/potrivire în funcție de valorile {param}",
|
"pg_chart_caption": "Rata de detectare/potrivire în funcție de valorile {param}",
|
||||||
|
"pg_ctrl_intro": "Valorile pornesc de la setările active ale acestui dispozitiv din integrare. Modificările rămân în Zona de test până când le salvezi în integrare.",
|
||||||
|
"pg_live_unavailable": "Setările active nu sunt disponibile, se afișează valorile implicite.",
|
||||||
|
"pg_load_live_confirm": "Renunți la {n} modificări din Zona de test și reîncarci setările actuale ale integrării?",
|
||||||
"pg_match_rate": "{pct}% rată de potrivire pe {total} cicluri",
|
"pg_match_rate": "{pct}% rată de potrivire pe {total} cicluri",
|
||||||
|
"pg_matches_live": "Identice cu setările active",
|
||||||
|
"pg_n_changed": "{n} valori diferite față de setările active",
|
||||||
|
"pg_sugg_none": "Toate sugestiile corespund deja setărilor actuale",
|
||||||
|
"pg_preset_delete_confirm": "Ștergi presetarea \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Limita de presetări a fost atinsă ({n})",
|
||||||
|
"pg_preset_overwrite": "Suprascrii presetarea \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Salvezi {label} = {value} în setările acestui dispozitiv?",
|
||||||
"pg_restart_note": "Reporniți Home Assistant pentru a activa instrumentele de simulare.",
|
"pg_restart_note": "Reporniți Home Assistant pentru a activa instrumentele de simulare.",
|
||||||
"pg_sim_progress": "{done} / {total} cicluri",
|
"pg_sim_progress": "{done} / {total} cicluri",
|
||||||
"pg_starting": "Se pornește…",
|
"pg_starting": "Se pornește…",
|
||||||
@@ -845,6 +875,7 @@
|
|||||||
"trend_duration_shorter": "Durata este în scădere ({pct}%/ciclu) – medie recentă {avg}",
|
"trend_duration_shorter": "Durata este în scădere ({pct}%/ciclu) – medie recentă {avg}",
|
||||||
"trend_energy_down": "Energia este în scădere ({pct}%/ciclu)",
|
"trend_energy_down": "Energia este în scădere ({pct}%/ciclu)",
|
||||||
"trend_energy_up": "Energia este în creștere ({pct}%/ciclu) – medie recentă {avg}",
|
"trend_energy_up": "Energia este în creștere ({pct}%/ciclu) – medie recentă {avg}",
|
||||||
|
"trim_destructive_confirm": "Se păstrează doar {pct}% din ciclu, iar această acțiune nu poate fi anulată. Continuați?",
|
||||||
"trim_intro": "Trageți mânerele roșii sau introduceți valori. Tot ceea ce este în afara ferestrei este eliminat.",
|
"trim_intro": "Trageți mânerele roșii sau introduceți valori. Tot ceea ce este în afara ferestrei este eliminat.",
|
||||||
"tuning_suggestions_available": "{count} sugestie de ajustare disponibilă din ciclurile observate. Acestea apar lângă câmpurile relevante.",
|
"tuning_suggestions_available": "{count} sugestie de ajustare disponibilă din ciclurile observate. Acestea apar lângă câmpurile relevante.",
|
||||||
"unsure_detected_prefix": "WashData nu este sigur că a detectat",
|
"unsure_detected_prefix": "WashData nu este sigur că a detectat",
|
||||||
@@ -922,7 +953,12 @@
|
|||||||
"merge_hint": "Elementele importate sunt adăugate; nimic local nu se pierde. Conflictele de nume se rezolvă mai jos.",
|
"merge_hint": "Elementele importate sunt adăugate; nimic local nu se pierde. Conflictele de nume se rezolvă mai jos.",
|
||||||
"replace_warn": "Fiecare categorie bifată este ștearsă și înlocuită cu conținutul fișierului. Categoriile nebifate rămân neatinse.",
|
"replace_warn": "Fiecare categorie bifată este ștearsă și înlocuită cu conținutul fișierului. Categoriile nebifate rămân neatinse.",
|
||||||
"dest_reference_hint": "Ciclurile importate îmbunătățesc doar recunoașterea programelor și nu afectează niciodată statisticile de utilizare/energie.",
|
"dest_reference_hint": "Ciclurile importate îmbunătățesc doar recunoașterea programelor și nu afectează niciodată statisticile de utilizare/energie.",
|
||||||
"dest_real_history_hint": "Ciclurile importate contează ca istoric propriu al acestui dispozitiv și alimentează statisticile de energie/utilizare. Folosește pentru a muta un electrocasnic pe o instalare nouă."
|
"dest_real_history_hint": "Ciclurile importate contează ca istoric propriu al acestui dispozitiv și alimentează statisticile de energie/utilizare. Folosește pentru a muta un electrocasnic pe o instalare nouă.",
|
||||||
|
"sug_muted": "Această setare nu va mai fi sugerată",
|
||||||
|
"sug_mute_failed": "Nu s-a putut dezactiva sugestia",
|
||||||
|
"sug_unmuted_all": "Sugestiile dezactivate au fost resetate",
|
||||||
|
"n_suggestions_muted": "{count} dezactivate; reglajul automat nu le va propune.",
|
||||||
|
"font_size_hint": "Faceți tot din acest panou mai mare sau mai mic. Se aplică contului dvs. pe acest dispozitiv."
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Tumblări scurte ocazionale după finalizare pentru a reduce șifonarea.",
|
"anti_crease": "Tumblări scurte ocazionale după finalizare pentru a reduce șifonarea.",
|
||||||
@@ -970,6 +1006,10 @@
|
|||||||
"unusable": "Inutilizabil"
|
"unusable": "Inutilizabil"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Mașină de spălat vase",
|
||||||
|
"intro": "Gestionarea sfârșitului de ciclu pentru mașinile de spălat vase, care de obicei se termină cu o fază lungă de uscare aproape silențioasă înainte de o scurtă evacuare finală."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Modul anti-șifonare detectează pulsuri de tumblare la putere redusă după faza principală și le menține atașate ciclului terminat.",
|
"intro": "Modul anti-șifonare detectează pulsuri de tumblare la putere redusă după faza principală și le menține atașate ciclului terminat.",
|
||||||
"label": "Anti-Șifonare"
|
"label": "Anti-Șifonare"
|
||||||
@@ -1012,6 +1052,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Eliberare la liniște în uscarea pasivă",
|
||||||
|
"doc": "După ce ciclul depășește durata așteptată, cât timp trebuie să rămână silențioasă mașina de spălat vase (sub Prag de Oprire) înainte ca WashData să nu mai aștepte o evacuare finală și să încheie ciclul. Măriți-l dacă mașina are o fază lungă de uscare silențioasă înainte de o evacuare finală întârziată care nu este detectată - o fereastră mai largă permite duratei învățate să urmeze variația sezonieră (apă de alimentare mai rece = cicluri mai lungi) în loc să se fixeze pe media veche. Doar scurtează așteptarea față de plafonul intern de 30 de minute pentru vârful de final, fără a o prelungi vreodată."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Recunoașteți impulsurile scurte de rufe de putere redusă pe care le emite un uscător după faza principală de căldură și mențineți-le atașate la ciclul terminat în loc să le citiți ca cicluri noi.",
|
"doc": "Recunoașteți impulsurile scurte de rufe de putere redusă pe care le emite un uscător după faza principală de căldură și mențineți-le atașate la ciclul terminat în loc să le citiți ca cicluri noi.",
|
||||||
"label": "Activați Detectarea Anti-Șifonare"
|
"label": "Activați Detectarea Anti-Șifonare"
|
||||||
@@ -1232,6 +1276,10 @@
|
|||||||
"doc": "La câteva minute după încheierea unui ciclu, înainte de a trimite mementoul încă în așteptare „descărcați mașina”. Setați 0 pentru a dezactiva mementoul.",
|
"doc": "La câteva minute după încheierea unui ciclu, înainte de a trimite mementoul încă în așteptare „descărcați mașina”. Setați 0 pentru a dezactiva mementoul.",
|
||||||
"label": "Întârziere Reamintire Descărcare"
|
"label": "Întârziere Reamintire Descărcare"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Continuă să retrimită mementoul de descărcare la fiecare \"Întârziere Reamintire Descărcare\" minute până când deschizi ușa sau atingi \"Oprește mementourile\" în notificare. Necesită o Entitate Senzor Ușă (mementoul în sine o necesită). Butonul de respingere funcționează pe notificările aplicației complementare (mobile) Home Assistant.",
|
||||||
|
"label": "Repetă Până la Deschiderea Ușii"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Timp de așteptat după căderea energiei înainte de a declara ciclul încheiat. Dacă alimentarea se reia în această fereastră, ciclul continuă fără întreruperi - acest lucru face legătura între etapele de spălare. Mașinile de spălat vase au faze lungi de uscare (oprire pentru 20-60 de minute), așa că întârzierea de oprire trebuie să depășească aceasta pentru a menține întreaga spălare+uscare ca un singur ciclu.",
|
"doc": "Timp de așteptat după căderea energiei înainte de a declara ciclul încheiat. Dacă alimentarea se reia în această fereastră, ciclul continuă fără întreruperi - acest lucru face legătura între etapele de spălare. Mașinile de spălat vase au faze lungi de uscare (oprire pentru 20-60 de minute), așa că întârzierea de oprire trebuie să depășească aceasta pentru a menține întreaga spălare+uscare ca un singur ciclu.",
|
||||||
"label": "Întârziere la Oprire"
|
"label": "Întârziere la Oprire"
|
||||||
@@ -1406,6 +1454,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Precizie Energie",
|
"label": "Precizie Energie",
|
||||||
"doc": "Rigoarea penalizării acordului de energie a Etapei 4. Mai mic = mai strict: o nepotrivire de energie afectează mai mult. Implicit 0.25 este intenționat mai permisiv decât Rigoarea Duratei deoarece energia variază în funcție de sarcină. Utilizați împreună cu Ponderea Energiei."
|
"doc": "Rigoarea penalizării acordului de energie a Etapei 4. Mai mic = mai strict: o nepotrivire de energie afectează mai mult. Implicit 0.25 este intenționat mai permisiv decât Rigoarea Duratei deoarece energia variază în funcție de sarcină. Utilizați împreună cu Ponderea Energiei."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interval Profil Putere",
|
||||||
|
"doc": "Dimensiunea intervalului pentru atributul senzorului power_profile per profil (tabloul plat de wați medii per slot consumat de planificatoare externe precum EMHASS și tibber_prices). Intervalele mai mici păstrează vârfurile scurte de putere clare; intervalele mai mari netezesc forma. Implicit 15 min. Doar la citire; nu afectează detectarea."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Păstrați notificarea în timp real la atingere",
|
||||||
|
"doc": "Numai Android. Faceți notificarea de progres în timp real persistentă (fixată) astfel încât atingerea ei să nu o respingă. Dezactivat păstrează comportamentul implicit în care o atingere o respinge."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Destinație la atingerea notificării în timp real",
|
||||||
|
"doc": "Numai Android. Unde deschide o atingere pe notificarea de progres în timp real (de ex. /lovelace/laundry, sau un URL complet) în loc de pagina principală a aplicației. Lăsați necompletat pentru valoarea implicită."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Ușa se deschide automat la final",
|
||||||
|
"doc": "Pentru mașinile de spălat vase care deschid ușa la sfârșitul ciclului pentru uscare (AirDry și similare). Cu această opțiune activată, deschiderea ușii în timpul unui ciclu activ nu îl mai pune în pauză indefinit; în schimb, dacă ușa rămâne deschisă pentru durata de așteptare de mai jos, WashData consideră ciclul terminat. O deschidere scurtă (pentru a adăuga un obiect) este ignorată. Necesită o entitate senzor de ușă."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Durată de așteptare la deschiderea ușii",
|
||||||
|
"doc": "Cât timp trebuie să rămână ușa deschisă înainte ca WashData să termine ciclul, când opțiunea \"Ușa se deschide automat la final\" este activată. Destul de lungă pentru a ignora adăugarea rapidă a unui vas (implicit 60 s), destul de scurtă pentru a termina prompt odată ce mașina deschide ușa."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1644,10 @@
|
|||||||
"name_required": "Numele este obligatoriu",
|
"name_required": "Numele este obligatoriu",
|
||||||
"no_split_found": "Nu au fost găsite pauze de inactivitate pentru divizare",
|
"no_split_found": "Nu au fost găsite pauze de inactivitate pentru divizare",
|
||||||
"panel_settings_saved": "Setările panoului au fost salvate",
|
"panel_settings_saved": "Setările panoului au fost salvate",
|
||||||
|
"pg_preset_loaded": "Presetarea \"{name}\" a fost încărcată",
|
||||||
|
"pg_preset_saved": "Presetarea \"{name}\" a fost salvată",
|
||||||
|
"pg_sugg_loaded": "{n} valoare/valori sugerate incarcate - rulați Zona de test pentru comparație",
|
||||||
|
"pg_sugg_ml_loaded": "{n} valoare/valori calibrate ML incarcate - rulați Zona de test pentru comparație",
|
||||||
"phase_name_required": "Numele fazei este obligatoriu",
|
"phase_name_required": "Numele fazei este obligatoriu",
|
||||||
"phase_updated": "Fază actualizată",
|
"phase_updated": "Fază actualizată",
|
||||||
"phases_saved": "Faze salvate",
|
"phases_saved": "Faze salvate",
|
||||||
@@ -1723,6 +1795,7 @@
|
|||||||
"min_active": "Pe baza puterii active minime ({min}W) observate în ultimul ciclu.",
|
"min_active": "Pe baza puterii active minime ({min}W) observate în ultimul ciclu.",
|
||||||
"min_duration_ratio": "Păstrat cât mai mic posibil, astfel încât un program să fie recunoscut devreme în ciclu; pragurile de încredere și de ambiguitate previn confirmările premature.",
|
"min_duration_ratio": "Păstrat cât mai mic posibil, astfel încât un program să fie recunoscut devreme în ciclu; pragurile de încredere și de ambiguitate previn confirmările premature.",
|
||||||
"min_off_gap": "Pe baza a {gaps} intervale între cicluri observate (p05={p05}s). Limita inferioară a dispozitivului: {floor}s.",
|
"min_off_gap": "Pe baza a {gaps} intervale între cicluri observate (p05={p05}s). Limita inferioară a dispozitivului: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensionat pentru a acoperi cea mai lungă perioadă de liniște din interiorul unui ciclu: {span}s + 60s marjă, din {spans} intervale acoperite pe {cycles} cicluri curate (rămâne sub intervalul dvs. minim de {ceiling}s dintre două încărcături consecutive).",
|
||||||
"min_power": "40% din cea mai mică putere activă p05 ({p05}W) pe {cycles} cicluri curate, menținând pragul de oprire sub consumul real.{excl}",
|
"min_power": "40% din cea mai mică putere activă p05 ({p05}W) pe {cycles} cicluri curate, menținând pragul de oprire sub consumul real.{excl}",
|
||||||
"ml_auto_label": "Cea mai mică încredere pe care modelul de calitate a considerat-o încă drept curată (p10 din {cycles} cicluri curate = {p10}).",
|
"ml_auto_label": "Cea mai mică încredere pe care modelul de calitate a considerat-o încă drept curată (p10 din {cycles} cicluri curate = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cicluri ({pct}%) au avut o pauză pe care detectorul de sfârșit a evaluat-o la >50%; necesită {val} confirmare(i) de sfârșit.",
|
"ml_end_repeat": "{false}/{total} cicluri ({pct}%) au avut o pauză pe care detectorul de sfârșit a evaluat-o la >50%; necesită {val} confirmare(i) de sfârșit.",
|
||||||
@@ -1739,7 +1812,7 @@
|
|||||||
"thr_batch": "Păstrat chiar deasupra celei mai mici puteri active p05 pe {cycles} cicluri ({p05}W), astfel încât o pornire să fie surprinsă cât mai devreme posibil, iar pragul de oprire să rămână sub cea mai mică putere de funcționare a mașinii.",
|
"thr_batch": "Păstrat chiar deasupra celei mai mici puteri active p05 pe {cycles} cicluri ({p05}W), astfel încât o pornire să fie surprinsă cât mai devreme posibil, iar pragul de oprire să rămână sub cea mai mică putere de funcționare a mașinii.",
|
||||||
"tol_per_profile": "p75 al varianței duratei per profil pe {profiles} profiluri ({cycles} cicluri); profilurile stabile nu sunt penalizate.",
|
"tol_per_profile": "p75 al varianței duratei per profil pe {profiles} profiluri ({cycles} cicluri); profilurile stabile nu sunt penalizate.",
|
||||||
"tol_pooled": "Pe baza varianței combinate a duratei a {cycles} cicluri recente etichetate (deviație p95={dev}).",
|
"tol_pooled": "Pe baza varianței combinate a duratei a {cycles} cicluri recente etichetate (deviație p95={dev}).",
|
||||||
"watchdog": "Păstrat cât mai mic în siguranță (de 3x intervalul de actualizare p95 de {p95}s, min. 30s), astfel încât blocajele să fie surprinse rapid fără opriri false."
|
"watchdog": "Păstrat cât mai mic în siguranță (puțin peste intervalul de actualizare p95 de {p95}s, min. 30s), astfel încât blocajele să fie surprinse rapid fără opriri false."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Excluse {total} cicluri detectate greșit: {parts}.",
|
"summary": "Excluse {total} cicluri detectate greșit: {parts}.",
|
||||||
@@ -1770,6 +1843,7 @@
|
|||||||
"other": "Altele"
|
"other": "Altele"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Mașină de spălat vase: secunde de liniște după durata așteptată înainte de a elibera așteptarea evacuării de la sfârșitul ciclului",
|
||||||
"anti_wrinkle_enabled": "Absoarbe impulsurile de rotire de după faza principală în loc să le trateze drept cicluri noi",
|
"anti_wrinkle_enabled": "Absoarbe impulsurile de rotire de după faza principală în loc să le trateze drept cicluri noi",
|
||||||
"anti_wrinkle_exit_power": "Puterea trebuie să scadă sub această valoare între impulsuri pentru ca modul anti-șifonare să rămână activ",
|
"anti_wrinkle_exit_power": "Puterea trebuie să scadă sub această valoare între impulsuri pentru ca modul anti-șifonare să rămână activ",
|
||||||
"anti_wrinkle_idle_timeout": "Timp de liniște permis între două impulsuri de rotire înainte ca modul anti-șifonare să se încheie",
|
"anti_wrinkle_idle_timeout": "Timp de liniște permis între două impulsuri de rotire înainte ca modul anti-șifonare să se încheie",
|
||||||
@@ -1944,5 +2018,53 @@
|
|||||||
"hide_guidance": "Ascundeți ghidul",
|
"hide_guidance": "Ascundeți ghidul",
|
||||||
"show_guidance": "Afișați ghidul"
|
"show_guidance": "Afișați ghidul"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entitate negăsită",
|
||||||
|
"running_long": "Întârziere",
|
||||||
|
"remaining": "rămas",
|
||||||
|
"progress": "progres",
|
||||||
|
"show_time_remaining": "Afișează timpul rămas",
|
||||||
|
"show_percentage": "Afișează procentajul",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Dală (compact)",
|
||||||
|
"detail": "Detaliat (complet)",
|
||||||
|
"glance": "Sumar (mai multe dispozitive)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pauză",
|
||||||
|
"resume": "Reluare",
|
||||||
|
"terminate": "Încheie ciclul",
|
||||||
|
"record_start": "Porniți înregistrarea",
|
||||||
|
"record_stop": "Opriți înregistrarea",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Deschide WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Aspect",
|
||||||
|
"entity": "Entitatea aparatului",
|
||||||
|
"entities": "Aparate",
|
||||||
|
"title": "Titlu",
|
||||||
|
"icon": "Pictogramă",
|
||||||
|
"show_state": "Afișează starea",
|
||||||
|
"show_program": "Afișează programul",
|
||||||
|
"show_progress_bar": "Afișează bara de progres",
|
||||||
|
"spin_icon": "Rotește pictograma în timpul funcționării",
|
||||||
|
"display_mode": "Linie de detaliu",
|
||||||
|
"active_color": "Culoare activă personalizată",
|
||||||
|
"show_phase": "Afișează faza",
|
||||||
|
"show_energy": "Afișează energia și costul",
|
||||||
|
"show_anomaly": "Afișează avertismentul de întârziere",
|
||||||
|
"show_sparkline": "Afișează graficul de putere în timp real",
|
||||||
|
"buttons": "Butoane de acțiune",
|
||||||
|
"program_entity": "Entitate de program (personalizată)",
|
||||||
|
"time_entity": "Entitate de timp (personalizată)",
|
||||||
|
"pct_entity": "Entitate de progres (personalizată)",
|
||||||
|
"power_entity": "Entitate de putere (personalizată)",
|
||||||
|
"tap_action": "Acțiune la atingere",
|
||||||
|
"hold_action": "Acțiune la apăsare lungă",
|
||||||
|
"double_tap_action": "Acțiune la atingere dublă"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "мин",
|
||||||
|
"entity_not_found": "Объект не найден",
|
||||||
|
"running_long": "Работает долго",
|
||||||
|
"remaining": "осталось",
|
||||||
|
"progress": "прогресс",
|
||||||
|
"show_time_remaining": "Показывать оставшееся время",
|
||||||
|
"show_percentage": "Показывать проценты",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Плитка (компактно)",
|
||||||
|
"detail": "Подробно (расширенный)",
|
||||||
|
"glance": "Обзор (несколько устройств)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Пауза",
|
||||||
|
"resume": "Продолжить",
|
||||||
|
"terminate": "Завершить цикл",
|
||||||
|
"record_start": "Начать запись",
|
||||||
|
"record_stop": "Остановить запись",
|
||||||
|
"program": "Программа",
|
||||||
|
"open_panel": "Открыть WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Макет",
|
||||||
|
"entity": "Объект прибора",
|
||||||
|
"entities": "Приборы",
|
||||||
|
"title": "Заголовок",
|
||||||
|
"icon": "Значок",
|
||||||
|
"show_state": "Показывать состояние",
|
||||||
|
"show_program": "Показывать программу",
|
||||||
|
"show_progress_bar": "Показывать индикатор прогресса",
|
||||||
|
"spin_icon": "Вращать значок во время работы",
|
||||||
|
"display_mode": "Строка деталей",
|
||||||
|
"active_color": "Переопределение активного цвета",
|
||||||
|
"show_phase": "Показывать фазу",
|
||||||
|
"show_energy": "Показывать энергию и стоимость",
|
||||||
|
"show_anomaly": "Показывать предупреждение о превышении",
|
||||||
|
"show_sparkline": "Показывать график мощности в реальном времени",
|
||||||
|
"buttons": "Кнопки действий",
|
||||||
|
"program_entity": "Объект программы (переопределение)",
|
||||||
|
"time_entity": "Объект времени (переопределение)",
|
||||||
|
"pct_entity": "Объект прогресса (переопределение)",
|
||||||
|
"power_entity": "Объект мощности (переопределение)",
|
||||||
|
"tap_action": "Действие по нажатию",
|
||||||
|
"hold_action": "Действие по удержанию",
|
||||||
|
"double_tap_action": "Действие по двойному нажатию"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Обнаружено {n} аномалий (например, дверь открылась в середине цикла) – откройте, чтобы увидеть их на графике",
|
"artifact_tip": "Обнаружено {n} аномалий (например, дверь открылась в середине цикла) – откройте, чтобы увидеть их на графике",
|
||||||
"auto": "(авто-определение)",
|
"auto": "(авто-определение)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Отменить",
|
"discard": "Отменить",
|
||||||
"discard_tip": "Отменить запись без сохранения",
|
"discard_tip": "Отменить запись без сохранения",
|
||||||
"dismiss": "Закрыть",
|
"dismiss": "Закрыть",
|
||||||
|
"mute_suggestion": "Не предлагать эту настройку",
|
||||||
|
"pg_load_calibrated": "Загрузить откалиброванные (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Загрузить откалиброванные ML настройки как переопределения в песочнице",
|
||||||
|
"pg_load_live": "Загрузить активные настройки",
|
||||||
|
"pg_load_live_tip": "Перечитать текущие настройки интеграции и отменить все изменения в песочнице",
|
||||||
|
"pg_load_suggested": "Загрузить рекомендуемые ({n})",
|
||||||
|
"pg_load_suggested_tip": "Загрузить текущие рекомендации автонастройщика как переопределения в песочнице",
|
||||||
|
"pg_preset_delete": "Удалить пресет",
|
||||||
|
"pg_preset_load": "Загрузить пресет",
|
||||||
|
"pg_preset_load_tip": "Заменить значения в песочнице этим пресетом (активные настройки не изменятся)",
|
||||||
|
"pg_preset_save": "Сохранить как пресет",
|
||||||
|
"pg_preset_save_tip": "Сохранить все значения ниже как именованный пресет для этого устройства",
|
||||||
|
"pg_publish_all": "Сохранить в настройки ({n})",
|
||||||
|
"pg_publish_one": "Сохранить «{label}» в настройки интеграции",
|
||||||
|
"reset_muted": "Сбросить заглушённые",
|
||||||
"done": "Готово",
|
"done": "Готово",
|
||||||
"edit": "Редактировать",
|
"edit": "Редактировать",
|
||||||
"export": "Экспортировать",
|
"export": "Экспортировать",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Пока нет автоматизаций, ссылающихся на это устройство.",
|
"no_automations": "Пока нет автоматизаций, ссылающихся на это устройство.",
|
||||||
"panel_settings": "Настройки панели",
|
"panel_settings": "Настройки панели",
|
||||||
"param_sweep": "Перебор параметра",
|
"param_sweep": "Перебор параметра",
|
||||||
|
"pg_settings_source": "Источник настроек",
|
||||||
"phase_catalog": "Каталог фаз",
|
"phase_catalog": "Каталог фаз",
|
||||||
"playground": "Песочница",
|
"playground": "Песочница",
|
||||||
"process_history": "История процессов",
|
"process_history": "История процессов",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Уровень доступа по умолчанию для пользователей, не указанных ниже",
|
"default_access_level": "Уровень доступа по умолчанию для пользователей, не указанных ниже",
|
||||||
"default_other": "По умолчанию (другие устройства)",
|
"default_other": "По умолчанию (другие устройства)",
|
||||||
"default_tab": "Вкладка по умолчанию при открытии панели",
|
"default_tab": "Вкладка по умолчанию при открытии панели",
|
||||||
|
"font_size": "Размер шрифта панели",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Описание",
|
"description": "Описание",
|
||||||
"dtw_blend_w": "Вес смешивания",
|
"dtw_blend_w": "Вес смешивания",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Оценка совпадения",
|
"pg_match_score": "Оценка совпадения",
|
||||||
"pg_pct_of": "{p}% из {total}",
|
"pg_pct_of": "{p}% из {total}",
|
||||||
"pg_poor_match": "Плохое совпадение",
|
"pg_poor_match": "Плохое совпадение",
|
||||||
|
"pg_preset": "Пресет песочницы",
|
||||||
|
"pg_preset_name": "Имя нового пресета",
|
||||||
|
"pg_preset_none": "Выберите пресет…",
|
||||||
"pg_strong_match": "Сильное совпадение",
|
"pg_strong_match": "Сильное совпадение",
|
||||||
"pg_tile_ambiguous": "Неоднозначно",
|
"pg_tile_ambiguous": "Неоднозначно",
|
||||||
"pg_tile_ambiguous_tip": "Циклы с почти равным совпадением двух программ",
|
"pg_tile_ambiguous_tip": "Циклы с почти равным совпадением двух программ",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Применить лучшее значение: {label} = {value}?",
|
"pg_apply_confirm": "Применить лучшее значение: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Выберите цикл выше, затем нажмите «Загрузить», чтобы увидеть его график мощности.",
|
"pg_canvas_empty": "Выберите цикл выше, затем нажмите «Загрузить», чтобы увидеть его график мощности.",
|
||||||
"pg_chart_caption": "Доля обнаружения/совпадения по значениям {param}",
|
"pg_chart_caption": "Доля обнаружения/совпадения по значениям {param}",
|
||||||
|
"pg_ctrl_intro": "Значения берутся из активных настроек интеграции для этого устройства. Изменения остаются в песочнице, пока вы не сохраните их в настройки.",
|
||||||
|
"pg_live_unavailable": "Активные настройки недоступны, показаны значения по умолчанию.",
|
||||||
|
"pg_load_live_confirm": "Отменить изменения в песочнице ({n}) и загрузить текущие настройки интеграции?",
|
||||||
"pg_match_rate": "{pct}% совпадений на {total} циклах",
|
"pg_match_rate": "{pct}% совпадений на {total} циклах",
|
||||||
|
"pg_matches_live": "Совпадает с активными настройками",
|
||||||
|
"pg_n_changed": "Отличий от активных настроек: {n}",
|
||||||
|
"pg_sugg_none": "Все рекомендации уже соответствуют текущим настройкам",
|
||||||
|
"pg_preset_delete_confirm": "Удалить пресет «{name}»?",
|
||||||
|
"pg_preset_limit": "Достигнут предел числа пресетов ({n})",
|
||||||
|
"pg_preset_overwrite": "Перезаписать пресет «{name}»?",
|
||||||
|
"pg_publish_one_confirm": "Сохранить {label} = {value} в настройки этого устройства?",
|
||||||
"pg_restart_note": "Перезапустите Home Assistant, чтобы включить инструменты симуляции.",
|
"pg_restart_note": "Перезапустите Home Assistant, чтобы включить инструменты симуляции.",
|
||||||
"pg_sim_progress": "{done} / {total} циклов",
|
"pg_sim_progress": "{done} / {total} циклов",
|
||||||
"pg_starting": "Запуск…",
|
"pg_starting": "Запуск…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Настройки, панель и управление доступом",
|
"preferences_admin": "Настройки, панель и управление доступом",
|
||||||
"preferences_adv": "Настройки",
|
"preferences_adv": "Настройки",
|
||||||
"prefs_personal": "Применяются только к вашей учётной записи Home Assistant.",
|
"prefs_personal": "Применяются только к вашей учётной записи Home Assistant.",
|
||||||
|
"font_size_hint": "Сделайте всё на этой панели крупнее или мельче. Применяется к вашей учётной записи на этом устройстве.",
|
||||||
"process_history_hint": "Повторно запустите сопоставление для всех сохранённых циклов, обновите предложения по настройке, переобучите модели ML (если включено) и пересчитайте качество циклов. Запускайте после пакетного просмотра.",
|
"process_history_hint": "Повторно запустите сопоставление для всех сохранённых циклов, обновите предложения по настройке, переобучите модели ML (если включено) и пересчитайте качество циклов. Запускайте после пакетного просмотра.",
|
||||||
"profile_deleted": "Профиль удалён",
|
"profile_deleted": "Профиль удалён",
|
||||||
"profile_poor_health_detail": "Циклы, назначенные этому профилю, имеют непоследовательную форму или низкую достоверность. Рассмотрите возможность восстановления конверта или пересмотра помеченных циклов.",
|
"profile_poor_health_detail": "Циклы, назначенные этому профилю, имеют непоследовательную форму или низкую достоверность. Рассмотрите возможность восстановления конверта или пересмотра помеченных циклов.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Нажмите на график, чтобы добавить или удалить точку разбивки, или авто-определите по паузам. Каждый результирующий сегмент может получить свой профиль.",
|
"split_intro": "Нажмите на график, чтобы добавить или удалить точку разбивки, или авто-определите по паузам. Каждый результирующий сегмент может получить свой профиль.",
|
||||||
"storage_diagnostics": "Статистика хранилища, обслуживание, экспорт/импорт",
|
"storage_diagnostics": "Статистика хранилища, обслуживание, экспорт/импорт",
|
||||||
"sug_staged": "Установлено {key} = {val}. Сохраните для применения.",
|
"sug_staged": "Установлено {key} = {val}. Сохраните для применения.",
|
||||||
|
"sug_muted": "Эта настройка больше не будет предлагаться",
|
||||||
|
"sug_mute_failed": "Не удалось заглушить предложение",
|
||||||
|
"sug_unmuted_all": "Заглушённые предложения сброшены",
|
||||||
|
"n_suggestions_muted": "{count} заглушено; авто-настройщик не будет предлагать их.",
|
||||||
"toast_auto_detect_enabled": "Автоопределение включено",
|
"toast_auto_detect_enabled": "Автоопределение включено",
|
||||||
"toast_auto_label_complete": "Автоматическая маркировка завершена",
|
"toast_auto_label_complete": "Автоматическая маркировка завершена",
|
||||||
"toast_auto_label_failed": "Автоматическая маркировка не выполнена: {error}",
|
"toast_auto_label_failed": "Автоматическая маркировка не выполнена: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Тенденция к сокращению продолжительности ({pct}%/цикл) – среднее значение за последнее время {avg}",
|
"trend_duration_shorter": "Тенденция к сокращению продолжительности ({pct}%/цикл) – среднее значение за последнее время {avg}",
|
||||||
"trend_energy_down": "Тенденция к снижению энергопотребления ({pct}%/цикл)",
|
"trend_energy_down": "Тенденция к снижению энергопотребления ({pct}%/цикл)",
|
||||||
"trend_energy_up": "Тенденция роста энергопотребления ({pct}%/цикл) – последнее среднее значение {avg}",
|
"trend_energy_up": "Тенденция роста энергопотребления ({pct}%/цикл) – последнее среднее значение {avg}",
|
||||||
|
"trim_destructive_confirm": "Останется только {pct}% цикла, и это действие нельзя отменить. Продолжить?",
|
||||||
"trim_intro": "Перетащите красные маркеры или введите значения. Всё за пределами окна удаляется.",
|
"trim_intro": "Перетащите красные маркеры или введите значения. Всё за пределами окна удаляется.",
|
||||||
"tuning_suggestions_available": "{count} предложение по настройке, доступное из наблюдаемых циклов. Они появляются рядом с соответствующими полями.",
|
"tuning_suggestions_available": "{count} предложение по настройке, доступное из наблюдаемых циклов. Они появляются рядом с соответствующими полями.",
|
||||||
"unsure_detected_prefix": "WashData не уверен, что обнаружил",
|
"unsure_detected_prefix": "WashData не уверен, что обнаружил",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Непригодный"
|
"unusable": "Непригодный"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"intro": "Обработка завершения цикла для посудомоечных машин, которые обычно заканчиваются длительной фазой сушки почти без потребления энергии перед коротким финальным сливом.",
|
||||||
|
"label": "Посудомоечная машина"
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Режим защиты от морщин определяет короткие импульсы вращения барабана на малой мощности после основной фазы и сохраняет их привязанными к завершённому циклу.",
|
"intro": "Режим защиты от морщин определяет короткие импульсы вращения барабана на малой мощности после основной фазы и сохраняет их привязанными к завершённому циклу.",
|
||||||
"label": "Защита от морщин"
|
"label": "Защита от морщин"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"doc": "После того как цикл превышает ожидаемую продолжительность, сколько времени посудомоечная машина должна оставаться неактивной (ниже «Порог Остановки»), прежде чем WashData прекратит ждать финальный слив и завершит цикл. Увеличьте значение, если у вашей машины длительная тихая фаза сушки перед поздним финальным сливом, который пропускается - более широкое окно позволяет изученной продолжительности следовать за сезонными изменениями (более холодная входящая вода = более длинные циклы), а не фиксироваться на старом среднем значении. Оно только сокращает ожидание относительно внутреннего 30-минутного лимита ожидания завершающего всплеска (откачки воды), но никогда не увеличивает его.",
|
||||||
|
"label": "Тихое завершение пассивной сушки"
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Распознавайте короткие импульсы низкой мощности, которые сушильная машина излучает после основной фазы нагрева, и сохраняйте их привязанными к завершенному циклу, а не воспринимайте их как новые циклы.",
|
"doc": "Распознавайте короткие импульсы низкой мощности, которые сушильная машина излучает после основной фазы нагрева, и сохраняйте их привязанными к завершенному циклу, а не воспринимайте их как новые циклы.",
|
||||||
"label": "Включить Защиту от Морщин"
|
"label": "Включить Защиту от Морщин"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Через несколько минут после окончания цикла перед отправкой все еще ожидающего напоминания «разгрузить машину». Установите 0, чтобы отключить напоминание.",
|
"doc": "Через несколько минут после окончания цикла перед отправкой все еще ожидающего напоминания «разгрузить машину». Установите 0, чтобы отключить напоминание.",
|
||||||
"label": "Задержка Напоминания о Выгрузке"
|
"label": "Задержка Напоминания о Выгрузке"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Продолжает отправлять напоминание о выгрузке каждые \"Задержка Напоминания о Выгрузке\" минут, пока вы не откроете дверцу или не нажмёте \"Не напоминать\" в уведомлении. Требуется Объект Датчика Дверцы (как и для самого напоминания). Кнопка отклонения работает в уведомлениях мобильного приложения Home Assistant (companion).",
|
||||||
|
"label": "Повторять, пока не откроется дверца"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Время ожидания после отключения питания, прежде чем объявить цикл завершенным. Если подача электроэнергии возобновится в пределах этого окна, цикл продолжится плавно – это устраняет паузы между этапами стирки. Посудомоечные машины имеют длительные фазы сушки (отключение питания на 20–60 минут), поэтому задержка выключения должна превышать это значение, чтобы вся стирка+сушка выполнялась как один цикл.",
|
"doc": "Время ожидания после отключения питания, прежде чем объявить цикл завершенным. Если подача электроэнергии возобновится в пределах этого окна, цикл продолжится плавно – это устраняет паузы между этапами стирки. Посудомоечные машины имеют длительные фазы сушки (отключение питания на 20–60 минут), поэтому задержка выключения должна превышать это значение, чтобы вся стирка+сушка выполнялась как один цикл.",
|
||||||
"label": "Задержка Выключения"
|
"label": "Задержка Выключения"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Резкость энергии",
|
"label": "Резкость энергии",
|
||||||
"doc": "Резкость штрафа за несоответствие энергии на Этапе 4. Меньше = строже: несоответствие энергии сильнее снижает балл. Значение по умолчанию 0,25 намеренно мягче, чем Резкость длительности, поскольку энергия варьируется с нагрузкой. Используйте вместе с Весом энергии."
|
"doc": "Резкость штрафа за несоответствие энергии на Этапе 4. Меньше = строже: несоответствие энергии сильнее снижает балл. Значение по умолчанию 0,25 намеренно мягче, чем Резкость длительности, поскольку энергия варьируется с нагрузкой. Используйте вместе с Весом энергии."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Интервал профиля мощности",
|
||||||
|
"doc": "Размер ячейки для атрибута датчика power_profile на профиль (плоский массив средних ватт по слотам), используемого внешними планировщиками, такими как EMHASS и tibber_prices. Меньшие ячейки сохраняют чёткость коротких пиков мощности; большие ячейки сглаживают форму. По умолчанию 15 мин. Только при считывании; не влияет на обнаружение."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Сохранять живое уведомление при нажатии",
|
||||||
|
"doc": "Только для Android. Сделать уведомление о ходе выполнения постоянным (закреплённым), чтобы нажатие не скрывало его. Выключено сохраняет поведение по умолчанию, при котором нажатие скрывает уведомление."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Цель нажатия живого уведомления",
|
||||||
|
"doc": "Только для Android. Куда открывается нажатие на уведомление о ходе выполнения (например, /lovelace/laundry или полный URL) вместо стартовой страницы приложения. Оставьте пустым для поведения по умолчанию."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Дверца открывается автоматически в конце",
|
||||||
|
"doc": "Для посудомоечных машин, которые открывают дверцу в конце цикла для сушки (AirDry и аналогичные). При включении открытие дверцы во время работающего цикла больше не ставит его на паузу навсегда; вместо этого, если дверца остаётся открытой в течение времени выдержки ниже, WashData считает цикл завершённым. Кратковременное открытие (для загрузки посуды) игнорируется. Требуется объект датчика двери."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Выдержка при открытой дверце",
|
||||||
|
"doc": "Как долго дверца должна оставаться открытой до завершения цикла, когда включено \"Дверца открывается автоматически в конце\". Достаточно долго, чтобы игнорировать быструю загрузку посуды (по умолчанию 60 с), достаточно коротко для быстрого завершения после открытия дверцы машиной."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Требуется имя",
|
"name_required": "Требуется имя",
|
||||||
"no_split_found": "Пауз для разбивки не найдено",
|
"no_split_found": "Пауз для разбивки не найдено",
|
||||||
"panel_settings_saved": "Настройки панели сохранены",
|
"panel_settings_saved": "Настройки панели сохранены",
|
||||||
|
"pg_preset_loaded": "Пресет «{name}» загружен",
|
||||||
|
"pg_preset_saved": "Пресет «{name}» сохранён",
|
||||||
|
"pg_sugg_loaded": "Загружено {n} рекомендуемых значений - запустите песочницу для сравнения",
|
||||||
|
"pg_sugg_ml_loaded": "Загружено {n} откалиброванных ML значений - запустите песочницу для сравнения",
|
||||||
"phase_name_required": "Требуется имя фазы",
|
"phase_name_required": "Требуется имя фазы",
|
||||||
"phase_updated": "Фаза обновлена",
|
"phase_updated": "Фаза обновлена",
|
||||||
"phases_saved": "Фазы сохранены",
|
"phases_saved": "Фазы сохранены",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "На основе минимальной активной мощности ({min}W), зафиксированной в последнем цикле.",
|
"min_active": "На основе минимальной активной мощности ({min}W), зафиксированной в последнем цикле.",
|
||||||
"min_duration_ratio": "Оставлено как можно ниже, чтобы программа распознавалась в начале цикла; пороги уверенности и неоднозначности предотвращают преждевременные подтверждения.",
|
"min_duration_ratio": "Оставлено как можно ниже, чтобы программа распознавалась в начале цикла; пороги уверенности и неоднозначности предотвращают преждевременные подтверждения.",
|
||||||
"min_off_gap": "На основе {gaps} наблюдаемых промежутков между циклами (p05={p05}s). Минимум устройства: {floor}s.",
|
"min_off_gap": "На основе {gaps} наблюдаемых промежутков между циклами (p05={p05}s). Минимум устройства: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Рассчитано так, чтобы перекрыть самый длинный тихий участок внутри цикла: {span}s + запас 60s, по {spans} перекрытым промежуткам за {cycles} корректных циклов (остаётся ниже вашего наименьшего промежутка между двумя запусками подряд, который составляет {ceiling}s).",
|
||||||
"min_power": "40% от наименьшей активной мощности p05 ({p05}W) по {cycles} корректным циклам, чтобы порог отключения оставался ниже реального потребления.{excl}",
|
"min_power": "40% от наименьшей активной мощности p05 ({p05}W) по {cycles} корректным циклам, чтобы порог отключения оставался ниже реального потребления.{excl}",
|
||||||
"ml_auto_label": "Наименьшая уверенность, при которой модель качества всё ещё считала цикл корректным (p10 по {cycles} корректным циклам = {p10}).",
|
"ml_auto_label": "Наименьшая уверенность, при которой модель качества всё ещё считала цикл корректным (p10 по {cycles} корректным циклам = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} циклов ({pct}%) имели паузу, которую детектор завершения оценил выше 50%; требуется {val} подтверждение(й) завершения.",
|
"ml_end_repeat": "{false}/{total} циклов ({pct}%) имели паузу, которую детектор завершения оценил выше 50%; требуется {val} подтверждение(й) завершения.",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Оставлено чуть выше наименьшей активной мощности p05 по {cycles} циклам ({p05}W), чтобы запуск фиксировался как можно раньше, а порог остановки оставался ниже минимальной рабочей мощности машины.",
|
"thr_batch": "Оставлено чуть выше наименьшей активной мощности p05 по {cycles} циклам ({p05}W), чтобы запуск фиксировался как можно раньше, а порог остановки оставался ниже минимальной рабочей мощности машины.",
|
||||||
"tol_per_profile": "p75 разброса длительности по профилям среди {profiles} профилей ({cycles} циклов); стабильные профили не штрафуются.",
|
"tol_per_profile": "p75 разброса длительности по профилям среди {profiles} профилей ({cycles} циклов); стабильные профили не штрафуются.",
|
||||||
"tol_pooled": "На основе объединённого разброса длительности {cycles} недавних размеченных циклов (отклонение p95={dev}).",
|
"tol_pooled": "На основе объединённого разброса длительности {cycles} недавних размеченных циклов (отклонение p95={dev}).",
|
||||||
"watchdog": "Оставлено настолько низким, насколько это безопасно (3x интервал обновления p95, равный {p95}s, мин. 30s), чтобы зависания выявлялись быстро без ложных остановок."
|
"watchdog": "Оставлено настолько низким, насколько это безопасно (чуть выше интервала обновления p95, равного {p95}s, мин. 30s), чтобы зависания выявлялись быстро без ложных остановок."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Исключено {total} ошибочно определённых циклов: {parts}.",
|
"summary": "Исключено {total} ошибочно определённых циклов: {parts}.",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Другое"
|
"other": "Другое"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Посудомоечная машина: секунды неактивности после ожидаемой длительности перед снятием ожидания финального слива в конце цикла",
|
||||||
"completion_min_seconds": "Кратчайший запуск, считающийся настоящим циклом",
|
"completion_min_seconds": "Кратчайший запуск, считающийся настоящим циклом",
|
||||||
"end_repeat_count": "Сколько низких показаний подряд до завершения",
|
"end_repeat_count": "Сколько низких показаний подряд до завершения",
|
||||||
"interrupted_min_seconds": "Короткие циклы помечаются как прерванные",
|
"interrupted_min_seconds": "Короткие циклы помечаются как прерванные",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entita sa nenašla",
|
||||||
|
"running_long": "Beží dlho",
|
||||||
|
"remaining": "zostáva",
|
||||||
|
"progress": "postup",
|
||||||
|
"show_time_remaining": "Zobraziť zostávajúci čas",
|
||||||
|
"show_percentage": "Zobraziť percentá",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Dlaždica (kompaktná)",
|
||||||
|
"detail": "Detail (podrobný)",
|
||||||
|
"glance": "Prehľad (viac zariadení)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pozastaviť",
|
||||||
|
"resume": "Pokračovať",
|
||||||
|
"terminate": "Ukončiť cyklus",
|
||||||
|
"record_start": "Spustiť záznam",
|
||||||
|
"record_stop": "Zastaviť záznam",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Otvoriť WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Rozloženie",
|
||||||
|
"entity": "Entita spotrebiča",
|
||||||
|
"entities": "Spotrebiče",
|
||||||
|
"title": "Názov",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Zobraziť stav",
|
||||||
|
"show_program": "Zobraziť program",
|
||||||
|
"show_progress_bar": "Zobraziť ukazovateľ postupu",
|
||||||
|
"spin_icon": "Otáčať ikonu počas behu",
|
||||||
|
"display_mode": "Riadok s detailmi",
|
||||||
|
"active_color": "Prepísanie aktívnej farby",
|
||||||
|
"show_phase": "Zobraziť fázu",
|
||||||
|
"show_energy": "Zobraziť energiu a náklady",
|
||||||
|
"show_anomaly": "Zobraziť varovanie o prekročení",
|
||||||
|
"show_sparkline": "Zobraziť živý graf výkonu",
|
||||||
|
"buttons": "Akčné tlačidlá",
|
||||||
|
"program_entity": "Entita programu (prepísanie)",
|
||||||
|
"time_entity": "Entita času (prepísanie)",
|
||||||
|
"pct_entity": "Entita postupu (prepísanie)",
|
||||||
|
"power_entity": "Entita výkonu (prepísanie)",
|
||||||
|
"tap_action": "Akcia ťuknutia",
|
||||||
|
"hold_action": "Akcia podržania",
|
||||||
|
"double_tap_action": "Akcia dvojitého ťuknutia"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Zistilo sa {n} anomálií (napr. dvere otvorené uprostred cyklu) – otvorte ich, aby ste ich videli na grafe",
|
"artifact_tip": "Zistilo sa {n} anomálií (napr. dvere otvorené uprostred cyklu) – otvorte ich, aby ste ich videli na grafe",
|
||||||
"auto": "(automaticky zistené)",
|
"auto": "(automaticky zistené)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Zahodiť",
|
"discard": "Zahodiť",
|
||||||
"discard_tip": "Zahodiť zaznamenaný priebeh bez uloženia",
|
"discard_tip": "Zahodiť zaznamenaný priebeh bez uloženia",
|
||||||
"dismiss": "Zamietnuť",
|
"dismiss": "Zamietnuť",
|
||||||
|
"mute_suggestion": "Prestať navrhovať toto nastavenie",
|
||||||
|
"pg_load_calibrated": "Načítať kalibrované (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Načítať nastavenia kalibrované ML ako prepísania v testovacom prostredí",
|
||||||
|
"pg_load_live": "Načítať aktívne nastavenia",
|
||||||
|
"pg_load_live_tip": "Znovu načítať aktuálne nastavenia integrácie a zahodiť všetky úpravy v testovacom prostredí",
|
||||||
|
"pg_load_suggested": "Načítať navrhované ({n})",
|
||||||
|
"pg_load_suggested_tip": "Načítať aktuálne návrhy automatického ladenia ako prepísania v testovacom prostredí",
|
||||||
|
"pg_preset_delete": "Odstrániť prednastavenie",
|
||||||
|
"pg_preset_load": "Načítať prednastavenie",
|
||||||
|
"pg_preset_load_tip": "Nahradiť hodnoty v testovacom prostredí týmto prednastavením (aktívne nastavenia zostanú bez zmeny)",
|
||||||
|
"pg_preset_save": "Uložiť ako prednastavenie",
|
||||||
|
"pg_preset_save_tip": "Uložiť všetky hodnoty nižšie ako pomenované prednastavenie pre toto zariadenie",
|
||||||
|
"pg_publish_all": "Uložiť do integrácie ({n})",
|
||||||
|
"pg_publish_one": "Uložiť {label} do integrácie",
|
||||||
|
"reset_muted": "Obnoviť stíšené",
|
||||||
"done": "Hotovo",
|
"done": "Hotovo",
|
||||||
"edit": "Upraviť",
|
"edit": "Upraviť",
|
||||||
"export": "Exportovať",
|
"export": "Exportovať",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Žiadne automatizácie zatiaľ neodkazujú na toto zariadenie.",
|
"no_automations": "Žiadne automatizácie zatiaľ neodkazujú na toto zariadenie.",
|
||||||
"panel_settings": "Nastavenia panela",
|
"panel_settings": "Nastavenia panela",
|
||||||
"param_sweep": "Prehľadávanie parametra",
|
"param_sweep": "Prehľadávanie parametra",
|
||||||
|
"pg_settings_source": "Zdroj nastavení",
|
||||||
"phase_catalog": "Katalóg fáz",
|
"phase_catalog": "Katalóg fáz",
|
||||||
"playground": "Testovacie prostredie",
|
"playground": "Testovacie prostredie",
|
||||||
"process_history": "História procesov",
|
"process_history": "História procesov",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Predvolená úroveň pre používateľov, ktorí nie sú uvedení nižšie",
|
"default_access_level": "Predvolená úroveň pre používateľov, ktorí nie sú uvedení nižšie",
|
||||||
"default_other": "Predvolené (iné zariadenia)",
|
"default_other": "Predvolené (iné zariadenia)",
|
||||||
"default_tab": "Predvolená karta pri otváraní panela",
|
"default_tab": "Predvolená karta pri otváraní panela",
|
||||||
|
"font_size": "Veľkosť písma panela",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Popis",
|
"description": "Popis",
|
||||||
"dtw_blend_w": "Váha zmiešania",
|
"dtw_blend_w": "Váha zmiešania",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Skóre zhody",
|
"pg_match_score": "Skóre zhody",
|
||||||
"pg_pct_of": "{p}% z {total}",
|
"pg_pct_of": "{p}% z {total}",
|
||||||
"pg_poor_match": "Zlá zhoda",
|
"pg_poor_match": "Zlá zhoda",
|
||||||
|
"pg_preset": "Prednastavenie testovacieho prostredia",
|
||||||
|
"pg_preset_name": "Názov nového prednastavenia",
|
||||||
|
"pg_preset_none": "Vyberte prednastavenie…",
|
||||||
"pg_strong_match": "Silná zhoda",
|
"pg_strong_match": "Silná zhoda",
|
||||||
"pg_tile_ambiguous": "Nejednoznačné",
|
"pg_tile_ambiguous": "Nejednoznačné",
|
||||||
"pg_tile_ambiguous_tip": "Cykly s takmer rovnakým výsledkom medzi dvoma programami",
|
"pg_tile_ambiguous_tip": "Cykly s takmer rovnakým výsledkom medzi dvoma programami",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Použiť najlepšiu hodnotu: {label} = {value}?",
|
"pg_apply_confirm": "Použiť najlepšiu hodnotu: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Vyberte cyklus vyššie a potom stlačte Načítať na zobrazenie jeho priebehu výkonu.",
|
"pg_canvas_empty": "Vyberte cyklus vyššie a potom stlačte Načítať na zobrazenie jeho priebehu výkonu.",
|
||||||
"pg_chart_caption": "Miera detekcie/zhody v závislosti od hodnôt {param}",
|
"pg_chart_caption": "Miera detekcie/zhody v závislosti od hodnôt {param}",
|
||||||
|
"pg_ctrl_intro": "Hodnoty vychádzajú z aktívnych nastavení integrácie pre toto zariadenie. Úpravy zostávajú v testovacom prostredí, kým ich neuložíte do integrácie.",
|
||||||
|
"pg_live_unavailable": "Aktívne nastavenia nie sú k dispozícii, zobrazujú sa predvolené hodnoty.",
|
||||||
|
"pg_load_live_confirm": "Zahodiť úpravy v testovacom prostredí ({n}) a znovu načítať aktuálne nastavenia integrácie?",
|
||||||
"pg_match_rate": "{pct}% miera zhody na {total} cykloch",
|
"pg_match_rate": "{pct}% miera zhody na {total} cykloch",
|
||||||
|
"pg_matches_live": "Zhoduje sa s aktívnymi nastaveniami",
|
||||||
|
"pg_n_changed": "Zmenené oproti aktívnym nastaveniam: {n}",
|
||||||
|
"pg_sugg_none": "Všetky návrhy sa už zhodujú s aktuálnymi nastaveniami",
|
||||||
|
"pg_preset_delete_confirm": "Odstrániť prednastavenie \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Dosiahnutý limit prednastavení ({n})",
|
||||||
|
"pg_preset_overwrite": "Prepísať prednastavenie \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Uložiť {label} = {value} do nastavení tohto zariadenia?",
|
||||||
"pg_restart_note": "Reštartujte Home Assistant, aby ste povolili nástroje simulácie.",
|
"pg_restart_note": "Reštartujte Home Assistant, aby ste povolili nástroje simulácie.",
|
||||||
"pg_sim_progress": "{done} / {total} cyklov",
|
"pg_sim_progress": "{done} / {total} cyklov",
|
||||||
"pg_starting": "Spúšťanie…",
|
"pg_starting": "Spúšťanie…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Predvoľby, panel a kontrola prístupu",
|
"preferences_admin": "Predvoľby, panel a kontrola prístupu",
|
||||||
"preferences_adv": "Predvoľby",
|
"preferences_adv": "Predvoľby",
|
||||||
"prefs_personal": "Platí iba pre váš účet Home Assistant.",
|
"prefs_personal": "Platí iba pre váš účet Home Assistant.",
|
||||||
|
"font_size_hint": "Zväčšite alebo zmenšite všetko v tomto paneli. Platí pre váš účet na tomto zariadení.",
|
||||||
"process_history_hint": "Znova spustite párovanie pre všetky uložené cykly, obnovte návrhy ladenia, preškolte modely ML (ak sú povolené) a prepočítajte zdravie cyklov. Spustite po sérii recenzií.",
|
"process_history_hint": "Znova spustite párovanie pre všetky uložené cykly, obnovte návrhy ladenia, preškolte modely ML (ak sú povolené) a prepočítajte zdravie cyklov. Spustite po sérii recenzií.",
|
||||||
"profile_deleted": "Profil odstránený",
|
"profile_deleted": "Profil odstránený",
|
||||||
"profile_poor_health_detail": "Cykly priradené k tomuto profilu majú nekonzistentný tvar alebo nízku spoľahlivosť. Zvážte prestavbu obálky alebo kontrolu cyklov s označením.",
|
"profile_poor_health_detail": "Cykly priradené k tomuto profilu majú nekonzistentný tvar alebo nízku spoľahlivosť. Zvážte prestavbu obálky alebo kontrolu cyklov s označením.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Kliknite na graf a pridajte alebo odstráňte bod rozdelenia, alebo automaticky zistite nečinné medzery. Každý výsledný segment môže mať vlastný profil.",
|
"split_intro": "Kliknite na graf a pridajte alebo odstráňte bod rozdelenia, alebo automaticky zistite nečinné medzery. Každý výsledný segment môže mať vlastný profil.",
|
||||||
"storage_diagnostics": "Štatistiky úložiska, údržba, export/import",
|
"storage_diagnostics": "Štatistiky úložiska, údržba, export/import",
|
||||||
"sug_staged": "Nastavené {key} = {val}. Uložte pre použitie.",
|
"sug_staged": "Nastavené {key} = {val}. Uložte pre použitie.",
|
||||||
|
"sug_muted": "Toto nastavenie sa už nebude navrhovať",
|
||||||
|
"sug_mute_failed": "Nastavenie sa nepodarilo stíšiť",
|
||||||
|
"sug_unmuted_all": "Stíšené návrhy obnovené",
|
||||||
|
"n_suggestions_muted": "{count} stíšených; automatický ladiaci nástroj tieto nastavenia nebude navrhovať.",
|
||||||
"toast_auto_detect_enabled": "Automatická detekcia zapnutá",
|
"toast_auto_detect_enabled": "Automatická detekcia zapnutá",
|
||||||
"toast_auto_label_complete": "Automatické označovanie dokončené",
|
"toast_auto_label_complete": "Automatické označovanie dokončené",
|
||||||
"toast_auto_label_failed": "Automatické označovanie zlyhalo: {error}",
|
"toast_auto_label_failed": "Automatické označovanie zlyhalo: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Trvanie je kratšie ({pct} %/cyklus) – posledný priemer {avg}",
|
"trend_duration_shorter": "Trvanie je kratšie ({pct} %/cyklus) – posledný priemer {avg}",
|
||||||
"trend_energy_down": "Energetický trend klesá ({pct} %/cyklus)",
|
"trend_energy_down": "Energetický trend klesá ({pct} %/cyklus)",
|
||||||
"trend_energy_up": "Energetický trend stúpa ({pct} %/cyklus) – posledný priemer {avg}",
|
"trend_energy_up": "Energetický trend stúpa ({pct} %/cyklus) – posledný priemer {avg}",
|
||||||
|
"trim_destructive_confirm": "Týmto zostane len {pct}% cyklu a túto akciu nie je možné vrátiť späť. Pokračovať?",
|
||||||
"trim_intro": "Potiahnite červené rukoväti alebo zadajte hodnoty. Všetko mimo okna sa odstráni.",
|
"trim_intro": "Potiahnite červené rukoväti alebo zadajte hodnoty. Všetko mimo okna sa odstráni.",
|
||||||
"tuning_suggestions_available": "{count} návrh ladenia dostupný z pozorovaných cyklov. Zobrazujú sa vedľa príslušných polí.",
|
"tuning_suggestions_available": "{count} návrh ladenia dostupný z pozorovaných cyklov. Zobrazujú sa vedľa príslušných polí.",
|
||||||
"unsure_detected_prefix": "WashData si nie je istý, či zistil",
|
"unsure_detected_prefix": "WashData si nie je istý, či zistil",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Nepoužiteľný"
|
"unusable": "Nepoužiteľný"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Umývačka riadu",
|
||||||
|
"intro": "Spracovanie konca cyklu pre umývačky riadu, ktoré zvyčajne končia dlhou takmer tichou fázou sušenia pred krátkym záverečným odčerpaním vody."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Režim ochrany pred krčením tkaniny deteguje pulzy tumblingu pri nízkej spotrebe po hlavnej fáze a udržuje ich priradené k dokončenému cyklu.",
|
"intro": "Režim ochrany pred krčením tkaniny deteguje pulzy tumblingu pri nízkej spotrebe po hlavnej fáze a udržuje ich priradené k dokončenému cyklu.",
|
||||||
"label": "Ochrana pred krčením"
|
"label": "Ochrana pred krčením"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Uvoľnenie po tichej fáze sušenia",
|
||||||
|
"doc": "Keď cyklus prekročí svoje očakávané trvanie, ako dlho musí umývačka zostať v pokoji (pod Prahom zastavenia), než WashData prestane čakať na záverečné odčerpanie vody a ukončí cyklus. Zvýšte hodnotu, ak má váš spotrebič dlhú tichú fázu sušenia pred neskorým záverečným odčerpaním, ktoré uniká detekcii - širšie okno umožňuje, aby naučené trvanie sledovalo sezónny posun (studenšia privádzaná voda = dlhšie cykly) namiesto toho, aby zostalo uzamknuté na starom priemere. Čakanie iba skracuje vzhľadom na interný 30-minútový limit čakania na záverečné odčerpanie, nikdy ho nepredlžuje."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Rozpoznajte krátke pulzy bubna s nízkym výkonom, ktoré sušička vydáva po hlavnej fáze ohrevu, a nechajte ich pripojené k dokončenému cyklu namiesto toho, aby ste ich čítali ako nové cykly.",
|
"doc": "Rozpoznajte krátke pulzy bubna s nízkym výkonom, ktoré sušička vydáva po hlavnej fáze ohrevu, a nechajte ich pripojené k dokončenému cyklu namiesto toho, aby ste ich čítali ako nové cykly.",
|
||||||
"label": "Povoliť detekciu ochrany pred krčením"
|
"label": "Povoliť detekciu ochrany pred krčením"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Minúty po skončení cyklu pred odoslaním stále čakajúcej pripomienky „vyložiť stroj“. Ak chcete pripomienku deaktivovať, nastavte 0.",
|
"doc": "Minúty po skončení cyklu pred odoslaním stále čakajúcej pripomienky „vyložiť stroj“. Ak chcete pripomienku deaktivovať, nastavte 0.",
|
||||||
"label": "Oneskorenie pripomienky vyloženia"
|
"label": "Oneskorenie pripomienky vyloženia"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Znova odosiela pripomienku vyloženia každých \"Oneskorenie pripomienky vyloženia\" minút, kým neotvoríte dvere alebo v oznámení neťuknete na \"Prestať pripomínať\". Vyžaduje Entitu senzora dverí (rovnako ako samotná pripomienka). Tlačidlo na zrušenie funguje pri oznámeniach mobilnej aplikácie Home Assistant (companion app).",
|
||||||
|
"label": "Opakovať, kým sa neotvoria dvere"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Čas čakania po poklese napájania pred vyhlásením cyklu za ukončený. Ak sa v rámci tohto okna obnoví napájanie, cyklus plynule pokračuje – premosťuje to prestávky medzi fázami umývania. Umývačky riadu majú dlhé fázy sušenia (vypnutie na 20-60 minút), takže oneskorenie vypnutia musí prekročiť túto hodnotu, aby celé umývanie + suché zostalo ako jeden cyklus.",
|
"doc": "Čas čakania po poklese napájania pred vyhlásením cyklu za ukončený. Ak sa v rámci tohto okna obnoví napájanie, cyklus plynule pokračuje – premosťuje to prestávky medzi fázami umývania. Umývačky riadu majú dlhé fázy sušenia (vypnutie na 20-60 minút), takže oneskorenie vypnutia musí prekročiť túto hodnotu, aby celé umývanie + suché zostalo ako jeden cyklus.",
|
||||||
"label": "Oneskorenie vypnutia"
|
"label": "Oneskorenie vypnutia"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Ostrost energie",
|
"label": "Ostrost energie",
|
||||||
"doc": "Ostrosť penalizácie za nezhodu energie vo Fáze 4. Menší = prísnejší: nezhoda energie viac znižuje skóre. Predvolená hodnota 0,25 je zámerne benevolentnejšia ako Ostrosť dĺžky trvania, pretože energia sa líši podľa záťaže. Kombinujte s Váhou energie."
|
"doc": "Ostrosť penalizácie za nezhodu energie vo Fáze 4. Menší = prísnejší: nezhoda energie viac znižuje skóre. Predvolená hodnota 0,25 je zámerne benevolentnejšia ako Ostrosť dĺžky trvania, pretože energia sa líši podľa záťaže. Kombinujte s Váhou energie."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interval výkonového profilu",
|
||||||
|
"doc": "Veľkosť segmentu pre atribút senzora power_profile pre daný profil (plochá sada priemerných wattov za slot spotrebovaná externými plánovačmi ako EMHASS a tibber_prices). Menšie segmenty zachovávajú krátke výkonové špičky ostré; väčšie segmenty vyhladzujú tvar. Predvolene 15 min. Iba pri načítaní; neovplyvňuje detekciu."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Zachovať živé oznámenie po klepnutí",
|
||||||
|
"doc": "Iba Android. Živé oznámenie priebehu nastavte ako trvalé (prilepené), aby jeho klepnutím nedošlo k zavretiu prebiehajúceho vlákna. Vypnuté zachováva predvolené správanie, kde klepnutie oznámenie zavrie."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Cieľ klepnutia na živé oznámenie",
|
||||||
|
"doc": "Iba Android. Kam klepnutie na živé oznámenie priebehu otvorí (napr. /lovelace/laundry alebo celá URL) namiesto vstupnej stránky aplikácie. Ponechajte prázdne pre predvolené nastavenie."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Dvere sa na konci automaticky otvoria",
|
||||||
|
"doc": "Pre umývačky riadu, ktoré na konci cyklu otvoria dvere za účelom sušenia (AirDry a podobné). Pri zapnutej funkcii otvorenie dverí počas bežiaceho cyklu už nezastaví cyklus natrvalo; ak dvere zostanú otvorené po dobu čakania nižšie, WashData cyklus ukončí. Krátke otvorenie (pridanie predmetu) sa ignoruje. Vyžaduje entitu senzora dverí."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Čakanie na otvorenie dverí pre ukončenie",
|
||||||
|
"doc": "Ako dlho musia dvere zostať otvorené, kým WashData ukončí cyklus, keď je zapnutá funkcia \"Dvere sa na konci automaticky otvoria\". Dostatočne dlho na ignorovanie rýchleho pridania riadu (predvolene 60 s), dostatočne krátko pre rýchle ukončenie po otvorení dverí spotrebičom."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1592,6 +1708,7 @@
|
|||||||
"min_active": "Na základe minimálneho činného výkonu ({min}W) zaznamenaného v poslednom cykle.",
|
"min_active": "Na základe minimálneho činného výkonu ({min}W) zaznamenaného v poslednom cykle.",
|
||||||
"min_duration_ratio": "Ponechané čo najnižšie, aby sa program rozpoznal skoro v cykle; prahy istoty a nejednoznačnosti bránia predčasnému potvrdeniu.",
|
"min_duration_ratio": "Ponechané čo najnižšie, aby sa program rozpoznal skoro v cykle; prahy istoty a nejednoznačnosti bránia predčasnému potvrdeniu.",
|
||||||
"min_off_gap": "Na základe {gaps} pozorovaných medzier medzi cyklami (p05={p05}s). Minimum zariadenia: {floor}s.",
|
"min_off_gap": "Na základe {gaps} pozorovaných medzier medzi cyklami (p05={p05}s). Minimum zariadenia: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Nastavené tak, aby preklenulo najdlhší tichý úsek vnútri cyklu: {span}s + rezerva 60s, z {spans} preklenutých medzier naprieč {cycles} čistými cyklami (zostáva pod {ceiling}s, najkratšou medzerou, ktorú necháte medzi dvoma dávkami).",
|
||||||
"min_power": "40% najnižšieho činného výkonu p05 ({p05}W) naprieč {cycles} čistými cyklami, aby prah vypnutia zostal pod skutočným odberom.{excl}",
|
"min_power": "40% najnižšieho činného výkonu p05 ({p05}W) naprieč {cycles} čistými cyklami, aby prah vypnutia zostal pod skutočným odberom.{excl}",
|
||||||
"ml_auto_label": "Najnižšia istota, pri ktorej model kvality stále hodnotil cyklus ako čistý (p10 z {cycles} čistých cyklov = {p10}).",
|
"ml_auto_label": "Najnižšia istota, pri ktorej model kvality stále hodnotil cyklus ako čistý (p10 z {cycles} čistých cyklov = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cyklov ({pct}%) malo pauzu, ktorú detektor konca ohodnotil nad 50%; vyžadovať {val} potvrdení konca.",
|
"ml_end_repeat": "{false}/{total} cyklov ({pct}%) malo pauzu, ktorú detektor konca ohodnotil nad 50%; vyžadovať {val} potvrdení konca.",
|
||||||
@@ -1608,7 +1725,7 @@
|
|||||||
"thr_batch": "Ponechané tesne nad najnižším činným výkonom p05 naprieč {cycles} cyklami ({p05}W), aby sa štart zachytil čo najskôr a prah zastavenia zostal pod najnižším prevádzkovým výkonom stroja.",
|
"thr_batch": "Ponechané tesne nad najnižším činným výkonom p05 naprieč {cycles} cyklami ({p05}W), aby sa štart zachytil čo najskôr a prah zastavenia zostal pod najnižším prevádzkovým výkonom stroja.",
|
||||||
"tol_per_profile": "p75 rozptylu dĺžky podľa profilu naprieč {profiles} profilmi ({cycles} cyklov); konzistentné profily nie sú penalizované.",
|
"tol_per_profile": "p75 rozptylu dĺžky podľa profilu naprieč {profiles} profilmi ({cycles} cyklov); konzistentné profily nie sú penalizované.",
|
||||||
"tol_pooled": "Na základe zlúčeného rozptylu dĺžky {cycles} nedávnych označených cyklov (odchýlka p95={dev}).",
|
"tol_pooled": "Na základe zlúčeného rozptylu dĺžky {cycles} nedávnych označených cyklov (odchýlka p95={dev}).",
|
||||||
"watchdog": "Ponechané čo najnižšie pri zachovaní bezpečnosti (3x interval aktualizácie p95 vo výške {p95}s, min. 30s), aby sa zaseknutia rýchlo odhalili bez falošných zastavení."
|
"watchdog": "Ponechané čo najnižšie pri zachovaní bezpečnosti (tesne nad intervalom aktualizácie p95 vo výške {p95}s, min. 30s), aby sa zaseknutia rýchlo odhalili bez falošných zastavení."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Vylúčených {total} chybne zistených cyklov: {parts}.",
|
"summary": "Vylúčených {total} chybne zistených cyklov: {parts}.",
|
||||||
@@ -1688,6 +1805,10 @@
|
|||||||
"name_required": "Názov je povinný",
|
"name_required": "Názov je povinný",
|
||||||
"no_split_found": "Nenašli sa žiadne nečinné medzery na rozdelenie",
|
"no_split_found": "Nenašli sa žiadne nečinné medzery na rozdelenie",
|
||||||
"panel_settings_saved": "Nastavenia panela uložené",
|
"panel_settings_saved": "Nastavenia panela uložené",
|
||||||
|
"pg_preset_loaded": "Prednastavenie \"{name}\" načítané",
|
||||||
|
"pg_preset_saved": "Prednastavenie \"{name}\" uložené",
|
||||||
|
"pg_sugg_loaded": "Načítaných {n} navrhovaných hodnôt - spustite testovacie prostredie na porovnanie",
|
||||||
|
"pg_sugg_ml_loaded": "Načítaných {n} hodnôt kalibrovaných ML - spustite testovacie prostredie na porovnanie",
|
||||||
"phase_name_required": "Názov fázy je povinný",
|
"phase_name_required": "Názov fázy je povinný",
|
||||||
"phase_updated": "Fáza aktualizovaná",
|
"phase_updated": "Fáza aktualizovaná",
|
||||||
"phases_saved": "Fázy uložené",
|
"phases_saved": "Fázy uložené",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Iné"
|
"other": "Iné"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Umývačka: tiché sekundy po očakávanom trvaní, než sa uvoľní čakanie na záverečné odčerpanie vody",
|
||||||
"anti_wrinkle_enabled": "Pohltiť impulzy bubna po hlavnej fáze namiesto ich čítania ako nové cykly",
|
"anti_wrinkle_enabled": "Pohltiť impulzy bubna po hlavnej fáze namiesto ich čítania ako nové cykly",
|
||||||
"anti_wrinkle_exit_power": "Výkon musí medzi impulzmi klesnúť pod túto hodnotu, aby ochrana pred krčením zostala aktívna",
|
"anti_wrinkle_exit_power": "Výkon musí medzi impulzmi klesnúť pod túto hodnotu, aby ochrana pred krčením zostala aktívna",
|
||||||
"anti_wrinkle_idle_timeout": "Povolený pokoj medzi dvoma impulzmi bubna, než sa ochrana pred krčením skončí",
|
"anti_wrinkle_idle_timeout": "Povolený pokoj medzi dvoma impulzmi bubna, než sa ochrana pred krčením skončí",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entiteta ni najdena",
|
||||||
|
"running_long": "Traja predolgo",
|
||||||
|
"remaining": "preostalo",
|
||||||
|
"progress": "napredek",
|
||||||
|
"show_time_remaining": "Pokaži preostali čas",
|
||||||
|
"show_percentage": "Pokaži odstotek",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Ploščica (kompaktno)",
|
||||||
|
"detail": "Podrobno (bogato)",
|
||||||
|
"glance": "Pregled (več naprav)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Premor",
|
||||||
|
"resume": "Nadaljuj",
|
||||||
|
"terminate": "Končaj cikel",
|
||||||
|
"record_start": "Začni snemanje",
|
||||||
|
"record_stop": "Ustavi snemanje",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Odpri WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Postavitev",
|
||||||
|
"entity": "Entiteta naprave",
|
||||||
|
"entities": "Naprave",
|
||||||
|
"title": "Naslov",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Pokaži stanje",
|
||||||
|
"show_program": "Pokaži program",
|
||||||
|
"show_progress_bar": "Pokaži vrstico napredka",
|
||||||
|
"spin_icon": "Vrti ikono med delovanjem",
|
||||||
|
"display_mode": "Vrstica s podrobnostmi",
|
||||||
|
"active_color": "Preglasitev aktivne barve",
|
||||||
|
"show_phase": "Pokaži fazo",
|
||||||
|
"show_energy": "Pokaži energijo in strošek",
|
||||||
|
"show_anomaly": "Pokaži opozorilo o prekoračitvi",
|
||||||
|
"show_sparkline": "Pokaži graf moči v živo",
|
||||||
|
"buttons": "Gumbi za dejanja",
|
||||||
|
"program_entity": "Entiteta programa (preglasitev)",
|
||||||
|
"time_entity": "Entiteta časa (preglasitev)",
|
||||||
|
"pct_entity": "Entiteta napredka (preglasitev)",
|
||||||
|
"power_entity": "Entiteta moči (preglasitev)",
|
||||||
|
"tap_action": "Dejanje ob dotiku",
|
||||||
|
"hold_action": "Dejanje ob zadržanju",
|
||||||
|
"double_tap_action": "Dejanje ob dvojnem dotiku"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} zaznanih nepravilnosti (npr. odprta vrata sredi cikla) – odprite, da jih vidite na grafu",
|
"artifact_tip": "{n} zaznanih nepravilnosti (npr. odprta vrata sredi cikla) – odprite, da jih vidite na grafu",
|
||||||
"auto": "(samodejno zaznano)",
|
"auto": "(samodejno zaznano)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Zavrzi",
|
"discard": "Zavrzi",
|
||||||
"discard_tip": "Zavrzi posneto sled brez shranjevanja",
|
"discard_tip": "Zavrzi posneto sled brez shranjevanja",
|
||||||
"dismiss": "Zapri",
|
"dismiss": "Zapri",
|
||||||
|
"mute_suggestion": "Prenehaj predlagati to nastavitev",
|
||||||
|
"pg_load_calibrated": "Naloži umerjene (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Naloži ML-umerjene nastavitve kot nadpisane vrednosti v peskovniku",
|
||||||
|
"pg_load_live": "Naloži aktivne nastavitve",
|
||||||
|
"pg_load_live_tip": "Znova preberi trenutne nastavitve integracije in zavrzi vsa urejanja v peskovniku",
|
||||||
|
"pg_load_suggested": "Naloži predlagane ({n})",
|
||||||
|
"pg_load_suggested_tip": "Naloži predloge samodejnega uglaševanja kot nadpisane vrednosti v peskovniku",
|
||||||
|
"pg_preset_delete": "Izbriši prednastavitev",
|
||||||
|
"pg_preset_load": "Naloži prednastavitev",
|
||||||
|
"pg_preset_load_tip": "Zamenjaj vrednosti v peskovniku s to prednastavitvijo (aktivne nastavitve ostanejo nespremenjene)",
|
||||||
|
"pg_preset_save": "Shrani kot prednastavitev",
|
||||||
|
"pg_preset_save_tip": "Shrani vse spodnje vrednosti kot poimenovano prednastavitev za to napravo",
|
||||||
|
"pg_publish_all": "Shrani v integracijo ({n})",
|
||||||
|
"pg_publish_one": "Shrani {label} v integracijo",
|
||||||
|
"reset_muted": "Ponastavi utišane",
|
||||||
"done": "Končano",
|
"done": "Končano",
|
||||||
"edit": "Uredi",
|
"edit": "Uredi",
|
||||||
"export": "Izvozi",
|
"export": "Izvozi",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Nobena avtomatizacija še ne sklicuje na to napravo.",
|
"no_automations": "Nobena avtomatizacija še ne sklicuje na to napravo.",
|
||||||
"panel_settings": "Nastavitve plošče",
|
"panel_settings": "Nastavitve plošče",
|
||||||
"param_sweep": "Preizkušanje parametra",
|
"param_sweep": "Preizkušanje parametra",
|
||||||
|
"pg_settings_source": "Vir nastavitev",
|
||||||
"phase_catalog": "Katalog faz",
|
"phase_catalog": "Katalog faz",
|
||||||
"playground": "Peskovnik",
|
"playground": "Peskovnik",
|
||||||
"process_history": "Zgodovina procesov",
|
"process_history": "Zgodovina procesov",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Privzeta raven za uporabnike, ki niso navedeni spodaj",
|
"default_access_level": "Privzeta raven za uporabnike, ki niso navedeni spodaj",
|
||||||
"default_other": "Privzeto (druge naprave)",
|
"default_other": "Privzeto (druge naprave)",
|
||||||
"default_tab": "Privzeti zavihek pri odpiranju plošče",
|
"default_tab": "Privzeti zavihek pri odpiranju plošče",
|
||||||
|
"font_size": "Velikost pisave plošče",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Opis",
|
"description": "Opis",
|
||||||
"dtw_blend_w": "Utež mešanja",
|
"dtw_blend_w": "Utež mešanja",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Rezultat ujemanja",
|
"pg_match_score": "Rezultat ujemanja",
|
||||||
"pg_pct_of": "{p}% od {total}",
|
"pg_pct_of": "{p}% od {total}",
|
||||||
"pg_poor_match": "Slabo ujemanje",
|
"pg_poor_match": "Slabo ujemanje",
|
||||||
|
"pg_preset": "Prednastavitev peskovnika",
|
||||||
|
"pg_preset_name": "Ime nove prednastavitve",
|
||||||
|
"pg_preset_none": "Izberite prednastavitev…",
|
||||||
"pg_strong_match": "Močno ujemanje",
|
"pg_strong_match": "Močno ujemanje",
|
||||||
"pg_tile_ambiguous": "Dvoumno",
|
"pg_tile_ambiguous": "Dvoumno",
|
||||||
"pg_tile_ambiguous_tip": "Cikli s skoraj izenačenim rezultatom med dvema programoma",
|
"pg_tile_ambiguous_tip": "Cikli s skoraj izenačenim rezultatom med dvema programoma",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Uporabim najboljšo vrednost: {label} = {value}?",
|
"pg_apply_confirm": "Uporabim najboljšo vrednost: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Zgoraj izberite cikel in nato pritisnite Naloži, da vidite njegov potek moči.",
|
"pg_canvas_empty": "Zgoraj izberite cikel in nato pritisnite Naloži, da vidite njegov potek moči.",
|
||||||
"pg_chart_caption": "Stopnja zaznavanja/ujemanja glede na vrednosti {param}",
|
"pg_chart_caption": "Stopnja zaznavanja/ujemanja glede na vrednosti {param}",
|
||||||
|
"pg_ctrl_intro": "Vrednosti izhajajo iz aktivnih nastavitev integracije za to napravo. Urejanja ostanejo v peskovniku, dokler jih ne shranite v integracijo.",
|
||||||
|
"pg_live_unavailable": "Aktivne nastavitve niso na voljo, prikazane so privzete vrednosti.",
|
||||||
|
"pg_load_live_confirm": "Zavržem spremembe v peskovniku ({n}) in znova naložim trenutne nastavitve integracije?",
|
||||||
"pg_match_rate": "{pct}% stopnja ujemanja na {total} ciklih",
|
"pg_match_rate": "{pct}% stopnja ujemanja na {total} ciklih",
|
||||||
|
"pg_matches_live": "Ujema se z aktivnimi nastavitvami",
|
||||||
|
"pg_n_changed": "Spremenjeno glede na aktivne nastavitve: {n}",
|
||||||
|
"pg_sugg_none": "Vsi predlogi se že ujemajo s trenutnimi nastavitvami",
|
||||||
|
"pg_preset_delete_confirm": "Izbrišem prednastavitev \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Dosežena omejitev prednastavitev ({n})",
|
||||||
|
"pg_preset_overwrite": "Prepišem prednastavitev \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Shranim {label} = {value} v nastavitve te naprave?",
|
||||||
"pg_restart_note": "Znova zaženite Home Assistant, da omogočite orodja simulacije.",
|
"pg_restart_note": "Znova zaženite Home Assistant, da omogočite orodja simulacije.",
|
||||||
"pg_sim_progress": "{done} / {total} ciklov",
|
"pg_sim_progress": "{done} / {total} ciklov",
|
||||||
"pg_starting": "Zaganjanje…",
|
"pg_starting": "Zaganjanje…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Nastavitve, plošča in nadzor dostopa",
|
"preferences_admin": "Nastavitve, plošča in nadzor dostopa",
|
||||||
"preferences_adv": "Nastavitve",
|
"preferences_adv": "Nastavitve",
|
||||||
"prefs_personal": "Veljajo samo za vaš račun Home Assistant.",
|
"prefs_personal": "Veljajo samo za vaš račun Home Assistant.",
|
||||||
|
"font_size_hint": "Povečajte ali pomanjšajte vse v tej plošči. Velja za vaš račun na tej napravi.",
|
||||||
"process_history_hint": "Znova zaženite ujemanje za vse shranjene cikle, osvežite predloge nastavljanja, znova naučite modele ML (če so omogočeni) in znova izračunajte zdravje ciklov. Zaženite po seriji pregledov.",
|
"process_history_hint": "Znova zaženite ujemanje za vse shranjene cikle, osvežite predloge nastavljanja, znova naučite modele ML (če so omogočeni) in znova izračunajte zdravje ciklov. Zaženite po seriji pregledov.",
|
||||||
"profile_deleted": "Profil izbrisan",
|
"profile_deleted": "Profil izbrisan",
|
||||||
"profile_poor_health_detail": "Cikli, dodeljeni temu profilu, imajo nedosledne oblike ali nizko stopnjo zaupanja. Razmislite o ponovni izdelavi ovojnice ali pregledu označenih ciklov.",
|
"profile_poor_health_detail": "Cikli, dodeljeni temu profilu, imajo nedosledne oblike ali nizko stopnjo zaupanja. Razmislite o ponovni izdelavi ovojnice ali pregledu označenih ciklov.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Kliknite na graf, da dodate ali odstranite točko razdelitve, ali samodejno zaznajte po nedejavnih vrzelih. Vsak rezultirajoči segment lahko dobi lasten profil.",
|
"split_intro": "Kliknite na graf, da dodate ali odstranite točko razdelitve, ali samodejno zaznajte po nedejavnih vrzelih. Vsak rezultirajoči segment lahko dobi lasten profil.",
|
||||||
"storage_diagnostics": "Statistike shrambe, vzdrževanje, izvoz/uvoz",
|
"storage_diagnostics": "Statistike shrambe, vzdrževanje, izvoz/uvoz",
|
||||||
"sug_staged": "Nastavljeno {key} = {val}. Shranite za uveljavitev.",
|
"sug_staged": "Nastavljeno {key} = {val}. Shranite za uveljavitev.",
|
||||||
|
"sug_muted": "Te nastavitve ne bo več predlagalo",
|
||||||
|
"sug_mute_failed": "Utišanje predloga ni uspelo",
|
||||||
|
"sug_unmuted_all": "Utišani predlogi ponastavljeni",
|
||||||
|
"n_suggestions_muted": "{count} utišanih; samodejni nastavjalnik teh nastavitev ne bo predlagal.",
|
||||||
"toast_auto_detect_enabled": "Samodejno zaznavanje omogočeno",
|
"toast_auto_detect_enabled": "Samodejno zaznavanje omogočeno",
|
||||||
"toast_auto_label_complete": "Samodejno označevanje dokončano",
|
"toast_auto_label_complete": "Samodejno označevanje dokončano",
|
||||||
"toast_auto_label_failed": "Samodejno označevanje ni uspelo: {error}",
|
"toast_auto_label_failed": "Samodejno označevanje ni uspelo: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Trajanje se skrajšuje ({pct}%/cikel) – zadnje povprečje {avg}",
|
"trend_duration_shorter": "Trajanje se skrajšuje ({pct}%/cikel) – zadnje povprečje {avg}",
|
||||||
"trend_energy_down": "Energija pada ({pct}%/cikel)",
|
"trend_energy_down": "Energija pada ({pct}%/cikel)",
|
||||||
"trend_energy_up": "Energija narašča ({pct}%/cikel) – zadnje povprečje {avg}",
|
"trend_energy_up": "Energija narašča ({pct}%/cikel) – zadnje povprečje {avg}",
|
||||||
|
"trim_destructive_confirm": "S tem ostane samo {pct}% cikla in tega dejanja ni mogoče razveljaviti. Nadaljujem?",
|
||||||
"trim_intro": "Povlecite rdeče ročke ali vnesite vrednosti. Vse zunaj okna se odstrani.",
|
"trim_intro": "Povlecite rdeče ročke ali vnesite vrednosti. Vse zunaj okna se odstrani.",
|
||||||
"tuning_suggestions_available": "{count} predlog za nastavitev je na voljo iz opazovanih ciklov. Pojavijo se poleg ustreznih polj.",
|
"tuning_suggestions_available": "{count} predlog za nastavitev je na voljo iz opazovanih ciklov. Pojavijo se poleg ustreznih polj.",
|
||||||
"unsure_detected_prefix": "WashData ni prepričan, da je zaznal",
|
"unsure_detected_prefix": "WashData ni prepričan, da je zaznal",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Neuporabno"
|
"unusable": "Neuporabno"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Pomivalni stroj",
|
||||||
|
"intro": "Obravnava konca cikla za pomivalne stroje, ki se običajno končajo z dolgo, skoraj tiho fazo sušenja pred kratkim končnim izčrpavanjem vode."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Način zaščite pred gubami na oblačilih zazna kratke pulze pri nizki moči po glavni fazi in jih obdrži pripisane končanemu ciklu.",
|
"intro": "Način zaščite pred gubami na oblačilih zazna kratke pulze pri nizki moči po glavni fazi in jih obdrži pripisane končanemu ciklu.",
|
||||||
"label": "Zaščita pred gubami"
|
"label": "Zaščita pred gubami"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Sprostitev po tihi fazi sušenja",
|
||||||
|
"doc": "Ko cikel preseže svoje pričakovano trajanje, kako dolgo mora pomivalni stroj ostati tih (pod Pragom zaustavitve), preden WashData preneha čakati na končno izčrpavanje vode in zaključi cikel. Povečajte, če ima vaša naprava dolgo tiho fazo sušenja pred poznim končnim izčrpavanjem, ki ga zaznavanje spregleda - širše okno omogoča, da naučeno trajanje sledi sezonskemu premiku (hladnejša dovodna voda = daljši cikli), namesto da ostane zaklenjeno na starem povprečju. Čakanje lahko le skrajša glede na notranjo 30-minutno omejitev čakanja na končno izčrpavanje, nikoli ga ne podaljša."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Prepoznajte kratke vrtilne impulze nizke moči, ki jih oddaja sušilni stroj po glavni fazi segrevanja, in jih ohranite povezane s končanim ciklom, namesto da jih berete kot nove cikle.",
|
"doc": "Prepoznajte kratke vrtilne impulze nizke moči, ki jih oddaja sušilni stroj po glavni fazi segrevanja, in jih ohranite povezane s končanim ciklom, namesto da jih berete kot nove cikle.",
|
||||||
"label": "Omogoči zaznavanje zaščite pred gubami"
|
"label": "Omogoči zaznavanje zaščite pred gubami"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Minute po koncu cikla pred pošiljanjem še vedno čakajočega opomnika \"raztovarjanje stroja\". Nastavite 0, da onemogočite opomnik.",
|
"doc": "Minute po koncu cikla pred pošiljanjem še vedno čakajočega opomnika \"raztovarjanje stroja\". Nastavite 0, da onemogočite opomnik.",
|
||||||
"label": "Zamuda opomnika za raztovarjanje"
|
"label": "Zamuda opomnika za raztovarjanje"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Znova pošilja opomnik za raztovarjanje vsakih \"Zamuda opomnika za raztovarjanje\" minut, dokler ne odprete vrat ali v obvestilu ne tapnete \"Nehaj opominjati\". Zahteva Entiteto senzorja vrat (tako kot sam opomnik). Gumb za opustitev deluje pri obvestilih mobilne aplikacije Home Assistant (companion app).",
|
||||||
|
"label": "Ponavljaj, dokler se vrata ne odprejo"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Čas za čakanje po padcu moči, preden razglasite, da je cikel končan. Če se napajanje ponovno vzpostavi v tem oknu, se cikel nemoteno nadaljuje - to premosti premore med stopnjami pranja. Pomivalni stroji imajo dolge faze sušenja (izklop za 20–60 min), zato mora biti zakasnitev izklopa daljša od te, da ostane celotno pranje+sušenje kot en cikel.",
|
"doc": "Čas za čakanje po padcu moči, preden razglasite, da je cikel končan. Če se napajanje ponovno vzpostavi v tem oknu, se cikel nemoteno nadaljuje - to premosti premore med stopnjami pranja. Pomivalni stroji imajo dolge faze sušenja (izklop za 20–60 min), zato mora biti zakasnitev izklopa daljša od te, da ostane celotno pranje+sušenje kot en cikel.",
|
||||||
"label": "Zamuda izklopa"
|
"label": "Zamuda izklopa"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Ostrina energije",
|
"label": "Ostrina energije",
|
||||||
"doc": "Ostrina kazni za neujemanje energije na Stopnji 4. Manjše = strožje: neujemanje energije bolj znižuje oceno. Privzeta vrednost 0,25 je namerno bolj dovoljna od Ostrine trajanja, ker energija niha z obremenitvijo. Kombinirajte z Utežjo energije."
|
"doc": "Ostrina kazni za neujemanje energije na Stopnji 4. Manjše = strožje: neujemanje energije bolj znižuje oceno. Privzeta vrednost 0,25 je namerno bolj dovoljna od Ostrine trajanja, ker energija niha z obremenitvijo. Kombinirajte z Utežjo energije."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interval profila porabe",
|
||||||
|
"doc": "Velikost segmenta za atribut senzorja power_profile za posamezni profil (ploska matrika povprečnih vatov na režo, ki jo porabijo zunanji planerji, kot sta EMHASS in tibber_prices). Manjši segmenti ohranijo kratke skoke moči ostre; večji segmenti zgladijo obliko. Privzeto 15 min. Samo za branje; ne vpliva na zaznavanje."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Ohrani živo obvestilo ob dotiku",
|
||||||
|
"doc": "Samo Android. Živo obvestilo o napredku nastavite kot trajno (pritrjeno), da ga dotik ne zavrže. Izklopljeno ohranja privzeto vedenje, ko dotik zavrže obvestilo."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Cilj dotika na živo obvestilo",
|
||||||
|
"doc": "Samo Android. Kam dotik na živo obvestilo o napredku odpre (npr. /lovelace/laundry ali celoten URL) namesto vstopne strani aplikacije. Pustite prazno za privzeto."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Vrata se ob koncu samodejno odprejo",
|
||||||
|
"doc": "Za pomivalne stroje, ki ob koncu cikla odprejo vrata za sušenje (AirDry in podobni). Ko je vklopljeno, odprtje vrat med delujočim ciklom ne zaustavi cikla za vedno; namesto tega, ko vrata ostanejo odprta za čas čakanja spodaj, WashData zaključi cikel. Kratko odprtje (dodajanje predmeta) se prezre. Zahteva entiteto senzorja vrat."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Čas odprtosti vrat za zaključek",
|
||||||
|
"doc": "Kako dolgo morajo vrata ostati odprta, preden WashData zaključi cikel, ko je vklopljeno \"Vrata se ob koncu samodejno odprejo\". Dovolj dolgo, da se prezre hitro dodajanje posode (privzeto 60 s), dovolj kratko za hiter zaključek, ko stroj odpre vrata."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1592,6 +1708,7 @@
|
|||||||
"min_active": "Na podlagi najmanjše delovne moči ({min}W), opažene v zadnjem ciklu.",
|
"min_active": "Na podlagi najmanjše delovne moči ({min}W), opažene v zadnjem ciklu.",
|
||||||
"min_duration_ratio": "Ohranjeno čim nižje, da se program prepozna zgodaj v ciklu; pragova zaupanja in dvoumnosti preprečujeta prezgodnje potrditve.",
|
"min_duration_ratio": "Ohranjeno čim nižje, da se program prepozna zgodaj v ciklu; pragova zaupanja in dvoumnosti preprečujeta prezgodnje potrditve.",
|
||||||
"min_off_gap": "Na podlagi {gaps} opaženih vrzeli med cikli (p05={p05}s). Spodnja meja naprave: {floor}s.",
|
"min_off_gap": "Na podlagi {gaps} opaženih vrzeli med cikli (p05={p05}s). Spodnja meja naprave: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Nastavljeno tako, da premosti najdaljši tihi odsek znotraj cikla: {span}s + 60s rezerve, iz {spans} premoščenih vrzeli čez {cycles} čistih ciklov (ostane pod vašo najkrajšo vrzeljo med zaporednima zagonoma, ki znaša {ceiling}s).",
|
||||||
"min_power": "40 % najnižje delovne moči p05 ({p05}W) čez {cycles} čistih ciklov, da prag izklopa ostane pod dejansko porabo.{excl}",
|
"min_power": "40 % najnižje delovne moči p05 ({p05}W) čez {cycles} čistih ciklov, da prag izklopa ostane pod dejansko porabo.{excl}",
|
||||||
"ml_auto_label": "Najnižje zaupanje, ki ga je model kakovosti še ocenil kot čisto (p10 od {cycles} čistih ciklov = {p10}).",
|
"ml_auto_label": "Najnižje zaupanje, ki ga je model kakovosti še ocenil kot čisto (p10 od {cycles} čistih ciklov = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciklov ({pct}%) je imelo premor, ki ga je detektor konca ocenil z >50 %; zahtevaj {val} potrditev konca.",
|
"ml_end_repeat": "{false}/{total} ciklov ({pct}%) je imelo premor, ki ga je detektor konca ocenil z >50 %; zahtevaj {val} potrditev konca.",
|
||||||
@@ -1608,7 +1725,7 @@
|
|||||||
"thr_batch": "Ohranjeno tik nad najnižjo delovno močjo p05 čez {cycles} ciklov ({p05}W), da se začetek zazna čim prej in da prag ustavitve ostane pod najnižjo delovno močjo naprave.",
|
"thr_batch": "Ohranjeno tik nad najnižjo delovno močjo p05 čez {cycles} ciklov ({p05}W), da se začetek zazna čim prej in da prag ustavitve ostane pod najnižjo delovno močjo naprave.",
|
||||||
"tol_per_profile": "p75 variance trajanja po posameznih profilih čez {profiles} profilov ({cycles} ciklov); dosledni profili niso kaznovani.",
|
"tol_per_profile": "p75 variance trajanja po posameznih profilih čez {profiles} profilov ({cycles} ciklov); dosledni profili niso kaznovani.",
|
||||||
"tol_pooled": "Na podlagi združene variance trajanja {cycles} nedavnih označenih ciklov (p95 odklon={dev}).",
|
"tol_pooled": "Na podlagi združene variance trajanja {cycles} nedavnih označenih ciklov (p95 odklon={dev}).",
|
||||||
"watchdog": "Ohranjeno tako nizko, kot je varno (3x vrzel posodobitve p95 {p95}s, najmanj 30s), da se zastoji hitro zaznajo brez lažnih ustavitev."
|
"watchdog": "Ohranjeno tako nizko, kot je varno (tik nad vrzeljo posodobitve p95 {p95}s, najmanj 30s), da se zastoji hitro zaznajo brez lažnih ustavitev."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Izključeno {total} napačno zaznanih ciklov: {parts}.",
|
"summary": "Izključeno {total} napačno zaznanih ciklov: {parts}.",
|
||||||
@@ -1688,6 +1805,10 @@
|
|||||||
"name_required": "Ime je obvezno",
|
"name_required": "Ime je obvezno",
|
||||||
"no_split_found": "Ni najdenih nedejavnih vrzeli za razdelitev",
|
"no_split_found": "Ni najdenih nedejavnih vrzeli za razdelitev",
|
||||||
"panel_settings_saved": "Nastavitve plošče shranjene",
|
"panel_settings_saved": "Nastavitve plošče shranjene",
|
||||||
|
"pg_preset_loaded": "Prednastavitev \"{name}\" naložena",
|
||||||
|
"pg_preset_saved": "Prednastavitev \"{name}\" shranjena",
|
||||||
|
"pg_sugg_loaded": "Naloženo {n} predlaganih vrednosti - zaženite peskovnik za primerjavo",
|
||||||
|
"pg_sugg_ml_loaded": "Naloženo {n} ML-umerjenih vrednosti - zaženite peskovnik za primerjavo",
|
||||||
"phase_name_required": "Ime faze je obvezno",
|
"phase_name_required": "Ime faze je obvezno",
|
||||||
"phase_updated": "Faza posodobljena",
|
"phase_updated": "Faza posodobljena",
|
||||||
"phases_saved": "Faze shranjene",
|
"phases_saved": "Faze shranjene",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Drugo"
|
"other": "Drugo"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Pomivalni stroj: sekunde tišine po pričakovanem trajanju, preden se sprosti čakanje na končno izčrpavanje vode",
|
||||||
"anti_wrinkle_enabled": "Vsrkaj vrtilne impulze po glavni fazi, namesto da jih obravnavaš kot nove cikle",
|
"anti_wrinkle_enabled": "Vsrkaj vrtilne impulze po glavni fazi, namesto da jih obravnavaš kot nove cikle",
|
||||||
"anti_wrinkle_exit_power": "Moč mora med impulzi pasti pod to vrednost, da zaščita pred gubami ostane aktivna",
|
"anti_wrinkle_exit_power": "Moč mora med impulzi pasti pod to vrednost, da zaščita pred gubami ostane aktivna",
|
||||||
"anti_wrinkle_idle_timeout": "Dovoljeni mir med dvema vrtilnima impulzoma, preden se zaščita pred gubami konča",
|
"anti_wrinkle_idle_timeout": "Dovoljeni mir med dvema vrtilnima impulzoma, preden se zaščita pred gubami konča",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entiteti nuk u gjet",
|
||||||
|
"running_long": "Po zgjat",
|
||||||
|
"remaining": "mbetur",
|
||||||
|
"progress": "përparimi",
|
||||||
|
"show_time_remaining": "Shfaq kohën e mbetur",
|
||||||
|
"show_percentage": "Shfaq përqindjen",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Pllakëz (kompakte)",
|
||||||
|
"detail": "Detaje (i pasur)",
|
||||||
|
"glance": "Vështrim (pajisje të shumta)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pauzë",
|
||||||
|
"resume": "Vazhdo",
|
||||||
|
"terminate": "Përfundo ciklin",
|
||||||
|
"record_start": "Fillo regjistrimin",
|
||||||
|
"record_stop": "Ndalo regjistrimin",
|
||||||
|
"program": "Programi",
|
||||||
|
"open_panel": "Hap WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Paraqitja",
|
||||||
|
"entity": "Entiteti i pajisjes",
|
||||||
|
"entities": "Pajisjet",
|
||||||
|
"title": "Titulli",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Shfaq gjendjen",
|
||||||
|
"show_program": "Shfaq programin",
|
||||||
|
"show_progress_bar": "Shfaq shiritin e progresit",
|
||||||
|
"spin_icon": "Rrotullo ikonën gjatë punës",
|
||||||
|
"display_mode": "Rreshti i detajeve",
|
||||||
|
"active_color": "Mbivendosje e ngjyrës aktive",
|
||||||
|
"show_phase": "Shfaq fazën",
|
||||||
|
"show_energy": "Shfaq energjinë dhe koston",
|
||||||
|
"show_anomaly": "Shfaq paralajmërimin e tejkalimit",
|
||||||
|
"show_sparkline": "Shfaq grafikun e drejtpërdrejtë të fuqisë",
|
||||||
|
"buttons": "Butonat e veprimeve",
|
||||||
|
"program_entity": "Entiteti i programit (mbivendosje)",
|
||||||
|
"time_entity": "Entiteti i kohës (mbivendosje)",
|
||||||
|
"pct_entity": "Entiteti i progresit (mbivendosje)",
|
||||||
|
"power_entity": "Entiteti i fuqisë (mbivendosje)",
|
||||||
|
"tap_action": "Veprimi me prekje",
|
||||||
|
"hold_action": "Veprimi me mbajtje",
|
||||||
|
"double_tap_action": "Veprimi me prekje të dyfishtë"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "U zbuluan {n} anomali (p.sh. dera e hapur në mes të ciklit) – hapeni për t'i parë ato në grafik",
|
"artifact_tip": "U zbuluan {n} anomali (p.sh. dera e hapur në mes të ciklit) – hapeni për t'i parë ato në grafik",
|
||||||
"auto": "(zbuluar automatikisht)",
|
"auto": "(zbuluar automatikisht)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Ndalo ciklin aktiv – pajisja do të vazhdojë nga aty ku kishte mbetur",
|
"pause_cycle_tip": "Ndalo ciklin aktiv – pajisja do të vazhdojë nga aty ku kishte mbetur",
|
||||||
"pg_apply_device": "Apliko te pajisja",
|
"pg_apply_device": "Apliko te pajisja",
|
||||||
"pg_autofill": "Mbushje automatike",
|
"pg_autofill": "Mbushje automatike",
|
||||||
|
"pg_load_calibrated": "Ngarko të kalibruar (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Ngarkon cilësimet e kalibruara nga ML si anashkalime të zonës së provave",
|
||||||
|
"pg_load_live": "Ngarko cilësimet aktive",
|
||||||
|
"pg_load_live_tip": "Rilexo cilësimet aktuale të integrimit dhe hidh poshtë çdo ndryshim në zonën e provave",
|
||||||
|
"pg_load_suggested": "Ngarko sugjerime ({n})",
|
||||||
|
"pg_load_suggested_tip": "Ngarkon sugjerime aktuale të sintonizuesit automatik si anashkalime të zonës së provave",
|
||||||
|
"pg_preset_delete": "Fshi konfigurimin",
|
||||||
|
"pg_preset_load": "Ngarko konfigurimin",
|
||||||
|
"pg_preset_load_tip": "Zëvendëso vlerat e zonës së provave me këtë konfigurim (cilësimet aktive nuk preken)",
|
||||||
|
"pg_preset_save": "Ruaj si konfigurim",
|
||||||
|
"pg_preset_save_tip": "Ruaj të gjitha vlerat më poshtë si një konfigurim me emër për këtë pajisje",
|
||||||
|
"pg_publish_all": "Apliko {n} te integrimi",
|
||||||
|
"pg_publish_one": "Apliko {label} te integrimi",
|
||||||
"play": "Luaj",
|
"play": "Luaj",
|
||||||
"process": "Proceso",
|
"process": "Proceso",
|
||||||
"process_history": "Proceso tani",
|
"process_history": "Proceso tani",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Shkarko eksportin",
|
"download_export": "Shkarko eksportin",
|
||||||
"analyze_import": "Analizo skedarin",
|
"analyze_import": "Analizo skedarin",
|
||||||
"import_selected": "Importo të zgjedhurat",
|
"import_selected": "Importo të zgjedhurat",
|
||||||
"back": "Prapa"
|
"back": "Prapa",
|
||||||
|
"mute_suggestion": "Mos e sugjeroni këtë cilësim",
|
||||||
|
"reset_muted": "Rivendos të heshturat"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Asnjë automatizim nuk i referohet kësaj pajisjeje ende.",
|
"no_automations": "Asnjë automatizim nuk i referohet kësaj pajisjeje ende.",
|
||||||
"panel_settings": "Cilësimet e panelit",
|
"panel_settings": "Cilësimet e panelit",
|
||||||
"param_sweep": "Skanim parametrash",
|
"param_sweep": "Skanim parametrash",
|
||||||
|
"pg_settings_source": "Burimi i cilësimeve",
|
||||||
"phase_catalog": "Katalog fazash",
|
"phase_catalog": "Katalog fazash",
|
||||||
"playground": "Zona e provave",
|
"playground": "Zona e provave",
|
||||||
"process_history": "Historiku i procesit",
|
"process_history": "Historiku i procesit",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "Rezultati i përputhjes",
|
"pg_match_score": "Rezultati i përputhjes",
|
||||||
"pg_pct_of": "{p}% e {total}",
|
"pg_pct_of": "{p}% e {total}",
|
||||||
"pg_poor_match": "Përputhje e keqe",
|
"pg_poor_match": "Përputhje e keqe",
|
||||||
|
"pg_preset": "Konfigurimi i zonës së provave",
|
||||||
|
"pg_preset_name": "Emri i konfigurimit të ri",
|
||||||
|
"pg_preset_none": "Zgjidhni një konfigurim…",
|
||||||
"pg_strong_match": "Përputhje e fortë",
|
"pg_strong_match": "Përputhje e fortë",
|
||||||
"pg_tile_ambiguous": "Të paqarta",
|
"pg_tile_ambiguous": "Të paqarta",
|
||||||
"pg_tile_ambiguous_tip": "Cikle me barazim të afërt midis dy programeve",
|
"pg_tile_ambiguous_tip": "Cikle me barazim të afërt midis dy programeve",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Përplasjet e emrave",
|
"conflict_resolution": "Përplasjet e emrave",
|
||||||
"conflict_import_copy": "Importo si kopje",
|
"conflict_import_copy": "Importo si kopje",
|
||||||
"conflict_keep_mine": "Mba të miat",
|
"conflict_keep_mine": "Mba të miat",
|
||||||
"conflict_overwrite": "Mbishkruaj"
|
"conflict_overwrite": "Mbishkruaj",
|
||||||
|
"font_size": "Madhësia e shkronjave të panelit"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Të gjitha nivelet",
|
"all_levels": "Të gjitha nivelet",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Të aplikohet vlera më e mirë: {label} = {value}?",
|
"pg_apply_confirm": "Të aplikohet vlera më e mirë: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Zgjidhni një cikël më sipër, pastaj shtypni Ngarko për të parë gjurmën e tij të fuqisë.",
|
"pg_canvas_empty": "Zgjidhni një cikël më sipër, pastaj shtypni Ngarko për të parë gjurmën e tij të fuqisë.",
|
||||||
"pg_chart_caption": "Shkalla e zbulimit/përputhjes sipas vlerave të {param}",
|
"pg_chart_caption": "Shkalla e zbulimit/përputhjes sipas vlerave të {param}",
|
||||||
|
"pg_ctrl_intro": "Vlerat nisen nga cilësimet aktive të integrimit për këtë pajisje. Ndryshimet qëndrojnë në zonën e provave derisa t'i aplikoni.",
|
||||||
|
"pg_live_unavailable": "Cilësimet aktive nuk janë të disponueshme, po shfaqen vlerat e parazgjedhura.",
|
||||||
|
"pg_load_live_confirm": "Të hidhen poshtë ndryshimet në zonën e provave ({n}) dhe të ringarkohen cilësimet aktuale të integrimit?",
|
||||||
"pg_match_rate": "{pct}% shkallë përputhjeje në {total} cikle",
|
"pg_match_rate": "{pct}% shkallë përputhjeje në {total} cikle",
|
||||||
|
"pg_matches_live": "Përputhet me cilësimet aktive",
|
||||||
|
"pg_n_changed": "Ndryshime kundrejt cilësimeve aktive: {n}",
|
||||||
|
"pg_sugg_none": "Të gjitha sugjerime tashmë përputhen me cilësimet aktuale",
|
||||||
|
"pg_preset_delete_confirm": "Të fshihet konfigurimi \"{name}\"?",
|
||||||
|
"pg_preset_limit": "U arrit kufiri i konfigurimeve ({n})",
|
||||||
|
"pg_preset_overwrite": "Të mbishkruhet konfigurimi \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Të ruhet {label} = {value} te cilësimet e kësaj pajisjeje?",
|
||||||
"pg_restart_note": "Rinisni Home Assistant për të aktivizuar mjetet e simulimit.",
|
"pg_restart_note": "Rinisni Home Assistant për të aktivizuar mjetet e simulimit.",
|
||||||
"pg_sim_progress": "{done} / {total} cikle",
|
"pg_sim_progress": "{done} / {total} cikle",
|
||||||
"pg_starting": "Duke filluar…",
|
"pg_starting": "Duke filluar…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Kohëzgjatja në tendencë më e shkurtër ({pct}%/cikël) - mesatare e fundit {avg}",
|
"trend_duration_shorter": "Kohëzgjatja në tendencë më e shkurtër ({pct}%/cikël) - mesatare e fundit {avg}",
|
||||||
"trend_energy_down": "Tendenca e energjisë në rënie ({pct}%/cikël)",
|
"trend_energy_down": "Tendenca e energjisë në rënie ({pct}%/cikël)",
|
||||||
"trend_energy_up": "Tendenca e energjisë në rritje ({pct}%/cikël) - mesatarisht kohët e fundit {avg}",
|
"trend_energy_up": "Tendenca e energjisë në rritje ({pct}%/cikël) - mesatarisht kohët e fundit {avg}",
|
||||||
|
"trim_destructive_confirm": "Kjo ruan vetëm {pct}% të ciklit dhe nuk mund të zhbëhet. Vazhdoni?",
|
||||||
"trim_intro": "Zvarrit dorëzat e kuqe ose futo vlerat. Gjithçka jashtë dritares hiqet.",
|
"trim_intro": "Zvarrit dorëzat e kuqe ose futo vlerat. Gjithçka jashtë dritares hiqet.",
|
||||||
"tuning_suggestions_available": "Ofrohet {count} sugjerim akordimi nga ciklet e vëzhguara. Ato shfaqen pranë fushave përkatëse.",
|
"tuning_suggestions_available": "Ofrohet {count} sugjerim akordimi nga ciklet e vëzhguara. Ato shfaqen pranë fushave përkatëse.",
|
||||||
"unsure_detected_prefix": "WashData nuk është i sigurt se ka zbuluar",
|
"unsure_detected_prefix": "WashData nuk është i sigurt se ka zbuluar",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "Artikujt e importuar shtohen; asgjë lokale nuk humbet. Përplasjet e emrave zgjidhen më poshtë.",
|
"merge_hint": "Artikujt e importuar shtohen; asgjë lokale nuk humbet. Përplasjet e emrave zgjidhen më poshtë.",
|
||||||
"replace_warn": "Çdo kategori e shënuar fshihet dhe zëvendësohet nga skedari. Kategoritë e pashënuara mbeten të paprekura.",
|
"replace_warn": "Çdo kategori e shënuar fshihet dhe zëvendësohet nga skedari. Kategoritë e pashënuara mbeten të paprekura.",
|
||||||
"dest_reference_hint": "Ciklet e importuara vetëm përmirësojnë njohjen e programit dhe nuk ndikojnë kurrë në statistikat e përdorimit/energjisë.",
|
"dest_reference_hint": "Ciklet e importuara vetëm përmirësojnë njohjen e programit dhe nuk ndikojnë kurrë në statistikat e përdorimit/energjisë.",
|
||||||
"dest_real_history_hint": "Ciklet e importuara llogariten si historik i vetë kësaj pajisjeje dhe ushqejnë statistikat e energjisë/përdorimit. Përdoreni për të zhvendosur një pajisje në një instalim të ri."
|
"dest_real_history_hint": "Ciklet e importuara llogariten si historik i vetë kësaj pajisjeje dhe ushqejnë statistikat e energjisë/përdorimit. Përdoreni për të zhvendosur një pajisje në një instalim të ri.",
|
||||||
|
"sug_muted": "Ky cilësim nuk do të sugjerohet më",
|
||||||
|
"sug_mute_failed": "Nuk mund të heshtte sugjerimi",
|
||||||
|
"sug_unmuted_all": "Sugjerime të heshtura u rivendosën",
|
||||||
|
"n_suggestions_muted": "{count} të heshtura; motori i sugjerimeve nuk do t'i propozojë këto.",
|
||||||
|
"font_size_hint": "Bëni gjithçka në këtë panel më të madhe ose më të vogël. Aplikohet për llogarinë tuaj në këtë pajisje."
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Rrotullime të shkurtra të herëpashershme pas përfundimit për të reduktuar rrudhat.",
|
"anti_crease": "Rrotullime të shkurtra të herëpashershme pas përfundimit për të reduktuar rrudhat.",
|
||||||
@@ -1009,6 +1093,10 @@
|
|||||||
"phase_eta": {
|
"phase_eta": {
|
||||||
"label": "Koha e Mbetur",
|
"label": "Koha e Mbetur",
|
||||||
"intro": "Kohë e mbetur e ndërgjegjshme për fazat, për makinat gjatësia e ciklit të të cilave varet nga temperatura ose centrifugimi."
|
"intro": "Kohë e mbetur e ndërgjegjshme për fazat, për makinat gjatësia e ciklit të të cilave varet nga temperatura ose centrifugimi."
|
||||||
|
},
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Pjatalarëse",
|
||||||
|
"intro": "Trajtimi i fundit të ciklit për pjatalarëset, të cilat zakonisht përfundojnë me një fazë të gjatë tharjeje pothuajse pa konsum energjie përpara një shkarkimi të shkurtër përfundimtar."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
@@ -1232,6 +1320,10 @@
|
|||||||
"doc": "Minuta pasi përfundon një cikël përpara se të dërgoni alarmin rikujtues \"shkarkoni makinën\" ende në pritje. Vendosni 0 për të çaktivizuar kujtesën.",
|
"doc": "Minuta pasi përfundon një cikël përpara se të dërgoni alarmin rikujtues \"shkarkoni makinën\" ende në pritje. Vendosni 0 për të çaktivizuar kujtesën.",
|
||||||
"label": "Vonesë njoftimi për shkarkim"
|
"label": "Vonesë njoftimi për shkarkim"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Ridërgon kujtesën për shkarkim çdo \"Vonesë njoftimi për shkarkim\" minuta, derisa të hapni derën ose të prekni \"Ndalo kujtesat\" në njoftim. Kërkon Entitetin e sensorit të derës (ashtu si edhe vetë kujtesa). Butoni i largimit funksionon në njoftimet e aplikacionit-shoqërues (celular) të Home Assistant.",
|
||||||
|
"label": "Përsërit derisa të hapet dera"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Koha për të pritur pasi të bjerë energjia përpara se të deklaroni ciklin të përfunduar. Nëse rryma rifillon brenda kësaj dritareje, cikli vazhdon pa probleme - kjo lidh pauzat midis fazave të larjes. Enëlarëset kanë faza të gjata tharjeje (fikje për 20-60 min), kështu që vonesa e fikjes duhet ta kalojë atë për të mbajtur të gjithë larjen+tharjen si një cikël.",
|
"doc": "Koha për të pritur pasi të bjerë energjia përpara se të deklaroni ciklin të përfunduar. Nëse rryma rifillon brenda kësaj dritareje, cikli vazhdon pa probleme - kjo lidh pauzat midis fazave të larjes. Enëlarëset kanë faza të gjata tharjeje (fikje për 20-60 min), kështu që vonesa e fikjes duhet ta kalojë atë për të mbajtur të gjithë larjen+tharjen si një cikël.",
|
||||||
"label": "Vonesë fikjeje"
|
"label": "Vonesë fikjeje"
|
||||||
@@ -1406,6 +1498,30 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Saktësia e Energjisë",
|
"label": "Saktësia e Energjisë",
|
||||||
"doc": "Ashpërsia e ndëshkimit të marrëveshjes së energjisë së Etapës 4. Më i vogël = më i rreptë: një mospërputhje energjie ndëshkon më shumë. Parazgjedhja 0.25 është me qëllim më lejuese se Ashpërsia e Kohëzgjatjes sepse energjia ndryshon me ngarkesën. Çiftojeni me Peshën e Energjisë."
|
"doc": "Ashpërsia e ndëshkimit të marrëveshjes së energjisë së Etapës 4. Më i vogël = më i rreptë: një mospërputhje energjie ndëshkon më shumë. Parazgjedhja 0.25 është me qëllim më lejuese se Ashpërsia e Kohëzgjatjes sepse energjia ndryshon me ngarkesën. Çiftojeni me Peshën e Energjisë."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Intervali i Profilit të Energjisë",
|
||||||
|
"doc": "Madhësia e kovës për atributin e sensorit power_profile (vargu i sheshtë me vat mesatare për slot) të konsumuar nga planifikues të jashtëm si EMHASS dhe tibber_prices. Kova më të vogla mbajnë pikat e shkurtra të energjisë të mprehta; kova më të mëdha zbuten forma. Parazgjedhja 15 min. Vetëm për lexim; nuk ndikon zbulimin."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Mbaj njoftimin live pas trokitjes",
|
||||||
|
"doc": "Vetëm Android. Bëni njoftimin e progresit live të vazhdueshëm (sticky) kështu që trokitja mbi të nuk e humb fijen e vazhdueshme. Off ruan sjelljen e parazgjedhur ku trokitja e humb atë."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Destinacioni i trokitjes së njoftimit live",
|
||||||
|
"doc": "Vetëm Android. Ku hap trokitja mbi njoftimin e progresit live (p.sh. /lovelace/laundry ose një URL e plotë) në vend të faqes kryesore të aplikacionit. Lëreni bosh për parazgjedhjen."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Dera hapet automatikisht në fund",
|
||||||
|
"doc": "Për pjatalarëset që hapin derën në fund të ciklit për t'u tharë (AirDry dhe të ngjashme). Kur kjo është aktive, hapja e derës gjatë një cikli nuk e ndal atë përgjithmonë; nëse dera qëndron hapur për kohën e pritjes më poshtë, WashData e trajton ciklin si të përfunduar. Një hapje e shkurtër (shtimi i një gjëje) injorohet. Kërkon një Entitet Sensori Dere."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Koha e pritjes me derë të hapur",
|
||||||
|
"doc": "Sa gjatë duhet të qëndrojë dera hapur përpara se WashData të përfundojë ciklin, kur \"Dera hapet automatikisht në fund\" është aktive. E gjatë sa të injorojë shtimin e shpejtë të një pjate (parazgjedhja 60 s), e shkurtër sa të përfundojë shpejt pasi makina hap derën."
|
||||||
|
},
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Lirim në qetësi gjatë tharjes pasive",
|
||||||
|
"doc": "Sapo cikli të kalojë kohëzgjatjen e tij të pritur, sa kohë duhet të qëndrojë e qetë pjatalarësja (nën Pragun e ndalimit) përpara se WashData të ndalojë pritjen për një shkarkim përfundimtar dhe ta mbyllë ciklin. Rriteni nëse makina juaj ka një fazë të gjatë tharjeje të heshtur përpara një shkarkimi përfundimtar të vonuar që po humbet - një dritare më e gjerë e lejon kohëzgjatjen e mësuar të ndjekë zhvendosjen sezonale (ujë hyrës më i ftohtë = cikle më të gjata) në vend që të bllokohet në mesataren e vjetër. Ai vetëm sa e shkurton pritjen në raport me kufirin e brendshëm 30-minutësh të kulmit të fundit, kurrë nuk e zgjat."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Kërkohet emri",
|
"name_required": "Kërkohet emri",
|
||||||
"no_split_found": "Nuk u gjetën ndërrimi të papunë për ndarje",
|
"no_split_found": "Nuk u gjetën ndërrimi të papunë për ndarje",
|
||||||
"panel_settings_saved": "Cilësimet e panelit u ruajtën",
|
"panel_settings_saved": "Cilësimet e panelit u ruajtën",
|
||||||
|
"pg_preset_loaded": "Konfigurimi \"{name}\" u ngarkua",
|
||||||
|
"pg_preset_saved": "Konfigurimi \"{name}\" u ruajt",
|
||||||
|
"pg_sugg_loaded": "{n} vlera të sugjeruara u ngarkuan - ekzekuto zonën e provave për krahasim",
|
||||||
|
"pg_sugg_ml_loaded": "{n} vlera ML të kalibruara u ngarkuan - ekzekuto zonën e provave për krahasim",
|
||||||
"phase_name_required": "Kërkohet emri i fazës",
|
"phase_name_required": "Kërkohet emri i fazës",
|
||||||
"phase_updated": "Faza u përditësua",
|
"phase_updated": "Faza u përditësua",
|
||||||
"phases_saved": "Fazat u ruajtën",
|
"phases_saved": "Fazat u ruajtën",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "Bazuar në fuqinë minimale aktive ({min}W) të vëzhguar në ciklin e fundit.",
|
"min_active": "Bazuar në fuqinë minimale aktive ({min}W) të vëzhguar në ciklin e fundit.",
|
||||||
"min_duration_ratio": "Mbahet sa më i ulët që një program të njihet herët në cikël; pragjet e besueshmërisë dhe të paqartësisë parandalojnë konfirmimet e parakohshme.",
|
"min_duration_ratio": "Mbahet sa më i ulët që një program të njihet herët në cikël; pragjet e besueshmërisë dhe të paqartësisë parandalojnë konfirmimet e parakohshme.",
|
||||||
"min_off_gap": "Bazuar në {gaps} boshllëqe të vëzhguara ndërmjet cikleve (p05={p05}s). Kufiri minimal i pajisjes: {floor}s.",
|
"min_off_gap": "Bazuar në {gaps} boshllëqe të vëzhguara ndërmjet cikleve (p05={p05}s). Kufiri minimal i pajisjes: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Përcaktuar që të kapërcejë periudhën më të gjatë të qetësisë brenda ciklit: {span}s + 60s rezervë, nga {spans} boshllëqe të kapërcyera në {cycles} cikle të pastra (qëndron nën {ceiling}s, pauza më e shkurtër që lini midis dy nisjeve të njëpasnjëshme).",
|
||||||
"min_power": "40% e fuqisë aktive më të ulët p05 ({p05}W) në {cycles} cikle të pastra, duke e mbajtur pragun e fikjes nën konsumin real.{excl}",
|
"min_power": "40% e fuqisë aktive më të ulët p05 ({p05}W) në {cycles} cikle të pastra, duke e mbajtur pragun e fikjes nën konsumin real.{excl}",
|
||||||
"ml_auto_label": "Besueshmëria më e ulët që modeli i cilësisë e vlerësoi ende si të pastër (p10 e {cycles} cikleve të pastra = {p10}).",
|
"ml_auto_label": "Besueshmëria më e ulët që modeli i cilësisë e vlerësoi ende si të pastër (p10 e {cycles} cikleve të pastra = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cikle ({pct}%) patën një pauzë që zbuluesi i fundit e vlerësoi >50%; kërkohen {val} konfirmim(e) fundi.",
|
"ml_end_repeat": "{false}/{total} cikle ({pct}%) patën një pauzë që zbuluesi i fundit e vlerësoi >50%; kërkohen {val} konfirmim(e) fundi.",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Mbahet pak mbi fuqinë aktive më të ulët p05 në {cycles} cikle ({p05}W) që një nisje të kapet sa më herët të jetë e mundur dhe pragu i ndalimit të mbetet nën fuqinë më të ulët të punës së makinës.",
|
"thr_batch": "Mbahet pak mbi fuqinë aktive më të ulët p05 në {cycles} cikle ({p05}W) që një nisje të kapet sa më herët të jetë e mundur dhe pragu i ndalimit të mbetet nën fuqinë më të ulët të punës së makinës.",
|
||||||
"tol_per_profile": "p75 e variancës së kohëzgjatjes për profil në {profiles} profile ({cycles} cikle); profilet e qëndrueshme nuk penalizohen.",
|
"tol_per_profile": "p75 e variancës së kohëzgjatjes për profil në {profiles} profile ({cycles} cikle); profilet e qëndrueshme nuk penalizohen.",
|
||||||
"tol_pooled": "Bazuar në variancën e bashkuar të kohëzgjatjes së {cycles} cikleve të fundit të etiketuara (devijimi p95={dev}).",
|
"tol_pooled": "Bazuar në variancën e bashkuar të kohëzgjatjes së {cycles} cikleve të fundit të etiketuara (devijimi p95={dev}).",
|
||||||
"watchdog": "Mbahet sa më i ulët në mënyrë të sigurt (3x boshllëku i përditësimit p95 prej {p95}s, min. 30s) që bllokimet të kapen shpejt pa ndalime të rreme."
|
"watchdog": "Mbahet sa më i ulët në mënyrë të sigurt (pak mbi boshllëkun e përditësimit p95 prej {p95}s, min. 30s) që bllokimet të kapen shpejt pa ndalime të rreme."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "U përjashtuan {total} cikle të zbuluar gabimisht: {parts}.",
|
"summary": "U përjashtuan {total} cikle të zbuluar gabimisht: {parts}.",
|
||||||
@@ -1795,7 +1916,8 @@
|
|||||||
"dtw_ddtw_scale": "Etapa 3: distanca e gjysmë-ngopjes DDTW; më e vogël = më e ndjeshme ndaj formës (parazgjedhja 30)",
|
"dtw_ddtw_scale": "Etapa 3: distanca e gjysmë-ngopjes DDTW; më e vogël = më e ndjeshme ndaj formës (parazgjedhja 30)",
|
||||||
"dtw_refine_top_n": "Etapa 3: kandidatë të rishënuara nga DTW; rriteni në 7-9 nëse profili i saktë renditet i 4-5 (parazgjedhja 5)",
|
"dtw_refine_top_n": "Etapa 3: kandidatë të rishënuara nga DTW; rriteni në 7-9 nëse profili i saktë renditet i 4-5 (parazgjedhja 5)",
|
||||||
"duration_scale": "Etapa 4: raporti logaritmik ku marrëveshja e kohëzgjatjes gjysmohet; më i vogël = ndëshkim më i rreptë (parazgjedhja 0.175)",
|
"duration_scale": "Etapa 4: raporti logaritmik ku marrëveshja e kohëzgjatjes gjysmohet; më i vogël = ndëshkim më i rreptë (parazgjedhja 0.175)",
|
||||||
"energy_scale": "Etapa 4: raporti logaritmik ku marrëveshja e energjisë gjysmohet; më i vogël = ndëshkim më i rreptë (parazgjedhja 0.25)"
|
"energy_scale": "Etapa 4: raporti logaritmik ku marrëveshja e energjisë gjysmohet; më i vogël = ndëshkim më i rreptë (parazgjedhja 0.25)",
|
||||||
|
"dishwasher_end_spike_quiet_release": "Pjatalarëse: sekonda qetësie pas kohëzgjatjes së pritur para se të lirohet pritja e shkarkimit në fund të ciklit"
|
||||||
},
|
},
|
||||||
"col": {
|
"col": {
|
||||||
"profile_tip": "Emri i programit të përputhur. I paetiketuar do të thotë se asnjë profil nuk u përputh në fund të ciklit.",
|
"profile_tip": "Emri i programit të përputhur. I paetiketuar do të thotë se asnjë profil nuk u përputh në fund të ciklit.",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entitet nije pronađen",
|
||||||
|
"running_long": "Traje predugo",
|
||||||
|
"remaining": "preostalo",
|
||||||
|
"progress": "napredak",
|
||||||
|
"show_time_remaining": "Prikaži preostalo vreme",
|
||||||
|
"show_percentage": "Prikaži procenat",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Pločica (kompaktno)",
|
||||||
|
"detail": "Detaljno (bogato)",
|
||||||
|
"glance": "Pregled (više uređaja)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pauziraj",
|
||||||
|
"resume": "Nastavi",
|
||||||
|
"terminate": "Završi ciklus",
|
||||||
|
"record_start": "Započni snimanje",
|
||||||
|
"record_stop": "Zaustavi snimanje",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Otvori WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Izgled",
|
||||||
|
"entity": "Entitet uređaja",
|
||||||
|
"entities": "Uređaji",
|
||||||
|
"title": "Naslov",
|
||||||
|
"icon": "Ikona",
|
||||||
|
"show_state": "Prikaži stanje",
|
||||||
|
"show_program": "Prikaži program",
|
||||||
|
"show_progress_bar": "Prikaži traku napretka",
|
||||||
|
"spin_icon": "Rotiraj ikonu tokom rada",
|
||||||
|
"display_mode": "Red sa detaljima",
|
||||||
|
"active_color": "Zamena aktivne boje",
|
||||||
|
"show_phase": "Prikaži fazu",
|
||||||
|
"show_energy": "Prikaži energiju i trošak",
|
||||||
|
"show_anomaly": "Prikaži upozorenje o produženju",
|
||||||
|
"show_sparkline": "Prikaži grafikon snage uživo",
|
||||||
|
"buttons": "Dugmad za radnje",
|
||||||
|
"program_entity": "Entitet programa (zamena)",
|
||||||
|
"time_entity": "Entitet vremena (zamena)",
|
||||||
|
"pct_entity": "Entitet napretka (zamena)",
|
||||||
|
"power_entity": "Entitet snage (zamena)",
|
||||||
|
"tap_action": "Radnja dodira",
|
||||||
|
"hold_action": "Radnja držanja",
|
||||||
|
"double_tap_action": "Radnja dvostrukog dodira"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Otkriveno je {n} anomalija (npr. vrata otvorena usred ciklusa) – otvorite da ih vidite na grafikonu",
|
"artifact_tip": "Otkriveno je {n} anomalija (npr. vrata otvorena usred ciklusa) – otvorite da ih vidite na grafikonu",
|
||||||
"auto": "(automatski otkriveno)",
|
"auto": "(automatski otkriveno)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Odbaci",
|
"discard": "Odbaci",
|
||||||
"discard_tip": "Odbaci snimljeni trag bez čuvanja",
|
"discard_tip": "Odbaci snimljeni trag bez čuvanja",
|
||||||
"dismiss": "Odbij",
|
"dismiss": "Odbij",
|
||||||
|
"mute_suggestion": "Prestani predlagati ovo podešavanje",
|
||||||
|
"pg_load_calibrated": "Učitaj kalibrisano (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Učitaj ML-kalibrisana podešavanja kao zamene u testnom okruženju",
|
||||||
|
"pg_load_live": "Učitaj aktivna podešavanja",
|
||||||
|
"pg_load_live_tip": "Ponovo pročitaj trenutna podešavanja integracije i odbaci sve izmene u testnom okruženju",
|
||||||
|
"pg_load_suggested": "Učitaj predloženo ({n})",
|
||||||
|
"pg_load_suggested_tip": "Učitaj trenutne predloge automatskog podešavanja kao zamene u testnom okruženju",
|
||||||
|
"pg_preset_delete": "Izbriši konfiguraciju",
|
||||||
|
"pg_preset_load": "Učitaj konfiguraciju",
|
||||||
|
"pg_preset_load_tip": "Zameni vrednosti u testnom okruženju ovom konfiguracijom (aktivna podešavanja ostaju netaknuta)",
|
||||||
|
"pg_preset_save": "Sačuvaj kao konfiguraciju",
|
||||||
|
"pg_preset_save_tip": "Sačuvaj sve vrednosti ispod kao imenovanu konfiguraciju za ovaj uređaj",
|
||||||
|
"pg_publish_all": "Primeni {n} na integraciju",
|
||||||
|
"pg_publish_one": "Primeni {label} na integraciju",
|
||||||
|
"reset_muted": "Resetuj utišane",
|
||||||
"done": "Gotovo",
|
"done": "Gotovo",
|
||||||
"edit": "Uredi",
|
"edit": "Uredi",
|
||||||
"export": "Izvezi",
|
"export": "Izvezi",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Nijedna automatizacija ne referencira ovaj uređaj još.",
|
"no_automations": "Nijedna automatizacija ne referencira ovaj uređaj još.",
|
||||||
"panel_settings": "Podešavanja panela",
|
"panel_settings": "Podešavanja panela",
|
||||||
"param_sweep": "Ispitivanje parametra",
|
"param_sweep": "Ispitivanje parametra",
|
||||||
|
"pg_settings_source": "Izvor podešavanja",
|
||||||
"phase_catalog": "Katalog faza",
|
"phase_catalog": "Katalog faza",
|
||||||
"playground": "Testno okruženje",
|
"playground": "Testno okruženje",
|
||||||
"process_history": "Istorija procesa",
|
"process_history": "Istorija procesa",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Zadani nivo za korisnike koji nisu navedeni ispod",
|
"default_access_level": "Zadani nivo za korisnike koji nisu navedeni ispod",
|
||||||
"default_other": "Podrazumevano (ostali uređaji)",
|
"default_other": "Podrazumevano (ostali uređaji)",
|
||||||
"default_tab": "Podrazumevana kartica pri otvaranju panela",
|
"default_tab": "Podrazumevana kartica pri otvaranju panela",
|
||||||
|
"font_size": "Veličina fonta panela",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Opis",
|
"description": "Opis",
|
||||||
"dtw_blend_w": "Težina mešanja",
|
"dtw_blend_w": "Težina mešanja",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Ocena poklapanja",
|
"pg_match_score": "Ocena poklapanja",
|
||||||
"pg_pct_of": "{p}% od {total}",
|
"pg_pct_of": "{p}% od {total}",
|
||||||
"pg_poor_match": "Loše poklapanje",
|
"pg_poor_match": "Loše poklapanje",
|
||||||
|
"pg_preset": "Konfiguracija testnog okruženja",
|
||||||
|
"pg_preset_name": "Naziv nove konfiguracije",
|
||||||
|
"pg_preset_none": "Izaberite konfiguraciju…",
|
||||||
"pg_strong_match": "Snažno poklapanje",
|
"pg_strong_match": "Snažno poklapanje",
|
||||||
"pg_tile_ambiguous": "Dvosmisleni",
|
"pg_tile_ambiguous": "Dvosmisleni",
|
||||||
"pg_tile_ambiguous_tip": "Ciklusi sa gotovo izjednačenim poklapanjem između dva programa",
|
"pg_tile_ambiguous_tip": "Ciklusi sa gotovo izjednačenim poklapanjem između dva programa",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Primeniti najbolju vrednost: {label} = {value}?",
|
"pg_apply_confirm": "Primeniti najbolju vrednost: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Izaberite ciklus iznad, zatim pritisnite „Učitaj“ da vidite njegovu krivu snage.",
|
"pg_canvas_empty": "Izaberite ciklus iznad, zatim pritisnite „Učitaj“ da vidite njegovu krivu snage.",
|
||||||
"pg_chart_caption": "Stopa otkrivanja/poklapanja po vrednostima {param}",
|
"pg_chart_caption": "Stopa otkrivanja/poklapanja po vrednostima {param}",
|
||||||
|
"pg_ctrl_intro": "Vrednosti polaze od aktivnih podešavanja integracije za ovaj uređaj. Izmene ostaju u testnom okruženju dok ih ne primenite.",
|
||||||
|
"pg_live_unavailable": "Aktivna podešavanja nisu dostupna, prikazane su zadane vrednosti.",
|
||||||
|
"pg_load_live_confirm": "Odbaciti izmene u testnom okruženju ({n}) i ponovo učitati trenutna podešavanja integracije?",
|
||||||
"pg_match_rate": "{pct}% poklapanja na {total} ciklusa",
|
"pg_match_rate": "{pct}% poklapanja na {total} ciklusa",
|
||||||
|
"pg_matches_live": "Odgovara aktivnim podešavanjima",
|
||||||
|
"pg_n_changed": "Promene u odnosu na aktivna podešavanja: {n}",
|
||||||
|
"pg_sugg_none": "Svi predlozi već odgovaraju trenutnim podešavanjima",
|
||||||
|
"pg_preset_delete_confirm": "Izbrisati konfiguraciju \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Dostignut limit konfiguracija ({n})",
|
||||||
|
"pg_preset_overwrite": "Prepisati konfiguraciju \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Sačuvati {label} = {value} u podešavanja ovog uređaja?",
|
||||||
"pg_restart_note": "Ponovo pokrenite Home Assistant da biste omogućili alatke za simulaciju.",
|
"pg_restart_note": "Ponovo pokrenite Home Assistant da biste omogućili alatke za simulaciju.",
|
||||||
"pg_sim_progress": "{done} / {total} ciklusa",
|
"pg_sim_progress": "{done} / {total} ciklusa",
|
||||||
"pg_starting": "Pokretanje…",
|
"pg_starting": "Pokretanje…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Preference, panel i kontrola pristupa",
|
"preferences_admin": "Preference, panel i kontrola pristupa",
|
||||||
"preferences_adv": "Preference",
|
"preferences_adv": "Preference",
|
||||||
"prefs_personal": "Ovo se odnosi samo na vaš Home Assistant nalog.",
|
"prefs_personal": "Ovo se odnosi samo na vaš Home Assistant nalog.",
|
||||||
|
"font_size_hint": "Povećajte ili smanjite sve u ovom panelu. Primenjuje se na vaš nalog na ovom uređaju.",
|
||||||
"process_history_hint": "Ponovo pokrenite uparivanje na svim sačuvanim ciklusima, osvežite predloge podešavanja, ponovo trenirajte ML modele (ako su omogućeni) i ponovo izračunajte zdravlje ciklusa. Pokrenite nakon niza recenzija.",
|
"process_history_hint": "Ponovo pokrenite uparivanje na svim sačuvanim ciklusima, osvežite predloge podešavanja, ponovo trenirajte ML modele (ako su omogućeni) i ponovo izračunajte zdravlje ciklusa. Pokrenite nakon niza recenzija.",
|
||||||
"profile_deleted": "Profil obrisan",
|
"profile_deleted": "Profil obrisan",
|
||||||
"profile_poor_health_detail": "Ciklusi koji su dodeljeni ovom profilu imaju nedosledne oblike ili nisku pouzdanost. Razmislite o ponovnoj izgradnji omotača ili pregledu označenih ciklusa.",
|
"profile_poor_health_detail": "Ciklusi koji su dodeljeni ovom profilu imaju nedosledne oblike ili nisku pouzdanost. Razmislite o ponovnoj izgradnji omotača ili pregledu označenih ciklusa.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Klikni na grafikon za dodavanje ili uklanjanje tačke deljenja, ili automatski otkrij po prazninama. Svaki rezultujući segment može dobiti sopstveni profil.",
|
"split_intro": "Klikni na grafikon za dodavanje ili uklanjanje tačke deljenja, ili automatski otkrij po prazninama. Svaki rezultujući segment može dobiti sopstveni profil.",
|
||||||
"storage_diagnostics": "Statistike skladištenja, održavanje, izvoz/uvoz",
|
"storage_diagnostics": "Statistike skladištenja, održavanje, izvoz/uvoz",
|
||||||
"sug_staged": "Postavljeno {key} = {val}. Sačuvajte za primenu.",
|
"sug_staged": "Postavljeno {key} = {val}. Sačuvajte za primenu.",
|
||||||
|
"sug_muted": "Ovo podešavanje neće biti predlagano ponovo",
|
||||||
|
"sug_mute_failed": "Predlog nije mogao biti utišan",
|
||||||
|
"sug_unmuted_all": "Utišani predlozi su resetovani",
|
||||||
|
"n_suggestions_muted": "{count} utišano; auto-podešivač neće predlagati ova podešavanja.",
|
||||||
"toast_auto_detect_enabled": "Automatsko otkrivanje omogućeno",
|
"toast_auto_detect_enabled": "Automatsko otkrivanje omogućeno",
|
||||||
"toast_auto_label_complete": "Automatsko označavanje završeno",
|
"toast_auto_label_complete": "Automatsko označavanje završeno",
|
||||||
"toast_auto_label_failed": "Automatsko označavanje nije uspelo: {error}",
|
"toast_auto_label_failed": "Automatsko označavanje nije uspelo: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Trajanje u trendu kraće ({pct}%/ciklus) – nedavno u proseku {avg}",
|
"trend_duration_shorter": "Trajanje u trendu kraće ({pct}%/ciklus) – nedavno u proseku {avg}",
|
||||||
"trend_energy_down": "Energija opada ({pct}%/ciklus)",
|
"trend_energy_down": "Energija opada ({pct}%/ciklus)",
|
||||||
"trend_energy_up": "Energetski trend raste ({pct}%/ciklus) – nedavni prosek {avg}",
|
"trend_energy_up": "Energetski trend raste ({pct}%/ciklus) – nedavni prosek {avg}",
|
||||||
|
"trim_destructive_confirm": "Ovo zadržava samo {pct}% ciklusa i ne može se poništiti. Nastaviti?",
|
||||||
"trim_intro": "Prevuci crvene ručice ili unesi vrednosti. Sve izvan prozora se uklanja.",
|
"trim_intro": "Prevuci crvene ručice ili unesi vrednosti. Sve izvan prozora se uklanja.",
|
||||||
"tuning_suggestions_available": "{count} prijedlog podešavanja dostupan je iz posmatranih ciklusa. Pojavljuju se pored relevantnih polja.",
|
"tuning_suggestions_available": "{count} prijedlog podešavanja dostupan je iz posmatranih ciklusa. Pojavljuju se pored relevantnih polja.",
|
||||||
"unsure_detected_prefix": "WashData nije siguran da je otkrio",
|
"unsure_detected_prefix": "WashData nije siguran da je otkrio",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Neupotrebljivo"
|
"unusable": "Neupotrebljivo"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Mašina za pranje sudova",
|
||||||
|
"intro": "Obrada kraja ciklusa za mašine za pranje sudova, koje se obično završavaju dugom, gotovo tihom fazom sušenja pre kratkog završnog ispumpavanja vode."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Režim zaštite od gužvanja tkanine detektuje kratke pulseve tumblovanja pri niskoj snazi nakon glavne faze i drži ih pripisanim završenom ciklusu.",
|
"intro": "Režim zaštite od gužvanja tkanine detektuje kratke pulseve tumblovanja pri niskoj snazi nakon glavne faze i drži ih pripisanim završenom ciklusu.",
|
||||||
"label": "Zaštita od gužvanja"
|
"label": "Zaštita od gužvanja"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Otpuštanje nakon tihe faze sušenja",
|
||||||
|
"doc": "Kada ciklus pređe svoje očekivano trajanje, koliko dugo mašina mora ostati tiha (ispod Praga zaustavljanja) pre nego što WashData prestane da čeka na završno ispumpavanje vode i završi ciklus. Povećajte ako vaš uređaj ima dugu tihu fazu sušenja pre kasnog završnog ispumpavanja koje se propušta - šire okno omogućava da naučeno trajanje prati sezonske promene (hladnija dovodna voda = duži ciklusi) umesto da ostane zaključano na staroj prosečnoj vrednosti. Čekanje samo skraćuje u odnosu na interno ograničenje završnog ispumpavanja od 30 minuta, nikada ga ne produžava."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Prepoznajte kratke impulse male snage koje mašina za sušenje emituje nakon glavne faze grejanja i držite ih povezanim sa završenim ciklusom umesto da ih čitate kao nove cikluse.",
|
"doc": "Prepoznajte kratke impulse male snage koje mašina za sušenje emituje nakon glavne faze grejanja i držite ih povezanim sa završenim ciklusom umesto da ih čitate kao nove cikluse.",
|
||||||
"label": "Omogući detekciju zaštite od gužvanja"
|
"label": "Omogući detekciju zaštite od gužvanja"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Nekoliko minuta nakon završetka ciklusa pre slanja podsetnika „istovarite mašinu“ koji još uvek čeka. Postavite 0 da biste onemogućili podsetnik.",
|
"doc": "Nekoliko minuta nakon završetka ciklusa pre slanja podsetnika „istovarite mašinu“ koji još uvek čeka. Postavite 0 da biste onemogućili podsetnik.",
|
||||||
"label": "Kašnjenje podsetnika za istovar"
|
"label": "Kašnjenje podsetnika za istovar"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Ponovo šalje podsetnik za istovar svakih \"Kašnjenje podsetnika za istovar\" minuta dok ne otvorite vrata ili ne dodirnete \"Prestani da podsećaš\" na obaveštenju. Zahteva Entitetu senzora vrata (kao i sam podsetnik). Dugme za odbacivanje radi na obaveštenjima mobilne aplikacije Home Assistant (companion app).",
|
||||||
|
"label": "Ponavljaj dok se vrata ne otvore"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Vreme za čekanje nakon pada struje pre nego što proglasimo ciklus završenim. Ako se napajanje nastavi unutar ovog prozora, ciklus se nastavlja bez problema - ovo premošćuje pauze između faza pranja. Mašine za pranje sudova imaju duge faze sušenja (isključenje na 20-60 min) tako da kašnjenje isključenja mora biti veće od toga da bi se celo pranje+suvo održalo kao jedan ciklus.",
|
"doc": "Vreme za čekanje nakon pada struje pre nego što proglasimo ciklus završenim. Ako se napajanje nastavi unutar ovog prozora, ciklus se nastavlja bez problema - ovo premošćuje pauze između faza pranja. Mašine za pranje sudova imaju duge faze sušenja (isključenje na 20-60 min) tako da kašnjenje isključenja mora biti veće od toga da bi se celo pranje+suvo održalo kao jedan ciklus.",
|
||||||
"label": "Kašnjenje isklopa"
|
"label": "Kašnjenje isklopa"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Ostrina energije",
|
"label": "Ostrina energije",
|
||||||
"doc": "Oštrina kazne za nepodudaranje energije u Fazi 4. Manje = strože: nepodudaranje energije više snižava rezultat. Podrazumevana vrednost 0,25 je namerno blaža od Oštrine trajanja jer energija varira s opterećenjem. Koristite zajedno s Težinom energije."
|
"doc": "Oštrina kazne za nepodudaranje energije u Fazi 4. Manje = strože: nepodudaranje energije više snižava rezultat. Podrazumevana vrednost 0,25 je namerno blaža od Oštrine trajanja jer energija varira s opterećenjem. Koristite zajedno s Težinom energije."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Interval profila snage",
|
||||||
|
"doc": "Veličina segmenta za atribut senzora power_profile po profilu (ravni niz prosečnih vata po slotu koji koriste spoljni planeri kao EMHASS i tibber_prices). Manji segmenti čuvaju kratke skokove snage oštrim; veći segmenti izglađuju oblik. Podrazumevano 15 min. Samo za čitanje; ne utiče na detekciju."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Zadrži živo obaveštenje na dodir",
|
||||||
|
"doc": "Samo za Android. Neka obaveštenje o napretku u živo bude trajno (zakačeno) kako ga dodir ne bi odbacio. Isključeno zadržava podrazumevano ponašanje gde dodir odbacuje obaveštenje."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Cilj dodira živog obaveštenja",
|
||||||
|
"doc": "Samo za Android. Gde se otvara dodir na obaveštenje o napretku u živo (npr. /lovelace/laundry ili puni URL) umesto početne stranice aplikacije. Ostavite praznim za podrazumevano ponašanje."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Vrata se automatski otvaraju na kraju",
|
||||||
|
"doc": "Za mašine za suđe čija se vrata otvaraju na kraju ciklusa radi sušenja (AirDry i slično). Kada je uključeno, otvaranje vrata tokom aktivnog ciklusa više ga ne pauzira zauvek; umesto toga, ako vrata ostanu otvorena tokom vremena zadržavanja ispod, WashData smatra ciklus završenim. Kratko otvaranje (dodavanje posuđa) se zanemaruje. Zahteva entitet senzora vrata."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Zadržavanje pri otvorenim vratima",
|
||||||
|
"doc": "Koliko dugo vrata moraju ostati otvorena pre nego WashData završi ciklus, kada je uključeno \"Vrata se automatski otvaraju na kraju\". Dovoljno dugo da se ignoriše brzo dodavanje posuđa (podrazumevano 60 s), dovoljno kratko za brzo završavanje kada mašina otvori vrata."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1592,6 +1708,7 @@
|
|||||||
"min_active": "Na osnovu najmanje radne snage ({min}W) uočene u poslednjem ciklusu.",
|
"min_active": "Na osnovu najmanje radne snage ({min}W) uočene u poslednjem ciklusu.",
|
||||||
"min_duration_ratio": "Zadržano što nižim kako bi se program prepoznao rano u ciklusu; pragovi pouzdanosti i dvosmislenosti sprečavaju prevremene potvrde.",
|
"min_duration_ratio": "Zadržano što nižim kako bi se program prepoznao rano u ciklusu; pragovi pouzdanosti i dvosmislenosti sprečavaju prevremene potvrde.",
|
||||||
"min_off_gap": "Na osnovu {gaps} uočenih razmaka između ciklusa (p05={p05}s). Donja granica uređaja: {floor}s.",
|
"min_off_gap": "Na osnovu {gaps} uočenih razmaka između ciklusa (p05={p05}s). Donja granica uređaja: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Postavljeno tako da premosti najduži tihi odsečak unutar ciklusa: {span}s + 60s rezerve, iz {spans} premošćenih razmaka kroz {cycles} čistih ciklusa (ostaje ispod vašeg najkraćeg razmaka između dva uzastopna pokretanja, koji iznosi {ceiling}s).",
|
||||||
"min_power": "40 % najniže radne snage p05 ({p05}W) kroz {cycles} čistih ciklusa, čime prag isključenja ostaje ispod stvarne potrošnje.{excl}",
|
"min_power": "40 % najniže radne snage p05 ({p05}W) kroz {cycles} čistih ciklusa, čime prag isključenja ostaje ispod stvarne potrošnje.{excl}",
|
||||||
"ml_auto_label": "Najniža pouzdanost koju je model kvaliteta još ocenio čistom (p10 od {cycles} čistih ciklusa = {p10}).",
|
"ml_auto_label": "Najniža pouzdanost koju je model kvaliteta još ocenio čistom (p10 od {cycles} čistih ciklusa = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} ciklusa ({pct}%) imalo je pauzu koju je detektor kraja ocenio sa >50 %; zahtevaj {val} potvrdu(e) kraja.",
|
"ml_end_repeat": "{false}/{total} ciklusa ({pct}%) imalo je pauzu koju je detektor kraja ocenio sa >50 %; zahtevaj {val} potvrdu(e) kraja.",
|
||||||
@@ -1608,7 +1725,7 @@
|
|||||||
"thr_batch": "Zadržano tik iznad najniže radne snage p05 kroz {cycles} ciklusa ({p05}W) kako bi se početak uhvatio što ranije, a prag zaustavljanja ostao ispod najniže radne snage mašine.",
|
"thr_batch": "Zadržano tik iznad najniže radne snage p05 kroz {cycles} ciklusa ({p05}W) kako bi se početak uhvatio što ranije, a prag zaustavljanja ostao ispod najniže radne snage mašine.",
|
||||||
"tol_per_profile": "p75 varijanse trajanja po profilu kroz {profiles} profila ({cycles} ciklusa); dosledni profili nisu kažnjeni.",
|
"tol_per_profile": "p75 varijanse trajanja po profilu kroz {profiles} profila ({cycles} ciklusa); dosledni profili nisu kažnjeni.",
|
||||||
"tol_pooled": "Na osnovu objedinjene varijanse trajanja {cycles} novijih označenih ciklusa (p95 odstupanje={dev}).",
|
"tol_pooled": "Na osnovu objedinjene varijanse trajanja {cycles} novijih označenih ciklusa (p95 odstupanje={dev}).",
|
||||||
"watchdog": "Zadržano što nižim uz bezbednost (3x razmak ažuriranja p95 od {p95}s, najmanje 30s) kako bi se zastoji brzo uhvatili bez lažnih zaustavljanja."
|
"watchdog": "Zadržano što nižim uz bezbednost (tik iznad razmaka ažuriranja p95 od {p95}s, najmanje 30s) kako bi se zastoji brzo uhvatili bez lažnih zaustavljanja."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Isključeno {total} pogrešno detektovanih ciklusa: {parts}.",
|
"summary": "Isključeno {total} pogrešno detektovanih ciklusa: {parts}.",
|
||||||
@@ -1688,6 +1805,10 @@
|
|||||||
"name_required": "Naziv je obavezan",
|
"name_required": "Naziv je obavezan",
|
||||||
"no_split_found": "Nisu pronađene praznine za deljenje",
|
"no_split_found": "Nisu pronađene praznine za deljenje",
|
||||||
"panel_settings_saved": "Podešavanja panela sačuvana",
|
"panel_settings_saved": "Podešavanja panela sačuvana",
|
||||||
|
"pg_preset_loaded": "Konfiguracija \"{name}\" učitana",
|
||||||
|
"pg_preset_saved": "Konfiguracija \"{name}\" sačuvana",
|
||||||
|
"pg_sugg_loaded": "Učitano {n} predloženih vrednosti - pokrenite testno okruženje za poređenje",
|
||||||
|
"pg_sugg_ml_loaded": "Učitano {n} ML-kalibriranih vrednosti - pokrenite testno okruženje za poređenje",
|
||||||
"phase_name_required": "Naziv faze je obavezan",
|
"phase_name_required": "Naziv faze je obavezan",
|
||||||
"phase_updated": "Faza ažurirana",
|
"phase_updated": "Faza ažurirana",
|
||||||
"phases_saved": "Faze sačuvane",
|
"phases_saved": "Faze sačuvane",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Ostalo"
|
"other": "Ostalo"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Mašina za pranje sudova: sekunde tišine nakon očekivanog trajanja pre nego što se otpusti čekanje na završno ispumpavanje vode",
|
||||||
"completion_min_seconds": "Najkraće pokretanje koje se računa kao pravi ciklus",
|
"completion_min_seconds": "Najkraće pokretanje koje se računa kao pravi ciklus",
|
||||||
"end_repeat_count": "Niska očitavanja zaredom pre završetka",
|
"end_repeat_count": "Niska očitavanja zaredom pre završetka",
|
||||||
"interrupted_min_seconds": "Kratki ciklusi označeni kao prekinuti",
|
"interrupted_min_seconds": "Kratki ciklusi označeni kao prekinuti",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "min",
|
||||||
|
"entity_not_found": "Entitet hittades inte",
|
||||||
|
"running_long": "Kör längre",
|
||||||
|
"remaining": "återstår",
|
||||||
|
"progress": "förlopp",
|
||||||
|
"show_time_remaining": "Visa återstående tid",
|
||||||
|
"show_percentage": "Visa procent",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Bricka (kompakt)",
|
||||||
|
"detail": "Detalj (utförlig)",
|
||||||
|
"glance": "Överblick (flera enheter)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Pausa",
|
||||||
|
"resume": "Återuppta",
|
||||||
|
"terminate": "Avsluta cykel",
|
||||||
|
"record_start": "Starta inspelning",
|
||||||
|
"record_stop": "Stoppa inspelning",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "Öppna WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Layout",
|
||||||
|
"entity": "Apparatentitet",
|
||||||
|
"entities": "Apparater",
|
||||||
|
"title": "Titel",
|
||||||
|
"icon": "Ikon",
|
||||||
|
"show_state": "Visa status",
|
||||||
|
"show_program": "Visa program",
|
||||||
|
"show_progress_bar": "Visa förloppsindikator",
|
||||||
|
"spin_icon": "Snurra ikon under körning",
|
||||||
|
"display_mode": "Detaljrad",
|
||||||
|
"active_color": "Åsidosätt aktiv färg",
|
||||||
|
"show_phase": "Visa fas",
|
||||||
|
"show_energy": "Visa energi och kostnad",
|
||||||
|
"show_anomaly": "Visa varning för lång körtid",
|
||||||
|
"show_sparkline": "Visa live-effektgraf",
|
||||||
|
"buttons": "Åtgärdsknappar",
|
||||||
|
"program_entity": "Programentitet (åsidosätt)",
|
||||||
|
"time_entity": "Tidsentitet (åsidosätt)",
|
||||||
|
"pct_entity": "Förloppsentitet (åsidosätt)",
|
||||||
|
"power_entity": "Effektentitet (åsidosätt)",
|
||||||
|
"tap_action": "Tryckåtgärd",
|
||||||
|
"hold_action": "Håll-åtgärd",
|
||||||
|
"double_tap_action": "Dubbeltryckningsåtgärd"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} anomalier upptäckta (t.ex. dörren öppnades mitt i cykeln) – öppna för att se dem i diagrammet",
|
"artifact_tip": "{n} anomalier upptäckta (t.ex. dörren öppnades mitt i cykeln) – öppna för att se dem i diagrammet",
|
||||||
"auto": "(automatiskt identifierat)",
|
"auto": "(automatiskt identifierat)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Pausa den pågående cykeln – apparaten återupptar där den slutade",
|
"pause_cycle_tip": "Pausa den pågående cykeln – apparaten återupptar där den slutade",
|
||||||
"pg_apply_device": "Tillämpa på enhet",
|
"pg_apply_device": "Tillämpa på enhet",
|
||||||
"pg_autofill": "Autofyll",
|
"pg_autofill": "Autofyll",
|
||||||
|
"pg_load_calibrated": "Ladda kalibrerade (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Laddar ML-kalibrerade inställningar som testyteöverskridanden",
|
||||||
|
"pg_load_live": "Ladda aktiva inställningar",
|
||||||
|
"pg_load_live_tip": "Läs in integrationens aktuella inställningar på nytt och kasta alla ändringar i testytan",
|
||||||
|
"pg_load_suggested": "Ladda förslag ({n})",
|
||||||
|
"pg_load_suggested_tip": "Laddar auto-tunarens aktuella förslag som testyteöverskridanden",
|
||||||
|
"pg_preset_delete": "Ta bort förinställning",
|
||||||
|
"pg_preset_load": "Ladda förinställning",
|
||||||
|
"pg_preset_load_tip": "Ersätt värdena i testytan med den här förinställningen (de aktiva inställningarna påverkas inte)",
|
||||||
|
"pg_preset_save": "Spara som förinställning",
|
||||||
|
"pg_preset_save_tip": "Spara alla värden nedan som en namngiven förinställning för den här enheten",
|
||||||
|
"pg_publish_all": "Spara {n} till integrationen",
|
||||||
|
"pg_publish_one": "Spara {label} till integrationen",
|
||||||
"play": "Spela",
|
"play": "Spela",
|
||||||
"process": "Bearbeta",
|
"process": "Bearbeta",
|
||||||
"process_history": "Bearbeta nu",
|
"process_history": "Bearbeta nu",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Ladda ner export",
|
"download_export": "Ladda ner export",
|
||||||
"analyze_import": "Analysera fil",
|
"analyze_import": "Analysera fil",
|
||||||
"import_selected": "Importera valda",
|
"import_selected": "Importera valda",
|
||||||
"back": "Tillbaka"
|
"back": "Tillbaka",
|
||||||
|
"mute_suggestion": "Sluta föreslå den här inställningen",
|
||||||
|
"reset_muted": "Återställ tysta förslag"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,8 +338,9 @@
|
|||||||
"no_automations": "Inga automatiseringar refererar till denna enhet ännu.",
|
"no_automations": "Inga automatiseringar refererar till denna enhet ännu.",
|
||||||
"panel_settings": "Panelinställningar",
|
"panel_settings": "Panelinställningar",
|
||||||
"param_sweep": "Parametersvep",
|
"param_sweep": "Parametersvep",
|
||||||
|
"pg_settings_source": "Inställningarnas källa",
|
||||||
"phase_catalog": "Faskatalog",
|
"phase_catalog": "Faskatalog",
|
||||||
"playground": "Lekplats",
|
"playground": "Testyta",
|
||||||
"process_history": "Processhistorik",
|
"process_history": "Processhistorik",
|
||||||
"settings_history": "Inställningshistorik",
|
"settings_history": "Inställningshistorik",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
@@ -410,6 +474,9 @@
|
|||||||
"pg_group_detection": "Detekteringsutlösare",
|
"pg_group_detection": "Detekteringsutlösare",
|
||||||
"pg_group_timing": "Tidsregler",
|
"pg_group_timing": "Tidsregler",
|
||||||
"pg_idle": "Inaktiv",
|
"pg_idle": "Inaktiv",
|
||||||
|
"pg_preset": "Förinställning för testytan",
|
||||||
|
"pg_preset_name": "Namn på ny förinställning",
|
||||||
|
"pg_preset_none": "Välj en förinställning…",
|
||||||
"pg_stress_group": "Test av inaktiv avslutning",
|
"pg_stress_group": "Test av inaktiv avslutning",
|
||||||
"pg_stress_idle_auto": "Auto",
|
"pg_stress_idle_auto": "Auto",
|
||||||
"pg_stress_idle_w": "Inaktiv nivå (W)",
|
"pg_stress_idle_w": "Inaktiv nivå (W)",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_import_copy": "Importera som kopia",
|
"conflict_import_copy": "Importera som kopia",
|
||||||
"conflict_keep_mine": "Behåll mina",
|
"conflict_keep_mine": "Behåll mina",
|
||||||
"conflict_overwrite": "Skriv över",
|
"conflict_overwrite": "Skriv över",
|
||||||
"pg_anti_wrinkle": "Skrynkelskydd"
|
"pg_anti_wrinkle": "Skrynkelskydd",
|
||||||
|
"font_size": "Panelens teckenstorlek"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Alla nivåer",
|
"all_levels": "Alla nivåer",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Tillämpa bästa värdet: {label} = {value}?",
|
"pg_apply_confirm": "Tillämpa bästa värdet: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Välj en cykel ovan och tryck sedan på Ladda för att se dess effektkurva.",
|
"pg_canvas_empty": "Välj en cykel ovan och tryck sedan på Ladda för att se dess effektkurva.",
|
||||||
"pg_chart_caption": "Detekterings-/matchningsgrad över värden på {param}",
|
"pg_chart_caption": "Detekterings-/matchningsgrad över värden på {param}",
|
||||||
|
"pg_ctrl_intro": "Värdena utgår från den här enhetens aktiva inställningar i integrationen. Ändringar stannar i testytan tills du sparar dem till integrationen.",
|
||||||
|
"pg_live_unavailable": "Aktiva inställningar är inte tillgängliga, visar standardvärden.",
|
||||||
|
"pg_load_live_confirm": "Kasta {n} ändring(ar) i testytan och läsa in integrationens aktuella inställningar på nytt?",
|
||||||
"pg_match_rate": "{pct}% matchningsgrad på {total} cykler",
|
"pg_match_rate": "{pct}% matchningsgrad på {total} cykler",
|
||||||
|
"pg_matches_live": "Stämmer med de aktiva inställningarna",
|
||||||
|
"pg_n_changed": "{n} ändrade jämfört med de aktiva inställningarna",
|
||||||
|
"pg_sugg_none": "Alla förslag matchar redan de aktiva inställningarna",
|
||||||
|
"pg_preset_delete_confirm": "Ta bort förinställningen \"{name}\"?",
|
||||||
|
"pg_preset_limit": "Gränsen för förinställningar är nådd ({n})",
|
||||||
|
"pg_preset_overwrite": "Skriva över förinställningen \"{name}\"?",
|
||||||
|
"pg_publish_one_confirm": "Spara {label} = {value} till den här enhetens inställningar?",
|
||||||
"pg_restart_note": "Starta om Home Assistant för att aktivera simuleringsverktygen.",
|
"pg_restart_note": "Starta om Home Assistant för att aktivera simuleringsverktygen.",
|
||||||
"pg_sim_progress": "{done} / {total} cykler",
|
"pg_sim_progress": "{done} / {total} cykler",
|
||||||
"pg_starting": "Startar…",
|
"pg_starting": "Startar…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Varaktighet trendar kortare ({pct}%/cykel) – senaste medelvärde {avg}",
|
"trend_duration_shorter": "Varaktighet trendar kortare ({pct}%/cykel) – senaste medelvärde {avg}",
|
||||||
"trend_energy_down": "Energin går ned ({pct}%/cykel)",
|
"trend_energy_down": "Energin går ned ({pct}%/cykel)",
|
||||||
"trend_energy_up": "Energitrend uppåt ({pct}%/cykel) – senaste snitt {avg}",
|
"trend_energy_up": "Energitrend uppåt ({pct}%/cykel) – senaste snitt {avg}",
|
||||||
|
"trim_destructive_confirm": "Endast {pct}% av cykeln behålls. Detta kan inte ångras. Fortsätta?",
|
||||||
"trim_intro": "Dra de röda handtagen eller ange värden. Allt utanför fönstret tas bort.",
|
"trim_intro": "Dra de röda handtagen eller ange värden. Allt utanför fönstret tas bort.",
|
||||||
"tuning_suggestions_available": "{count} inställningsförslag tillgängligt från observerade cykler. De visas bredvid de relevanta fälten.",
|
"tuning_suggestions_available": "{count} inställningsförslag tillgängligt från observerade cykler. De visas bredvid de relevanta fälten.",
|
||||||
"unsure_detected_prefix": "WashData är osäker på att den identifierade",
|
"unsure_detected_prefix": "WashData är osäker på att den identifierade",
|
||||||
@@ -922,9 +1001,15 @@
|
|||||||
"merge_hint": "Importerade objekt läggs till; inget lokalt går förlorat. Namnkonflikter löses nedan.",
|
"merge_hint": "Importerade objekt läggs till; inget lokalt går förlorat. Namnkonflikter löses nedan.",
|
||||||
"replace_warn": "Varje ikryssad kategori raderas och ersätts från filen. Icke ikryssade kategorier lämnas orörda.",
|
"replace_warn": "Varje ikryssad kategori raderas och ersätts från filen. Icke ikryssade kategorier lämnas orörda.",
|
||||||
"dest_reference_hint": "Importerade cykler förbättrar bara programmatchning och påverkar aldrig användnings-/energistatistik.",
|
"dest_reference_hint": "Importerade cykler förbättrar bara programmatchning och påverkar aldrig användnings-/energistatistik.",
|
||||||
"dest_real_history_hint": "Importerade cykler räknas som den här apparatens egen historik och matar energi-/användningsstatistik. Använd detta för att flytta en apparat till en ny installation."
|
"dest_real_history_hint": "Importerade cykler räknas som den här apparatens egen historik och matar energi-/användningsstatistik. Använd detta för att flytta en apparat till en ny installation.",
|
||||||
|
"sug_muted": "Kommer inte att föreslå den här inställningen igen",
|
||||||
|
"sug_mute_failed": "Kunde inte tysta förslaget",
|
||||||
|
"sug_unmuted_all": "Tysta förslag återställda",
|
||||||
|
"n_suggestions_muted": "{count} tystade; auto-tunern föreslår inte dessa.",
|
||||||
|
"font_size_hint": "Gör allt i den här panelen större eller mindre. Gäller för ditt konto på den här enheten."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Diskmaskin: tysta sekunder efter förväntad varaktighet innan väntan på tömning vid cykelslut frisläpps",
|
||||||
"completion_min_seconds": "Kortaste körning som räknas som en riktig cykel",
|
"completion_min_seconds": "Kortaste körning som räknas som en riktig cykel",
|
||||||
"end_repeat_count": "Antal låga avläsningar i rad innan avslut",
|
"end_repeat_count": "Antal låga avläsningar i rad innan avslut",
|
||||||
"interrupted_min_seconds": "Korta cykler markeras som avbrutna",
|
"interrupted_min_seconds": "Korta cykler markeras som avbrutna",
|
||||||
@@ -998,6 +1083,10 @@
|
|||||||
"unusable": "Oanvändbar"
|
"unusable": "Oanvändbar"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Diskmaskin",
|
||||||
|
"intro": "Hantering av cykelslut för diskmaskiner, som vanligtvis avslutas med en lång, nästan ljudlös torkfas före en kort sista tömning."
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Skrynkelskyddsläget identifierar korta lågeffektstumlingspulser efter huvudfasen och håller dem kopplade till den avslutade cykeln för att förhindra skrynklor i tvätten.",
|
"intro": "Skrynkelskyddsläget identifierar korta lågeffektstumlingspulser efter huvudfasen och håller dem kopplade till den avslutade cykeln för att förhindra skrynklor i tvätten.",
|
||||||
"label": "Skrynkelskydd"
|
"label": "Skrynkelskydd"
|
||||||
@@ -1040,6 +1129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Frisläpp efter tyst torkfas",
|
||||||
|
"doc": "När cykeln passerar sin förväntade varaktighet: hur länge diskmaskinen måste förbli tyst (under Stopptröskel) innan WashData slutar vänta på en sista tömning och avslutar cykeln. Höj värdet om din maskin har en lång tyst torkfas före en sen sista tömning som missas - ett bredare fönster låter den inlärda varaktigheten följa säsongsvariationer (kallare inloppsvatten = längre cykler) istället för att låsa sig vid det gamla medelvärdet. Det förkortar bara väntetiden i förhållande till den interna gränsen på 30 minuter för slutspiken, aldrig förlänger den."
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Känn igen de korta torktumlarpulser med låg effekt en torktumlare avger efter huvuduppvärmningsfasen och håll dem kopplade till den färdiga cykeln istället för att läsa dem som nya cykler.",
|
"doc": "Känn igen de korta torktumlarpulser med låg effekt en torktumlare avger efter huvuduppvärmningsfasen och håll dem kopplade till den färdiga cykeln istället för att läsa dem som nya cykler.",
|
||||||
"label": "Aktivera skrynkelskyddsdetektering"
|
"label": "Aktivera skrynkelskyddsdetektering"
|
||||||
@@ -1260,6 +1353,10 @@
|
|||||||
"doc": "Minuter efter att en cykel har avslutats innan den fortfarande väntande påminnelsen om \"lasta av maskinen\" skickas. Ställ in 0 för att inaktivera påminnelsen.",
|
"doc": "Minuter efter att en cykel har avslutats innan den fortfarande väntande påminnelsen om \"lasta av maskinen\" skickas. Ställ in 0 för att inaktivera påminnelsen.",
|
||||||
"label": "Lossningspåminnelsefördröjning"
|
"label": "Lossningspåminnelsefördröjning"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Fortsätter att skicka lossningspåminnelsen igen var \"Lossningspåminnelsefördröjning\" minut tills du öppnar dörren eller trycker på \"Sluta påminna\" i aviseringen. Kräver en Dörrsensorentitet (det gör själva påminnelsen). Avfärda-knappen fungerar på aviseringar från Home Assistant companion-appen (mobil).",
|
||||||
|
"label": "Upprepa tills dörren öppnas"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Dags att vänta efter strömavbrott innan man förklarar att cykeln är avslutad. Om strömmen återupptas inom detta fönster fortsätter cykeln sömlöst - detta överbryggar pauser mellan tvättstegen. Diskmaskiner har långa torkningsfaser (ström av i 20-60 min) så avstängningsfördröjningen måste överstiga den för att hålla hela tvätten+torr som en cykel.",
|
"doc": "Dags att vänta efter strömavbrott innan man förklarar att cykeln är avslutad. Om strömmen återupptas inom detta fönster fortsätter cykeln sömlöst - detta överbryggar pauser mellan tvättstegen. Diskmaskiner har långa torkningsfaser (ström av i 20-60 min) så avstängningsfördröjningen måste överstiga den för att hålla hela tvätten+torr som en cykel.",
|
||||||
"label": "Avfördröjning"
|
"label": "Avfördröjning"
|
||||||
@@ -1434,6 +1531,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Energiskärpa",
|
"label": "Energiskärpa",
|
||||||
"doc": "Skärpan i Steg 4:s straff för energiöverensstämmelse. Lägre = striktare: en energiavvikelse straffas mer. Standard 0,25 är avsiktligt mer tillåtande än varaktighetsskärpan eftersom energiförbrukning varierar med last. Para ihop med Energivikt."
|
"doc": "Skärpan i Steg 4:s straff för energiöverensstämmelse. Lägre = striktare: en energiavvikelse straffas mer. Standard 0,25 är avsiktligt mer tillåtande än varaktighetsskärpan eftersom energiförbrukning varierar med last. Para ihop med Energivikt."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Effektprofil-intervall",
|
||||||
|
"doc": "Storlek på bucket för effektprofilsensorns attribut power_profile (det platta arrayen med genomsnittliga wattvärden per slot som används av externa planerare som EMHASS och tibber_prices). Mindre buckets håller korta effekttoppar skarpa; större buckets jämnar ut kurvan. Standard 15 min. Endast för visning; påverkar inte detektering."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Behåll live-avisering vid tryck",
|
||||||
|
"doc": "Endast Android. Gör live-förloppsaviseringen kvarstående (sticky) så att ett tryck inte stänger den. Av: standardbeteende där ett tryck stänger aviseringen."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Tryckmål för live-avisering",
|
||||||
|
"doc": "Endast Android. Vart ett tryck på live-förloppsaviseringen öppnar (t.ex. /lovelace/laundry eller en fullständig URL) i stället för appens startsida. Lämna tomt för standard."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Dörren öppnas automatiskt vid avslut",
|
||||||
|
"doc": "För diskmaskiner som poppar upp dörren vid cykelslutet för torkning (AirDry och liknande). Med detta aktiverat sätter en döröppning under en aktiv cykel inte den på paus för evigt; om dörren förblir öppen under den konfigurerade uppehållstiden behandlar WashData cykeln som avslutad. En kort öppning (lägga till ett föremål) ignoreras. Kräver en dörrsensorenhet."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Dörröppningens uppehållstid vid avslut",
|
||||||
|
"doc": "Hur länge dörren måste förbli öppen innan WashData avslutar cykeln, när \"Dörren öppnas automatiskt vid avslut\" är aktiverat. Tillräckligt länge för att ignorera snabb tilläggning av ett fat (standard 60 s), tillräckligt kort för att avsluta snabbt när maskinen poppar upp dörren."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1620,6 +1737,7 @@
|
|||||||
"min_active": "Baserat på lägsta aktiva effekt ({min}W) som observerades i senaste cykeln.",
|
"min_active": "Baserat på lägsta aktiva effekt ({min}W) som observerades i senaste cykeln.",
|
||||||
"min_duration_ratio": "Hålls så låg som möjligt så att ett program känns igen tidigt i cykeln; konfidens- och tvetydighetsgränserna förhindrar förhastade beslut.",
|
"min_duration_ratio": "Hålls så låg som möjligt så att ett program känns igen tidigt i cykeln; konfidens- och tvetydighetsgränserna förhindrar förhastade beslut.",
|
||||||
"min_off_gap": "Baserat på {gaps} observerade mellanrum mellan cykler (p05={p05}s). Enhetsgolv: {floor}s.",
|
"min_off_gap": "Baserat på {gaps} observerade mellanrum mellan cykler (p05={p05}s). Enhetsgolv: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Dimensionerad för att överbrygga den längsta tysta perioden inom en cykel: {span}s + 60s buffert, från {spans} överbryggade mellanrum över {cycles} rena cykler (håller sig under ditt kortaste mellanrum på {ceiling}s mellan två körningar).",
|
||||||
"min_power": "40% av den lägsta aktiva effekten vid p05 ({p05}W) över {cycles} rena cykler, vilket håller av-tröskeln under verklig förbrukning.{excl}",
|
"min_power": "40% av den lägsta aktiva effekten vid p05 ({p05}W) över {cycles} rena cykler, vilket håller av-tröskeln under verklig förbrukning.{excl}",
|
||||||
"ml_auto_label": "Lägsta konfidens som kvalitetsmodellen fortfarande bedömde som ren (p10 av {cycles} rena cykler = {p10}).",
|
"ml_auto_label": "Lägsta konfidens som kvalitetsmodellen fortfarande bedömde som ren (p10 av {cycles} rena cykler = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} cykler ({pct}%) hade en paus som slutdetektorn bedömde till >50%; kräver {val} slutbekräftelse(r).",
|
"ml_end_repeat": "{false}/{total} cykler ({pct}%) hade en paus som slutdetektorn bedömde till >50%; kräver {val} slutbekräftelse(r).",
|
||||||
@@ -1636,7 +1754,7 @@
|
|||||||
"thr_batch": "Hålls precis över den lägsta aktiva effekten vid p05 över {cycles} cykler ({p05}W) så att en start fångas så tidigt som möjligt och stopptröskeln stannar under maskinens lägsta driftseffekt.",
|
"thr_batch": "Hålls precis över den lägsta aktiva effekten vid p05 över {cycles} cykler ({p05}W) så att en start fångas så tidigt som möjligt och stopptröskeln stannar under maskinens lägsta driftseffekt.",
|
||||||
"tol_per_profile": "p75 för varaktighetsvariansen per profil över {profiles} profiler ({cycles} cykler); snäva profiler bestraffas inte.",
|
"tol_per_profile": "p75 för varaktighetsvariansen per profil över {profiles} profiler ({cycles} cykler); snäva profiler bestraffas inte.",
|
||||||
"tol_pooled": "Baserat på sammanslagen varaktighetsvarians för {cycles} senaste märkta cykler (p95 avvikelse={dev}).",
|
"tol_pooled": "Baserat på sammanslagen varaktighetsvarians för {cycles} senaste märkta cykler (p95 avvikelse={dev}).",
|
||||||
"watchdog": "Hålls så lågt som är säkert (3x p95-uppdateringsmellanrummet på {p95}s, min 30s) så att stillestånd upptäcks snabbt utan falska stopp."
|
"watchdog": "Hålls så lågt som är säkert (strax över p95-uppdateringsmellanrummet på {p95}s, min 30s) så att stillestånd upptäcks snabbt utan falska stopp."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Uteslöt {total} feldetekterade cykler: {parts}.",
|
"summary": "Uteslöt {total} feldetekterade cykler: {parts}.",
|
||||||
@@ -1716,6 +1834,10 @@
|
|||||||
"name_required": "Namn krävs",
|
"name_required": "Namn krävs",
|
||||||
"no_split_found": "Inga tomma luckor hittades för delning",
|
"no_split_found": "Inga tomma luckor hittades för delning",
|
||||||
"panel_settings_saved": "Panelinställningar sparade",
|
"panel_settings_saved": "Panelinställningar sparade",
|
||||||
|
"pg_preset_loaded": "Förinställningen \"{name}\" har laddats",
|
||||||
|
"pg_preset_saved": "Förinställningen \"{name}\" har sparats",
|
||||||
|
"pg_sugg_loaded": "{n} föreslagna värde(n) inlästa - kör testytan för att jämföra",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML-kalibrerade värde(n) inlästa - kör testytan för att jämföra",
|
||||||
"phase_name_required": "Fasnamn krävs",
|
"phase_name_required": "Fasnamn krävs",
|
||||||
"phase_updated": "Fas uppdaterad",
|
"phase_updated": "Fas uppdaterad",
|
||||||
"phases_saved": "Faser sparade",
|
"phases_saved": "Faser sparade",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "dk",
|
||||||
|
"entity_not_found": "Varlık bulunamadı",
|
||||||
|
"running_long": "Uzun sürüyor",
|
||||||
|
"remaining": "kalan",
|
||||||
|
"progress": "ilerleme",
|
||||||
|
"show_time_remaining": "Kalan süreyi göster",
|
||||||
|
"show_percentage": "Yüzdeyi göster",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Döşeme (kompakt)",
|
||||||
|
"detail": "Ayrıntı (zengin)",
|
||||||
|
"glance": "Bakış (birden çok cihaz)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Duraklat",
|
||||||
|
"resume": "Devam et",
|
||||||
|
"terminate": "Döngüyü bitir",
|
||||||
|
"record_start": "Kaydı başlat",
|
||||||
|
"record_stop": "Kaydı durdur",
|
||||||
|
"program": "Program",
|
||||||
|
"open_panel": "WashData'yı aç"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Düzen",
|
||||||
|
"entity": "Cihaz varlığı",
|
||||||
|
"entities": "Cihazlar",
|
||||||
|
"title": "Başlık",
|
||||||
|
"icon": "Simge",
|
||||||
|
"show_state": "Durumu göster",
|
||||||
|
"show_program": "Programı göster",
|
||||||
|
"show_progress_bar": "İlerleme çubuğunu göster",
|
||||||
|
"spin_icon": "Çalışırken simgeyi döndür",
|
||||||
|
"display_mode": "Ayrıntı satırı",
|
||||||
|
"active_color": "Etkin renk geçersiz kılma",
|
||||||
|
"show_phase": "Aşamayı göster",
|
||||||
|
"show_energy": "Enerji ve maliyeti göster",
|
||||||
|
"show_anomaly": "Aşım uyarısını göster",
|
||||||
|
"show_sparkline": "Canlı güç grafiğini göster",
|
||||||
|
"buttons": "Eylem düğmeleri",
|
||||||
|
"program_entity": "Program varlığı (geçersiz kıl)",
|
||||||
|
"time_entity": "Süre varlığı (geçersiz kıl)",
|
||||||
|
"pct_entity": "İlerleme varlığı (geçersiz kıl)",
|
||||||
|
"power_entity": "Güç varlığı (geçersiz kıl)",
|
||||||
|
"tap_action": "Dokunma eylemi",
|
||||||
|
"hold_action": "Basılı tutma eylemi",
|
||||||
|
"double_tap_action": "Çift dokunma eylemi"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "{n} anormallik algılandı (ör. döngünün ortasında kapının açılması) – bunları grafikte görmek için açın",
|
"artifact_tip": "{n} anormallik algılandı (ör. döngünün ortasında kapının açılması) – bunları grafikte görmek için açın",
|
||||||
"auto": "(otomatik algılandı)",
|
"auto": "(otomatik algılandı)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "Çalışan döngüyü duraklatın – cihaz kaldığı yerden devam edecek",
|
"pause_cycle_tip": "Çalışan döngüyü duraklatın – cihaz kaldığı yerden devam edecek",
|
||||||
"pg_apply_device": "Cihaza uygula",
|
"pg_apply_device": "Cihaza uygula",
|
||||||
"pg_autofill": "Otomatik doldur",
|
"pg_autofill": "Otomatik doldur",
|
||||||
|
"pg_load_calibrated": "Kalibre edilmiş (ML) yükle ({n})",
|
||||||
|
"pg_load_calibrated_tip": "ML ile kalibre edilmiş ayarları Test Alanı geçersiz kılmaları olarak yükler",
|
||||||
|
"pg_load_live": "Etkin ayarları yükle",
|
||||||
|
"pg_load_live_tip": "Entegrasyonun geçerli ayarlarını yeniden okur ve Test Alanı'ndaki tüm düzenlemeleri atar",
|
||||||
|
"pg_load_suggested": "Önerileri yükle ({n})",
|
||||||
|
"pg_load_suggested_tip": "Otomatik ayarlayıcının geçerli önerilerini Test Alanı geçersiz kılmaları olarak yükler",
|
||||||
|
"pg_preset_delete": "Ön ayarı sil",
|
||||||
|
"pg_preset_load": "Ön ayarı yükle",
|
||||||
|
"pg_preset_load_tip": "Test Alanı değerlerini bu ön ayarla değiştirir (etkin ayarlara dokunulmaz)",
|
||||||
|
"pg_preset_save": "Ön ayar olarak kaydet",
|
||||||
|
"pg_preset_save_tip": "Aşağıdaki tüm değerleri bu cihaz için adlandırılmış bir ön ayar olarak kaydeder",
|
||||||
|
"pg_publish_all": "{n} ayarı entegrasyona uygula",
|
||||||
|
"pg_publish_one": "{label} ayarını entegrasyona uygula",
|
||||||
"play": "Oynat",
|
"play": "Oynat",
|
||||||
"process": "İşle",
|
"process": "İşle",
|
||||||
"process_history": "Şimdi İşle",
|
"process_history": "Şimdi İşle",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "Dışa aktarmayı indir",
|
"download_export": "Dışa aktarmayı indir",
|
||||||
"analyze_import": "Dosyayı analiz et",
|
"analyze_import": "Dosyayı analiz et",
|
||||||
"import_selected": "Seçileni içe aktar",
|
"import_selected": "Seçileni içe aktar",
|
||||||
"back": "Geri"
|
"back": "Geri",
|
||||||
|
"mute_suggestion": "Bu ayarı önerme",
|
||||||
|
"reset_muted": "Susturulanları sıfırla"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Henüz bu cihaza referans veren otomasyon yok.",
|
"no_automations": "Henüz bu cihaza referans veren otomasyon yok.",
|
||||||
"panel_settings": "Panel Ayarları",
|
"panel_settings": "Panel Ayarları",
|
||||||
"param_sweep": "Parametre taraması",
|
"param_sweep": "Parametre taraması",
|
||||||
|
"pg_settings_source": "Ayarların kaynağı",
|
||||||
"phase_catalog": "Aşama Kataloğu",
|
"phase_catalog": "Aşama Kataloğu",
|
||||||
"playground": "Deneme Alanı",
|
"playground": "Deneme Alanı",
|
||||||
"process_history": "İşlem Geçmişi",
|
"process_history": "İşlem Geçmişi",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "Eşleşme puanı",
|
"pg_match_score": "Eşleşme puanı",
|
||||||
"pg_pct_of": "{total} içinde %{p}",
|
"pg_pct_of": "{total} içinde %{p}",
|
||||||
"pg_poor_match": "Kötü eşleşme",
|
"pg_poor_match": "Kötü eşleşme",
|
||||||
|
"pg_preset": "Test Alanı ön ayarı",
|
||||||
|
"pg_preset_name": "Yeni ön ayar adı",
|
||||||
|
"pg_preset_none": "Bir ön ayar seçin…",
|
||||||
"pg_strong_match": "Güçlü eşleşme",
|
"pg_strong_match": "Güçlü eşleşme",
|
||||||
"pg_tile_ambiguous": "Belirsiz",
|
"pg_tile_ambiguous": "Belirsiz",
|
||||||
"pg_tile_ambiguous_tip": "İki program arasında neredeyse berabere kalan döngüler",
|
"pg_tile_ambiguous_tip": "İki program arasında neredeyse berabere kalan döngüler",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "Ad çakışmaları",
|
"conflict_resolution": "Ad çakışmaları",
|
||||||
"conflict_import_copy": "Kopya olarak içe aktar",
|
"conflict_import_copy": "Kopya olarak içe aktar",
|
||||||
"conflict_keep_mine": "Benimkini koru",
|
"conflict_keep_mine": "Benimkini koru",
|
||||||
"conflict_overwrite": "Üzerine yaz"
|
"conflict_overwrite": "Üzerine yaz",
|
||||||
|
"font_size": "Panel yazı tipi boyutu"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "Tüm seviyeler",
|
"all_levels": "Tüm seviyeler",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "En iyi değeri uygula: {label} = {value}?",
|
"pg_apply_confirm": "En iyi değeri uygula: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Yukarıdan bir döngü seçin, ardından güç izini görmek için Yükle'ye basın.",
|
"pg_canvas_empty": "Yukarıdan bir döngü seçin, ardından güç izini görmek için Yükle'ye basın.",
|
||||||
"pg_chart_caption": "{param} değerlerine göre algılama/eşleşme oranı",
|
"pg_chart_caption": "{param} değerlerine göre algılama/eşleşme oranı",
|
||||||
|
"pg_ctrl_intro": "Değerler bu cihazın etkin entegrasyon ayarlarından başlar. Düzenlemeler, siz uygulayana kadar Test Alanı'nda kalır.",
|
||||||
|
"pg_live_unavailable": "Etkin ayarlar kullanılamıyor, varsayılanlar gösteriliyor.",
|
||||||
|
"pg_load_live_confirm": "{n} Test Alanı düzenlemesi atılıp entegrasyonun geçerli ayarları yeniden yüklensin mi?",
|
||||||
"pg_match_rate": "{total} döngüde %{pct} eşleşme oranı",
|
"pg_match_rate": "{total} döngüde %{pct} eşleşme oranı",
|
||||||
|
"pg_matches_live": "Etkin ayarlarla aynı",
|
||||||
|
"pg_n_changed": "Etkin ayarlara göre {n} değişiklik",
|
||||||
|
"pg_sugg_none": "Tüm öneriler zaten geçerli ayarlarla eşleşiyor",
|
||||||
|
"pg_preset_delete_confirm": "\"{name}\" ön ayarı silinsin mi?",
|
||||||
|
"pg_preset_limit": "Ön ayar sınırına ulaşıldı ({n})",
|
||||||
|
"pg_preset_overwrite": "\"{name}\" ön ayarının üzerine yazılsın mı?",
|
||||||
|
"pg_publish_one_confirm": "{label} = {value} bu cihazın ayarlarına kaydedilsin mi?",
|
||||||
"pg_restart_note": "Simülasyon araçlarını etkinleştirmek için Home Assistant'ı yeniden başlatın.",
|
"pg_restart_note": "Simülasyon araçlarını etkinleştirmek için Home Assistant'ı yeniden başlatın.",
|
||||||
"pg_sim_progress": "{done} / {total} döngü",
|
"pg_sim_progress": "{done} / {total} döngü",
|
||||||
"pg_starting": "Başlatılıyor…",
|
"pg_starting": "Başlatılıyor…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "Süre eğilimi daha kısa (%{pct}/döngü) – son ortalama {avg}",
|
"trend_duration_shorter": "Süre eğilimi daha kısa (%{pct}/döngü) – son ortalama {avg}",
|
||||||
"trend_energy_down": "Enerji düşüş eğiliminde (%{pct}/döngü)",
|
"trend_energy_down": "Enerji düşüş eğiliminde (%{pct}/döngü)",
|
||||||
"trend_energy_up": "Enerji yükseliş eğiliminde (%{pct}/döngü) – son ortalama {avg}",
|
"trend_energy_up": "Enerji yükseliş eğiliminde (%{pct}/döngü) – son ortalama {avg}",
|
||||||
|
"trim_destructive_confirm": "Bu, döngünün yalnızca %{pct}'ini korur ve bu işlem geri alınamaz. Devam edilsin mi?",
|
||||||
"trim_intro": "Kırmızı tutamaçları sürükleyin veya değer girin. Pencerenin dışındaki her şey kaldırılır.",
|
"trim_intro": "Kırmızı tutamaçları sürükleyin veya değer girin. Pencerenin dışındaki her şey kaldırılır.",
|
||||||
"tuning_suggestions_available": "Gözlemlenen döngülerden {count} ayarlama önerisi mevcut. İlgili alanların yanında görünürler.",
|
"tuning_suggestions_available": "Gözlemlenen döngülerden {count} ayarlama önerisi mevcut. İlgili alanların yanında görünürler.",
|
||||||
"unsure_detected_prefix": "WashData algıladığından emin değil",
|
"unsure_detected_prefix": "WashData algıladığından emin değil",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "İçe aktarılan öğeler eklenir; yerel hiçbir şey kaybolmaz. Ad çakışmaları aşağıda çözülür.",
|
"merge_hint": "İçe aktarılan öğeler eklenir; yerel hiçbir şey kaybolmaz. Ad çakışmaları aşağıda çözülür.",
|
||||||
"replace_warn": "İşaretlenen her kategori silinir ve dosyadan gelenle değiştirilir. İşaretlenmeyen kategorilere dokunulmaz.",
|
"replace_warn": "İşaretlenen her kategori silinir ve dosyadan gelenle değiştirilir. İşaretlenmeyen kategorilere dokunulmaz.",
|
||||||
"dest_reference_hint": "İçe aktarılan döngüler yalnızca program tanımayı iyileştirir ve kullanım/enerji istatistiklerini asla etkilemez.",
|
"dest_reference_hint": "İçe aktarılan döngüler yalnızca program tanımayı iyileştirir ve kullanım/enerji istatistiklerini asla etkilemez.",
|
||||||
"dest_real_history_hint": "İçe aktarılan döngüler bu cihazın kendi geçmişi olarak sayılır ve enerji/kullanım istatistiklerini besler. Bir cihazı yeni bir kuruluma taşırken kullanın."
|
"dest_real_history_hint": "İçe aktarılan döngüler bu cihazın kendi geçmişi olarak sayılır ve enerji/kullanım istatistiklerini besler. Bir cihazı yeni bir kuruluma taşırken kullanın.",
|
||||||
|
"sug_muted": "Bu ayar bir daha önerilmeyecek",
|
||||||
|
"sug_mute_failed": "Öneri susturulamadı",
|
||||||
|
"sug_unmuted_all": "Susturulan öneriler sıfırlandı",
|
||||||
|
"n_suggestions_muted": "{count} susturuldu; öneri motoru bunları önermeyecek.",
|
||||||
|
"font_size_hint": "Bu paneldeki her şeyi büyütün veya küçültün. Bu cihazdaki hesabınıza uygulanır."
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
"completion_min_seconds": "Gerçek döngü sayılan en kısa çalışma",
|
"completion_min_seconds": "Gerçek döngü sayılan en kısa çalışma",
|
||||||
@@ -950,7 +1034,8 @@
|
|||||||
"dtw_ddtw_scale": "Aşama 3: DDTW yarı doygunluk mesafesi; küçük = şekle daha duyarlı (varsayılan 30)",
|
"dtw_ddtw_scale": "Aşama 3: DDTW yarı doygunluk mesafesi; küçük = şekle daha duyarlı (varsayılan 30)",
|
||||||
"dtw_refine_top_n": "Aşama 3: DTW'nin yeniden puanladığı aday sayısı; doğru profil 4-5. sıraya düşüyorsa 7-9'a yükseltin (varsayılan 5)",
|
"dtw_refine_top_n": "Aşama 3: DTW'nin yeniden puanladığı aday sayısı; doğru profil 4-5. sıraya düşüyorsa 7-9'a yükseltin (varsayılan 5)",
|
||||||
"duration_scale": "Aşama 4: süre uyumunun yarılandığı logaritmik oran; küçük = daha sert ceza (varsayılan 0.175)",
|
"duration_scale": "Aşama 4: süre uyumunun yarılandığı logaritmik oran; küçük = daha sert ceza (varsayılan 0.175)",
|
||||||
"energy_scale": "Aşama 4: enerji uyumunun yarılandığı logaritmik oran; küçük = daha sert ceza (varsayılan 0.25)"
|
"energy_scale": "Aşama 4: enerji uyumunun yarılandığı logaritmik oran; küçük = daha sert ceza (varsayılan 0.25)",
|
||||||
|
"dishwasher_end_spike_quiet_release": "Bulaşık makinesi: beklenen süreden sonra döngü sonu tahliye beklemesi bırakılmadan önceki sessiz saniyeler"
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "Kırışıklıkları azaltmak için tamamlandıktan sonra ara sıra kısa yuvarlanmalar.",
|
"anti_crease": "Kırışıklıkları azaltmak için tamamlandıktan sonra ara sıra kısa yuvarlanmalar.",
|
||||||
@@ -1037,6 +1122,10 @@
|
|||||||
"phase_eta": {
|
"phase_eta": {
|
||||||
"label": "Kalan Süre",
|
"label": "Kalan Süre",
|
||||||
"intro": "Çevrim uzunluğu sıcaklığa veya sıkmaya bağlı olan makineler için aşama farkındalıklı kalan süre."
|
"intro": "Çevrim uzunluğu sıcaklığa veya sıkmaya bağlı olan makineler için aşama farkındalıklı kalan süre."
|
||||||
|
},
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "Bulaşık Makinesi",
|
||||||
|
"intro": "Bulaşık makineleri için döngü sonu işleme; bu makineler genellikle kısa bir son tahliyeden önce, neredeyse hiç güç çekmeyen uzun bir kurutma aşamasıyla biter."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
@@ -1260,6 +1349,10 @@
|
|||||||
"doc": "Hala bekleyen \"makineyi boşaltın\" hatırlatıcısı gönderilmeden önce bir döngü bittikten dakikalar sonra. Hatırlatıcıyı devre dışı bırakmak için 0'a ayarlayın.",
|
"doc": "Hala bekleyen \"makineyi boşaltın\" hatırlatıcısı gönderilmeden önce bir döngü bittikten dakikalar sonra. Hatırlatıcıyı devre dışı bırakmak için 0'a ayarlayın.",
|
||||||
"label": "Boşaltma Hatırlatıcısı Gecikmesi"
|
"label": "Boşaltma Hatırlatıcısı Gecikmesi"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Kapıyı açana veya bildirimdeki \"Hatırlatmayı durdur\" düğmesine dokunana kadar boşaltma hatırlatıcısını \"Boşaltma Hatırlatıcısı Gecikmesi\" dakikada bir yeniden gönderir. Bir Kapı Sensörü Varlığı gerektirir (hatırlatıcının kendisi de gerektirir). Kapatma düğmesi Home Assistant refakatçi uygulaması (mobil) bildirimlerinde çalışır.",
|
||||||
|
"label": "Kapı Açılana Kadar Tekrarla"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Güç kesildikten sonra döngünün bittiğini bildirmeden önce beklenecek süre. Bu pencerede güç yeniden gelirse döngü sorunsuz bir şekilde devam eder; bu, yıkama aşamaları arasındaki duraklamaları köprüler. Bulaşık makinelerinin kurutma aşamaları uzundur (20-60 dakika boyunca güç kapalıdır), bu nedenle, tüm yıkama+kuruluğun tek bir döngüde tutulması için kapatma gecikmesinin bunu aşması gerekir.",
|
"doc": "Güç kesildikten sonra döngünün bittiğini bildirmeden önce beklenecek süre. Bu pencerede güç yeniden gelirse döngü sorunsuz bir şekilde devam eder; bu, yıkama aşamaları arasındaki duraklamaları köprüler. Bulaşık makinelerinin kurutma aşamaları uzundur (20-60 dakika boyunca güç kapalıdır), bu nedenle, tüm yıkama+kuruluğun tek bir döngüde tutulması için kapatma gecikmesinin bunu aşması gerekir.",
|
||||||
"label": "Kapatma Gecikmesi"
|
"label": "Kapatma Gecikmesi"
|
||||||
@@ -1434,6 +1527,30 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Enerji Keskinliği",
|
"label": "Enerji Keskinliği",
|
||||||
"doc": "Aşama 4 enerji uyumu cezasının keskinliği. Küçük = daha sert: bir enerji uyumsuzluğu daha fazla zarara yol açar. Varsayılan 0.25, enerji yükle değiştiğinden Süre Keskinliğinden kasıtlı olarak daha gevşektir. Enerji Ağırlığı ile birlikte kullanın."
|
"doc": "Aşama 4 enerji uyumu cezasının keskinliği. Küçük = daha sert: bir enerji uyumsuzluğu daha fazla zarara yol açar. Varsayılan 0.25, enerji yükle değiştiğinden Süre Keskinliğinden kasıtlı olarak daha gevşektir. Enerji Ağırlığı ile birlikte kullanın."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Güç Profili Aralığı",
|
||||||
|
"doc": "EMHASS ve tibber_prices gibi harici planlayıcılar tarafından kullanılan düz slot başına ortalama watt dizisi olan power_profile sensör özelliği için kova boyutu. Küçük kovalar kısa güç ani artışlarını keskin tutar; büyük kovalar şekli düzler. Varsayılan 15 dakika. Yalnızca okuma zamanında kullanılır; algılamayı etkilemez."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Dokunuşta Canlı Bildirimi Koru",
|
||||||
|
"doc": "Yalnızca Android. Canlı ilerleme bildirimini kalıcı (yapışkan) hale getirerek üzerine dokunulduğunda devam eden bildirimin kapatılmasını önleyin. Kapalı olduğunda dokunmanın bildirimi kapattığı varsayılan davranış korunur."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Canlı Bildirim Dokunma Hedefi",
|
||||||
|
"doc": "Yalnızca Android. Canlı ilerleme bildirimine dokunulduğunda açılan yer (örn. /lovelace/laundry veya tam URL), uygulama açılış sayfası yerine. Varsayılan için boş bırakın."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Döngü Sonunda Kapı Otomatik Açılır",
|
||||||
|
"doc": "Döngü sonunda kurutmak için kapıyı açan (AirDry ve benzeri) bulaşık makineleri için. Bu açıkken, çalışan bir döngüde kapının açılması onu sonsuza kadar duraklatmaz; bunun yerine kapı aşağıdaki bekleme süresi kadar açık kalırsa WashData döngüyü tamamlanmış sayar. Kısa bir açılma (nesne ekleme) dikkate alınmaz. Kapı Sensörü Varlığı gerektirir."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Kapı Açık Bekleme Süresi",
|
||||||
|
"doc": "\"Döngü Sonunda Kapı Otomatik Açılır\" açık olduğunda WashData'nın döngüyü sonlandırması için kapının ne kadar süre açık kalması gerektiği. Bir tabağı hızla eklemeyi göz ardı edecek kadar uzun (varsayılan 60 sn), makine kapıyı açtıktan sonra zamanında sona erecek kadar kısa."
|
||||||
|
},
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "Pasif Kurutma Sessiz Serbest Bırakma",
|
||||||
|
"doc": "Döngü beklenen süresini aştıktan sonra, WashData bir son tahliye beklemeyi bırakıp döngüyü sonlandırmadan önce bulaşık makinesinin ne kadar süre sessiz (Durdurma Eşiği'nin altında) kalması gerektiğidir. Makineniz, gecikmeli bir son tahliyeden önce uzun ve sessiz bir kurutma aşamasına sahipse ve bu tahliye kaçırılıyorsa değeri artırın - daha geniş bir pencere, öğrenilen sürenin eski ortalamaya kilitlenmek yerine mevsimsel kaymayı (daha soğuk şebeke suyu = daha uzun döngüler) izlemesini sağlar. Bu ayar, dahili 30 dakikalık son tahliye tepesi sınırına göre beklemeyi yalnızca kısaltabilir, asla uzatamaz."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1604,6 +1721,10 @@
|
|||||||
"name_required": "Ad gerekli",
|
"name_required": "Ad gerekli",
|
||||||
"no_split_found": "Bölmek için boşta kalma aralığı bulunamadı",
|
"no_split_found": "Bölmek için boşta kalma aralığı bulunamadı",
|
||||||
"panel_settings_saved": "Panel ayarları kaydedildi",
|
"panel_settings_saved": "Panel ayarları kaydedildi",
|
||||||
|
"pg_preset_loaded": "\"{name}\" ön ayarı yüklendi",
|
||||||
|
"pg_preset_saved": "\"{name}\" ön ayarı kaydedildi",
|
||||||
|
"pg_sugg_loaded": "{n} önerilen değer yüklendi - karşılaştırmak için Test Alanı'nı çalıştırın",
|
||||||
|
"pg_sugg_ml_loaded": "{n} ML kalibre değer yüklendi - karşılaştırmak için Test Alanı'nı çalıştırın",
|
||||||
"phase_name_required": "Aşama adı gerekli",
|
"phase_name_required": "Aşama adı gerekli",
|
||||||
"phase_updated": "Aşama güncellendi",
|
"phase_updated": "Aşama güncellendi",
|
||||||
"phases_saved": "Aşamalar kaydedildi",
|
"phases_saved": "Aşamalar kaydedildi",
|
||||||
@@ -1751,6 +1872,7 @@
|
|||||||
"min_active": "Son çevrimde gözlemlenen minimum aktif güce ({min}W) dayalı.",
|
"min_active": "Son çevrimde gözlemlenen minimum aktif güce ({min}W) dayalı.",
|
||||||
"min_duration_ratio": "Bir programın çevrimin başında tanınabilmesi için olabildiğince düşük tutuldu; güven ve belirsizlik eşikleri erken kesinleşmeyi önler.",
|
"min_duration_ratio": "Bir programın çevrimin başında tanınabilmesi için olabildiğince düşük tutuldu; güven ve belirsizlik eşikleri erken kesinleşmeyi önler.",
|
||||||
"min_off_gap": "Gözlemlenen {gaps} çevrimler arası boşluğa dayalı (p05={p05}s). Cihaz alt sınırı: {floor}s.",
|
"min_off_gap": "Gözlemlenen {gaps} çevrimler arası boşluğa dayalı (p05={p05}s). Cihaz alt sınırı: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Çevrim içindeki en uzun sessiz aralığı köprülemek üzere boyutlandırıldı: {span}s + 60s tampon, {cycles} temiz çevrim boyunca köprülenen {spans} boşluktan (iki ardışık çalıştırma arasında bıraktığınız en kısa süre olan {ceiling}s'nin altında kalır).",
|
||||||
"min_power": "{cycles} temiz çevrim boyunca p05 en düşük aktif gücün ({p05}W) %40'ı; kapalı eşiğini gerçek çekişin altında tutar.{excl}",
|
"min_power": "{cycles} temiz çevrim boyunca p05 en düşük aktif gücün ({p05}W) %40'ı; kapalı eşiğini gerçek çekişin altında tutar.{excl}",
|
||||||
"ml_auto_label": "Kalite modelinin hâlâ temiz olarak değerlendirdiği en düşük güven değeri ({cycles} temiz çevrimin p10'u = {p10}).",
|
"ml_auto_label": "Kalite modelinin hâlâ temiz olarak değerlendirdiği en düşük güven değeri ({cycles} temiz çevrimin p10'u = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} çevrimde (%{pct}) çevrim sonu algılayıcısının 50%'nin üzerinde puanladığı bir duraklama vardı; {val} son doğrulaması gerektir.",
|
"ml_end_repeat": "{false}/{total} çevrimde (%{pct}) çevrim sonu algılayıcısının 50%'nin üzerinde puanladığı bir duraklama vardı; {val} son doğrulaması gerektir.",
|
||||||
@@ -1767,7 +1889,7 @@
|
|||||||
"thr_batch": "{cycles} çevrim boyunca p05 en düşük aktif gücün ({p05}W) hemen üzerinde tutuldu; böylece başlangıç olabildiğince erken yakalanır ve durdurma eşiği makinenin en düşük çalışma gücünün altında kalır.",
|
"thr_batch": "{cycles} çevrim boyunca p05 en düşük aktif gücün ({p05}W) hemen üzerinde tutuldu; böylece başlangıç olabildiğince erken yakalanır ve durdurma eşiği makinenin en düşük çalışma gücünün altında kalır.",
|
||||||
"tol_per_profile": "{profiles} profil boyunca ({cycles} çevrim) profil başına süre varyansının p75'i; tutarlı profiller cezalandırılmaz.",
|
"tol_per_profile": "{profiles} profil boyunca ({cycles} çevrim) profil başına süre varyansının p75'i; tutarlı profiller cezalandırılmaz.",
|
||||||
"tol_pooled": "{cycles} son etiketli çevrimin birleştirilmiş süre varyansına dayalı (p95 sapma={dev}).",
|
"tol_pooled": "{cycles} son etiketli çevrimin birleştirilmiş süre varyansına dayalı (p95 sapma={dev}).",
|
||||||
"watchdog": "Güvenli olduğu kadar düşük tutuldu ({p95}s'lik p95 güncelleme boşluğunun 3 katı, en az 30s); böylece takılmalar yanlış durdurmalar olmadan hızlıca yakalanır."
|
"watchdog": "Güvenli olduğu kadar düşük tutuldu ({p95}s'lik p95 güncelleme boşluğunun hemen üzerinde, en az 30s); böylece takılmalar yanlış durdurmalar olmadan hızlıca yakalanır."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "{total} yanlış algılanan döngü hariç tutuldu: {parts}.",
|
"summary": "{total} yanlış algılanan döngü hariç tutuldu: {parts}.",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "хв",
|
||||||
|
"entity_not_found": "Сутність не знайдено",
|
||||||
|
"running_long": "Працює довго",
|
||||||
|
"remaining": "залишилось",
|
||||||
|
"progress": "прогрес",
|
||||||
|
"show_time_remaining": "Показувати час, що залишився",
|
||||||
|
"show_percentage": "Показувати відсотки",
|
||||||
|
"layout": {
|
||||||
|
"tile": "Плитка (компактна)",
|
||||||
|
"detail": "Детально (розширений)",
|
||||||
|
"glance": "Огляд (кілька пристроїв)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "Пауза",
|
||||||
|
"resume": "Продовжити",
|
||||||
|
"terminate": "Завершити цикл",
|
||||||
|
"record_start": "Почати запис",
|
||||||
|
"record_stop": "Зупинити запис",
|
||||||
|
"program": "Програма",
|
||||||
|
"open_panel": "Відкрити WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "Макет",
|
||||||
|
"entity": "Сутність приладу",
|
||||||
|
"entities": "Прилади",
|
||||||
|
"title": "Заголовок",
|
||||||
|
"icon": "Значок",
|
||||||
|
"show_state": "Показувати стан",
|
||||||
|
"show_program": "Показувати програму",
|
||||||
|
"show_progress_bar": "Показувати індикатор прогресу",
|
||||||
|
"spin_icon": "Обертати значок під час роботи",
|
||||||
|
"display_mode": "Рядок деталей",
|
||||||
|
"active_color": "Перевизначення активного кольору",
|
||||||
|
"show_phase": "Показувати фазу",
|
||||||
|
"show_energy": "Показувати енергію та вартість",
|
||||||
|
"show_anomaly": "Показувати попередження про перевищення",
|
||||||
|
"show_sparkline": "Показувати графік потужності в реальному часі",
|
||||||
|
"buttons": "Кнопки дій",
|
||||||
|
"program_entity": "Сутність програми (перевизначення)",
|
||||||
|
"time_entity": "Сутність часу (перевизначення)",
|
||||||
|
"pct_entity": "Сутність прогресу (перевизначення)",
|
||||||
|
"power_entity": "Сутність потужності (перевизначення)",
|
||||||
|
"tap_action": "Дія за дотиком",
|
||||||
|
"hold_action": "Дія за утриманням",
|
||||||
|
"double_tap_action": "Дія за подвійним дотиком"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "Виявлено {n} аномалій (наприклад, двері відкриті посеред циклу) – відкрийте, щоб побачити їх на графіку",
|
"artifact_tip": "Виявлено {n} аномалій (наприклад, двері відкриті посеред циклу) – відкрийте, щоб побачити їх на графіку",
|
||||||
"auto": "(виявлено автоматично)",
|
"auto": "(виявлено автоматично)",
|
||||||
@@ -64,6 +112,21 @@
|
|||||||
"discard": "Відхилити",
|
"discard": "Відхилити",
|
||||||
"discard_tip": "Відхилити запис без збереження",
|
"discard_tip": "Відхилити запис без збереження",
|
||||||
"dismiss": "Закрити",
|
"dismiss": "Закрити",
|
||||||
|
"mute_suggestion": "Не пропонувати це налаштування",
|
||||||
|
"pg_load_calibrated": "Завантажити відкалібровані (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "Завантажити налаштування, відкалібровані ML, як перевизначення в пісочниці",
|
||||||
|
"pg_load_live": "Завантажити активні налаштування",
|
||||||
|
"pg_load_live_tip": "Перечитати поточні налаштування інтеграції та скасувати всі зміни в пісочниці",
|
||||||
|
"pg_load_suggested": "Завантажити рекомендовані ({n})",
|
||||||
|
"pg_load_suggested_tip": "Завантажити поточні рекомендації автоматичного налаштування як перевизначення в пісочниці",
|
||||||
|
"pg_preset_delete": "Видалити пресет",
|
||||||
|
"pg_preset_load": "Завантажити пресет",
|
||||||
|
"pg_preset_load_tip": "Замінити значення в пісочниці цим пресетом (активні налаштування не змінюються)",
|
||||||
|
"pg_preset_save": "Зберегти як пресет",
|
||||||
|
"pg_preset_save_tip": "Зберегти всі значення нижче як іменований пресет для цього пристрою",
|
||||||
|
"pg_publish_all": "Зберегти в налаштування ({n})",
|
||||||
|
"pg_publish_one": "Зберегти «{label}» в налаштування інтеграції",
|
||||||
|
"reset_muted": "Скинути заглушені",
|
||||||
"done": "Готово",
|
"done": "Готово",
|
||||||
"edit": "Редагувати",
|
"edit": "Редагувати",
|
||||||
"export": "Експортувати",
|
"export": "Експортувати",
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "Жодна автоматизація ще не посилається на цей пристрій.",
|
"no_automations": "Жодна автоматизація ще не посилається на цей пристрій.",
|
||||||
"panel_settings": "Налаштування панелі",
|
"panel_settings": "Налаштування панелі",
|
||||||
"param_sweep": "Перебір параметра",
|
"param_sweep": "Перебір параметра",
|
||||||
|
"pg_settings_source": "Джерело налаштувань",
|
||||||
"phase_catalog": "Каталог фаз",
|
"phase_catalog": "Каталог фаз",
|
||||||
"playground": "Пісочниця",
|
"playground": "Пісочниця",
|
||||||
"process_history": "Обробка історії",
|
"process_history": "Обробка історії",
|
||||||
@@ -348,6 +412,7 @@
|
|||||||
"default_access_level": "Стандартний рівень для користувачів, яких немає в списку нижче",
|
"default_access_level": "Стандартний рівень для користувачів, яких немає в списку нижче",
|
||||||
"default_other": "Стандартний (інші пристрої)",
|
"default_other": "Стандартний (інші пристрої)",
|
||||||
"default_tab": "Стандартна вкладка при відкритті панелі",
|
"default_tab": "Стандартна вкладка при відкритті панелі",
|
||||||
|
"font_size": "Розмір шрифту панелі",
|
||||||
"delta": "Δ",
|
"delta": "Δ",
|
||||||
"description": "Опис",
|
"description": "Опис",
|
||||||
"dtw_blend_w": "Вага змішування",
|
"dtw_blend_w": "Вага змішування",
|
||||||
@@ -415,6 +480,9 @@
|
|||||||
"pg_match_score": "Оцінка збігу",
|
"pg_match_score": "Оцінка збігу",
|
||||||
"pg_pct_of": "{p}% з {total}",
|
"pg_pct_of": "{p}% з {total}",
|
||||||
"pg_poor_match": "Поганий збіг",
|
"pg_poor_match": "Поганий збіг",
|
||||||
|
"pg_preset": "Пресет пісочниці",
|
||||||
|
"pg_preset_name": "Назва нового пресета",
|
||||||
|
"pg_preset_none": "Виберіть пресет…",
|
||||||
"pg_strong_match": "Сильний збіг",
|
"pg_strong_match": "Сильний збіг",
|
||||||
"pg_tile_ambiguous": "Неоднозначно",
|
"pg_tile_ambiguous": "Неоднозначно",
|
||||||
"pg_tile_ambiguous_tip": "Цикли з майже однаковим збігом двох програм",
|
"pg_tile_ambiguous_tip": "Цикли з майже однаковим збігом двох програм",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "Застосувати найкраще значення: {label} = {value}?",
|
"pg_apply_confirm": "Застосувати найкраще значення: {label} = {value}?",
|
||||||
"pg_canvas_empty": "Виберіть цикл вище, потім натисніть «Завантажити», щоб побачити його графік потужності.",
|
"pg_canvas_empty": "Виберіть цикл вище, потім натисніть «Завантажити», щоб побачити його графік потужності.",
|
||||||
"pg_chart_caption": "Частка виявлення/збігу за значеннями {param}",
|
"pg_chart_caption": "Частка виявлення/збігу за значеннями {param}",
|
||||||
|
"pg_ctrl_intro": "Значення беруться з активних налаштувань інтеграції для цього пристрою. Зміни залишаються в пісочниці, доки ви не збережете їх у налаштування.",
|
||||||
|
"pg_live_unavailable": "Активні налаштування недоступні, показано стандартні значення.",
|
||||||
|
"pg_load_live_confirm": "Скасувати зміни в пісочниці ({n}) і завантажити поточні налаштування інтеграції?",
|
||||||
"pg_match_rate": "{pct}% збігів на {total} циклах",
|
"pg_match_rate": "{pct}% збігів на {total} циклах",
|
||||||
|
"pg_matches_live": "Збігається з активними налаштуваннями",
|
||||||
|
"pg_n_changed": "Відмінностей від активних налаштувань: {n}",
|
||||||
|
"pg_sugg_none": "Усі рекомендації вже відповідають поточним налаштуванням",
|
||||||
|
"pg_preset_delete_confirm": "Видалити пресет «{name}»?",
|
||||||
|
"pg_preset_limit": "Досягнуто ліміт пресетів ({n})",
|
||||||
|
"pg_preset_overwrite": "Перезаписати пресет «{name}»?",
|
||||||
|
"pg_publish_one_confirm": "Зберегти {label} = {value} у налаштування цього пристрою?",
|
||||||
"pg_restart_note": "Перезапустіть Home Assistant, щоб увімкнути інструменти симуляції.",
|
"pg_restart_note": "Перезапустіть Home Assistant, щоб увімкнути інструменти симуляції.",
|
||||||
"pg_sim_progress": "{done} / {total} циклів",
|
"pg_sim_progress": "{done} / {total} циклів",
|
||||||
"pg_starting": "Запуск…",
|
"pg_starting": "Запуск…",
|
||||||
@@ -789,6 +867,7 @@
|
|||||||
"preferences_admin": "Налаштування, панель і контроль доступу",
|
"preferences_admin": "Налаштування, панель і контроль доступу",
|
||||||
"preferences_adv": "Налаштування",
|
"preferences_adv": "Налаштування",
|
||||||
"prefs_personal": "Застосовується лише до вашого облікового запису Home Assistant.",
|
"prefs_personal": "Застосовується лише до вашого облікового запису Home Assistant.",
|
||||||
|
"font_size_hint": "Зробіть усе на цій панелі більшим або меншим. Застосовується до вашого облікового запису на цьому пристрої.",
|
||||||
"process_history_hint": "Повторно запустіть зіставлення для всіх збережених циклів, оновіть пропозиції з налаштування, перенавчіть моделі ML (якщо увімкнено) та перерахуйте якість циклів. Запускайте після пакетного перегляду.",
|
"process_history_hint": "Повторно запустіть зіставлення для всіх збережених циклів, оновіть пропозиції з налаштування, перенавчіть моделі ML (якщо увімкнено) та перерахуйте якість циклів. Запускайте після пакетного перегляду.",
|
||||||
"profile_deleted": "Профіль видалено",
|
"profile_deleted": "Профіль видалено",
|
||||||
"profile_poor_health_detail": "Цикли, призначені цьому профілю, мають суперечливі форми або низьку надійність. Розгляньте можливість перебудови конверта або перегляду позначених циклів.",
|
"profile_poor_health_detail": "Цикли, призначені цьому профілю, мають суперечливі форми або низьку надійність. Розгляньте можливість перебудови конверта або перегляду позначених циклів.",
|
||||||
@@ -821,6 +900,10 @@
|
|||||||
"split_intro": "Натисніть на графік, щоб додати або видалити точку поділу, або автовизначення за паузами. Кожен отриманий сегмент може отримати власний профіль.",
|
"split_intro": "Натисніть на графік, щоб додати або видалити точку поділу, або автовизначення за паузами. Кожен отриманий сегмент може отримати власний профіль.",
|
||||||
"storage_diagnostics": "Статистика сховища, обслуговування, експорт/імпорт",
|
"storage_diagnostics": "Статистика сховища, обслуговування, експорт/імпорт",
|
||||||
"sug_staged": "Встановлено {key} = {val}. Збережіть для застосування.",
|
"sug_staged": "Встановлено {key} = {val}. Збережіть для застосування.",
|
||||||
|
"sug_muted": "Це налаштування більше не пропонуватиметься",
|
||||||
|
"sug_mute_failed": "Не вдалося заглушити пропозицію",
|
||||||
|
"sug_unmuted_all": "Заглушені пропозиції скинуто",
|
||||||
|
"n_suggestions_muted": "{count} заглушено; авто-налаштувач не пропонуватиме їх.",
|
||||||
"toast_auto_detect_enabled": "Автовизначення увімкнено",
|
"toast_auto_detect_enabled": "Автовизначення увімкнено",
|
||||||
"toast_auto_label_complete": "Автоматичне маркування завершено",
|
"toast_auto_label_complete": "Автоматичне маркування завершено",
|
||||||
"toast_auto_label_failed": "Автоматичне маркування не виконано: {error}",
|
"toast_auto_label_failed": "Автоматичне маркування не виконано: {error}",
|
||||||
@@ -845,6 +928,7 @@
|
|||||||
"trend_duration_shorter": "Тривалість скорочується ({pct}%/цикл) – останній середній показник {avg}",
|
"trend_duration_shorter": "Тривалість скорочується ({pct}%/цикл) – останній середній показник {avg}",
|
||||||
"trend_energy_down": "Енергія зменшується ({pct}%/цикл)",
|
"trend_energy_down": "Енергія зменшується ({pct}%/цикл)",
|
||||||
"trend_energy_up": "Енергія зростає ({pct}%/цикл) – останній середній показник {avg}",
|
"trend_energy_up": "Енергія зростає ({pct}%/цикл) – останній середній показник {avg}",
|
||||||
|
"trim_destructive_confirm": "Залишиться лише {pct}% циклу, і цю дію не можна скасувати. Продовжити?",
|
||||||
"trim_intro": "Перетягніть червоні маркери або введіть значення. Все за межами вікна видаляється.",
|
"trim_intro": "Перетягніть червоні маркери або введіть значення. Все за межами вікна видаляється.",
|
||||||
"tuning_suggestions_available": "Доступна {count} пропозиція налаштування на основі спостережених циклів. Вони з'являються поряд із відповідними полями.",
|
"tuning_suggestions_available": "Доступна {count} пропозиція налаштування на основі спостережених циклів. Вони з'являються поряд із відповідними полями.",
|
||||||
"unsure_detected_prefix": "WashData не впевнений, що виявив",
|
"unsure_detected_prefix": "WashData не впевнений, що виявив",
|
||||||
@@ -970,6 +1054,10 @@
|
|||||||
"unusable": "Непридатний"
|
"unusable": "Непридатний"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
|
"dishwasher": {
|
||||||
|
"intro": "Обробка завершення циклу для посудомийних машин, які зазвичай закінчуються тривалою фазою сушіння майже без споживання енергії перед коротким фінальним зливом.",
|
||||||
|
"label": "Посудомийна машина"
|
||||||
|
},
|
||||||
"anti_wrinkle": {
|
"anti_wrinkle": {
|
||||||
"intro": "Режим захисту від зминання виявляє короткі імпульси обертання барабана з малою потужністю після основного циклу та зберігає їх як частину завершеного циклу.",
|
"intro": "Режим захисту від зминання виявляє короткі імпульси обертання барабана з малою потужністю після основного циклу та зберігає їх як частину завершеного циклу.",
|
||||||
"label": "Захист від зминання"
|
"label": "Захист від зминання"
|
||||||
@@ -1012,6 +1100,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"doc": "Після того як цикл перевищує очікувану тривалість, скільки часу посудомийна машина має залишатися неактивною (нижче «Поріг зупинки»), перш ніж WashData припинить очікувати фінальний злив і завершить цикл. Збільште значення, якщо ваша машина має тривалу тиху фазу сушіння перед пізнім фінальним зливом, який пропускається - ширше вікно дозволяє вивченій тривалості слідувати за сезонними змінами (холодніша вхідна вода = довші цикли), а не фіксуватися на старому середньому значенні. Воно лише скорочує очікування відносно внутрішнього 30-хвилинного ліміту очікування завершального сплеску (відкачування води), але ніколи не збільшує його.",
|
||||||
|
"label": "Тихе завершення пасивного сушіння"
|
||||||
|
},
|
||||||
"anti_wrinkle_enabled": {
|
"anti_wrinkle_enabled": {
|
||||||
"doc": "Розпізнавайте короткі малопотужні імпульси обертання, які видає сушильна машина після основної фази нагрівання, і зберігайте їх прив’язаними до завершеного циклу замість того, щоб зчитувати їх як нові цикли.",
|
"doc": "Розпізнавайте короткі малопотужні імпульси обертання, які видає сушильна машина після основної фази нагрівання, і зберігайте їх прив’язаними до завершеного циклу замість того, щоб зчитувати їх як нові цикли.",
|
||||||
"label": "Увімкнути виявлення захисту від зминання"
|
"label": "Увімкнути виявлення захисту від зминання"
|
||||||
@@ -1232,6 +1324,10 @@
|
|||||||
"doc": "Через кілька хвилин після завершення циклу перед надсиланням нагадування «розвантажити машину», що все ще очікує. Встановіть 0, щоб вимкнути нагадування.",
|
"doc": "Через кілька хвилин після завершення циклу перед надсиланням нагадування «розвантажити машину», що все ще очікує. Встановіть 0, щоб вимкнути нагадування.",
|
||||||
"label": "Затримка нагадування про вивантаження"
|
"label": "Затримка нагадування про вивантаження"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "Продовжує надсилати нагадування про вивантаження кожні \"Затримка нагадування про вивантаження\" хвилин, доки ви не відкриєте двері або не натиснете \"Не нагадувати\" у сповіщенні. Потрібна Сутність датчика дверей (як і для самого нагадування). Кнопка відхилення працює у сповіщеннях мобільного застосунку Home Assistant (companion).",
|
||||||
|
"label": "Повторювати, доки не відкриються двері"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "Час очікування після падіння живлення, перш ніж оголосити цикл завершеним. Якщо живлення відновлюється протягом цього вікна, цикл продовжується безперебійно - це мости призупиняються між етапами прання. Посудомийні машини мають довгі фази сушіння (вимкнення на 20-60 хв), тому затримка вимкнення повинна перевищувати цю, щоб весь цикл миття+сушіння відбувався як один цикл.",
|
"doc": "Час очікування після падіння живлення, перш ніж оголосити цикл завершеним. Якщо живлення відновлюється протягом цього вікна, цикл продовжується безперебійно - це мости призупиняються між етапами прання. Посудомийні машини мають довгі фази сушіння (вимкнення на 20-60 хв), тому затримка вимкнення повинна перевищувати цю, щоб весь цикл миття+сушіння відбувався як один цикл.",
|
||||||
"label": "Затримка вимкнення"
|
"label": "Затримка вимкнення"
|
||||||
@@ -1406,6 +1502,26 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "Гострота енергії",
|
"label": "Гострота енергії",
|
||||||
"doc": "Гострота штрафу за невідповідність енергії на Етапі 4. Менше = суворіше: невідповідність енергії більше знижує оцінку. Значення за замовчуванням 0,25 є навмисно більш м'яким, ніж Гострота тривалості, оскільки енергія варіюється з навантаженням. Використовуйте разом із Вагою енергії."
|
"doc": "Гострота штрафу за невідповідність енергії на Етапі 4. Менше = суворіше: невідповідність енергії більше знижує оцінку. Значення за замовчуванням 0,25 є навмисно більш м'яким, ніж Гострота тривалості, оскільки енергія варіюється з навантаженням. Використовуйте разом із Вагою енергії."
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "Інтервал профілю потужності",
|
||||||
|
"doc": "Розмір сегмента для атрибута датчика power_profile по профілю (плоский масив середніх ват по слотах), що використовується зовнішніми планувальниками, такими як EMHASS та tibber_prices. Менші сегменти зберігають короткі сплески потужності гострими; більші сегменти згладжують форму. За замовчуванням 15 хв. Лише для читання; не впливає на виявлення."
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "Зберігати живе сповіщення при натисканні",
|
||||||
|
"doc": "Лише для Android. Зробіть сповіщення про хід виконання постійним (закріпленим), щоб натискання не закривало його. Вимкнено зберігає поведінку за замовчуванням, де натискання закриває сповіщення."
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "Ціль натискання живого сповіщення",
|
||||||
|
"doc": "Лише для Android. Куди відкривається натискання на сповіщення про хід виконання (наприклад, /lovelace/laundry або повний URL), замість початкової сторінки застосунку. Залиште порожнім для поведінки за замовчуванням."
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "Дверцята відкриваються автоматично наприкінці",
|
||||||
|
"doc": "Для посудомийних машин, які відкривають дверцята наприкінці циклу для сушіння (AirDry та подібні). При увімкненні відкриття дверцят під час активного циклу більше не призупиняє його назавжди; натомість, якщо дверцята залишаються відкритими протягом часу витримки нижче, WashData вважає цикл завершеним. Коротке відкриття (додавання посуду) ігнорується. Потрібен об'єкт датчика дверей."
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "Витримка при відкритих дверцятах",
|
||||||
|
"doc": "Як довго дверцята повинні залишатися відкритими до завершення циклу, коли увімкнено \"Дверцята відкриваються автоматично наприкінці\". Достатньо довго, щоб ігнорувати швидке додавання посуду (за замовчуванням 60 с), достатньо коротко для швидкого завершення після відкриття дверцят машиною."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1576,6 +1692,10 @@
|
|||||||
"name_required": "Назва обов'язкова",
|
"name_required": "Назва обов'язкова",
|
||||||
"no_split_found": "Не знайдено пауз для поділу",
|
"no_split_found": "Не знайдено пауз для поділу",
|
||||||
"panel_settings_saved": "Налаштування панелі збережено",
|
"panel_settings_saved": "Налаштування панелі збережено",
|
||||||
|
"pg_preset_loaded": "Пресет «{name}» завантажено",
|
||||||
|
"pg_preset_saved": "Пресет «{name}» збережено",
|
||||||
|
"pg_sugg_loaded": "Завантажено {n} рекомендованих значень - запустіть пісочницю для порівняння",
|
||||||
|
"pg_sugg_ml_loaded": "Завантажено {n} значень, відкаліброваних ML - запустіть пісочницю для порівняння",
|
||||||
"phase_name_required": "Назва фази обов'язкова",
|
"phase_name_required": "Назва фази обов'язкова",
|
||||||
"phase_updated": "Фазу оновлено",
|
"phase_updated": "Фазу оновлено",
|
||||||
"phases_saved": "Фази збережено",
|
"phases_saved": "Фази збережено",
|
||||||
@@ -1723,6 +1843,7 @@
|
|||||||
"min_active": "На основі мінімальної активної потужності ({min}W), зафіксованої в останньому циклі.",
|
"min_active": "На основі мінімальної активної потужності ({min}W), зафіксованої в останньому циклі.",
|
||||||
"min_duration_ratio": "Залишено якомога нижчим, щоб програма розпізнавалася на початку циклу; пороги впевненості та неоднозначності запобігають передчасним підтвердженням.",
|
"min_duration_ratio": "Залишено якомога нижчим, щоб програма розпізнавалася на початку циклу; пороги впевненості та неоднозначності запобігають передчасним підтвердженням.",
|
||||||
"min_off_gap": "На основі {gaps} спостережуваних проміжків між циклами (p05={p05}s). Мінімум пристрою: {floor}s.",
|
"min_off_gap": "На основі {gaps} спостережуваних проміжків між циклами (p05={p05}s). Мінімум пристрою: {floor}s.",
|
||||||
|
"min_off_gap_bridge": "Розраховано так, щоб перекрити найдовшу тиху ділянку всередині циклу: {span}s + запас 60s, за {spans} перекритими проміжками за {cycles} коректних циклів (залишається нижче вашого найкоротшого проміжку між двома запусками поспіль, який становить {ceiling}s).",
|
||||||
"min_power": "40% від найменшої активної потужності p05 ({p05}W) за {cycles} коректними циклами, щоб поріг вимкнення залишався нижчим за реальне споживання.{excl}",
|
"min_power": "40% від найменшої активної потужності p05 ({p05}W) за {cycles} коректними циклами, щоб поріг вимкнення залишався нижчим за реальне споживання.{excl}",
|
||||||
"ml_auto_label": "Найменша впевненість, за якої модель якості все ще вважала цикл коректним (p10 за {cycles} коректними циклами = {p10}).",
|
"ml_auto_label": "Найменша впевненість, за якої модель якості все ще вважала цикл коректним (p10 за {cycles} коректними циклами = {p10}).",
|
||||||
"ml_end_repeat": "{false}/{total} циклів ({pct}%) мали паузу, яку детектор завершення оцінив вище 50%; потрібно {val} підтвердження завершення.",
|
"ml_end_repeat": "{false}/{total} циклів ({pct}%) мали паузу, яку детектор завершення оцінив вище 50%; потрібно {val} підтвердження завершення.",
|
||||||
@@ -1739,7 +1860,7 @@
|
|||||||
"thr_batch": "Залишено трохи вище найменшої активної потужності p05 за {cycles} циклами ({p05}W), щоб запуск фіксувався якомога раніше, а поріг зупинки залишався нижчим за мінімальну робочу потужність машини.",
|
"thr_batch": "Залишено трохи вище найменшої активної потужності p05 за {cycles} циклами ({p05}W), щоб запуск фіксувався якомога раніше, а поріг зупинки залишався нижчим за мінімальну робочу потужність машини.",
|
||||||
"tol_per_profile": "p75 розкиду тривалості за профілями серед {profiles} профілів ({cycles} циклів); стабільні профілі не штрафуються.",
|
"tol_per_profile": "p75 розкиду тривалості за профілями серед {profiles} профілів ({cycles} циклів); стабільні профілі не штрафуються.",
|
||||||
"tol_pooled": "На основі об'єднаного розкиду тривалості {cycles} нещодавніх розмічених циклів (відхилення p95={dev}).",
|
"tol_pooled": "На основі об'єднаного розкиду тривалості {cycles} нещодавніх розмічених циклів (відхилення p95={dev}).",
|
||||||
"watchdog": "Залишено настільки низьким, наскільки це безпечно (3x інтервал оновлення p95, що дорівнює {p95}s, мін. 30s), щоб зависання виявлялися швидко без хибних зупинок."
|
"watchdog": "Залишено настільки низьким, наскільки це безпечно (трохи вище інтервалу оновлення p95, що дорівнює {p95}s, мін. 30s), щоб зависання виявлялися швидко без хибних зупинок."
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "Виключено {total} помилково виявлених циклів: {parts}.",
|
"summary": "Виключено {total} помилково виявлених циклів: {parts}.",
|
||||||
@@ -1770,6 +1891,7 @@
|
|||||||
"other": "Інше"
|
"other": "Інше"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
|
"dishwasher_end_spike_quiet_release": "Посудомийна машина: секунди неактивності після очікуваної тривалості перед зняттям очікування фінального зливу в кінці циклу",
|
||||||
"completion_min_seconds": "Найкоротший запуск, що вважається справжнім циклом",
|
"completion_min_seconds": "Найкоротший запуск, що вважається справжнім циклом",
|
||||||
"end_repeat_count": "Скільки низьких показань поспіль до завершення",
|
"end_repeat_count": "Скільки низьких показань поспіль до завершення",
|
||||||
"interrupted_min_seconds": "Короткі цикли позначаються як перервані",
|
"interrupted_min_seconds": "Короткі цикли позначаються як перервані",
|
||||||
|
|||||||
@@ -1,4 +1,52 @@
|
|||||||
{
|
{
|
||||||
|
"card": {
|
||||||
|
"min": "分钟",
|
||||||
|
"entity_not_found": "未找到实体",
|
||||||
|
"running_long": "运行超时",
|
||||||
|
"remaining": "剩余",
|
||||||
|
"progress": "进度",
|
||||||
|
"show_time_remaining": "显示剩余时间",
|
||||||
|
"show_percentage": "显示百分比",
|
||||||
|
"layout": {
|
||||||
|
"tile": "磁贴(紧凑)",
|
||||||
|
"detail": "详情(丰富)",
|
||||||
|
"glance": "概览(多个设备)"
|
||||||
|
},
|
||||||
|
"btn": {
|
||||||
|
"pause": "暂停",
|
||||||
|
"resume": "继续",
|
||||||
|
"terminate": "结束周期",
|
||||||
|
"record_start": "开始录制",
|
||||||
|
"record_stop": "停止录制",
|
||||||
|
"program": "程序",
|
||||||
|
"open_panel": "打开 WashData"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"layout": "布局",
|
||||||
|
"entity": "电器实体",
|
||||||
|
"entities": "电器",
|
||||||
|
"title": "标题",
|
||||||
|
"icon": "图标",
|
||||||
|
"show_state": "显示状态",
|
||||||
|
"show_program": "显示程序",
|
||||||
|
"show_progress_bar": "显示进度条",
|
||||||
|
"spin_icon": "运行时旋转图标",
|
||||||
|
"display_mode": "详情行",
|
||||||
|
"active_color": "活动颜色覆盖",
|
||||||
|
"show_phase": "显示阶段",
|
||||||
|
"show_energy": "显示能耗和费用",
|
||||||
|
"show_anomaly": "显示超时警告",
|
||||||
|
"show_sparkline": "显示实时功率图",
|
||||||
|
"buttons": "操作按钮",
|
||||||
|
"program_entity": "程序实体(覆盖)",
|
||||||
|
"time_entity": "时间实体(覆盖)",
|
||||||
|
"pct_entity": "进度实体(覆盖)",
|
||||||
|
"power_entity": "功率实体(覆盖)",
|
||||||
|
"tap_action": "点按操作",
|
||||||
|
"hold_action": "长按操作",
|
||||||
|
"double_tap_action": "双击操作"
|
||||||
|
}
|
||||||
|
},
|
||||||
"badge": {
|
"badge": {
|
||||||
"artifact_tip": "检测到 {n} 个异常(例如,门在周期中打开)– 打开以在图表上查看",
|
"artifact_tip": "检测到 {n} 个异常(例如,门在周期中打开)– 打开以在图表上查看",
|
||||||
"auto": "(自动检测)",
|
"auto": "(自动检测)",
|
||||||
@@ -92,6 +140,19 @@
|
|||||||
"pause_cycle_tip": "暂停正在运行的周期 – 设备将从中断处恢复",
|
"pause_cycle_tip": "暂停正在运行的周期 – 设备将从中断处恢复",
|
||||||
"pg_apply_device": "应用到设备",
|
"pg_apply_device": "应用到设备",
|
||||||
"pg_autofill": "自动填充",
|
"pg_autofill": "自动填充",
|
||||||
|
"pg_load_calibrated": "加载已校准 (ML) ({n})",
|
||||||
|
"pg_load_calibrated_tip": "将 ML 校准设置作为试验场覆盖值载入",
|
||||||
|
"pg_load_live": "加载生效设置",
|
||||||
|
"pg_load_live_tip": "重新读取集成的当前设置,并放弃试验场中的所有修改",
|
||||||
|
"pg_load_suggested": "加载建议项 ({n})",
|
||||||
|
"pg_load_suggested_tip": "将自动调谐器的当前建议作为试验场覆盖值载入",
|
||||||
|
"pg_preset_delete": "删除预设",
|
||||||
|
"pg_preset_load": "加载预设",
|
||||||
|
"pg_preset_load_tip": "用该预设替换试验场中的值(当前生效的设置不受影响)",
|
||||||
|
"pg_preset_save": "另存为预设",
|
||||||
|
"pg_preset_save_tip": "将下面的所有值保存为该设备的一个命名预设",
|
||||||
|
"pg_publish_all": "将 {n} 项应用到集成",
|
||||||
|
"pg_publish_one": "将 {label} 应用到集成",
|
||||||
"play": "播放",
|
"play": "播放",
|
||||||
"process": "处理",
|
"process": "处理",
|
||||||
"process_history": "立即处理",
|
"process_history": "立即处理",
|
||||||
@@ -178,7 +239,9 @@
|
|||||||
"download_export": "下载导出文件",
|
"download_export": "下载导出文件",
|
||||||
"analyze_import": "分析文件",
|
"analyze_import": "分析文件",
|
||||||
"import_selected": "导入所选",
|
"import_selected": "导入所选",
|
||||||
"back": "返回"
|
"back": "返回",
|
||||||
|
"mute_suggestion": "停止建议此设置",
|
||||||
|
"reset_muted": "重置已屏蔽"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"anti_wrinkle_exit": {
|
"anti_wrinkle_exit": {
|
||||||
@@ -275,6 +338,7 @@
|
|||||||
"no_automations": "尚未有自动化引用此设备。",
|
"no_automations": "尚未有自动化引用此设备。",
|
||||||
"panel_settings": "面板设置",
|
"panel_settings": "面板设置",
|
||||||
"param_sweep": "参数扫描",
|
"param_sweep": "参数扫描",
|
||||||
|
"pg_settings_source": "设置来源",
|
||||||
"phase_catalog": "阶段目录",
|
"phase_catalog": "阶段目录",
|
||||||
"playground": "试验场",
|
"playground": "试验场",
|
||||||
"process_history": "处理历史",
|
"process_history": "处理历史",
|
||||||
@@ -415,6 +479,9 @@
|
|||||||
"pg_match_score": "匹配得分",
|
"pg_match_score": "匹配得分",
|
||||||
"pg_pct_of": "{total} 中的 {p}%",
|
"pg_pct_of": "{total} 中的 {p}%",
|
||||||
"pg_poor_match": "匹配较差",
|
"pg_poor_match": "匹配较差",
|
||||||
|
"pg_preset": "试验场预设",
|
||||||
|
"pg_preset_name": "新预设名称",
|
||||||
|
"pg_preset_none": "选择预设…",
|
||||||
"pg_strong_match": "强匹配",
|
"pg_strong_match": "强匹配",
|
||||||
"pg_tile_ambiguous": "不明确",
|
"pg_tile_ambiguous": "不明确",
|
||||||
"pg_tile_ambiguous_tip": "两个程序几乎打平的周期",
|
"pg_tile_ambiguous_tip": "两个程序几乎打平的周期",
|
||||||
@@ -609,7 +676,8 @@
|
|||||||
"conflict_resolution": "名称冲突",
|
"conflict_resolution": "名称冲突",
|
||||||
"conflict_import_copy": "作为副本导入",
|
"conflict_import_copy": "作为副本导入",
|
||||||
"conflict_keep_mine": "保留我的",
|
"conflict_keep_mine": "保留我的",
|
||||||
"conflict_overwrite": "覆盖"
|
"conflict_overwrite": "覆盖",
|
||||||
|
"font_size": "面板字体大小"
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"all_levels": "所有级别",
|
"all_levels": "所有级别",
|
||||||
@@ -771,7 +839,17 @@
|
|||||||
"pg_apply_confirm": "应用最佳值:{label} = {value}?",
|
"pg_apply_confirm": "应用最佳值:{label} = {value}?",
|
||||||
"pg_canvas_empty": "在上方选择一个周期,然后按加载查看其功率轨迹。",
|
"pg_canvas_empty": "在上方选择一个周期,然后按加载查看其功率轨迹。",
|
||||||
"pg_chart_caption": "不同 {param} 取值下的检测/匹配率",
|
"pg_chart_caption": "不同 {param} 取值下的检测/匹配率",
|
||||||
|
"pg_ctrl_intro": "数值以该设备当前生效的集成设置为起点。修改会保留在试验场中,直到您将其应用为止。",
|
||||||
|
"pg_live_unavailable": "无法获取生效设置,显示默认值。",
|
||||||
|
"pg_load_live_confirm": "放弃试验场中的 {n} 项修改并重新加载集成的当前设置吗?",
|
||||||
"pg_match_rate": "在 {total} 个周期上的匹配率为 {pct}%",
|
"pg_match_rate": "在 {total} 个周期上的匹配率为 {pct}%",
|
||||||
|
"pg_matches_live": "与生效设置一致",
|
||||||
|
"pg_n_changed": "与生效设置有 {n} 项不同",
|
||||||
|
"pg_sugg_none": "所有建议项已与当前设置一致",
|
||||||
|
"pg_preset_delete_confirm": "删除预设“{name}”吗?",
|
||||||
|
"pg_preset_limit": "已达预设数量上限({n})",
|
||||||
|
"pg_preset_overwrite": "覆盖预设“{name}”吗?",
|
||||||
|
"pg_publish_one_confirm": "将 {label} = {value} 保存到该设备的设置吗?",
|
||||||
"pg_restart_note": "重启 Home Assistant 以启用模拟工具。",
|
"pg_restart_note": "重启 Home Assistant 以启用模拟工具。",
|
||||||
"pg_sim_progress": "{done} / {total} 个周期",
|
"pg_sim_progress": "{done} / {total} 个周期",
|
||||||
"pg_starting": "正在启动…",
|
"pg_starting": "正在启动…",
|
||||||
@@ -845,6 +923,7 @@
|
|||||||
"trend_duration_shorter": "时长趋势缩短({pct}%/周期)– 近期平均 {avg}",
|
"trend_duration_shorter": "时长趋势缩短({pct}%/周期)– 近期平均 {avg}",
|
||||||
"trend_energy_down": "能耗趋势下降({pct}%/周期)",
|
"trend_energy_down": "能耗趋势下降({pct}%/周期)",
|
||||||
"trend_energy_up": "能耗趋势上升({pct}%/周期)– 近期平均 {avg}",
|
"trend_energy_up": "能耗趋势上升({pct}%/周期)– 近期平均 {avg}",
|
||||||
|
"trim_destructive_confirm": "这将仅保留该周期的 {pct}%,且此操作无法撤销。是否继续?",
|
||||||
"trim_intro": "拖动红色控制柄,或输入值。窗口外的所有内容将被移除。",
|
"trim_intro": "拖动红色控制柄,或输入值。窗口外的所有内容将被移除。",
|
||||||
"tuning_suggestions_available": "来自观察周期的 {count} 个调整建议可用。它们显示在相关字段旁边。",
|
"tuning_suggestions_available": "来自观察周期的 {count} 个调整建议可用。它们显示在相关字段旁边。",
|
||||||
"unsure_detected_prefix": "WashData 不确定是否检测到",
|
"unsure_detected_prefix": "WashData 不确定是否检测到",
|
||||||
@@ -922,7 +1001,12 @@
|
|||||||
"merge_hint": "导入的项目会被添加,本地数据不会丢失。名称冲突将在下方解决。",
|
"merge_hint": "导入的项目会被添加,本地数据不会丢失。名称冲突将在下方解决。",
|
||||||
"replace_warn": "每个勾选的类别都会被清除并用文件中的内容替换。未勾选的类别保持不变。",
|
"replace_warn": "每个勾选的类别都会被清除并用文件中的内容替换。未勾选的类别保持不变。",
|
||||||
"dest_reference_hint": "导入的周期仅用于改进程序识别,绝不影响用量/能耗统计。",
|
"dest_reference_hint": "导入的周期仅用于改进程序识别,绝不影响用量/能耗统计。",
|
||||||
"dest_real_history_hint": "导入的周期计为本设备自身的历史记录,并纳入能耗/用量统计。适用于将一台设备迁移到新的安装环境。"
|
"dest_real_history_hint": "导入的周期计为本设备自身的历史记录,并纳入能耗/用量统计。适用于将一台设备迁移到新的安装环境。",
|
||||||
|
"sug_muted": "将不再建议此设置",
|
||||||
|
"sug_mute_failed": "无法屏蔽建议",
|
||||||
|
"sug_unmuted_all": "已重置屏蔽的建议",
|
||||||
|
"n_suggestions_muted": "已屏蔽 {count} 项,自动调整器将不再提议这些设置。",
|
||||||
|
"font_size_hint": "调整此面板所有内容的字体大小,仅对您在此设备上的账户生效。"
|
||||||
},
|
},
|
||||||
"pg_desc": {
|
"pg_desc": {
|
||||||
"completion_min_seconds": "计为真实周期的最短运行时间",
|
"completion_min_seconds": "计为真实周期的最短运行时间",
|
||||||
@@ -950,7 +1034,8 @@
|
|||||||
"dtw_ddtw_scale": "Stage 3: DDTW 半饱和距离; 越小对形状越敏感(默认 30)",
|
"dtw_ddtw_scale": "Stage 3: DDTW 半饱和距离; 越小对形状越敏感(默认 30)",
|
||||||
"dtw_refine_top_n": "Stage 3: DTW 重新评分的候选数量; 若正确档案排在第 4-5 位则调高至 7-9(默认 5)",
|
"dtw_refine_top_n": "Stage 3: DTW 重新评分的候选数量; 若正确档案排在第 4-5 位则调高至 7-9(默认 5)",
|
||||||
"duration_scale": "Stage 4: 时长一致性得分减半时的对数比率; 越小惩罚越严格(默认 0.175)",
|
"duration_scale": "Stage 4: 时长一致性得分减半时的对数比率; 越小惩罚越严格(默认 0.175)",
|
||||||
"energy_scale": "Stage 4: 能耗一致性得分减半时的对数比率; 越小惩罚越严格(默认 0.25)"
|
"energy_scale": "Stage 4: 能耗一致性得分减半时的对数比率; 越小惩罚越严格(默认 0.25)",
|
||||||
|
"dishwasher_end_spike_quiet_release": "洗碗机:预期时长过后、解除周期结束排水等待之前保持静止的秒数"
|
||||||
},
|
},
|
||||||
"phase_desc": {
|
"phase_desc": {
|
||||||
"anti_crease": "完成后偶尔进行短暂的翻滚以减少皱纹。",
|
"anti_crease": "完成后偶尔进行短暂的翻滚以减少皱纹。",
|
||||||
@@ -1037,6 +1122,10 @@
|
|||||||
"phase_eta": {
|
"phase_eta": {
|
||||||
"label": "剩余时间",
|
"label": "剩余时间",
|
||||||
"intro": "阶段感知的剩余时间,适用于周期长度取决于温度或脱水的机器。"
|
"intro": "阶段感知的剩余时间,适用于周期长度取决于温度或脱水的机器。"
|
||||||
|
},
|
||||||
|
"dishwasher": {
|
||||||
|
"label": "洗碗机",
|
||||||
|
"intro": "洗碗机的周期结束处理。洗碗机通常在短暂的最终排水之前,会经历一个近乎无功耗的长时间干燥阶段。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting": {
|
"setting": {
|
||||||
@@ -1260,6 +1349,10 @@
|
|||||||
"doc": "一个周期结束后几分钟,发送仍在等待的“卸载机器”提醒。设置 0 禁用提醒。",
|
"doc": "一个周期结束后几分钟,发送仍在等待的“卸载机器”提醒。设置 0 禁用提醒。",
|
||||||
"label": "卸载提醒延迟"
|
"label": "卸载提醒延迟"
|
||||||
},
|
},
|
||||||
|
"notify_unload_repeat": {
|
||||||
|
"doc": "每隔 \"卸载提醒延迟\" 分钟持续重新发送卸载提醒,直到您打开门或点按通知上的 \"停止提醒\"。需要门传感器实体(提醒本身即需要)。关闭按钮适用于 Home Assistant 配套应用(移动端)通知。",
|
||||||
|
"label": "重复直到门打开"
|
||||||
|
},
|
||||||
"off_delay": {
|
"off_delay": {
|
||||||
"doc": "断电后宣告周期结束之前等待的时间。如果在此窗口内恢复供电,则循环将无缝继续 - 这会在清洗阶段之间建立暂停的桥梁。洗碗机具有较长的干燥阶段(关闭电源 20-60 分钟),因此关闭延迟必须超过该时间才能保持整个洗涤+干燥为一个循环。",
|
"doc": "断电后宣告周期结束之前等待的时间。如果在此窗口内恢复供电,则循环将无缝继续 - 这会在清洗阶段之间建立暂停的桥梁。洗碗机具有较长的干燥阶段(关闭电源 20-60 分钟),因此关闭延迟必须超过该时间才能保持整个洗涤+干燥为一个循环。",
|
||||||
"label": "关闭延迟"
|
"label": "关闭延迟"
|
||||||
@@ -1434,6 +1527,30 @@
|
|||||||
"energy_scale": {
|
"energy_scale": {
|
||||||
"label": "能耗锐度",
|
"label": "能耗锐度",
|
||||||
"doc": "Stage 4 能耗一致性惩罚的锐度。越小越严格:能耗不匹配的惩罚越大。默认 0.25 有意比时长锐度更宽松,因为能耗会随负荷变化。请与能耗权重配合使用。"
|
"doc": "Stage 4 能耗一致性惩罚的锐度。越小越严格:能耗不匹配的惩罚越大。默认 0.25 有意比时长锐度更宽松,因为能耗会随负荷变化。请与能耗权重配合使用。"
|
||||||
|
},
|
||||||
|
"power_profile_interval_min": {
|
||||||
|
"label": "电力分布间隔",
|
||||||
|
"doc": "外部规划工具(如 EMHASS 和 tibber_prices)使用的 per-profile power_profile 传感器属性(每槽平均瓦数的数组)的桶大小。较小的桶保留短暂功率尖峰的细节,较大的桶平滑形状。默认 15 分钟。仅在读取时使用,不影响检测。"
|
||||||
|
},
|
||||||
|
"notify_live_sticky": {
|
||||||
|
"label": "点击后保留实时通知",
|
||||||
|
"doc": "仅限 Android。将实时进度通知设置为固定(常驻),点击时不会关闭正在进行的通知线程。关闭则恢复默认行为,点击后通知消失。"
|
||||||
|
},
|
||||||
|
"notify_live_click_action": {
|
||||||
|
"label": "实时通知点击目标",
|
||||||
|
"doc": "仅限 Android。点击实时进度通知时打开的位置(例如 /lovelace/laundry 或完整 URL),而非应用默认首页。留空使用默认值。"
|
||||||
|
},
|
||||||
|
"door_opens_at_end": {
|
||||||
|
"label": "结束时自动开门",
|
||||||
|
"doc": "适用于周期结束后自动弹开舱门进行干燥的洗碗机(AirDry 等功能)。开启后,正在运行的周期中门被打开不会导致周期永久暂停;若门持续敞开达到下方设定的停留时间,WashData 将视为周期已完成。短暂开门(例如放入餐具)将被忽略。需要配置门传感器实体。"
|
||||||
|
},
|
||||||
|
"door_end_dwell_seconds": {
|
||||||
|
"label": "门开放终止停留时间",
|
||||||
|
"doc": "在「结束时自动开门」开启时,WashData 终止周期前门需保持打开的时长。设置得足够长以忽略快速放入餐具的短暂开门(默认 60 秒),同时足够短以在机器弹开舱门后迅速结束。"
|
||||||
|
},
|
||||||
|
"dishwasher_end_spike_quiet_release": {
|
||||||
|
"label": "自然干燥静止释放",
|
||||||
|
"doc": "当周期超过其预期时长后,洗碗机必须保持静止(低于停止阈值)多长时间,WashData 才会停止等待最终排水并结束该周期。如果您的机器在较晚的最终排水之前有一个较长的近乎无声的干燥阶段,导致该次排水被漏检,请调高此值 - 更宽的窗口可让学习到的时长跟随季节性漂移(进水更冷 = 周期更长),而不是锁定在旧的平均值上。它只能相对于内部 30 分钟的结束尖峰上限缩短等待时间,绝不会延长。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"setting_group": {
|
"setting_group": {
|
||||||
@@ -1604,6 +1721,10 @@
|
|||||||
"name_required": "需要名称",
|
"name_required": "需要名称",
|
||||||
"no_split_found": "未找到可分割的空闲间隔",
|
"no_split_found": "未找到可分割的空闲间隔",
|
||||||
"panel_settings_saved": "面板设置已保存",
|
"panel_settings_saved": "面板设置已保存",
|
||||||
|
"pg_preset_loaded": "已加载预设“{name}”",
|
||||||
|
"pg_preset_saved": "已保存预设“{name}”",
|
||||||
|
"pg_sugg_loaded": "已载入 {n} 个建议值 - 运行试验场以比较效果",
|
||||||
|
"pg_sugg_ml_loaded": "已载入 {n} 个 ML 校准值 - 运行试验场以比较效果",
|
||||||
"phase_name_required": "需要阶段名称",
|
"phase_name_required": "需要阶段名称",
|
||||||
"phase_updated": "阶段已更新",
|
"phase_updated": "阶段已更新",
|
||||||
"phases_saved": "阶段已保存",
|
"phases_saved": "阶段已保存",
|
||||||
@@ -1751,6 +1872,7 @@
|
|||||||
"min_active": "基于上一个周期中观测到的最小工作功率({min}W)。",
|
"min_active": "基于上一个周期中观测到的最小工作功率({min}W)。",
|
||||||
"min_duration_ratio": "尽可能保持较低,以便在周期早期识别出程序;置信度和歧义门限可防止过早确定。",
|
"min_duration_ratio": "尽可能保持较低,以便在周期早期识别出程序;置信度和歧义门限可防止过早确定。",
|
||||||
"min_off_gap": "基于观测到的 {gaps} 个周期间间隔(p05={p05}s)。设备下限:{floor}s。",
|
"min_off_gap": "基于观测到的 {gaps} 个周期间间隔(p05={p05}s)。设备下限:{floor}s。",
|
||||||
|
"min_off_gap_bridge": "设定为足以跨过周期内最长的静默段:{span}s + 60s 缓冲,来自 {cycles} 个正常周期中的 {spans} 段已跨过的间隔(保持在您连续两次运行之间最短间隔 {ceiling}s 以内)。",
|
||||||
"min_power": "{cycles} 个正常周期中 p05 最低工作功率({p05}W)的 40%,使关闭门限保持在实际功耗之下。{excl}",
|
"min_power": "{cycles} 个正常周期中 p05 最低工作功率({p05}W)的 40%,使关闭门限保持在实际功耗之下。{excl}",
|
||||||
"ml_auto_label": "质量模型仍判定为正常的最低置信度({cycles} 个正常周期的 p10 = {p10})。",
|
"ml_auto_label": "质量模型仍判定为正常的最低置信度({cycles} 个正常周期的 p10 = {p10})。",
|
||||||
"ml_end_repeat": "{false}/{total} 个周期({pct}%)出现了结束检测器评分超过 50% 的暂停;要求进行 {val} 次结束确认。",
|
"ml_end_repeat": "{false}/{total} 个周期({pct}%)出现了结束检测器评分超过 50% 的暂停;要求进行 {val} 次结束确认。",
|
||||||
@@ -1767,7 +1889,7 @@
|
|||||||
"thr_batch": "保持在 {cycles} 个周期中 p05 最低工作功率({p05}W)略上方,以便尽早捕捉到启动,同时使停止阈值保持在设备最低运行功率之下。",
|
"thr_batch": "保持在 {cycles} 个周期中 p05 最低工作功率({p05}W)略上方,以便尽早捕捉到启动,同时使停止阈值保持在设备最低运行功率之下。",
|
||||||
"tol_per_profile": "{profiles} 个配置文件({cycles} 个周期)中每个配置文件时长方差的 p75;波动小的配置文件不受惩罚。",
|
"tol_per_profile": "{profiles} 个配置文件({cycles} 个周期)中每个配置文件时长方差的 p75;波动小的配置文件不受惩罚。",
|
||||||
"tol_pooled": "基于 {cycles} 个近期已标注周期的合并时长方差(p95 偏差={dev})。",
|
"tol_pooled": "基于 {cycles} 个近期已标注周期的合并时长方差(p95 偏差={dev})。",
|
||||||
"watchdog": "在安全范围内保持尽可能低(p95 更新间隔 {p95}s 的 3 倍,最小 30s),以便快速捕捉到停滞而不产生误停止。"
|
"watchdog": "在安全范围内保持尽可能低(略高于 p95 更新间隔 {p95}s,最小 30s),以便快速捕捉到停滞而不产生误停止。"
|
||||||
},
|
},
|
||||||
"exclusions": {
|
"exclusions": {
|
||||||
"summary": "已排除 {total} 个误检测周期:{parts}。",
|
"summary": "已排除 {total} 个误检测周期:{parts}。",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Konfiguracja WashData",
|
"title": "Konfiguracja WashData",
|
||||||
"description": "Skonfiguruj swoją pralkę lub inne urządzenie.\n\nWymagany jest czujnik mocy.\n\n**Następnie zostaniesz zapytany, czy chcesz utworzyć swój pierwszy profil.**",
|
"description": "Skonfiguruj swoją pralkę lub inne urządzenie.\n\nCzujnik mocy jest wymagany.\n\nPo konfiguracji otwórz panel WashData z paska bocznego (lub przejdź do [/ha-washdata](/ha-washdata)), aby przeglądać cykle, dostosowywać wykrywanie i zarządzać profilami.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nazwa urządzenia",
|
"name": "Nazwa urządzenia",
|
||||||
"device_type": "Typ urządzenia",
|
"device_type": "Typ urządzenia",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Rekonfiguracja WashData",
|
"title": "Rekonfiguracja WashData",
|
||||||
"description": "Zaktualizuj nazwę urządzenia, typ urządzenia lub czujnik mocy.",
|
"description": "Zaktualizuj nazwę urządzenia, typ urządzenia lub czujnik mocy.\n\nPanel WashData (pasek boczny lub [/ha-washdata](/ha-washdata)) służy do zarządzania wykrywaniem, cyklami, profilami i powiadomieniami.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nazwa urządzenia",
|
"name": "Nazwa urządzenia",
|
||||||
"device_type": "Typ urządzenia",
|
"device_type": "Typ urządzenia",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Ustawienia WashData",
|
"title": "Ustawienia WashData",
|
||||||
"description": "Wszystkie ustawienia -- wykrywanie, dopasowanie, timing, powiadomienia, profile i cykle -- są dostępne w panelu WashData. Użyj tego formularza tylko do zmiany czujnika mocy, typu urządzenia lub progu trybu gotowości.",
|
"description": "Zmień nazwę urządzenia lub zmień jego podstawowe ustawienia sprzętowe. Wszystkie ustawienia wykrywania, dopasowania i powiadomień znajdują się w [panelu WashData](/ha-washdata) (dostępny również z paska bocznego).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nazwa urządzenia",
|
"name": "Nazwa urządzenia",
|
||||||
"device_type": "Typ urządzenia",
|
"device_type": "Typ urządzenia",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: timer {minutes} min",
|
"timer_default_message": "{device}: timer {minutes} min",
|
||||||
"timer_pause_action_title": "Wznów cykl",
|
"timer_pause_action_title": "Wznów cykl",
|
||||||
"timer_pause_body_suffix": "Cykl jest wstrzymany. Otwórz panel WashData, aby wznowić.",
|
"timer_pause_body_suffix": "Cykl jest wstrzymany. Otwórz panel WashData, aby wznowić.",
|
||||||
|
"unload_dismiss_action_title": "Przestań przypominać",
|
||||||
"notify_live_waiting_message": "{device}: Nie rozpoznano jeszcze żadnego profilu.",
|
"notify_live_waiting_message": "{device}: Nie rozpoznano jeszcze żadnego profilu.",
|
||||||
"vs_typical_longer": "o {pct}% dłużej niż zwykle",
|
"vs_typical_longer": "o {pct}% dłużej niż zwykle",
|
||||||
"vs_typical_shorter": "o {pct}% krócej niż zwykle",
|
"vs_typical_shorter": "o {pct}% krócej niż zwykle",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Configuração WashData",
|
"title": "Configuração WashData",
|
||||||
"description": "Configure sua máquina de lavar ou outro eletrodoméstico.\n\nSensor de potência é necessário.\n\n**Em seguida, você será perguntado se deseja criar seu primeiro perfil.**",
|
"description": "Configure sua máquina de lavar ou outro eletrodoméstico.\n\nSensor de potência é necessário.\n\nApós a configuração, abra o painel WashData pela barra lateral (ou acesse [/ha-washdata](/ha-washdata)) para visualizar ciclos, ajustar a detecção e gerenciar perfis.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome do dispositivo",
|
"name": "Nome do dispositivo",
|
||||||
"device_type": "Tipo de dispositivo",
|
"device_type": "Tipo de dispositivo",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Atualize o nome do dispositivo, o tipo de eletrodoméstico ou o sensor de potência.\n\nO painel WashData (barra lateral ou [/ha-washdata](/ha-washdata)) é onde detecção, ciclos, perfis e notificações são gerenciados.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Renomeie o dispositivo ou altere suas configurações principais de hardware. Todas as configurações de detecção, correspondência e notificação estão no [painel WashData](/ha-washdata) (também acessível pela barra lateral).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome do dispositivo",
|
"name": "Nome do dispositivo",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: timer de {minutes} min",
|
"timer_default_message": "{device}: timer de {minutes} min",
|
||||||
"timer_pause_action_title": "Retomar ciclo",
|
"timer_pause_action_title": "Retomar ciclo",
|
||||||
"timer_pause_body_suffix": "O ciclo está pausado. Abra o painel WashData para retomar.",
|
"timer_pause_body_suffix": "O ciclo está pausado. Abra o painel WashData para retomar.",
|
||||||
|
"unload_dismiss_action_title": "Parar de lembrar",
|
||||||
"notify_live_waiting_message": "{device}: Nenhum perfil identificado ainda.",
|
"notify_live_waiting_message": "{device}: Nenhum perfil identificado ainda.",
|
||||||
"vs_typical_longer": "{pct}% mais longo que o normal",
|
"vs_typical_longer": "{pct}% mais longo que o normal",
|
||||||
"vs_typical_shorter": "{pct}% mais curto que o normal",
|
"vs_typical_shorter": "{pct}% mais curto que o normal",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Configuração WashData",
|
"title": "Configuração WashData",
|
||||||
"description": "Configure a sua máquina de lavar ou outro electrodoméstico.\n\nÉ necessário um sensor de potência.\n\n**De seguida, ser-lhe-á perguntado se deseja criar o seu primeiro perfil.**",
|
"description": "Configure a sua máquina de lavar ou outro electrodoméstico.\n\nÉ necessário um sensor de potência.\n\nApós a configuração, abra o painel WashData a partir da barra lateral (ou aceda a [/ha-washdata](/ha-washdata)) para ver os ciclos, ajustar a deteção e gerir perfis.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome do dispositivo",
|
"name": "Nome do dispositivo",
|
||||||
"device_type": "Tipo de dispositivo",
|
"device_type": "Tipo de dispositivo",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigurar WashData",
|
"title": "Reconfigurar WashData",
|
||||||
"description": "Actualizar o nome do dispositivo, tipo de electrodoméstico ou sensor de potência.",
|
"description": "Actualize o nome do dispositivo, o tipo de electrodoméstico ou o sensor de potência.\n\nO painel WashData (barra lateral, ou [/ha-washdata](/ha-washdata)) é onde a deteção, os ciclos, os perfis e as notificações são geridos.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome do dispositivo",
|
"name": "Nome do dispositivo",
|
||||||
"device_type": "Tipo de dispositivo",
|
"device_type": "Tipo de dispositivo",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Definições WashData",
|
"title": "Definições WashData",
|
||||||
"description": "Todas as definições -- detecção, correspondência, temporização, notificações, perfis e ciclos -- estão disponíveis no painel WashData. Utilize este formulário apenas para alterar o sensor de potência, tipo de dispositivo ou limiar de standby.",
|
"description": "Mude o nome do dispositivo ou altere as suas definições de hardware principais. Todas as definições de deteção, correspondência e notificações estão no [painel WashData](/ha-washdata) (também acessível a partir da barra lateral).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome do dispositivo",
|
"name": "Nome do dispositivo",
|
||||||
"device_type": "Tipo de dispositivo",
|
"device_type": "Tipo de dispositivo",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: temporizador de {minutes} min",
|
"timer_default_message": "{device}: temporizador de {minutes} min",
|
||||||
"timer_pause_action_title": "Retomar ciclo",
|
"timer_pause_action_title": "Retomar ciclo",
|
||||||
"timer_pause_body_suffix": "O ciclo está em pausa. Abra o painel WashData para retomar.",
|
"timer_pause_body_suffix": "O ciclo está em pausa. Abra o painel WashData para retomar.",
|
||||||
|
"unload_dismiss_action_title": "Parar de lembrar",
|
||||||
"notify_live_waiting_message": "{device}: ainda nenhum perfil reconhecido.",
|
"notify_live_waiting_message": "{device}: ainda nenhum perfil reconhecido.",
|
||||||
"vs_typical_longer": "{pct}% mais longo do que o habitual",
|
"vs_typical_longer": "{pct}% mais longo do que o habitual",
|
||||||
"vs_typical_shorter": "{pct}% mais curto do que o habitual",
|
"vs_typical_shorter": "{pct}% mais curto do que o habitual",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Configurare WashData",
|
"title": "Configurare WashData",
|
||||||
"description": "Configurați mașina de spălat sau alt aparat.\n\nEste necesar un senzor de putere.\n\n**În continuare, veți fi întrebat dacă doriți să vă creați primul profil.**",
|
"description": "Configurați mașina de spălat sau alt aparat.\n\nEste necesar un senzor de putere.\n\nDupă configurare, deschideți panoul WashData din bara laterală (sau accesați [/ha-washdata](/ha-washdata)) pentru a vizualiza ciclurile, a ajusta detectarea și a gestiona profilurile.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Numele dispozitivului",
|
"name": "Numele dispozitivului",
|
||||||
"device_type": "Tip de dispozitiv",
|
"device_type": "Tip de dispozitiv",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Actualizați numele dispozitivului, tipul aparatului sau senzorul de putere.\n\nPanoul WashData (bara laterală sau [/ha-washdata](/ha-washdata)) este locul unde se gestionează detectarea, ciclurile, profilurile și notificările.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Redenumiți dispozitivul sau modificați setările hardware de bază. Toate setările de detectare, potrivire și notificare se află în [panoul WashData](/ha-washdata) (accesibil și din bara laterală).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Numele dispozitivului",
|
"name": "Numele dispozitivului",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: cronometru de {minutes} min",
|
"timer_default_message": "{device}: cronometru de {minutes} min",
|
||||||
"timer_pause_action_title": "Reluați ciclul",
|
"timer_pause_action_title": "Reluați ciclul",
|
||||||
"timer_pause_body_suffix": "Ciclul este în pauză. Deschideți panoul WashData pentru a relua.",
|
"timer_pause_body_suffix": "Ciclul este în pauză. Deschideți panoul WashData pentru a relua.",
|
||||||
|
"unload_dismiss_action_title": "Oprește mementourile",
|
||||||
"notify_live_waiting_message": "{device}: Niciun profil nu a fost recunoscut încă.",
|
"notify_live_waiting_message": "{device}: Niciun profil nu a fost recunoscut încă.",
|
||||||
"vs_typical_longer": "cu {pct}% mai mult decât de obicei",
|
"vs_typical_longer": "cu {pct}% mai mult decât de obicei",
|
||||||
"vs_typical_shorter": "cu {pct}% mai puțin decât de obicei",
|
"vs_typical_shorter": "cu {pct}% mai puțin decât de obicei",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Настройка WashData",
|
"title": "Настройка WashData",
|
||||||
"description": "Настройте стиральную машину или другой прибор.\n\nТребуется датчик мощности.\n\n**Далее вас спросят, хотите ли вы создать свой первый профиль.**",
|
"description": "Настройте стиральную машину или другой прибор.\n\nТребуется датчик мощности.\n\nПосле настройки откройте панель WashData на боковой панели (или перейдите на [/ha-washdata](/ha-washdata)), чтобы просматривать циклы, настраивать обнаружение и управлять профилями.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Имя устройства",
|
"name": "Имя устройства",
|
||||||
"device_type": "Тип устройства",
|
"device_type": "Тип устройства",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Обновите имя устройства, тип устройства или датчик мощности.",
|
"description": "Обновите имя устройства, тип прибора или датчик мощности.\n\nПанель WashData (боковая панель или [/ha-washdata](/ha-washdata)) — это место для управления обнаружением, циклами, профилями и уведомлениями.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "Все настройки — обнаружение, сопоставление, время, уведомления, профили и циклы — доступны на панели WashData. Используйте эту форму только для изменения датчика мощности, типа устройства или порога режима ожидания.",
|
"description": "Переименуйте устройство или измените его основные аппаратные настройки. Все настройки обнаружения, сопоставления и уведомлений находятся в [панели WashData](/ha-washdata) (также доступна из боковой панели).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Имя устройства",
|
"name": "Имя устройства",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: таймер {minutes} мин",
|
"timer_default_message": "{device}: таймер {minutes} мин",
|
||||||
"timer_pause_action_title": "Возобновить цикл",
|
"timer_pause_action_title": "Возобновить цикл",
|
||||||
"timer_pause_body_suffix": "Цикл на паузе. Откройте панель WashData для возобновления.",
|
"timer_pause_body_suffix": "Цикл на паузе. Откройте панель WashData для возобновления.",
|
||||||
|
"unload_dismiss_action_title": "Не напоминать",
|
||||||
"notify_live_waiting_message": "{device}: Профиль пока не распознан.",
|
"notify_live_waiting_message": "{device}: Профиль пока не распознан.",
|
||||||
"vs_typical_longer": "на {pct}% дольше обычного",
|
"vs_typical_longer": "на {pct}% дольше обычного",
|
||||||
"vs_typical_shorter": "на {pct}% короче обычного",
|
"vs_typical_shorter": "на {pct}% короче обычного",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Nastavenie WashData",
|
"title": "Nastavenie WashData",
|
||||||
"description": "Nakonfigurujte si práčku alebo iný spotrebič.\n\nVyžaduje sa snímač napájania.\n\n**Ďalej sa vás spýta, či si chcete vytvoriť svoj prvý profil.**",
|
"description": "Nakonfigurujte si práčku alebo iný spotrebič.\n\nSnímač výkonu je povinný.\n\nPo nastavení otvorte panel WashData z bočného panelu (alebo prejdite na [/ha-washdata](/ha-washdata)) na zobrazenie cyklov, ladenie detekcie a správu profilov.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Názov zariadenia",
|
"name": "Názov zariadenia",
|
||||||
"device_type": "Typ zariadenia",
|
"device_type": "Typ zariadenia",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Aktualizujte názov zariadenia, typ spotrebiča alebo snímač výkonu.\n\nPanel WashData (bočný panel alebo [/ha-washdata](/ha-washdata)) slúži na správu detekcie, cyklov, profilov a oznámení.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Premenujte zariadenie alebo zmeňte jeho základné hardvérové nastavenia. Všetky nastavenia detekcie, párovania a oznámení sú na [paneli WashData](/ha-washdata) (dostupný aj z bočného panelu).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Názov zariadenia",
|
"name": "Názov zariadenia",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: časovač {minutes} min",
|
"timer_default_message": "{device}: časovač {minutes} min",
|
||||||
"timer_pause_action_title": "Obnoviť cyklus",
|
"timer_pause_action_title": "Obnoviť cyklus",
|
||||||
"timer_pause_body_suffix": "Cyklus je pozastavený. Otvorte panel WashData na obnovenie.",
|
"timer_pause_body_suffix": "Cyklus je pozastavený. Otvorte panel WashData na obnovenie.",
|
||||||
|
"unload_dismiss_action_title": "Prestať pripomínať",
|
||||||
"notify_live_waiting_message": "{device}: Zatiaľ nebol rozpoznaný žiadny profil.",
|
"notify_live_waiting_message": "{device}: Zatiaľ nebol rozpoznaný žiadny profil.",
|
||||||
"vs_typical_longer": "o {pct}% dlhšie než zvyčajne",
|
"vs_typical_longer": "o {pct}% dlhšie než zvyčajne",
|
||||||
"vs_typical_shorter": "o {pct}% kratšie než zvyčajne",
|
"vs_typical_shorter": "o {pct}% kratšie než zvyčajne",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Nastavitev WashData",
|
"title": "Nastavitev WashData",
|
||||||
"description": "Konfigurirajte svoj pralni stroj ali drugo napravo.\n\nPotreben je senzor moči.\n\n**Nato boste pozvani, ali želite ustvariti svoj prvi profil.**",
|
"description": "Konfigurirajte svoj pralni stroj ali drugo napravo.\n\nSenzor moči je obvezen.\n\nPo nastavitvi odprite ploščo WashData s stranske vrstice (ali pojdite na [/ha-washdata](/ha-washdata)) za ogled ciklov, prilagoditev zaznavanja in upravljanje profilov.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Ime naprave",
|
"name": "Ime naprave",
|
||||||
"device_type": "Vrsta naprave",
|
"device_type": "Vrsta naprave",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Ponovno konfigurirajte WashData",
|
"title": "Ponovno konfigurirajte WashData",
|
||||||
"description": "Posodobite ime naprave, vrsto naprave ali senzor moči.",
|
"description": "Posodobite ime naprave, vrsto naprave ali senzor moči.\n\nPlosca WashData (stranska vrstica ali [/ha-washdata](/ha-washdata)) je namenjena upravljanju zaznavanja, ciklov, profilov in obvestil.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Ime naprave",
|
"name": "Ime naprave",
|
||||||
"device_type": "Vrsta naprave",
|
"device_type": "Vrsta naprave",
|
||||||
@@ -49,13 +49,14 @@
|
|||||||
"min_power": "Najmanjši prag moči (W)"
|
"min_power": "Najmanjši prag moči (W)"
|
||||||
},
|
},
|
||||||
"title": "Nastavitve WashData",
|
"title": "Nastavitve WashData",
|
||||||
"description": "Preimenujte napravo ali spremenite njene osnovne nastavitve strojne opreme. Vse nastavitve zaznavanja, ujemanja in obveščanja so na plošči WashData."
|
"description": "Preimenujte napravo ali spremenite njene osnovne nastavitve strojne opreme. Vse nastavitve zaznavanja, ujemanja in obveščanja so na [plošči WashData](/ha-washdata) (dostopna tudi s stranske vrstice)."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"timer_default_message": "{device}: časovnik {minutes} min",
|
"timer_default_message": "{device}: časovnik {minutes} min",
|
||||||
"timer_pause_action_title": "Nadaljuj cikel",
|
"timer_pause_action_title": "Nadaljuj cikel",
|
||||||
"timer_pause_body_suffix": "Cikel je zaustavljen. Odprite ploščo WashData za nadaljevanje.",
|
"timer_pause_body_suffix": "Cikel je zaustavljen. Odprite ploščo WashData za nadaljevanje.",
|
||||||
|
"unload_dismiss_action_title": "Nehaj opominjati",
|
||||||
"notify_live_waiting_message": "{device}: Noben profil se še ne ujema.",
|
"notify_live_waiting_message": "{device}: Noben profil se še ne ujema.",
|
||||||
"vs_typical_longer": "{pct}% dlje kot običajno",
|
"vs_typical_longer": "{pct}% dlje kot običajno",
|
||||||
"vs_typical_shorter": "{pct}% krajše kot običajno",
|
"vs_typical_shorter": "{pct}% krajše kot običajno",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Konfigurimi WashData",
|
"title": "Konfigurimi WashData",
|
||||||
"description": "Konfiguro makinën larëse ose pajisje tjetër.\n\nKërkohet sensori i fuqisë.\n\n**Më pas, do të pyeteni nëse dëshironi të krijoni profilin tuaj të parë.**",
|
"description": "Konfiguro makinën larëse ose pajisje tjetër.\n\nKërkohet sensori i fuqisë.\n\nPas konfigurimit, hap panelin WashData nga shiriti anësor (ose shko te [/ha-washdata](/ha-washdata)) për të parë ciklet, rregulluar zbulimin dhe menaxhuar profilet.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Emri i pajisjes",
|
"name": "Emri i pajisjes",
|
||||||
"device_type": "Lloji i pajisjes",
|
"device_type": "Lloji i pajisjes",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Rikonfiguro WashData",
|
"title": "Rikonfiguro WashData",
|
||||||
"description": "Përditëso emrin e pajisjes, llojin e pajisjes ose sensorin e fuqisë.",
|
"description": "Përditëso emrin e pajisjes, llojin e pajisjes ose sensorin e fuqisë.\n\nPaneli WashData (shiriti anësor, ose [/ha-washdata](/ha-washdata)) është ku menaxhohen zbulimi, ciklet, profilet dhe njoftimet.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Emri i pajisjes",
|
"name": "Emri i pajisjes",
|
||||||
"device_type": "Lloji i pajisjes",
|
"device_type": "Lloji i pajisjes",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Cilësimet WashData",
|
"title": "Cilësimet WashData",
|
||||||
"description": "Të gjitha cilësimet -- zbulimi, përputhja, koha, njoftimet, profilet dhe ciklet -- janë të disponueshme në panelin WashData. Përdorni këtë formular vetëm për të ndryshuar sensorin e fuqisë, llojin e pajisjes ose pragun e gatishmërisë.",
|
"description": "Riemërtoni pajisjen ose ndryshoni cilësimet e saj bazë të harduerit. Të gjitha cilësimet e zbulimit, përputhjes dhe njoftimeve janë në [panelin WashData](/ha-washdata) (i arritshëm edhe nga shiriti anësor).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Emri i pajisjes",
|
"name": "Emri i pajisjes",
|
||||||
"device_type": "Lloji i pajisjes",
|
"device_type": "Lloji i pajisjes",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: kohëmatës {minutes} min",
|
"timer_default_message": "{device}: kohëmatës {minutes} min",
|
||||||
"timer_pause_action_title": "Rifillo ciklin",
|
"timer_pause_action_title": "Rifillo ciklin",
|
||||||
"timer_pause_body_suffix": "Cikli është në pauzë. Hapni panelin WashData për të vazhduar.",
|
"timer_pause_body_suffix": "Cikli është në pauzë. Hapni panelin WashData për të vazhduar.",
|
||||||
|
"unload_dismiss_action_title": "Ndalo kujtesat",
|
||||||
"notify_live_waiting_message": "{device}: Ende nuk është njohur asnjë profil.",
|
"notify_live_waiting_message": "{device}: Ende nuk është njohur asnjë profil.",
|
||||||
"vs_typical_longer": "{pct}% më gjatë se zakonisht",
|
"vs_typical_longer": "{pct}% më gjatë se zakonisht",
|
||||||
"vs_typical_shorter": "{pct}% më shkurt se zakonisht",
|
"vs_typical_shorter": "{pct}% më shkurt se zakonisht",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData podešavanje",
|
"title": "WashData podešavanje",
|
||||||
"description": "Konfiguriš svoju mašinu za pranje veša ili drugi uređaj.\n\nSenzor snage je obavezan.\n\n**Dalje, bićeš upitan da li želiš da napraviš prvi profil.**",
|
"description": "Konfiguriši svoju mašinu za pranje veša ili drugi uređaj.\n\nSenzor snage je obavezan.\n\nNakon podešavanja, otvori WashData panel iz bočne trake (ili idi na [/ha-washdata](/ha-washdata)) za pregled ciklusa, podešavanje detekcije i upravljanje profilima.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naziv uređaja",
|
"name": "Naziv uređaja",
|
||||||
"device_type": "Tip uređaja",
|
"device_type": "Tip uređaja",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Ponovo konfiguriši WashData",
|
"title": "Ponovo konfiguriši WashData",
|
||||||
"description": "Ažuriraj naziv uređaja, tip uređaja ili senzor snage.",
|
"description": "Ažuriraj naziv uređaja, tip uređaja ili senzor snage.\n\nWashData panel (bočna traka ili [/ha-washdata](/ha-washdata)) je mesto gde se upravljaju detekcija, ciklusi, profili i obaveštenja.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naziv uređaja",
|
"name": "Naziv uređaja",
|
||||||
"device_type": "Tip uređaja",
|
"device_type": "Tip uređaja",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData podešavanja",
|
"title": "WashData podešavanja",
|
||||||
"description": "Sva podešavanja -- detekcija, podudaranje, tajming, obaveštenja, profili i ciklusi -- dostupna su u WashData panelu. Koristi ovaj obrazac samo da promeniš senzor snage, tip uređaja ili prag mirovanja.",
|
"description": "Preimenuj uređaj ili promeni njegova osnovna hardverska podešavanja. Sva podešavanja detekcije, podudaranja i obaveštenja nalaze se u [WashData panelu](/ha-washdata) (dostupan i iz bočne trake).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naziv uređaja",
|
"name": "Naziv uređaja",
|
||||||
"device_type": "Tip uređaja",
|
"device_type": "Tip uređaja",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: tajmer {minutes} min",
|
"timer_default_message": "{device}: tajmer {minutes} min",
|
||||||
"timer_pause_action_title": "Nastavi ciklus",
|
"timer_pause_action_title": "Nastavi ciklus",
|
||||||
"timer_pause_body_suffix": "Ciklus je pauziran. Otvori WashData panel da nastaviš.",
|
"timer_pause_body_suffix": "Ciklus je pauziran. Otvori WashData panel da nastaviš.",
|
||||||
|
"unload_dismiss_action_title": "Prestani da podsećaš",
|
||||||
"notify_live_waiting_message": "{device}: Nijedan profil još nije podudaran.",
|
"notify_live_waiting_message": "{device}: Nijedan profil još nije podudaran.",
|
||||||
"vs_typical_longer": "{pct}% duže nego obično",
|
"vs_typical_longer": "{pct}% duže nego obično",
|
||||||
"vs_typical_shorter": "{pct}% kraće nego obično",
|
"vs_typical_shorter": "{pct}% kraće nego obično",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData Setup",
|
"title": "WashData Setup",
|
||||||
"description": "Konfigurera din tvättmaskin eller annan apparat.\n\nEffektsensor krävs.\n\n**Närnäst kommer du att bli tillfrågad om du vill skapa din första profil.**",
|
"description": "Konfigurera din tvättmaskin eller annan apparat.\n\nEffektsensor krävs.\n\nEfter installationen öppnar du WashData-panelen från sidofältet (eller gå till [/ha-washdata](/ha-washdata)) för att visa cykler, finjustera identifiering och hantera profiler.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Enhetens namn",
|
"name": "Enhetens namn",
|
||||||
"device_type": "Enhetstyp",
|
"device_type": "Enhetstyp",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Konfigurera om WashData",
|
"title": "Konfigurera om WashData",
|
||||||
"description": "Uppdatera enhetens namn, apparattyp eller effektsensor.",
|
"description": "Uppdatera enhetsnamnet, apparattypen eller effektsensorn.\n\nWashData-panelen (sidofältet eller [/ha-washdata](/ha-washdata)) är där identifiering, cykler, profiler och notiser hanteras.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Enhetens namn",
|
"name": "Enhetens namn",
|
||||||
"device_type": "Enhetstyp",
|
"device_type": "Enhetstyp",
|
||||||
@@ -49,13 +49,14 @@
|
|||||||
"min_power": "Minsta effekttröskel (W)"
|
"min_power": "Minsta effekttröskel (W)"
|
||||||
},
|
},
|
||||||
"title": "WashData-inställningar",
|
"title": "WashData-inställningar",
|
||||||
"description": "Byt namn på enheten eller ändra dess kärninställningar för hårdvara. Alla detekterings-, matchnings- och meddelandeinställningar finns i WashData-panelen."
|
"description": "Byt namn på enheten eller ändra dess grundläggande hårdvaruinställningar. Alla inställningar för identifiering, matchning och notiser finns i [WashData-panelen](/ha-washdata) (även nåbar från sidofältet)."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"timer_default_message": "{device}: timer {minutes} min",
|
"timer_default_message": "{device}: timer {minutes} min",
|
||||||
"timer_pause_action_title": "Återuppta cykeln",
|
"timer_pause_action_title": "Återuppta cykeln",
|
||||||
"timer_pause_body_suffix": "Cykeln är pausad. Öppna WashData-panelen för att fortsätta.",
|
"timer_pause_body_suffix": "Cykeln är pausad. Öppna WashData-panelen för att fortsätta.",
|
||||||
|
"unload_dismiss_action_title": "Sluta påminna",
|
||||||
"notify_live_waiting_message": "{device}: Ingen profil matchad ännu.",
|
"notify_live_waiting_message": "{device}: Ingen profil matchad ännu.",
|
||||||
"vs_typical_longer": "{pct}% längre än vanligt",
|
"vs_typical_longer": "{pct}% längre än vanligt",
|
||||||
"vs_typical_shorter": "{pct}% kortare än vanligt",
|
"vs_typical_shorter": "{pct}% kortare än vanligt",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData Kurulumu",
|
"title": "WashData Kurulumu",
|
||||||
"description": "Çamaşır makinenizi veya diğer cihazınızı yapılandırın.\n\nGüç sensörü gereklidir.\n\n**Ardından, ilk profilinizi oluşturmak isteyip istemediğiniz sorulacaktır.**",
|
"description": "Çamaşır makinenizi veya diğer cihazınızı yapılandırın.\n\nGüç sensörü gereklidir.\n\nKurulumdan sonra döngüleri görüntülemek, algılamayı ayarlamak ve profilleri yönetmek için kenar çubuğundan WashData panelini açın (veya [/ha-washdata](/ha-washdata) adresine gidin).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Cihaz Adı",
|
"name": "Cihaz Adı",
|
||||||
"device_type": "Cihaz Türü",
|
"device_type": "Cihaz Türü",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Update the device name, appliance type, or power sensor.",
|
"description": "Cihaz adını, cihaz türünü veya güç sensörünü güncelleyin.\n\nAlgılama, döngüler, profiller ve bildirimler WashData panelinde (kenar çubuğu veya [/ha-washdata](/ha-washdata)) yönetilir.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "All settings -- detection, matching, timing, notifications, profiles, and cycles -- are available in the WashData panel. Use this form only to change the power sensor, device type, or standby threshold.",
|
"description": "Cihazı yeniden adlandırın veya temel donanım ayarlarını değiştirin. Tüm algılama, eşleştirme ve bildirim ayarları [WashData panelinde](/ha-washdata) bulunur (kenar çubuğundan da erişilebilir).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Cihaz Adı",
|
"name": "Cihaz Adı",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: {minutes} dk zamanlayıcı",
|
"timer_default_message": "{device}: {minutes} dk zamanlayıcı",
|
||||||
"timer_pause_action_title": "Döngüyü Devam Ettir",
|
"timer_pause_action_title": "Döngüyü Devam Ettir",
|
||||||
"timer_pause_body_suffix": "Döngü duraklatıldı. Devam ettirmek için WashData panelini açın.",
|
"timer_pause_body_suffix": "Döngü duraklatıldı. Devam ettirmek için WashData panelini açın.",
|
||||||
|
"unload_dismiss_action_title": "Hatırlatmayı durdur",
|
||||||
"notify_live_waiting_message": "{device}: Henüz eşleşen profil yok.",
|
"notify_live_waiting_message": "{device}: Henüz eşleşen profil yok.",
|
||||||
"vs_typical_longer": "olağandan %{pct} daha uzun",
|
"vs_typical_longer": "olağandan %{pct} daha uzun",
|
||||||
"vs_typical_shorter": "olağandan %{pct} daha kısa",
|
"vs_typical_shorter": "olağandan %{pct} daha kısa",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Налаштування WashData",
|
"title": "Налаштування WashData",
|
||||||
"description": "Налаштуйте пральну машину чи інший прилад.\n\nПотрібен датчик потужності.\n\n**Далі вас запитають, чи хочете ви створити свій перший профіль.**",
|
"description": "Налаштуйте пральну машину чи інший прилад.\n\nПотрібен датчик потужності.\n\nПісля налаштування відкрийте панель WashData з бічної панелі (або перейдіть на [/ha-washdata](/ha-washdata)), щоб переглядати цикли, налаштувати виявлення та керувати профілями.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Назва пристрою",
|
"name": "Назва пристрою",
|
||||||
"device_type": "Тип пристрою",
|
"device_type": "Тип пристрою",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "Reconfigure WashData",
|
"title": "Reconfigure WashData",
|
||||||
"description": "Оновіть назву пристрою, тип пристрою або датчик потужності.",
|
"description": "Оновіть назву пристрою, тип приладу або датчик потужності.\n\nПанель WashData (бічна панель або [/ha-washdata](/ha-washdata)) — це місце для керування виявленням, циклами, профілями та сповіщеннями.",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Device Name",
|
"name": "Device Name",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData Settings",
|
"title": "WashData Settings",
|
||||||
"description": "Усі налаштування – виявлення, зіставлення, час, сповіщення, профілі та цикли – доступні на панелі WashData. Використовуйте цю форму лише для зміни датчика потужності, типу пристрою або порогового значення в режимі очікування.",
|
"description": "Перейменуйте пристрій або змініть його основні апаратні налаштування. Усі налаштування виявлення, зіставлення та сповіщень знаходяться в [панелі WashData](/ha-washdata) (також доступна з бічної панелі).",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Назва пристрою",
|
"name": "Назва пристрою",
|
||||||
"device_type": "Device Type",
|
"device_type": "Device Type",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}: таймер {minutes} хв",
|
"timer_default_message": "{device}: таймер {minutes} хв",
|
||||||
"timer_pause_action_title": "Відновити цикл",
|
"timer_pause_action_title": "Відновити цикл",
|
||||||
"timer_pause_body_suffix": "Цикл призупинено. Відкрийте панель WashData для відновлення.",
|
"timer_pause_body_suffix": "Цикл призупинено. Відкрийте панель WashData для відновлення.",
|
||||||
|
"unload_dismiss_action_title": "Не нагадувати",
|
||||||
"notify_live_waiting_message": "{device}: Профіль ще не розпізнано.",
|
"notify_live_waiting_message": "{device}: Профіль ще не розпізнано.",
|
||||||
"vs_typical_longer": "на {pct}% довше, ніж зазвичай",
|
"vs_typical_longer": "на {pct}% довше, ніж зазвичай",
|
||||||
"vs_typical_shorter": "на {pct}% коротше, ніж зазвичай",
|
"vs_typical_shorter": "на {pct}% коротше, ніж зазвичай",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "WashData 设置",
|
"title": "WashData 设置",
|
||||||
"description": "配置您的洗衣机或其他设备。\n\n需要功率传感器。\n\n**接下来,系统会询问您是否要创建您的第一个个人资料。**",
|
"description": "配置您的洗衣机或其他家电设备。\n\n需要功率传感器。\n\n设置完成后,请从侧边栏打开 WashData 面板(或访问 [/ha-washdata](/ha-washdata))来查看周期、调整检测参数和管理配置文件。",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "设备名称",
|
"name": "设备名称",
|
||||||
"device_type": "设备类型",
|
"device_type": "设备类型",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"reconfigure": {
|
"reconfigure": {
|
||||||
"title": "重新配置 WashData",
|
"title": "重新配置 WashData",
|
||||||
"description": "更新设备名称、设备类型或功率传感器。",
|
"description": "更新设备名称、家电类型或功率传感器。\n\nWashData 面板(侧边栏或 [/ha-washdata](/ha-washdata))用于管理检测、周期、配置文件和通知。",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "设备名称",
|
"name": "设备名称",
|
||||||
"device_type": "设备类型",
|
"device_type": "设备类型",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "WashData 设置",
|
"title": "WashData 设置",
|
||||||
"description": "所有设置——检测、匹配、计时、通知、配置文件和周期——都可以在 WashData 面板中使用。仅使用此表单来更改功率传感器、设备类型或待机阈值。",
|
"description": "重命名设备或更改其核心硬件设置。所有检测、匹配和通知设置均在 [WashData 面板](/ha-washdata) 中(也可从侧边栏访问)。",
|
||||||
"data": {
|
"data": {
|
||||||
"name": "设备名称",
|
"name": "设备名称",
|
||||||
"device_type": "设备类型",
|
"device_type": "设备类型",
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"timer_default_message": "{device}:{minutes} 分钟定时器",
|
"timer_default_message": "{device}:{minutes} 分钟定时器",
|
||||||
"timer_pause_action_title": "恢复周期",
|
"timer_pause_action_title": "恢复周期",
|
||||||
"timer_pause_body_suffix": "周期已暂停。打开 WashData 面板以恢复。",
|
"timer_pause_body_suffix": "周期已暂停。打开 WashData 面板以恢复。",
|
||||||
|
"unload_dismiss_action_title": "停止提醒",
|
||||||
"notify_live_waiting_message": "{device}:尚未匹配到配置文件。",
|
"notify_live_waiting_message": "{device}:尚未匹配到配置文件。",
|
||||||
"vs_typical_longer": "比平常长 {pct}%",
|
"vs_typical_longer": "比平常长 {pct}%",
|
||||||
"vs_typical_shorter": "比平常短 {pct}%",
|
"vs_typical_shorter": "比平常短 {pct}%",
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import collections
|
|||||||
import functools
|
import functools
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import math
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
@@ -39,6 +40,7 @@ from .const import (
|
|||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_COMPLETION_MIN_SECONDS,
|
CONF_COMPLETION_MIN_SECONDS,
|
||||||
CONF_DEVICE_TYPE,
|
CONF_DEVICE_TYPE,
|
||||||
|
CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE,
|
||||||
CONF_DOOR_SENSOR_ENTITY,
|
CONF_DOOR_SENSOR_ENTITY,
|
||||||
CONF_ANTI_WRINKLE_EXIT_POWER,
|
CONF_ANTI_WRINKLE_EXIT_POWER,
|
||||||
CONF_ANTI_WRINKLE_MAX_POWER,
|
CONF_ANTI_WRINKLE_MAX_POWER,
|
||||||
@@ -71,6 +73,7 @@ from .const import (
|
|||||||
CONF_SWITCH_ENTITY,
|
CONF_SWITCH_ENTITY,
|
||||||
CONF_WATCHDOG_INTERVAL,
|
CONF_WATCHDOG_INTERVAL,
|
||||||
DEFAULT_DEVICE_TYPE,
|
DEFAULT_DEVICE_TYPE,
|
||||||
|
DISHWASHER_END_SPIKE_QUIET_RELEASE_SECONDS,
|
||||||
DEFAULT_MAINTENANCE_REMINDER_CYCLES,
|
DEFAULT_MAINTENANCE_REMINDER_CYCLES,
|
||||||
DEFAULT_MIN_POWER,
|
DEFAULT_MIN_POWER,
|
||||||
DEFAULT_OFF_DELAY,
|
DEFAULT_OFF_DELAY,
|
||||||
@@ -81,6 +84,7 @@ from .const import (
|
|||||||
DOMAIN,
|
DOMAIN,
|
||||||
ENABLE_ML_SUGGESTIONS,
|
ENABLE_ML_SUGGESTIONS,
|
||||||
ENABLE_ML_TRAINING,
|
ENABLE_ML_TRAINING,
|
||||||
|
PLAYGROUND_PRESET_MAX,
|
||||||
SHOW_ML_LAB,
|
SHOW_ML_LAB,
|
||||||
STATE_COLORS,
|
STATE_COLORS,
|
||||||
)
|
)
|
||||||
@@ -92,16 +96,11 @@ from .ws_schema import WS_OPEN_RESPONSES, WS_RESPONSE_TYPES
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Read once at import time (manifest.json is static) so ws_get_constants never does
|
# Populated once during async_setup_entry (stored in hass.data["ha_washdata_version"])
|
||||||
# blocking I/O on the event loop. Falls back to "" if the file is absent.
|
# so ws_get_constants never does blocking I/O on the event loop. A module-level
|
||||||
try:
|
# read_text() here would run on the event loop the first time ws_api is imported
|
||||||
from pathlib import Path as _Path
|
# inside async_setup_entry (#328/#335).
|
||||||
_INTEGRATION_VERSION: str = json.loads(
|
_INTEGRATION_VERSION: str = ""
|
||||||
(_Path(__file__).parent / "manifest.json").read_text(encoding="utf-8")
|
|
||||||
).get("version", "")
|
|
||||||
del _Path
|
|
||||||
except Exception: # pragma: no cover # pylint: disable=broad-exception-caught
|
|
||||||
_INTEGRATION_VERSION = ""
|
|
||||||
|
|
||||||
# ─── WS response contract (Group H1) ────────────────────────────────────────────
|
# ─── WS response contract (Group H1) ────────────────────────────────────────────
|
||||||
# Debug-only validation of every send_result payload against the TypedDict
|
# Debug-only validation of every send_result payload against the TypedDict
|
||||||
@@ -1091,6 +1090,7 @@ def async_register_commands(hass: HomeAssistant) -> None:
|
|||||||
ws_get_constants,
|
ws_get_constants,
|
||||||
# Suggestions
|
# Suggestions
|
||||||
ws_get_suggestions, ws_apply_suggestions, ws_clear_suggestions, ws_run_suggestion_analysis,
|
ws_get_suggestions, ws_apply_suggestions, ws_clear_suggestions, ws_run_suggestion_analysis,
|
||||||
|
ws_set_suggestion_lock,
|
||||||
# Cycle curve / interactive editing
|
# Cycle curve / interactive editing
|
||||||
ws_get_cycle_power_data, ws_trim_cycle, ws_analyze_split, ws_apply_split, ws_apply_merge,
|
ws_get_cycle_power_data, ws_trim_cycle, ws_analyze_split, ws_apply_split, ws_apply_merge,
|
||||||
# Profile envelope / member cycles
|
# Profile envelope / member cycles
|
||||||
@@ -1116,6 +1116,8 @@ def async_register_commands(hass: HomeAssistant) -> None:
|
|||||||
ws_pause_cycle, ws_resume_cycle, ws_terminate_cycle,
|
ws_pause_cycle, ws_resume_cycle, ws_terminate_cycle,
|
||||||
# Playground (F3): DTW visualizer
|
# Playground (F3): DTW visualizer
|
||||||
ws_get_dtw_debug,
|
ws_get_dtw_debug,
|
||||||
|
# Playground settings control panel: live values + named presets
|
||||||
|
ws_get_playground_settings, ws_save_playground_preset, ws_delete_playground_preset,
|
||||||
# Playground redesign: faithful single-cycle sim + history table + sweep
|
# Playground redesign: faithful single-cycle sim + history table + sweep
|
||||||
ws_run_playground_cycle_detail, ws_run_playground_history,
|
ws_run_playground_cycle_detail, ws_run_playground_history,
|
||||||
ws_run_playground_sweep,
|
ws_run_playground_sweep,
|
||||||
@@ -1215,7 +1217,13 @@ def ws_get_devices(
|
|||||||
except Exception: # pylint: disable=broad-exception-caught
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
info["feedback_count"] = len(store.get_pending_feedback() or {})
|
# Count only pending feedback whose cycle still exists, so the
|
||||||
|
# badge cannot outrun the review list after a cycle is deleted,
|
||||||
|
# merged or split (#362). Defense-in-depth on top of the prune in
|
||||||
|
# those mutation paths; also self-heals pre-existing orphans.
|
||||||
|
_pend = store.get_pending_feedback() or {}
|
||||||
|
_live = {c.get("id") for c in store.get_past_cycles()}
|
||||||
|
info["feedback_count"] = sum(1 for cid in _pend if cid in _live)
|
||||||
except Exception: # pylint: disable=broad-exception-caught
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
pass
|
pass
|
||||||
info["is_user_paused"] = bool(getattr(manager, "is_user_paused", False))
|
info["is_user_paused"] = bool(getattr(manager, "is_user_paused", False))
|
||||||
@@ -1372,6 +1380,19 @@ async def ws_set_options(
|
|||||||
if effective_device_type != DEVICE_TYPE_PUMP:
|
if effective_device_type != DEVICE_TYPE_PUMP:
|
||||||
new_options.pop(CONF_PUMP_STUCK_DURATION, None)
|
new_options.pop(CONF_PUMP_STUCK_DURATION, None)
|
||||||
|
|
||||||
|
# Numeric-finite validation for fields that the cycle-detector float()-casts at
|
||||||
|
# build time; coerce bad submissions to the compiled default so storage stays clean.
|
||||||
|
if CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE in new_options:
|
||||||
|
try:
|
||||||
|
_qr = float(new_options[CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE])
|
||||||
|
if not math.isfinite(_qr):
|
||||||
|
raise ValueError("non-finite")
|
||||||
|
new_options[CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE] = _qr
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
new_options[CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE] = (
|
||||||
|
DISHWASHER_END_SPIKE_QUIET_RELEASE_SECONDS
|
||||||
|
)
|
||||||
|
|
||||||
# Partition identity out of options: the display name is carried by the
|
# Partition identity out of options: the display name is carried by the
|
||||||
# entry title, never persisted in options (matches the config-flow invariant
|
# entry title, never persisted in options (matches the config-flow invariant
|
||||||
# that CONF_NAME is absent from options).
|
# that CONF_NAME is absent from options).
|
||||||
@@ -3013,9 +3034,12 @@ async def ws_get_export_inventory(
|
|||||||
entry = _get_entry(hass, entry_id)
|
entry = _get_entry(hass, entry_id)
|
||||||
try:
|
try:
|
||||||
opts = dict(entry.options) if entry else {}
|
opts = dict(entry.options) if entry else {}
|
||||||
manifest = await hass.async_add_executor_job(
|
# Run the inventory scan synchronously on the event loop. It's a fast walk
|
||||||
manager.profile_store.get_export_inventory, opts
|
# (counts + small per-cycle {id,date,duration} dicts) and staying on the loop
|
||||||
)
|
# is inherently safe from concurrent mutation - offloading it to an executor
|
||||||
|
# would read the live, mutable store lists from another thread and could raise
|
||||||
|
# "list changed size during iteration" without a full (expensive) snapshot.
|
||||||
|
manifest = manager.profile_store.get_export_inventory(opts)
|
||||||
_send_result(connection, msg["id"], "get_export_inventory", {"manifest": manifest})
|
_send_result(connection, msg["id"], "get_export_inventory", {"manifest": manifest})
|
||||||
except Exception as exc: # pylint: disable=broad-exception-caught
|
except Exception as exc: # pylint: disable=broad-exception-caught
|
||||||
connection.send_error(msg["id"], "unknown_error", str(exc))
|
connection.send_error(msg["id"], "unknown_error", str(exc))
|
||||||
@@ -3239,23 +3263,8 @@ def ws_get_constants(
|
|||||||
from .frontend import BRAND_ICON_URL as _BRAND_ICON_URL, BRAND_ICON_REGISTERED_KEY as _BRAND_ICON_KEY # pylint: disable=import-outside-toplevel
|
from .frontend import BRAND_ICON_URL as _BRAND_ICON_URL, BRAND_ICON_REGISTERED_KEY as _BRAND_ICON_KEY # pylint: disable=import-outside-toplevel
|
||||||
from .const import STORE_WEB_ORIGIN
|
from .const import STORE_WEB_ORIGIN
|
||||||
from . import store_account
|
from . import store_account
|
||||||
from .const import ( # pylint: disable=import-outside-toplevel
|
|
||||||
DEFAULT_PROFILE_MATCH_MIN_DURATION_RATIO,
|
|
||||||
DEFAULT_PROFILE_MATCH_MAX_DURATION_RATIO,
|
|
||||||
DEFAULT_DTW_BANDWIDTH,
|
|
||||||
MATCH_CORR_WEIGHT,
|
|
||||||
MATCH_KEEP_MIN_SCORE,
|
|
||||||
MATCH_DTW_BLEND,
|
|
||||||
MATCH_DTW_ENSEMBLE_W,
|
|
||||||
MATCH_DDTW_DIST_SCALE,
|
|
||||||
MATCH_DTW_REFINE_TOP_N,
|
|
||||||
MATCH_DURATION_WEIGHT,
|
|
||||||
MATCH_ENERGY_WEIGHT,
|
|
||||||
MATCH_DURATION_SCALE,
|
|
||||||
MATCH_ENERGY_SCALE,
|
|
||||||
)
|
|
||||||
_send_result(connection, msg["id"], "get_constants", {
|
_send_result(connection, msg["id"], "get_constants", {
|
||||||
"version": _INTEGRATION_VERSION,
|
"version": hass.data.get("ha_washdata_version", _INTEGRATION_VERSION),
|
||||||
"icon_url": _BRAND_ICON_URL if hass.data.get(_BRAND_ICON_KEY) else None,
|
"icon_url": _BRAND_ICON_URL if hass.data.get(_BRAND_ICON_KEY) else None,
|
||||||
"device_types": device_types,
|
"device_types": device_types,
|
||||||
"state_colors": dict(STATE_COLORS),
|
"state_colors": dict(STATE_COLORS),
|
||||||
@@ -3265,22 +3274,9 @@ def ws_get_constants(
|
|||||||
"PROFILE_MIN_WARMUP_CYCLES": CONF_PROFILE_MIN_WARMUP_CYCLES,
|
"PROFILE_MIN_WARMUP_CYCLES": CONF_PROFILE_MIN_WARMUP_CYCLES,
|
||||||
# Canonical matcher defaults for the Playground's matcher-param fields, so
|
# Canonical matcher defaults for the Playground's matcher-param fields, so
|
||||||
# the panel's _PG_MATCH_DEFAULTS table cannot silently drift from const.py.
|
# the panel's _PG_MATCH_DEFAULTS table cannot silently drift from const.py.
|
||||||
# The panel keeps that table only as an offline fallback.
|
# The panel keeps that table only as an offline fallback. Single source:
|
||||||
"pg_match_defaults": {
|
# playground.MATCH_DEFAULTS_BY_OPTION (also used by effective_settings).
|
||||||
"profile_match_min_duration_ratio": DEFAULT_PROFILE_MATCH_MIN_DURATION_RATIO,
|
"pg_match_defaults": dict(playground.MATCH_DEFAULTS_BY_OPTION),
|
||||||
"profile_match_max_duration_ratio": DEFAULT_PROFILE_MATCH_MAX_DURATION_RATIO,
|
|
||||||
"corr_weight": MATCH_CORR_WEIGHT,
|
|
||||||
"keep_min_score": MATCH_KEEP_MIN_SCORE,
|
|
||||||
"dtw_bandwidth": DEFAULT_DTW_BANDWIDTH,
|
|
||||||
"dtw_blend": MATCH_DTW_BLEND,
|
|
||||||
"dtw_ensemble_w": MATCH_DTW_ENSEMBLE_W,
|
|
||||||
"dtw_ddtw_scale": MATCH_DDTW_DIST_SCALE,
|
|
||||||
"dtw_refine_top_n": MATCH_DTW_REFINE_TOP_N,
|
|
||||||
"duration_weight": MATCH_DURATION_WEIGHT,
|
|
||||||
"energy_weight": MATCH_ENERGY_WEIGHT,
|
|
||||||
"duration_scale": MATCH_DURATION_SCALE,
|
|
||||||
"energy_scale": MATCH_ENERGY_SCALE,
|
|
||||||
},
|
|
||||||
# Community store: the panel opens <origin>/connect.html for the GitHub
|
# Community store: the panel opens <origin>/connect.html for the GitHub
|
||||||
# handoff and validates postMessage against new URL(origin).origin.
|
# handoff and validates postMessage against new URL(origin).origin.
|
||||||
"store_online_available": True,
|
"store_online_available": True,
|
||||||
@@ -3349,7 +3345,14 @@ def ws_get_suggestions(
|
|||||||
except Exception as exc: # pylint: disable=broad-exception-caught
|
except Exception as exc: # pylint: disable=broad-exception-caught
|
||||||
_LOGGER.debug("Error reading suggestions for %s: %s", entry_id, exc)
|
_LOGGER.debug("Error reading suggestions for %s: %s", entry_id, exc)
|
||||||
|
|
||||||
_send_result(connection, msg["id"], "get_suggestions", {"suggestions": out})
|
try:
|
||||||
|
locked = manager.profile_store.get_locked_suggestions()
|
||||||
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
|
locked = []
|
||||||
|
_send_result(
|
||||||
|
connection, msg["id"], "get_suggestions",
|
||||||
|
{"suggestions": out, "locked_suggestions": locked},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@websocket_api.websocket_command(
|
@websocket_api.websocket_command(
|
||||||
@@ -3433,6 +3436,42 @@ async def ws_clear_suggestions(
|
|||||||
connection.send_error(msg["id"], "unknown_error", str(exc))
|
connection.send_error(msg["id"], "unknown_error", str(exc))
|
||||||
|
|
||||||
|
|
||||||
|
@websocket_api.websocket_command(
|
||||||
|
{
|
||||||
|
vol.Required("type"): "ha_washdata/set_suggestion_lock",
|
||||||
|
vol.Required("entry_id"): str,
|
||||||
|
vol.Required("key"): str,
|
||||||
|
vol.Required("locked"): bool,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@websocket_api.async_response
|
||||||
|
async def ws_set_suggestion_lock(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
) -> None:
|
||||||
|
"""Lock or unlock a tuning suggestion key so the auto-tuner stops (or resumes)
|
||||||
|
proposing it (#343)."""
|
||||||
|
entry_id: str = msg["entry_id"]
|
||||||
|
key: str = msg["key"]
|
||||||
|
if key not in _SUGGESTION_KEYS:
|
||||||
|
connection.send_error(msg["id"], "invalid_key", f"Unknown suggestion key: {key!r}")
|
||||||
|
return
|
||||||
|
manager = _get_manager(hass, entry_id)
|
||||||
|
if manager is None:
|
||||||
|
_err_not_found(connection, msg["id"], entry_id)
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
await manager.profile_store.set_suggestion_locked(key, bool(msg["locked"]))
|
||||||
|
manager.notify_update()
|
||||||
|
_send_result(
|
||||||
|
connection, msg["id"], "set_suggestion_lock",
|
||||||
|
{"success": True, "locked_suggestions": manager.profile_store.get_locked_suggestions()},
|
||||||
|
)
|
||||||
|
except Exception as exc: # pylint: disable=broad-exception-caught
|
||||||
|
connection.send_error(msg["id"], "unknown_error", str(exc))
|
||||||
|
|
||||||
|
|
||||||
@websocket_api.websocket_command(
|
@websocket_api.websocket_command(
|
||||||
{vol.Required("type"): "ha_washdata/run_suggestion_analysis", vol.Required("entry_id"): str}
|
{vol.Required("type"): "ha_washdata/run_suggestion_analysis", vol.Required("entry_id"): str}
|
||||||
)
|
)
|
||||||
@@ -4085,6 +4124,14 @@ async def ws_set_user_prefs(
|
|||||||
# F2: per-user Basic/Advanced settings disclosure level.
|
# F2: per-user Basic/Advanced settings disclosure level.
|
||||||
if p.get("settings_level") in ("basic", "advanced"):
|
if p.get("settings_level") in ("basic", "advanced"):
|
||||||
cur["settings_level"] = p["settings_level"]
|
cur["settings_level"] = p["settings_level"]
|
||||||
|
# Panel font-size multiplier (accessibility). Coerce + clamp to safe bounds so a
|
||||||
|
# bad value can never break rendering; without this it was silently dropped and
|
||||||
|
# the setting vanished on refresh.
|
||||||
|
if "font_scale" in p:
|
||||||
|
try:
|
||||||
|
cur["font_scale"] = max(0.7, min(2.0, float(p["font_scale"])))
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
cur.pop("font_scale", None)
|
||||||
# Display prefs: cycle date format + panel language override (paired with the
|
# Display prefs: cycle date format + panel language override (paired with the
|
||||||
# panel's save-prefs payload; without these they would be silently dropped).
|
# panel's save-prefs payload; without these they would be silently dropped).
|
||||||
if p.get("date_format") in _PREF_DATE_FORMATS:
|
if p.get("date_format") in _PREF_DATE_FORMATS:
|
||||||
@@ -4635,7 +4682,9 @@ def _compute_ml_comparison(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _build_settings_comparison(manager: Any, merged: dict[str, Any]) -> dict[str, Any]:
|
def _build_settings_comparison(
|
||||||
|
manager: Any, merged: dict[str, Any], engine: Any = None
|
||||||
|
) -> dict[str, Any]:
|
||||||
"""Build the enriched Classic-vs-ML settings comparison (executor-safe).
|
"""Build the enriched Classic-vs-ML settings comparison (executor-safe).
|
||||||
|
|
||||||
Runs both the classic :class:`SuggestionEngine` and the
|
Runs both the classic :class:`SuggestionEngine` and the
|
||||||
@@ -4651,6 +4700,11 @@ def _build_settings_comparison(manager: Any, merged: dict[str, Any]) -> dict[str
|
|||||||
except Exception: # pylint: disable=broad-exception-caught
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
# `engine` is a for_job() copy prepared on the event loop with the config
|
||||||
|
# snapshot already bound; fall back to the shared engine only for callers that
|
||||||
|
# did not supply one (its _entry_options() then does a live read).
|
||||||
|
classic = engine
|
||||||
|
if classic is None:
|
||||||
learning = getattr(manager, "learning_manager", None)
|
learning = getattr(manager, "learning_manager", None)
|
||||||
classic = getattr(learning, "suggestion_engine", None)
|
classic = getattr(learning, "suggestion_engine", None)
|
||||||
if classic is None:
|
if classic is None:
|
||||||
@@ -4792,8 +4846,16 @@ async def ws_get_ml_comparison(
|
|||||||
# Stage 3: replace the basic off_delay-only comparison with the full
|
# Stage 3: replace the basic off_delay-only comparison with the full
|
||||||
# Classic-vs-ML settings table when ML suggestions are unlocked.
|
# Classic-vs-ML settings table when ML suggestions are unlocked.
|
||||||
if ENABLE_ML_SUGGESTIONS:
|
if ENABLE_ML_SUGGESTIONS:
|
||||||
|
# Bind this handler's already-merged view to a throwaway engine copy
|
||||||
|
# before the executor hop: reading the config entry is loop-affine, so
|
||||||
|
# the generators must not re-read it from the worker thread, and a
|
||||||
|
# copy keeps concurrent jobs from clobbering each other's snapshot.
|
||||||
|
shared = getattr(
|
||||||
|
getattr(manager, "learning_manager", None), "suggestion_engine", None
|
||||||
|
)
|
||||||
|
job_engine = shared.for_job(merged) if shared is not None else None
|
||||||
enriched = await hass.async_add_executor_job(
|
enriched = await hass.async_add_executor_job(
|
||||||
_build_settings_comparison, manager, merged
|
_build_settings_comparison, manager, merged, job_engine
|
||||||
)
|
)
|
||||||
if enriched:
|
if enriched:
|
||||||
result["settings_comparison"] = enriched
|
result["settings_comparison"] = enriched
|
||||||
@@ -5167,6 +5229,16 @@ async def ws_terminate_cycle(
|
|||||||
|
|
||||||
# ─── Playground (F3): headless what-if replay + DTW visualizer ──────────────────
|
# ─── Playground (F3): headless what-if replay + DTW visualizer ──────────────────
|
||||||
|
|
||||||
|
|
||||||
|
def _safe_float_finite(value: Any, default: float) -> float:
|
||||||
|
"""Convert ``value`` to a finite float, falling back to ``default`` on failure."""
|
||||||
|
try:
|
||||||
|
v = float(value)
|
||||||
|
return v if math.isfinite(v) else default
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
return default
|
||||||
|
|
||||||
|
|
||||||
def _playground_base_config(manager: Any, entry: Any) -> CycleDetectorConfig:
|
def _playground_base_config(manager: Any, entry: Any) -> CycleDetectorConfig:
|
||||||
"""Resolve the device's live CycleDetectorConfig as the simulation base.
|
"""Resolve the device's live CycleDetectorConfig as the simulation base.
|
||||||
|
|
||||||
@@ -5193,6 +5265,10 @@ def _playground_base_config(manager: Any, entry: Any) -> CycleDetectorConfig:
|
|||||||
stop_threshold_w=float(
|
stop_threshold_w=float(
|
||||||
opts.get(CONF_STOP_THRESHOLD_W, min_power * 0.6 if min_power else 2.0)
|
opts.get(CONF_STOP_THRESHOLD_W, min_power * 0.6 if min_power else 2.0)
|
||||||
),
|
),
|
||||||
|
dishwasher_end_spike_quiet_release=_safe_float_finite(
|
||||||
|
opts.get(CONF_DISHWASHER_END_SPIKE_QUIET_RELEASE),
|
||||||
|
DISHWASHER_END_SPIKE_QUIET_RELEASE_SECONDS,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -5405,6 +5481,191 @@ async def ws_get_dtw_debug(
|
|||||||
connection.send_error(msg["id"], "unknown_error", str(exc))
|
connection.send_error(msg["id"], "unknown_error", str(exc))
|
||||||
|
|
||||||
|
|
||||||
|
# ─── Playground settings control panel (live values + presets) ─────────────────
|
||||||
|
|
||||||
|
|
||||||
|
def _playground_preset_list(store: Any) -> list[dict[str, Any]]:
|
||||||
|
"""Presets as a name-sorted list for the panel dropdown."""
|
||||||
|
presets = store.get_playground_presets()
|
||||||
|
out: list[dict[str, Any]] = []
|
||||||
|
for name, record in presets.items():
|
||||||
|
if not isinstance(record, dict):
|
||||||
|
continue
|
||||||
|
out.append({
|
||||||
|
"name": name,
|
||||||
|
"values": dict(record.get("values") or {}),
|
||||||
|
"created_at": record.get("created_at"),
|
||||||
|
"updated_at": record.get("updated_at"),
|
||||||
|
})
|
||||||
|
out.sort(key=lambda p: str(p["name"]).lower())
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
@websocket_api.websocket_command(
|
||||||
|
{
|
||||||
|
vol.Required("type"): "ha_washdata/get_playground_settings",
|
||||||
|
vol.Required("entry_id"): str,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@websocket_api.async_response
|
||||||
|
async def ws_get_playground_settings(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
) -> None:
|
||||||
|
"""Return the device's LIVE effective Playground settings plus saved presets.
|
||||||
|
|
||||||
|
``effective`` is read back off the same live detector/matcher config the
|
||||||
|
simulation uses, so the control panel always opens on what the integration is
|
||||||
|
really running - never on a stale schema default. ``publishable`` lists the
|
||||||
|
keys the panel may write back to the config entry.
|
||||||
|
"""
|
||||||
|
entry_id: str = msg["entry_id"]
|
||||||
|
ctx = _playground_context(hass, entry_id)
|
||||||
|
if ctx is None:
|
||||||
|
_err_not_found(connection, msg["id"], entry_id)
|
||||||
|
return
|
||||||
|
_manager, store, base_config, options, _price = ctx
|
||||||
|
try:
|
||||||
|
match_config = playground._matching_config(store) # noqa: SLF001
|
||||||
|
except Exception: # pylint: disable=broad-exception-caught
|
||||||
|
match_config = {}
|
||||||
|
|
||||||
|
# Classic suggestions from the store (periodic analysis results), filtered to
|
||||||
|
# keys the Playground actually exposes — cheap dict read, no executor needed.
|
||||||
|
raw_sugg: dict[str, Any] = {}
|
||||||
|
try:
|
||||||
|
raw_sugg = store.get_suggestions() or {}
|
||||||
|
except Exception as exc: # pylint: disable=broad-exception-caught
|
||||||
|
_LOGGER.debug(
|
||||||
|
"Could not read Playground classic suggestions for %s: %s", entry_id, exc
|
||||||
|
)
|
||||||
|
classic_sugg: dict[str, Any] = {}
|
||||||
|
for key in playground.SETTING_KEYS:
|
||||||
|
item = raw_sugg.get(key)
|
||||||
|
if isinstance(item, dict) and item.get("value") is not None:
|
||||||
|
val = item["value"]
|
||||||
|
try:
|
||||||
|
classic_sugg[key] = int(float(val)) if key in _SUGGESTION_INT_KEYS else round(float(val), 4)
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# ML suggestions — computed on-demand; executor-offloaded because it runs
|
||||||
|
# statistics across all clean cycles. None when the feature is disabled.
|
||||||
|
ml_sugg: dict[str, Any] | None = None
|
||||||
|
if ENABLE_ML_SUGGESTIONS:
|
||||||
|
ml_sugg = {}
|
||||||
|
try:
|
||||||
|
learning = getattr(_manager, "learning_manager", None)
|
||||||
|
classic_engine = getattr(learning, "suggestion_engine", None)
|
||||||
|
if classic_engine is not None:
|
||||||
|
_pg_setting_keys = playground.SETTING_KEYS
|
||||||
|
_pg_int_keys = _SUGGESTION_INT_KEYS
|
||||||
|
job_engine = classic_engine.for_job(options)
|
||||||
|
|
||||||
|
def _run_ml_sugg() -> dict[str, Any]:
|
||||||
|
from .suggestion_engine import MLSuggestionEngine as _ML # pylint: disable=import-outside-toplevel
|
||||||
|
raw = _ML(job_engine).generate_ml_suggestions() or {}
|
||||||
|
out: dict[str, Any] = {}
|
||||||
|
for k in _pg_setting_keys:
|
||||||
|
entry = raw.get(k)
|
||||||
|
if isinstance(entry, dict) and entry.get("value") is not None:
|
||||||
|
v = entry["value"]
|
||||||
|
try:
|
||||||
|
out[k] = int(float(v)) if k in _pg_int_keys else round(float(v), 4)
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
pass
|
||||||
|
return out
|
||||||
|
|
||||||
|
ml_sugg = await hass.async_add_executor_job(_run_ml_sugg)
|
||||||
|
except Exception as exc: # pylint: disable=broad-exception-caught
|
||||||
|
_LOGGER.debug(
|
||||||
|
"Could not generate Playground ML suggestions for %s: %s", entry_id, exc
|
||||||
|
)
|
||||||
|
|
||||||
|
_send_result(connection, msg["id"], "get_playground_settings", {
|
||||||
|
"effective": playground.effective_settings(base_config, match_config),
|
||||||
|
"presets": _playground_preset_list(store),
|
||||||
|
"publishable": sorted(playground.PUBLISHABLE_SETTING_KEYS),
|
||||||
|
"preset_limit": PLAYGROUND_PRESET_MAX,
|
||||||
|
"classic_suggestions": classic_sugg,
|
||||||
|
"ml_suggestions": ml_sugg,
|
||||||
|
"ml_suggestions_enabled": ENABLE_ML_SUGGESTIONS,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@websocket_api.websocket_command(
|
||||||
|
{
|
||||||
|
vol.Required("type"): "ha_washdata/save_playground_preset",
|
||||||
|
vol.Required("entry_id"): str,
|
||||||
|
vol.Required("name"): str,
|
||||||
|
vol.Required("values"): dict,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@websocket_api.async_response
|
||||||
|
async def ws_save_playground_preset(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
) -> None:
|
||||||
|
"""Save (or overwrite) a named snapshot of the Playground's settings."""
|
||||||
|
entry_id: str = msg["entry_id"]
|
||||||
|
manager = _get_manager(hass, entry_id)
|
||||||
|
store = getattr(manager, "profile_store", None) if manager else None
|
||||||
|
if store is None:
|
||||||
|
_err_not_found(connection, msg["id"], entry_id)
|
||||||
|
return
|
||||||
|
values = playground.sanitize_setting_values(msg["values"])
|
||||||
|
try:
|
||||||
|
await store.async_save_playground_preset(msg["name"], values)
|
||||||
|
except ValueError as exc:
|
||||||
|
connection.send_error(msg["id"], "invalid_format", str(exc))
|
||||||
|
return
|
||||||
|
except Exception as exc: # pylint: disable=broad-exception-caught
|
||||||
|
# The store write can fail (disk full, permissions). Without this the
|
||||||
|
# exception escapes the handler and the client never gets a reply, so the
|
||||||
|
# panel's save button spins forever instead of reporting the failure.
|
||||||
|
_LOGGER.warning("Saving playground preset failed for %s: %s", entry_id, exc)
|
||||||
|
connection.send_error(msg["id"], "unknown_error", str(exc))
|
||||||
|
return
|
||||||
|
_send_result(connection, msg["id"], "save_playground_preset", {
|
||||||
|
"success": True,
|
||||||
|
"presets": _playground_preset_list(store),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@websocket_api.websocket_command(
|
||||||
|
{
|
||||||
|
vol.Required("type"): "ha_washdata/delete_playground_preset",
|
||||||
|
vol.Required("entry_id"): str,
|
||||||
|
vol.Required("name"): str,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@websocket_api.async_response
|
||||||
|
async def ws_delete_playground_preset(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
) -> None:
|
||||||
|
"""Delete a saved Playground settings preset."""
|
||||||
|
entry_id: str = msg["entry_id"]
|
||||||
|
manager = _get_manager(hass, entry_id)
|
||||||
|
store = getattr(manager, "profile_store", None) if manager else None
|
||||||
|
if store is None:
|
||||||
|
_err_not_found(connection, msg["id"], entry_id)
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
removed = await store.async_delete_playground_preset(msg["name"])
|
||||||
|
except Exception as exc: # pylint: disable=broad-exception-caught
|
||||||
|
_LOGGER.warning("Deleting playground preset failed for %s: %s", entry_id, exc)
|
||||||
|
connection.send_error(msg["id"], "unknown_error", str(exc))
|
||||||
|
return
|
||||||
|
_send_result(connection, msg["id"], "delete_playground_preset", {
|
||||||
|
"success": removed,
|
||||||
|
"presets": _playground_preset_list(store),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
# ─── Background-task registry (progress / cancel / reconnect-safe results) ──────
|
# ─── Background-task registry (progress / cancel / reconnect-safe results) ──────
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -216,6 +216,8 @@ class ImportConfigSelectiveResponse(TypedDict):
|
|||||||
# ─── Shared constants ──────────────────────────────────────────────────────────
|
# ─── Shared constants ──────────────────────────────────────────────────────────
|
||||||
|
|
||||||
class GetConstantsResponse(TypedDict):
|
class GetConstantsResponse(TypedDict):
|
||||||
|
version: str
|
||||||
|
icon_url: str | None
|
||||||
device_types: list[dict[str, Any]]
|
device_types: list[dict[str, Any]]
|
||||||
state_colors: dict[str, Any]
|
state_colors: dict[str, Any]
|
||||||
ml_lab_enabled: bool
|
ml_lab_enabled: bool
|
||||||
@@ -225,12 +227,15 @@ class GetConstantsResponse(TypedDict):
|
|||||||
store_online_available: bool
|
store_online_available: bool
|
||||||
store_online_enabled: bool
|
store_online_enabled: bool
|
||||||
store_web_origin: str
|
store_web_origin: str
|
||||||
|
store_prefs: dict[str, Any]
|
||||||
|
pg_match_defaults: dict[str, Any]
|
||||||
|
|
||||||
|
|
||||||
# ─── Suggestions ───────────────────────────────────────────────────────────────
|
# ─── Suggestions ───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
class GetSuggestionsResponse(TypedDict):
|
class GetSuggestionsResponse(TypedDict):
|
||||||
suggestions: list[dict[str, Any]]
|
suggestions: list[dict[str, Any]]
|
||||||
|
locked_suggestions: list[str]
|
||||||
|
|
||||||
|
|
||||||
class ApplySuggestionsResponse(TypedDict):
|
class ApplySuggestionsResponse(TypedDict):
|
||||||
@@ -238,6 +243,11 @@ class ApplySuggestionsResponse(TypedDict):
|
|||||||
applied: list[str]
|
applied: list[str]
|
||||||
|
|
||||||
|
|
||||||
|
class SetSuggestionLockResponse(TypedDict):
|
||||||
|
success: bool
|
||||||
|
locked_suggestions: list[str]
|
||||||
|
|
||||||
|
|
||||||
class RunSuggestionAnalysisResponse(TypedDict, total=False):
|
class RunSuggestionAnalysisResponse(TypedDict, total=False):
|
||||||
"""``success`` plus whatever the analysis pass reports (e.g. ``count``)."""
|
"""``success`` plus whatever the analysis pass reports (e.g. ``count``)."""
|
||||||
|
|
||||||
@@ -262,6 +272,7 @@ class GetCyclePowerDataResponse(TypedDict, total=False):
|
|||||||
energy_kwh: float | None
|
energy_kwh: float | None
|
||||||
artifacts: list[dict[str, Any]]
|
artifacts: list[dict[str, Any]]
|
||||||
restart_gaps: list[Any]
|
restart_gaps: list[Any]
|
||||||
|
is_reference: bool
|
||||||
|
|
||||||
|
|
||||||
class AnalyzeSplitResponse(TypedDict):
|
class AnalyzeSplitResponse(TypedDict):
|
||||||
@@ -437,6 +448,41 @@ class GetDtwDebugResponse(TypedDict):
|
|||||||
warp_path: list[list[int]]
|
warp_path: list[list[int]]
|
||||||
|
|
||||||
|
|
||||||
|
class PlaygroundPreset(TypedDict):
|
||||||
|
"""One saved Playground settings snapshot."""
|
||||||
|
|
||||||
|
name: str
|
||||||
|
values: dict[str, Any]
|
||||||
|
created_at: Any
|
||||||
|
updated_at: Any
|
||||||
|
|
||||||
|
|
||||||
|
class GetPlaygroundSettingsResponse(TypedDict):
|
||||||
|
"""Live effective Playground settings + the device's saved presets.
|
||||||
|
|
||||||
|
``classic_suggestions`` and ``ml_suggestions`` are filtered to keys the
|
||||||
|
Playground exposes so the panel can stage them directly. ``ml_suggestions``
|
||||||
|
is ``None`` when ``ENABLE_ML_SUGGESTIONS`` is off - the key is still always
|
||||||
|
present, so every field here is required (total=True) and
|
||||||
|
``_validate_ws_contract()`` can catch a handler that drops one.
|
||||||
|
"""
|
||||||
|
|
||||||
|
effective: dict[str, Any]
|
||||||
|
presets: list[PlaygroundPreset]
|
||||||
|
publishable: list[str]
|
||||||
|
preset_limit: int
|
||||||
|
classic_suggestions: dict[str, Any]
|
||||||
|
ml_suggestions: dict[str, Any] | None
|
||||||
|
ml_suggestions_enabled: bool
|
||||||
|
|
||||||
|
|
||||||
|
class PlaygroundPresetsResponse(TypedDict):
|
||||||
|
"""Acknowledgement carrying the post-mutation preset list."""
|
||||||
|
|
||||||
|
success: bool
|
||||||
|
presets: list[PlaygroundPreset]
|
||||||
|
|
||||||
|
|
||||||
class TaskSnapshot(TypedDict, total=False):
|
class TaskSnapshot(TypedDict, total=False):
|
||||||
id: str
|
id: str
|
||||||
entry_id: str
|
entry_id: str
|
||||||
@@ -585,6 +631,7 @@ class GetShareableCyclesResponse(TypedDict, total=False):
|
|||||||
plus the programs that carry a local phase map."""
|
plus the programs that carry a local phase map."""
|
||||||
items: list
|
items: list
|
||||||
phase_programs: list
|
phase_programs: list
|
||||||
|
all_programs: list
|
||||||
|
|
||||||
|
|
||||||
class GetSetupStatusResponse(TypedDict, total=False):
|
class GetSetupStatusResponse(TypedDict, total=False):
|
||||||
@@ -651,6 +698,7 @@ WS_RESPONSE_TYPES: dict[str, type] = {
|
|||||||
"get_suggestions": GetSuggestionsResponse,
|
"get_suggestions": GetSuggestionsResponse,
|
||||||
"apply_suggestions": ApplySuggestionsResponse,
|
"apply_suggestions": ApplySuggestionsResponse,
|
||||||
"clear_suggestions": SuccessResponse,
|
"clear_suggestions": SuccessResponse,
|
||||||
|
"set_suggestion_lock": SetSuggestionLockResponse,
|
||||||
"run_suggestion_analysis": RunSuggestionAnalysisResponse,
|
"run_suggestion_analysis": RunSuggestionAnalysisResponse,
|
||||||
"get_cycle_power_data": GetCyclePowerDataResponse,
|
"get_cycle_power_data": GetCyclePowerDataResponse,
|
||||||
"trim_cycle": StartTaskResponse,
|
"trim_cycle": StartTaskResponse,
|
||||||
@@ -679,6 +727,9 @@ WS_RESPONSE_TYPES: dict[str, type] = {
|
|||||||
"run_playground_history": RunPlaygroundHistoryResponse,
|
"run_playground_history": RunPlaygroundHistoryResponse,
|
||||||
"run_playground_sweep": RunPlaygroundSweepResponse,
|
"run_playground_sweep": RunPlaygroundSweepResponse,
|
||||||
"get_dtw_debug": GetDtwDebugResponse,
|
"get_dtw_debug": GetDtwDebugResponse,
|
||||||
|
"get_playground_settings": GetPlaygroundSettingsResponse,
|
||||||
|
"save_playground_preset": PlaygroundPresetsResponse,
|
||||||
|
"delete_playground_preset": PlaygroundPresetsResponse,
|
||||||
"list_tasks": ListTasksResponse,
|
"list_tasks": ListTasksResponse,
|
||||||
"subscribe_tasks": SubscribeTasksResponse,
|
"subscribe_tasks": SubscribeTasksResponse,
|
||||||
"cancel_task": CancelTaskResponse,
|
"cancel_task": CancelTaskResponse,
|
||||||
@@ -868,6 +919,7 @@ WS_COMMANDS: dict[str, dict] = {
|
|||||||
"get_suggestions": {"params": [_entry()]},
|
"get_suggestions": {"params": [_entry()]},
|
||||||
"apply_suggestions": {"params": [_entry(), _p("keys", "list[str]")]},
|
"apply_suggestions": {"params": [_entry(), _p("keys", "list[str]")]},
|
||||||
"clear_suggestions": {"params": [_entry()]},
|
"clear_suggestions": {"params": [_entry()]},
|
||||||
|
"set_suggestion_lock": {"params": [_entry(), _p("key", "str"), _p("locked", "bool")]},
|
||||||
"run_suggestion_analysis": {"params": [_entry()]},
|
"run_suggestion_analysis": {"params": [_entry()]},
|
||||||
"get_cycle_power_data": {"params": [_entry(), _p("cycle_id", "str")]},
|
"get_cycle_power_data": {"params": [_entry(), _p("cycle_id", "str")]},
|
||||||
"trim_cycle": {"params": [
|
"trim_cycle": {"params": [
|
||||||
@@ -954,6 +1006,13 @@ WS_COMMANDS: dict[str, dict] = {
|
|||||||
_p("cycle_id", "str"),
|
_p("cycle_id", "str"),
|
||||||
_p("profile_name", "str|null", False),
|
_p("profile_name", "str|null", False),
|
||||||
]},
|
]},
|
||||||
|
"get_playground_settings": {"params": [_entry()]},
|
||||||
|
"save_playground_preset": {"params": [
|
||||||
|
_entry(),
|
||||||
|
_p("name", "str"),
|
||||||
|
_p("values", "dict"),
|
||||||
|
]},
|
||||||
|
"delete_playground_preset": {"params": [_entry(), _p("name", "str")]},
|
||||||
"list_tasks": {"params": [_p("entry_id", "str|null", False)]},
|
"list_tasks": {"params": [_p("entry_id", "str|null", False)]},
|
||||||
"subscribe_tasks": {"params": [_p("entry_id", "str|null", False)]},
|
"subscribe_tasks": {"params": [_p("entry_id", "str|null", False)]},
|
||||||
"cancel_task": {"params": [_p("task_id", "str")]},
|
"cancel_task": {"params": [_p("task_id", "str")]},
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
+63
@@ -91,6 +91,8 @@ export interface ExportConfigResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface GetConstantsResponse {
|
export interface GetConstantsResponse {
|
||||||
|
version: string;
|
||||||
|
icon_url: string | null;
|
||||||
device_types: Record<string, unknown>[];
|
device_types: Record<string, unknown>[];
|
||||||
state_colors: Record<string, unknown>;
|
state_colors: Record<string, unknown>;
|
||||||
ml_lab_enabled: boolean;
|
ml_lab_enabled: boolean;
|
||||||
@@ -100,6 +102,8 @@ export interface GetConstantsResponse {
|
|||||||
store_online_available: boolean;
|
store_online_available: boolean;
|
||||||
store_online_enabled: boolean;
|
store_online_enabled: boolean;
|
||||||
store_web_origin: string;
|
store_web_origin: string;
|
||||||
|
store_prefs: Record<string, unknown>;
|
||||||
|
pg_match_defaults: Record<string, unknown>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GetCyclePowerDataResponse {
|
export interface GetCyclePowerDataResponse {
|
||||||
@@ -114,6 +118,7 @@ export interface GetCyclePowerDataResponse {
|
|||||||
energy_kwh?: number | null;
|
energy_kwh?: number | null;
|
||||||
artifacts?: Record<string, unknown>[];
|
artifacts?: Record<string, unknown>[];
|
||||||
restart_gaps?: unknown[];
|
restart_gaps?: unknown[];
|
||||||
|
is_reference?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GetDeviceCyclesResponse {
|
export interface GetDeviceCyclesResponse {
|
||||||
@@ -214,6 +219,16 @@ export interface GetPhaseCatalogResponse {
|
|||||||
device_type: string | null;
|
device_type: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface GetPlaygroundSettingsResponse {
|
||||||
|
effective: Record<string, unknown>;
|
||||||
|
presets: PlaygroundPreset[];
|
||||||
|
publishable: string[];
|
||||||
|
preset_limit: number;
|
||||||
|
classic_suggestions: Record<string, unknown>;
|
||||||
|
ml_suggestions: Record<string, unknown> | null;
|
||||||
|
ml_suggestions_enabled: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export interface GetPowerHistoryResponse {
|
export interface GetPowerHistoryResponse {
|
||||||
cycle_active?: boolean;
|
cycle_active?: boolean;
|
||||||
cycle_elapsed_s?: number;
|
cycle_elapsed_s?: number;
|
||||||
@@ -277,10 +292,12 @@ export interface GetSetupStatusResponse {
|
|||||||
export interface GetShareableCyclesResponse {
|
export interface GetShareableCyclesResponse {
|
||||||
items?: unknown[];
|
items?: unknown[];
|
||||||
phase_programs?: unknown[];
|
phase_programs?: unknown[];
|
||||||
|
all_programs?: unknown[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GetSuggestionsResponse {
|
export interface GetSuggestionsResponse {
|
||||||
suggestions: Record<string, unknown>[];
|
suggestions: Record<string, unknown>[];
|
||||||
|
locked_suggestions: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ImportConfigSelectiveResponse {
|
export interface ImportConfigSelectiveResponse {
|
||||||
@@ -296,6 +313,18 @@ export interface OkResponse {
|
|||||||
ok: boolean;
|
ok: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface PlaygroundPreset {
|
||||||
|
name: string;
|
||||||
|
values: Record<string, unknown>;
|
||||||
|
created_at: unknown;
|
||||||
|
updated_at: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PlaygroundPresetsResponse {
|
||||||
|
success: boolean;
|
||||||
|
presets: PlaygroundPreset[];
|
||||||
|
}
|
||||||
|
|
||||||
export interface ProfileEnvelope {
|
export interface ProfileEnvelope {
|
||||||
avg: number[][];
|
avg: number[][];
|
||||||
min: number[][];
|
min: number[][];
|
||||||
@@ -355,6 +384,11 @@ export interface RunSuggestionAnalysisResponse {
|
|||||||
count?: number;
|
count?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface SetSuggestionLockResponse {
|
||||||
|
success: boolean;
|
||||||
|
locked_suggestions: string[];
|
||||||
|
}
|
||||||
|
|
||||||
export interface StartTaskResponse {
|
export interface StartTaskResponse {
|
||||||
task_id: string;
|
task_id: string;
|
||||||
}
|
}
|
||||||
@@ -724,6 +758,12 @@ export interface ClearSuggestionsRequest {
|
|||||||
entry_id: string;
|
entry_id: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface SetSuggestionLockRequest {
|
||||||
|
entry_id: string;
|
||||||
|
key: string;
|
||||||
|
locked: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export interface RunSuggestionAnalysisRequest {
|
export interface RunSuggestionAnalysisRequest {
|
||||||
entry_id: string;
|
entry_id: string;
|
||||||
}
|
}
|
||||||
@@ -873,6 +913,21 @@ export interface GetDtwDebugRequest {
|
|||||||
profile_name?: string | null;
|
profile_name?: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface GetPlaygroundSettingsRequest {
|
||||||
|
entry_id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SavePlaygroundPresetRequest {
|
||||||
|
entry_id: string;
|
||||||
|
name: string;
|
||||||
|
values: Record<string, unknown>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DeletePlaygroundPresetRequest {
|
||||||
|
entry_id: string;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
export interface ListTasksRequest {
|
export interface ListTasksRequest {
|
||||||
entry_id?: string | null;
|
entry_id?: string | null;
|
||||||
}
|
}
|
||||||
@@ -1067,6 +1122,7 @@ export interface WashDataWsRequests {
|
|||||||
"ha_washdata/get_suggestions": GetSuggestionsRequest;
|
"ha_washdata/get_suggestions": GetSuggestionsRequest;
|
||||||
"ha_washdata/apply_suggestions": ApplySuggestionsRequest;
|
"ha_washdata/apply_suggestions": ApplySuggestionsRequest;
|
||||||
"ha_washdata/clear_suggestions": ClearSuggestionsRequest;
|
"ha_washdata/clear_suggestions": ClearSuggestionsRequest;
|
||||||
|
"ha_washdata/set_suggestion_lock": SetSuggestionLockRequest;
|
||||||
"ha_washdata/run_suggestion_analysis": RunSuggestionAnalysisRequest;
|
"ha_washdata/run_suggestion_analysis": RunSuggestionAnalysisRequest;
|
||||||
"ha_washdata/get_cycle_power_data": GetCyclePowerDataRequest;
|
"ha_washdata/get_cycle_power_data": GetCyclePowerDataRequest;
|
||||||
"ha_washdata/trim_cycle": TrimCycleRequest;
|
"ha_washdata/trim_cycle": TrimCycleRequest;
|
||||||
@@ -1095,6 +1151,9 @@ export interface WashDataWsRequests {
|
|||||||
"ha_washdata/run_playground_history": RunPlaygroundHistoryRequest;
|
"ha_washdata/run_playground_history": RunPlaygroundHistoryRequest;
|
||||||
"ha_washdata/run_playground_sweep": RunPlaygroundSweepRequest;
|
"ha_washdata/run_playground_sweep": RunPlaygroundSweepRequest;
|
||||||
"ha_washdata/get_dtw_debug": GetDtwDebugRequest;
|
"ha_washdata/get_dtw_debug": GetDtwDebugRequest;
|
||||||
|
"ha_washdata/get_playground_settings": GetPlaygroundSettingsRequest;
|
||||||
|
"ha_washdata/save_playground_preset": SavePlaygroundPresetRequest;
|
||||||
|
"ha_washdata/delete_playground_preset": DeletePlaygroundPresetRequest;
|
||||||
"ha_washdata/list_tasks": ListTasksRequest;
|
"ha_washdata/list_tasks": ListTasksRequest;
|
||||||
"ha_washdata/subscribe_tasks": SubscribeTasksRequest;
|
"ha_washdata/subscribe_tasks": SubscribeTasksRequest;
|
||||||
"ha_washdata/cancel_task": CancelTaskRequest;
|
"ha_washdata/cancel_task": CancelTaskRequest;
|
||||||
@@ -1172,6 +1231,7 @@ export interface WashDataWsResponses {
|
|||||||
"ha_washdata/get_suggestions": GetSuggestionsResponse;
|
"ha_washdata/get_suggestions": GetSuggestionsResponse;
|
||||||
"ha_washdata/apply_suggestions": ApplySuggestionsResponse;
|
"ha_washdata/apply_suggestions": ApplySuggestionsResponse;
|
||||||
"ha_washdata/clear_suggestions": SuccessResponse;
|
"ha_washdata/clear_suggestions": SuccessResponse;
|
||||||
|
"ha_washdata/set_suggestion_lock": SetSuggestionLockResponse;
|
||||||
"ha_washdata/run_suggestion_analysis": RunSuggestionAnalysisResponse;
|
"ha_washdata/run_suggestion_analysis": RunSuggestionAnalysisResponse;
|
||||||
"ha_washdata/get_cycle_power_data": GetCyclePowerDataResponse;
|
"ha_washdata/get_cycle_power_data": GetCyclePowerDataResponse;
|
||||||
"ha_washdata/trim_cycle": StartTaskResponse;
|
"ha_washdata/trim_cycle": StartTaskResponse;
|
||||||
@@ -1200,6 +1260,9 @@ export interface WashDataWsResponses {
|
|||||||
"ha_washdata/run_playground_history": RunPlaygroundHistoryResponse;
|
"ha_washdata/run_playground_history": RunPlaygroundHistoryResponse;
|
||||||
"ha_washdata/run_playground_sweep": RunPlaygroundSweepResponse;
|
"ha_washdata/run_playground_sweep": RunPlaygroundSweepResponse;
|
||||||
"ha_washdata/get_dtw_debug": GetDtwDebugResponse;
|
"ha_washdata/get_dtw_debug": GetDtwDebugResponse;
|
||||||
|
"ha_washdata/get_playground_settings": GetPlaygroundSettingsResponse;
|
||||||
|
"ha_washdata/save_playground_preset": PlaygroundPresetsResponse;
|
||||||
|
"ha_washdata/delete_playground_preset": PlaygroundPresetsResponse;
|
||||||
"ha_washdata/list_tasks": ListTasksResponse;
|
"ha_washdata/list_tasks": ListTasksResponse;
|
||||||
"ha_washdata/subscribe_tasks": SubscribeTasksResponse;
|
"ha_washdata/subscribe_tasks": SubscribeTasksResponse;
|
||||||
"ha_washdata/cancel_task": CancelTaskResponse;
|
"ha_washdata/cancel_task": CancelTaskResponse;
|
||||||
|
|||||||
+21
-21
@@ -7,7 +7,7 @@
|
|||||||
"voltage": 120.8,
|
"voltage": 120.8,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"power_factor": 0.13,
|
"power_factor": 0.11,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
"installed_version": 268513381,
|
"installed_version": 268513381,
|
||||||
@@ -27,10 +27,10 @@
|
|||||||
"led_brightness": 100,
|
"led_brightness": 100,
|
||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"power": 991.7,
|
"power": 30,
|
||||||
"current": 9.83,
|
"current": 3.27,
|
||||||
"energy": 29.91,
|
"energy": 29.92,
|
||||||
"power_factor": 0.83,
|
"power_factor": 0.16,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
"installed_version": 268513381,
|
"installed_version": 268513381,
|
||||||
@@ -45,9 +45,9 @@
|
|||||||
"state": "ON",
|
"state": "ON",
|
||||||
"led_brightness": 100,
|
"led_brightness": 100,
|
||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"voltage": 120.1,
|
"voltage": 120.2,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"energy": 60.07,
|
"energy": 60.08,
|
||||||
"power_factor": 0.86,
|
"power_factor": 0.86,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"update": {
|
"update": {
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
"latest_release_notes": null
|
"latest_release_notes": null
|
||||||
},
|
},
|
||||||
"linkquality": 134,
|
"linkquality": 134,
|
||||||
"power": 84.4,
|
"power": 83.4,
|
||||||
"current": 0.81,
|
"current": 0.81,
|
||||||
"power_on_behavior": "on"
|
"power_on_behavior": "on"
|
||||||
},
|
},
|
||||||
@@ -77,8 +77,8 @@
|
|||||||
"voltage": 119.8,
|
"voltage": 119.8,
|
||||||
"state": "ON",
|
"state": "ON",
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"energy": 122.36,
|
"energy": 122.38,
|
||||||
"power": 102.4,
|
"power": 102.2,
|
||||||
"current": 0.9,
|
"current": 0.9,
|
||||||
"power_factor": 0.94,
|
"power_factor": 0.94,
|
||||||
"update": {
|
"update": {
|
||||||
@@ -95,13 +95,13 @@
|
|||||||
"led_brightness": 100,
|
"led_brightness": 100,
|
||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"voltage": 118.1,
|
"voltage": 119.8,
|
||||||
"energy": 55.85,
|
"energy": 55.86,
|
||||||
"state": "ON",
|
"state": "ON",
|
||||||
"power": 81.3,
|
"power": 74.7,
|
||||||
"current": 0.89,
|
"current": 0.79,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"power_factor": 0.8,
|
"power_factor": 0.79,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
"installed_version": 268513381,
|
"installed_version": 268513381,
|
||||||
@@ -116,9 +116,9 @@
|
|||||||
"state": "ON",
|
"state": "ON",
|
||||||
"voltage": 120.7,
|
"voltage": 120.7,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"energy": 8.26,
|
"energy": 8.28,
|
||||||
"current": 0.04,
|
"current": 0.02,
|
||||||
"power": 1.4,
|
"power": 1.1,
|
||||||
"power_factor": 0.11,
|
"power_factor": 0.11,
|
||||||
"linkquality": 123,
|
"linkquality": 123,
|
||||||
"update": {
|
"update": {
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
"0xffffb40e0608864e": {
|
"0xffffb40e0608864e": {
|
||||||
"led_brightness": 100,
|
"led_brightness": 100,
|
||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"voltage": 121.6,
|
"voltage": 121.4,
|
||||||
"energy": 18.71,
|
"energy": 18.71,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"state": "ON",
|
"state": "ON",
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
"latest_release_notes": null
|
"latest_release_notes": null
|
||||||
},
|
},
|
||||||
"power_factor": 0.06,
|
"power_factor": 0.06,
|
||||||
"power": 1.5
|
"power": 0.1
|
||||||
},
|
},
|
||||||
"0xa4c1380d0679ffff": {
|
"0xa4c1380d0679ffff": {
|
||||||
"battery": 100,
|
"battery": 100,
|
||||||
@@ -245,7 +245,7 @@
|
|||||||
},
|
},
|
||||||
"0xb40e060fffe717c5": {
|
"0xb40e060fffe717c5": {
|
||||||
"battery": 100,
|
"battery": 100,
|
||||||
"occupancy": false,
|
"occupancy": true,
|
||||||
"tamper": false,
|
"tamper": false,
|
||||||
"battery_low": false,
|
"battery_low": false,
|
||||||
"linkquality": 72,
|
"linkquality": 72,
|
||||||
|
|||||||
Reference in New Issue
Block a user