diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b242572 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "githubPullRequests.ignoredPullRequestBranches": [ + "main" + ] +} \ No newline at end of file diff --git a/custom_components/auto_off_timer/config_flow.py b/custom_components/auto_off_timer/config_flow.py index 931d0e8..5d3e3e3 100644 --- a/custom_components/auto_off_timer/config_flow.py +++ b/custom_components/auto_off_timer/config_flow.py @@ -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 @@ -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, ): @@ -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 @@ -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, "") @@ -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( diff --git a/custom_components/auto_off_timer/translations/de.json b/custom_components/auto_off_timer/translations/de.json new file mode 100644 index 0000000..7afb269 --- /dev/null +++ b/custom_components/auto_off_timer/translations/de.json @@ -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}" + } + } +}