Homeassistant Fitness Tracker

Homeassistant Fitness Tracker

Die Homeassistant Companion App für Android kann diverser Sensoren bereitstellen, bspw. die Anzahl der registrierten Schritte oder die derzeitige Aktivität, wie bspw. Radfahren.

Diese Daten können mit der Circle-Sensor-Card anschaulich in der Lovelace UI dargestellt werden.

Einstellungen in der Homeassistant App

In der App muss unter dem Menüpunkt App Configuration > Verwalte Sensoren die Einträge Erkannte Aktivität und der Schrittzähler aktiviert werden.

Schrittzähler kofigurieren

Im folgenden Beispiel hat der Sensor meine Oneplus 7T die bezeichnung sensor.op7t_steps_sensor.

Der Schrittzähler-Sensor, den die App bereitstellt, hat leider ein inherentes Problem. Er zählt sämtliche Schritte, die das Smartphone registriert hat, seit dem letzten Neustart des Geräts. Wird also während eines Spaziergangs das Gerät neugestartet, beginnt der Zähler erneut bei 0. Dies ist natürlich nicht förderlich, wenn man die Anzahl der täglichen Schritte ermitteln will. Es gibt jedoch eine einfache Lösung für dieses Problem mittels der Utility Meter Integration. Diese ist eigentlich zur Aufsummierung von Verbrauchswerten über längere Zeiträume gedacht, kann aber für die Ermittlung der Schrittanzahl zweckentfremdet werden.
Dazu muss die configuration.yaml um folgenden Eintrag erweitert werden:

utility_meter:
  fitness_schritte_heute:
    source: sensor.op7t_steps_sensor
    cycle: daily

Diese Konfiguration summiert sämtliche Schritte im täglichen intervall auf, ungeachtet davon ob der Sensor zeitweilig wieder auf 0 springt. Durch diesen Eintrag wird ein neuer Sensor erzeugt, der die Bezeichnung sensor.fitness_schritte_heute trägt.

ACHTUNG:
Der Sensor steht erst nach einem vollen Messintervall zur Verfügung, also nach einem Tag.

Aktivitätssensor

Der Aktivitätssensor in diesem Beispiel trägt die Bezeichnung sensor.op7t_erkannte_aktivitat. Dieser kann unterschiedliche States besitzen, bspw. on_bicyle (Radfahren) oder walking (Spazieren).

Wenn ermittelt werden soll, wie lange eine der Aktivitäten ausgeführt wurde, kann man die History Stats Integration benutzen, die einen definierten State über einen festgelegten Zeitraum analysiert:

- platform: history_stats
  name: Fitness gehen heute
  entity_id: sensor.op7t_erkannte_aktivitat
  state: 'walking'
  type: time
  start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
  end: '{{ now() }}'

- platform: history_stats
  name: Fitness fahrradfahren heute
  entity_id: sensor.op7t_erkannte_aktivitat
  state: 'on_bicycle'
  type: time
  start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
  end: '{{ now() }}'

Diese zwei Einträge erzeigen zwei neue Sensoren:

  • sensor.fitness_gehen_heute, der anzeigt wie viele Stunden am aktuellen Tag spazierengegangen wurde und
  • sensor.fitness_fahrradfahren_heute, der anzeigt wie viele Stunden am aktuellen Tag Rad gefahren wurde

Visualisierung der Daten

Die eingangs erwähnte Circle-Sensor-Card eignet sich hervorragend zur Darstellung der neuen Sensoren. Der Sensorwert steht zentral in der Mitte und außen herum befindet sich ein radiale farbliche Kontour, die bei festgelegten Werten bestimmte Farben annimmt. So lassen sich Tagesziele definieren und anschaulich darstellen.

Im ersten Schritt sollte die Circle-Sensor-Card aus HACS installiert werden. Anschließend kann diese in einem Horizontal-Stack verwendet werden.

type: horizontal-stack
title: Fitness
cards:
  - type: 'custom:circle-sensor-card'
    entity: sensor.fitness_schritte_heute
    name: Schritte
    max: 10000
    min: 0
    show_card: false
    stroke_width: 14
    gradient: false
    units: ' '
    font_style:
      color: black
      font-size: 1.2em
    color_stops:
      '0': '#f08080'
      '6000': '#ff9966'
      '8000': '#90ee90'
  - type: 'custom:circle-sensor-card'
    entity: sensor.fitness_gehen_heute
    name: Spazieren
    max: 1
    min: 0
    show_card: false
    stroke_width: 14
    gradient: false
    units: ''
    font_style:
      color: black
      font-size: 1.2em
    color_stops:
      '0': '#f08080'
      '1': '#90ee90'
      '0.5': '#ff9966'
  - type: 'custom:circle-sensor-card'
    entity: sensor.fitness_fahrradfahren_heute
    name: Rad
    max: 1
    min: 0
    show_card: false
    stroke_width: 14
    gradient: false
    units: ''
    font_style:
      color: black
      font-size: 1.2em
    color_stops:
      '0': '#f08080'
      '0.8': '#90ee90'
      '0.4': '#ff9966'

Das Ergebnis sieht so aus:

Viel Spaß beim Tracken der eigenen Werte.