Suche

    Zehn Jahre Batteriewechsel auf einen Blick

    Symcon Technik 6 Min. Lesezeit

    featured.jpg

    Seit 2016 jeder Wechsel notiert

    Seit 2016 schreibe ich jeden Batteriewechsel meiner Funkgeräte in eine Textdatei: HomeMatic-Thermostate, Stellantriebe, Tür- und Fensterkontakte, Rauchmelder, Kameras, Fernbedienungen und Zigbee-Sensoren. Gepflegt wird die Datei über ein Skript. In der Visu wähle ich Etage und Gerät aus und drücke auf „Gewechselt“ – fertig.

    Mittlerweile sind das 54 Geräte mit 236 Batterielaufzeiten. Eigentlich ein schöner Datenschatz. Nur war daraus bisher nichts abzulesen.

    Alte Historie: je Gerät eine Zeile mit Wechseldaten und dunkelroten Laufzeiten

    Die alte „Historie“ war eine Tabelle: je Gerät eine Zeile mit Datum, Tagen, Datum, Tagen … Alle Laufzeiten waren gleich dunkelrot hinterlegt, und lange Zeilen liefen rechts einfach aus der Kachel heraus. Dabei wollte ich eigentlich nur drei Fragen beantwortet haben:

    • Wie lange hält eine Batterie in diesem Gerät?
    • Wird es schlechter?
    • Gab es Ausreißer?

    Mit der Umstellung des Tabellenstils in WwxTileVisu kam die Idee auf, die Historie komplett neu zu bauen.

    Die Idee: Balken auf einer gemeinsamen Zeitachse

    Je Gerät eine Zeile, je Batterie ein Balken. Alle Zeilen teilen sich dieselbe Zeitachse – vom 1. Januar des ersten erfassten Wechsels bis heute, die Jahre stehen im Spaltenkopf.

    Neue Historie: Laufzeiten je Gerät als Balken auf einer gemeinsamen Zeitachse

    • Beginn des Balkens ist das Datum des Wechsels.
    • Breite ist die Laufzeit bis zum nächsten Wechsel. Dadurch stehen die Balken zeitlich korrekt untereinander, und man erkennt sofort Wechselaktionen, bei denen ich mehrere Geräte am selben Tag gemacht habe.
    • Höhe ist ebenfalls die Laufzeit, und zwar auf einer gemeinsamen Skala: 1500 Tage ergeben die volle Höhe von 32 px, längere werden gekappt, mindestens sind es 3 px. Lange Laufzeiten fallen so sofort ins Auge – auch über Gerätegrenzen hinweg.

    Dazu kommen drei Farben:

    • Grün ist eine normale Laufzeit.
    • Orange ist deutlich kürzer als der Durchschnitt des Geräts (unter 60 % des Ø). Das ist ein Hinweis auf eine schlechte Batterie oder ein Problem mit dem Gerät.
    • Schraffiert ist die aktuelle Batterie, die noch läuft.

    Senkrechte Hilfslinien markieren die Jahre, bei mehr als 8 Jahren nur jedes zweite. Links steht das Gerät mit Raum und Gerätenummer, rechts die Ø-Laufzeit in Tagen und darunter, wie oft und seit wann gewechselt wurde. Sortieren lässt sich nach Raum, Gerätenummer oder Laufzeit – die Auswahl gilt für die Historie und die Übersicht gemeinsam.

    Was man daraus abliest

    Schon der Ausschnitt oben beantwortet meine drei Fragen auf einen Blick:

    • Thermostat Küche: Eine Batterie hat von 2017 bis 2020 über drei Jahre gehalten – der hohe, breite Balken. Die kurzen orangen Balken davor und 2024 sind die Ausreißer.
    • Türschloss Eingang: Die aktuelle Batterie läuft seit August 2023, also schon über drei Jahre. Das ist die große schraffierte Fläche.
    • Tür- und Fensterkontakte: sehr gleichmäßig, etwa ein Jahr je Batterie.

    Eine Vorhersage für den nächsten Wechsel ist das bewusst nicht. Die Historie zeigt, was war – und das reicht, um Ausreißer und schwächelnde Geräte zu erkennen.

    Tooltip ohne JavaScript

    Fährt man mit der Maus über einen Balken oder tippt ihn auf dem Handy an, erscheint „Von – Bis: N Tage“.

    Tooltip mit Zeitraum und Laufzeit beim Überfahren eines Balkens

    Das Ganze ist reines CSS. Der Text steht im Attribut data-tip, angezeigt wird er über ::after mit content: attr(data-tip) bei :hover und :focus. Ausschnitt aus dem Skript:

    $tip = date('d.m.Y', $from) . ' – ' . ($run ? 'heute' : date('d.m.Y', $to)) . ': ' . $days . ' Tage';
    $bars .= '<b tabindex="0" class="' . trim($class) . '" data-tip="' . $tip . '" style="left:' . $pos($from) . '%;width:' . max(0.3, $pos($to) - $pos($from)) . '%;'
        . 'height:' . max(3, (int) round(min(1, $days / $scale) * $height)) . 'px"></b>';
    
    .bc-bars b:hover, .bc-bars b:focus { filter: brightness(1.25); z-index: 10; }
    .bc-bars b:hover::after, .bc-bars b:focus::after {
        content: attr(data-tip); position: absolute; bottom: calc(100% + 4px);
        left: 50%; transform: translateX(-50%); white-space: nowrap; /* … */
    }
    

    Damit das auch auf dem Handy funktioniert, wo es kein Hover gibt, ist jeder Balken per tabindex="0" antippbar. Am linken und rechten Rand richtet sich der Tooltip so aus, dass er nicht aus der Kachel ragt. Einen Stolperstein gab es dann doch: In der Symcon-App verdeckte der Nachbarbalken den Tooltip – ein z-index am überfahrenen Balken hat das behoben.

    Ein bisschen Technik

    Datenformat: Die Textdatei enthält je Gerät eine Zeile im Format FDDD,EE - RR - Gerät,TT.MM.JJJJ,…. FDDD ist Etage (1 Stelle) plus Gerätenummer (3 Stellen) nach meiner Nummerierung im Haus, EE das Etagenkürzel (AG, KG, EG, OG, DG) und RR das Raumkürzel. Danach folgen bis zu 8 Wechseldaten, ältere fallen heraus:

    2101,EG - KÜ - Thermostat,19.02.2016,07.01.2017,18.06.2020,20.05.2022,22.04.2024,27.11.2024,28.09.2026
    

    Kachel-Look mit WwxTileVisu: Historie und Übersicht nutzen den neuen Tabellenstil wwx tiles aus WwxTileVisu 1.4. Die Zeilen sind abgerundete Kacheln wie in der Kachel-Visu selbst, mit kleinem gedimmtem Kopf, Unterzeilen (wwx-sub), Badges (wwx-badge) und schmalen Spalten (th.fit). Nur das Diagramm hat eigenes CSS mit dem Präfix bc-, weil es kein Tabellenstil ist.

    Farben aus dem Theme: Alle Grautöne entstehen über rgb(from var(--content-color) r g b / x%) und --card-color der Kachel-Visu. Helles und dunkles Theme funktionieren damit ohne jede Anpassung.

    Webinhalt: Das HTML landet in einer String-Variable mit der Darstellung „Webinhalt“. Bei 54 Geräten sind das etwa 51 KB.

    Browser-Cache: Damit Änderungen am Stylesheet auch ankommen, lädt __TILE_VISU_SCRIPT jetzt wwx.js?v=1.4.20261104, und wwx.js gibt die Version an wwx.css weiter. Auf dem iPhone half vorher nur noch eine Neuinstallation der App. Nach einer Änderung am Stylesheet genügt es jetzt, die Version hochzuzählen.

    Die Übersicht „Letzter Wechsel“

    Neben der Historie gibt es die Übersicht: Raum, Gerät mit Nummer, letzter Wechsel mit der Ø-Laufzeit darunter und die Laufzeit der aktuellen Batterie als Badge.

    Übersicht Letzter Wechsel mit Raum, Gerät, Datum, Ø-Laufzeit und Laufzeit als Badge

    Eine Ampel für „fällig“ habe ich bewusst nicht eingebaut. Ich habe nicht jeden Wechsel eingetragen, eine Prognose aus dem Verlauf wäre deshalb unzuverlässig. Im Test waren plötzlich 11 Geräte „rot“ – das hilft niemandem.

    Voraussetzungen

    • Symcon ab Version 8.1 mit Kachel-Visu
    • WwxTileVisu ab Version 1.4
    • Ein aktueller Browser bzw. eine aktuelle App mit Unterstützung relativer CSS-Farben: iOS/Safari ab 16.4, Chrome/Android WebView ab 119

    Und das Skript?

    Das komplette Skript veröffentliche ich nicht. Etagen, Räume, Gerätenummern und das Dateiformat sind ganz auf mein Haus zugeschnitten – für andere wäre das mehr Umbau als Nutzen. Die Idee und die entscheidenden Ausschnitte stehen aber hier im Beitrag. Wer selbst Daten mit Zeitbezug sammelt, kann das Prinzip mit den Balken auf einer gemeinsamen Zeitachse leicht übertragen.

    Als Nächstes plane ich eine Detailansicht für das gewählte Gerät – die gibt es aber noch nicht.