{"id":889,"date":"2026-06-11T20:47:24","date_gmt":"2026-06-11T18:47:24","guid":{"rendered":"https:\/\/www.coremind.ch\/wordpress\/?p=889"},"modified":"2026-06-11T20:47:24","modified_gmt":"2026-06-11T18:47:24","slug":"timer-helfer-in-ha-licht-mit-countdown-abschalten","status":"publish","type":"post","link":"https:\/\/www.coremind.ch\/wordpress\/timer-helfer-in-ha-licht-mit-countdown-abschalten\/","title":{"rendered":"Timer-Helfer in HA: Licht mit Countdown abschalten"},"content":{"rendered":"<p>Jeder kennt das Licht, das im Keller, im G\u00e4ste-WC oder in der Garage stundenlang brennt, weil niemand es ausgeschaltet hat. Die naheliegende L\u00f6sung in Home Assistant ist ein <code>delay<\/code> in der Automation \u2013 doch der hat einen entscheidenden Haken: Startet Home Assistant neu, ist der laufende Countdown verloren, und das Licht bleibt f\u00fcr immer an. Die saubere L\u00f6sung heisst <code>timer<\/code>-Helfer. Er \u00fcberlebt einen Neustart, l\u00e4sst sich pausieren, verl\u00e4ngern und auf dem Dashboard anzeigen. In meinem Setup steuert genau so ein Helfer \u2013 <code>timer.timer_light_hue_white_lamp_1<\/code> \u2013 das Abschalten einer Hue-Lampe.<\/p>\n<h2>Das Problem mit dem einfachen Delay<\/h2>\n<p>Ein <code>delay<\/code> in einer Automation blockiert den Ablauf f\u00fcr eine feste Zeit. Wird die Automation erneut ausgel\u00f6st, w\u00e4hrend der Delay l\u00e4uft, kommt es je nach Modus zu Doppell\u00e4ufen oder das neue Triggern wird verschluckt. Und das gravierendste Problem: Ein Delay lebt nur im Arbeitsspeicher. Jeder Neustart, jedes Update, jeder Stromausfall setzt ihn auf null \u2013 ohne dass die geplante Aktion noch ausgef\u00fchrt wird.<\/p>\n<p>Der Timer-Helfer l\u00f6st all das. Er ist eine eigene Entit\u00e4t mit klar definierten Zust\u00e4nden (<code>active<\/code>, <code>paused<\/code>, <code>idle<\/code>) und sendet beim Ablaufen das Event <code>timer.finished<\/code>, auf das man sauber reagieren kann. Wird er erneut gestartet, w\u00e4hrend er l\u00e4uft, beginnt der Countdown einfach von vorn \u2013 ideal, um die Abschaltung bei jeder neuen Bewegung wieder hinauszuschieben.<\/p>\n<p>Dazu kommt ein praktischer Nebeneffekt: Weil der Timer eine sichtbare Entit\u00e4t ist, kannst du seinen Restwert in anderen Automationen, Vorlagen oder Benachrichtigungen abfragen. Du kannst zum Beispiel kurz vor dem Ablauf eine Erinnerung senden oder den Timer von mehreren Ausl\u00f6sern aus steuern \u2013 vom Bewegungsmelder, von einem Taster und vom Dashboard gleichzeitig. Ein nackter <code>delay<\/code> kennt diese Flexibilit\u00e4t nicht; er ist eine Blackbox, die niemand von aussen einsehen kann.<\/p>\n<h2>Schritt 1: Den Timer-Helfer anlegen<\/h2>\n<p>Den Helfer erstellt man unter Einstellungen \u2192 Ger\u00e4te &amp; Dienste \u2192 Helfer \u2192 Helfer erstellen \u2192 Timer. Alternativ geht es per YAML in der <code>configuration.yaml<\/code>:<\/p>\n<pre><code>\u2029timer:\u2029  timer_light_hue_white_lamp_1:\u2029    name: \"Licht Countdown Hue White\"\u2029    duration: \"00:05:00\"\u2029    restore: true\u2029<\/code><\/pre>\n<p>Wichtig ist <code>restore: true<\/code> \u2013 damit nimmt der Timer nach einem Neustart seinen Lauf wieder auf, statt einfach zu verschwinden. Die <code>duration<\/code> legt die Standardlaufzeit fest, hier f\u00fcnf Minuten. Sie l\u00e4sst sich beim Start jederzeit \u00fcberschreiben.<\/p>\n<h2>Schritt 2: Den Timer bei Bewegung starten<\/h2>\n<p>Sobald Licht eingeschaltet wird oder ein Bewegungsmelder ausl\u00f6st, starten wir den Timer. Bei jeder weiteren Bewegung wird er neu gestartet und der Countdown verl\u00e4ngert sich automatisch:<\/p>\n<pre><code>\u2029automation:\u2029  - alias: \"Licht an \u2013 Countdown starten\"\u2029    trigger:\u2029      - trigger: state\u2029        entity_id: light.hue_white_lamp_1\u2029        to: \"on\"\u2029    action:\u2029      - action: timer.start\u2029        target:\u2029          entity_id: timer.timer_light_hue_white_lamp_1\u2029        data:\u2029          duration: \"00:05:00\"\u2029<\/code><\/pre>\n<p>Wer einen Bewegungsmelder nutzt, ersetzt den Trigger durch den <code>binary_sensor<\/code> der Pr\u00e4senzerkennung. So wird der Timer bei jeder erkannten Bewegung neu aufgezogen.<\/p>\n<h2>Schritt 3: Beim Ablauf abschalten<\/h2>\n<p>Jetzt fehlt nur noch die Reaktion auf das Ende des Countdowns. Der Trigger <code>timer.finished<\/code> ist daf\u00fcr gemacht:<\/p>\n<pre><code>\u2029automation:\u2029  - alias: \"Countdown abgelaufen \u2013 Licht aus\"\u2029    trigger:\u2029      - trigger: event\u2029        event_type: timer.finished\u2029        event_data:\u2029          entity_id: timer.timer_light_hue_white_lamp_1\u2029    action:\u2029      - action: light.turn_off\u2029        target:\u2029          entity_id: light.hue_white_lamp_1\u2029<\/code><\/pre>\n<p>Das war&#8217;s. Wird das Licht von Hand ausgeschaltet, bevor der Timer abl\u00e4uft, kann man den Timer mit <code>timer.cancel<\/code> zus\u00e4tzlich stoppen, damit er nicht ins Leere l\u00e4uft \u2013 sauber, aber nicht zwingend n\u00f6tig, da die Lampe dann ohnehin schon aus ist.<\/p>\n<h2>Den Countdown sichtbar machen<\/h2>\n<p>Der grosse Vorteil gegen\u00fcber dem Delay zeigt sich auf dem Dashboard: Eine simple Entities- oder Mushroom-Karte mit <code>timer.timer_light_hue_white_lamp_1<\/code> zeigt den laufenden Countdown live an. So sieht man auf einen Blick, wie lange das Licht noch brennt \u2013 und kann es mit einem Tippen verl\u00e4ngern oder abbrechen. Diese Dashboard-Logik l\u00e4sst sich beliebig erweitern; wie man Karten wirklich aufger\u00e4umt gestaltet, zeigt der Beitrag <a href=\"https:\/\/www.coremind.ch\/wordpress\/\">Mushroom &amp; Bubble Cards: Dashboards, die wirklich begeistern<\/a>.<\/p>\n<h2>Fazit<\/h2>\n<p>Der Timer-Helfer ist die unspektakul\u00e4re, aber grundsolide Antwort auf vergessenes Licht \u2013 und auf jede andere zeitgesteuerte Abschaltung: Badl\u00fcfter, Bew\u00e4sserung, Heizstrahler. Er \u00fcbersteht Neustarts, l\u00e4sst sich beliebig oft neu aufziehen und macht den Countdown sichtbar. Wer bislang mit <code>delay<\/code> gearbeitet hat, sollte seine wichtigsten Automationen darauf umstellen. Der Aufwand ist klein, der Gewinn an Zuverl\u00e4ssigkeit gross \u2013 und das n\u00e4chste Update wirft den Countdown garantiert nicht mehr aus der Bahn.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jeder kennt das Licht, das im Keller, im G\u00e4ste-WC oder in der Garage stundenlang brennt, weil niemand es ausgeschaltet hat. Die naheliegende L\u00f6sung in Home Assistant ist ein delay in der Automation \u2013 doch der hat einen entscheidenden Haken: Startet Home Assistant neu, ist der laufende Countdown verloren, und das Licht bleibt f\u00fcr immer an. &#8230; <a title=\"Timer-Helfer in HA: Licht mit Countdown abschalten\" class=\"read-more\" href=\"https:\/\/www.coremind.ch\/wordpress\/timer-helfer-in-ha-licht-mit-countdown-abschalten\/\" aria-label=\"Mehr Informationen \u00fcber Timer-Helfer in HA: Licht mit Countdown abschalten\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-889","post","type-post","status-publish","format-standard","hentry","category-ha"],"_links":{"self":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/889","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/comments?post=889"}],"version-history":[{"count":1,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/889\/revisions"}],"predecessor-version":[{"id":955,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/889\/revisions\/955"}],"wp:attachment":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}