Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"githubPullRequests.ignoredPullRequestBranches": [
"main"
]
}
29 changes: 19 additions & 10 deletions custom_components/auto_off_timer/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from homeassistant.core import callback
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers import selector
from homeassistant.helpers.selector import NumberSelectorConfig

from .const import CONF_ENABLE_TEMPLATE, CONF_ENTITIES, CONF_TIMEOUT, DOMAIN

Expand All @@ -17,7 +18,8 @@ def _seconds_to_dict(seconds: int) -> dict:

def _get_schema(
default_entities=None,
default_timeout: dict = None,
# default_timeout: dict = None,
default_timeout: int = None,
default_template: str = None,
with_title: bool = True,
):
Expand All @@ -36,8 +38,15 @@ def _get_schema(
vol.Required(CONF_ENTITIES, default=default_entities): selector.EntitySelector(
selector.EntitySelectorConfig(multiple=True)
),
vol.Required(CONF_TIMEOUT, default=default_timeout): selector.DurationSelector(
selector.DurationSelectorConfig(enable_day=True)

vol.Required(CONF_TIMEOUT, default=default_timeout): selector.NumberSelector(
NumberSelectorConfig(
min=0,
max=1440,
step=1,
unit_of_measurement="min",
mode="box" # reines Eingabefeld statt Slider
)
),
vol.Optional(
CONF_ENABLE_TEMPLATE, default=default_template
Expand All @@ -62,10 +71,9 @@ def _process_user_input(hass, user_input: dict) -> tuple[list[str], int, str, di
if not hass.services.has_service(domain, SERVICE_TURN_OFF):
invalid.append(entity)

timeout = (
int(cv.time_period_dict(user_input.get(CONF_TIMEOUT, None)).total_seconds())
or 0
)
# Eingabe als Minuten → in Sekunden umrechnen
minutes = user_input.get(CONF_TIMEOUT, 0) or 0
timeout = int(minutes) * 60

template = user_input.get(CONF_ENABLE_TEMPLATE, "")

Expand Down Expand Up @@ -157,9 +165,10 @@ async def async_step_init(self, user_input=None):
default_template = user_input.get(CONF_ENABLE_TEMPLATE, "")
else:
default_entities = self.config_entry.options.get(CONF_ENTITIES, [])
default_timeout = _seconds_to_dict(
self.config_entry.options.get(CONF_TIMEOUT, 300)
)
# Sekunden → Minuten
stored_sec = self.config_entry.options.get(CONF_TIMEOUT, 300)
default_timeout = stored_sec // 60

default_template = self.config_entry.options.get(CONF_ENABLE_TEMPLATE, "")

return self.async_show_form(
Expand Down
54 changes: 54 additions & 0 deletions custom_components/auto_off_timer/translations/de.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"config": {
"title": "Automatischer Ausschalt-Timer",
"step": {
"user": {
"title": "Automatischen Ausschalt-Timer einrichten",
"description": "Konfiguriere Entitäten so, dass sie sich nach einer angegebenen Zeit automatisch ausschalten, wenn sie eingeschaltet werden.",
"data": {
"name": "Name",
"entities": "Entitäten",
"timeout": "Timeout-Dauer",
"enable_template": "Aktivierungsbedingung (Template)"
},
"data_description": {
"name": "Name für diese Konfiguration des automatischen Ausschalt-Timers",
"entities": "Wähle Entitäten aus, die sich nach Ablauf des Zeitlimits automatisch ausschalten sollen",
"timeout": "Wie lange gewartet werden soll, bevor die Entitäten ausgeschaltet werden",
"enable_template": "Optionale Template-Bedingung, die erfüllt sein muss, damit der Timer aktiviert wird"
}
}
},
"error": {
"entities_required": "Mindestens eine Entität muss ausgewählt werden",
"timeout_required": "Die Timeout-Dauer muss größer als 0 sein",
"invalid_entities": "Diese Entitäten unterstützen den turn_off-Dienst nicht: {entities_list}"
},
"abort": {
"already_configured": "Diese Konfiguration des automatischen Ausschalt-Timers existiert bereits"
}
},
"options": {
"step": {
"init": {
"title": "Automatischen Ausschalt-Timer konfigurieren",
"description": "Aktualisiere die Entitäten und Timeout-Einstellungen für diesen automatischen Ausschalt-Timer.",
"data": {
"entities": "Mindestens eine Entität muss ausgewählt werden",
"timeout": "Die Timeout-Dauer muss größer als 0 sein",
"enable_template": "Optionale Template-Bedingung, die erfüllt sein muss, damit der Timer aktiviert wird"
},
"data_description": {
"entities": "Mindestens eine Entität muss ausgewählt werden",
"timeout": "Die Timeout-Dauer muss größer als 0 sein",
"enable_template": "Optionale Template-Bedingung, die erfüllt sein muss, damit der Timer aktiviert wird"
}
}
},
"error": {
"entities_required": "Mindestens eine Entität muss ausgewählt werden",
"timeout_required": "Die Timeout-Dauer muss größer als 0 sein",
"invalid_entities_template": "Diese Entitäten unterstützen den turn_off-Dienst nicht: {entities_list}"
}
}
}