3 Minuten
Homeassistant Fitness Tracker

Die Homeassistant Companion App für Android kann diverse 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.
Sensoren in der App aktivieren
In der App muss unter dem Menüpunkt App Configuration > Verwalte Sensoren
die folgenden Einträge aktiviert werden:
Erkannte Aktivität
Schrittzähler
Diese Sensoren erscheinen anschließend in Homeassistant als Entities.
Homeassistant Konfiguration
Schrittzähler
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 wurdesensor.fitness_fahrradfahren_heute
, der anzeigt wie viele Stunden am aktuellen Tag Rad gefahren wurde
Visualisieren 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 anschließend folgendermaßen aus:

Viel Spaß beim Tracken der eigenen Werte.