{"id":1154,"date":"2026-07-02T06:39:09","date_gmt":"2026-07-02T04:39:09","guid":{"rendered":"https:\/\/www.coremind.ch\/wordpress\/?p=1154"},"modified":"2026-07-02T06:39:09","modified_gmt":"2026-07-02T04:39:09","slug":"history-stats-in-ha-laufzeiten-clever-zaehlen","status":"publish","type":"post","link":"https:\/\/www.coremind.ch\/wordpress\/history-stats-in-ha-laufzeiten-clever-zaehlen\/","title":{"rendered":"History Stats in HA: Laufzeiten clever z\u00e4hlen"},"content":{"rendered":"<p>Wie viele Stunden lief der Entfeuchter heute? Wie oft hat die W\u00e4rmepumpe diese Woche getaktet? Und wie lange brannte das B\u00fcrolicht eigentlich? Home Assistant zeigt im Verlauf zwar jeden einzelnen Schaltvorgang, aber die spannenden Summen rechnet es nicht von selbst aus. Genau diese L\u00fccke schliesst die <code>history_stats<\/code>-Integration: Sie verwandelt die rohe Zustands-Historie einer Entit\u00e4t in handfeste Kennzahlen \u2013 Laufzeit, Anzahl Schaltungen oder prozentuale Einschaltdauer. Wer Verbrauch verstehen oder Ger\u00e4te \u00fcberwachen will, baut sich damit in wenigen Zeilen aussagekr\u00e4ftige Sensoren.<\/p>\n<h2>Das Problem: Verlauf ja, Summen nein<\/h2>\n<p>Home Assistant speichert \u00fcber den Recorder, wann eine Entit\u00e4t welchen Zustand hatte. Diese Daten sieht man im Verlaufsdiagramm, aber sie helfen wenig, wenn man konkrete Fragen hat: \u00abLief der Entfeuchter heute l\u00e4nger als gestern?\u00bb oder \u00abTaktet die W\u00e4rmepumpe h\u00e4ufiger als \u00fcblich?\u00bb. Solche Antworten erfordern eine Aggregation \u00fcber einen Zeitraum \u2013 und genau daf\u00fcr ist <code>history_stats<\/code> gemacht.<\/p>\n<p>Wichtig vorab: Die Integration kann nur auswerten, was der Recorder auch gespeichert hat. Wer Laufzeiten \u00fcber l\u00e4ngere Zeitr\u00e4ume z\u00e4hlen will, muss sicherstellen, dass die betreffende Entit\u00e4t lange genug in der Historie gehalten wird. Ein Blick in die Recorder-Konfiguration lohnt sich, bevor man wochen- oder monatsweite Statistiken erwartet.<\/p>\n<h2>Drei Auswertungs-Typen verstehen<\/h2>\n<p><code>history_stats<\/code> kennt drei <code>type<\/code>-Werte, die je nach Frage zum Einsatz kommen. <code>time<\/code> liefert die Dauer, w\u00e4hrend der die Entit\u00e4t im gew\u00fcnschten Zustand war \u2013 ideal f\u00fcr Laufzeiten in Stunden. <code>count<\/code> z\u00e4hlt, wie oft die Entit\u00e4t in den gew\u00fcnschten Zustand gewechselt ist \u2013 perfekt f\u00fcr Taktzyklen oder Schaltvorg\u00e4nge. <code>ratio<\/code> gibt den prozentualen Anteil am Zeitraum an \u2013 n\u00fctzlich, um Auslastungen zu vergleichen.<\/p>\n<p>Den Zeitraum definiert man \u00fcber zwei der drei Parameter <code>start<\/code>, <code>end<\/code> und <code>duration<\/code>. Sehr h\u00e4ufig will man \u00abseit heute Mitternacht\u00bb auswerten. Das gelingt mit einem Template, das den Tagesbeginn berechnet:<\/p>\n<pre><code>\u2029sensor:\u2029  - platform: history_stats\u2029    name: Entfeuchter Laufzeit heute\u2029    entity_id: switch.entfeuchter_buero\u2029    state: \"on\"\u2029    type: time\u2029    start: \"{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}\"\u2029    end: \"{{ now() }}\"\u2029<\/code><\/pre>\n<p>Dieser Sensor zeigt fortlaufend, wie viele Stunden der Entfeuchter seit Mitternacht eingeschaltet war. Ver\u00e4ndert man <code>state<\/code> und <code>type<\/code>, deckt dasselbe Muster ganz unterschiedliche Fragen ab.<\/p>\n<h2>Praxisbeispiel: W\u00e4rmepumpen-Takte z\u00e4hlen<\/h2>\n<p>H\u00e4ufiges Takten \u2013 also st\u00e4ndiges Ein- und Ausschalten \u2013 belastet einen Verdichter. Mit <code>type: count<\/code> l\u00e4sst sich nachverfolgen, wie oft der Kompressor pro Tag startet:<\/p>\n<pre><code>\u2029sensor:\u2029  - platform: history_stats\u2029    name: Verdichter Starts heute\u2029    entity_id: binary_sensor.cta_verdichter_aktiv\u2029    state: \"on\"\u2029    type: count\u2029    start: \"{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}\"\u2029    end: \"{{ now() }}\"\u2029<\/code><\/pre>\n<p>Steigt der Wert \u00fcber die gewohnte Bandbreite, ist das ein Fr\u00fchwarnzeichen f\u00fcr Kurzzyklen. Der Sensor l\u00e4sst sich anschliessend in eine Automation einbinden, die bei einer ungew\u00f6hnlich hohen Startzahl eine Benachrichtigung schickt \u2013 so wird aus der Statistik eine echte Wartungshilfe.<\/p>\n<p>F\u00fcr eine Wochenauswertung tauscht man den Zeitraum einfach aus und nutzt <code>duration<\/code>:<\/p>\n<pre><code>\u2029    start: \"{{ (now() - timedelta(days=7)) }}\"\u2029    end: \"{{ now() }}\"\u2029<\/code><\/pre>\n<h2>Sauber kombinieren mit anderen Helfern<\/h2>\n<p><code>history_stats<\/code> z\u00e4hlt r\u00fcckblickend aus der Historie \u2013 das macht es robust, aber abh\u00e4ngig vom Recorder. Wer laufend z\u00e4hlen will, etwa fortschreibende Verbrauchswerte \u00fcber Monate, kombiniert die Auswertung sinnvoll mit dem Utility Meter, der Z\u00e4hlerst\u00e4nde periodengenau f\u00fchrt. Wie das funktioniert, beschreibt der Beitrag <a href=\"https:\/\/www.coremind.ch\/wordpress\/utility-meter-in-ha-verbrauch-sauber-zaehlen\/\">Utility Meter in HA: Verbrauch sauber z\u00e4hlen<\/a>. Beide Werkzeuge erg\u00e4nzen sich: <code>history_stats<\/code> f\u00fcr Laufzeiten und Schaltzyklen, Utility Meter f\u00fcr kumulierte Verbr\u00e4uche.<\/p>\n<p>Ein praktischer Tipp zum Schluss: Lege die Sensoren in einer eigenen Datei wie <code>history_stats.yaml<\/code> an und binde sie \u00fcber <code>sensor: !include history_stats.yaml<\/code> ein. So bleibt die Konfiguration \u00fcbersichtlich, und neue Auswertungen sind mit wenigen Zeilen erg\u00e4nzt.<\/p>\n<h2>Fazit<\/h2>\n<p>Die <code>history_stats<\/code>-Integration ist ein unscheinbares, aber m\u00e4chtiges Werkzeug: Aus der rohen Zustands-Historie macht sie genau die Kennzahlen, die im Alltag z\u00e4hlen \u2013 Laufzeiten, Taktzyklen und Auslastungen. Wer einmal verstanden hat, wie <code>time<\/code>, <code>count<\/code> und <code>ratio<\/code> zusammenspielen und wie sich der Zeitraum per Template steuern l\u00e4sst, baut sich in Minuten Sensoren, die Ger\u00e4te \u00fcberwachen, Wartung vorausschauend machen und Verbrauch transparent darstellen. Der beste Startpunkt ist ein Ger\u00e4t, das ohnehin oft schaltet \u2013 Entfeuchter, W\u00e4rmepumpe oder Beleuchtung \u2013 und das erste <code>time<\/code>-Beispiel von oben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie viele Stunden lief der Entfeuchter heute? Wie oft hat die W\u00e4rmepumpe diese Woche getaktet? Und wie lange brannte das B\u00fcrolicht eigentlich? Home Assistant zeigt im Verlauf zwar jeden einzelnen Schaltvorgang, aber die spannenden Summen rechnet es nicht von selbst aus. Genau diese L\u00fccke schliesst die history_stats-Integration: Sie verwandelt die rohe Zustands-Historie einer Entit\u00e4t in &#8230; <a title=\"History Stats in HA: Laufzeiten clever z\u00e4hlen\" class=\"read-more\" href=\"https:\/\/www.coremind.ch\/wordpress\/history-stats-in-ha-laufzeiten-clever-zaehlen\/\" aria-label=\"Mehr Informationen \u00fcber History Stats in HA: Laufzeiten clever z\u00e4hlen\">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-1154","post","type-post","status-publish","format-standard","hentry","category-ha"],"_links":{"self":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/1154","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=1154"}],"version-history":[{"count":1,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/1154\/revisions"}],"predecessor-version":[{"id":1169,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/1154\/revisions\/1169"}],"wp:attachment":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=1154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=1154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=1154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}