Zum Inhalt springen
Alles Automatisch

Übersicht: Fitness

Dashboard-View 'Fitness' mit 29 Karten. Teil des Haupt-Dashboards.

Themen:DashboardÜbersicht

Aktualisiert: 15. März 2026

Was brauchst du dafür?

Geräte
  • Sensor
Helper
  • Input Number Helper
  • Counter Helper
Übersicht: Fitness
# Entity-IDs sind anonymisiert. Ersetze sie durch deine eigenen.
# Beispiel: light.dein_wohnzimmer_licht -> light.wohnzimmer_deckenlampe
title: Fitness
type: sections
max_columns: 3
path: fitness
icon: mdi:bicycle-penny-farthing
subview: false
sections:
- type: grid
  columns: 2
  cards:
  - type: heading
    heading: Ziele & Fortschritt
  - type: gauge
    entity: sensor.garmin_skating_year_progress
    name: Skating-Ziel 2026
    unit: '%'
    min: 0
    max: 100
    severity:
      green: 75
      yellow: 50
      red: 0
  - type: entity
    entity: input_number.garmin_skate_year_km
    name: Kilometer (Jahr)
    icon: mdi:map-marker-distance
    grid_options:
      columns: 6
      rows: 2
  - type: entity
    entity: input_number.garmin_skate_year_min
    name: Minuten (Jahr)
    icon: mdi:clock-time-eight-outline
    grid_options:
      columns: 6
      rows: 2
  - type: custom:mushroom-template-card
    primary: '{% set projected = states(''sensor.garmin_skating_projection_2025'') | float(0) %}{% set goal = states(''input_number.garmin_skating_jahresziel'')
      | float(2026) %}{% if projected >= goal %}Ziel wird erreicht!{% elif projected > 0 %}Prognose: {{ projected | round(0)
      }} km{% else %}Keine Daten{% endif %}'
    secondary: 'Ziel: {{ states(''input_number.garmin_skating_jahresziel'') | int(0) }} km'
    icon: mdi:trending-up
    layout: vertical
    entity: sensor.garmin_skating_projection_2025
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    primary: '{% set chrono = states(''sensor.garmin_chronological_age'') | float(0) %}{% set fitness = states(''sensor.garmin_fitness_age'')
      | float(0) %}{% set diff = (chrono - fitness) | round(1) %}Biologisch {{ diff }} Jahre jünger'
    secondary: 'Fitness Age: {{ states(''sensor.garmin_fitness_age'') | float(0) | round(1) }} | Alter: {{ states(''sensor.garmin_chronological_age'')
      }}'
    icon: mdi:heart-pulse
    layout: vertical
    entity: sensor.garmin_fitness_age
    tap_action:
      action: more-info
    icon_color: red
    grid_options:
      columns: 6
      rows: 2
- type: grid
  cards:
  - type: heading
    heading: Letzte Aktivitäten
  - type: entities
    entities:
    - type: custom:template-entity-row
      entity: sensor.last_activities
      name: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 0 %}{%
        set a = acts[0] %}{{ a.activityName }} ({{ (a.startTime | string)[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
        %}'
      state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 0 %}{%
        set a = acts[0] %}{{ (a.distance / 1000) | round(1, default=0) }} km | {{ (a.duration / 60) | round(0, default=0)
        }} min | {{ a.calories | round(0, default=0) }} kcal{% else %}---{% endif %}'
      icon: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 0 %}{%
        set a = acts[0] %}{% set t = a.activityName | lower %}{% if ''skat'' in t or ''inline'' in t %}mdi:rollerblade{% elif
        ''tennis'' in t %}mdi:tennis{% elif ''run'' in t or ''gehen'' in t %}mdi:run-fast{% else %}mdi:bike{% endif %}{% else
        %}mdi:help-circle{% endif %}'
    - type: custom:template-entity-row
      entity: sensor.last_activities
      name: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 1 %}{%
        set a = acts[1] %}{{ a.activityName }} ({{ (a.startTime | string)[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
        %}'
      state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 1 %}{%
        set a = acts[1] %}{{ (a.distance / 1000) | round(1, default=0) }} km | {{ (a.duration / 60) | round(0, default=0)
        }} min | {{ a.calories | round(0, default=0) }} kcal{% else %}---{% endif %}'
      icon: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 1 %}{%
        set a = acts[1] %}{% set t = a.activityName | lower %}{% if ''skat'' in t or ''inline'' in t %}mdi:rollerblade{% elif
        ''tennis'' in t %}mdi:tennis{% elif ''run'' in t or ''gehen'' in t %}mdi:run-fast{% else %}mdi:bike{% endif %}{% else
        %}mdi:help-circle{% endif %}'
    - type: custom:template-entity-row
      entity: sensor.last_activities
      name: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 2 %}{%
        set a = acts[2] %}{{ a.activityName }} ({{ (a.startTime | string)[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
        %}'
      state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 2 %}{%
        set a = acts[2] %}{{ (a.distance / 1000) | round(1, default=0) }} km | {{ (a.duration / 60) | round(0, default=0)
        }} min | {{ a.calories | round(0, default=0) }} kcal{% else %}---{% endif %}'
      icon: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 2 %}{%
        set a = acts[2] %}{% set t = a.activityName | lower %}{% if ''skat'' in t or ''inline'' in t %}mdi:rollerblade{% elif
        ''tennis'' in t %}mdi:tennis{% elif ''run'' in t or ''gehen'' in t %}mdi:run-fast{% else %}mdi:bike{% endif %}{% else
        %}mdi:help-circle{% endif %}'
    - type: custom:template-entity-row
      entity: sensor.last_activities
      name: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 3 %}{%
        set a = acts[3] %}{{ a.activityName }} ({{ (a.startTime | string)[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
        %}'
      state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 3 %}{%
        set a = acts[3] %}{{ (a.distance / 1000) | round(1, default=0) }} km | {{ (a.duration / 60) | round(0, default=0)
        }} min | {{ a.calories | round(0, default=0) }} kcal{% else %}---{% endif %}'
      icon: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 3 %}{%
        set a = acts[3] %}{% set t = a.activityName | lower %}{% if ''skat'' in t or ''inline'' in t %}mdi:rollerblade{% elif
        ''tennis'' in t %}mdi:tennis{% elif ''run'' in t or ''gehen'' in t %}mdi:run-fast{% else %}mdi:bike{% endif %}{% else
        %}mdi:help-circle{% endif %}'
    - type: custom:template-entity-row
      entity: sensor.last_activities
      name: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 4 %}{%
        set a = acts[4] %}{{ a.activityName }} ({{ (a.startTime | string)[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
        %}'
      state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 4 %}{%
        set a = acts[4] %}{{ (a.distance / 1000) | round(1, default=0) }} km | {{ (a.duration / 60) | round(0, default=0)
        }} min | {{ a.calories | round(0, default=0) }} kcal{% else %}---{% endif %}'
      icon: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') | reverse | list %}{% if acts and acts|length > 4 %}{%
        set a = acts[4] %}{% set t = a.activityName | lower %}{% if ''skat'' in t or ''inline'' in t %}mdi:rollerblade{% elif
        ''tennis'' in t %}mdi:tennis{% elif ''run'' in t or ''gehen'' in t %}mdi:run-fast{% else %}mdi:bike{% endif %}{% else
        %}mdi:help-circle{% endif %}'
  - type: custom:mushroom-template-card
    primary: 'Highlight der Woche: {{ state_attr(''sensor.garmin_weekly_highlight'', ''activityName'') }}'
    secondary: '{{ state_attr(''sensor.garmin_weekly_highlight'', ''distance'') }} km - {{ state_attr(''sensor.garmin_weekly_highlight'',
      ''duration'') }} min - {{ state_attr(''sensor.garmin_weekly_highlight'', ''calories'') }} kcal'
    icon: mdi:star-shooting
    layout: vertical
    tap_action:
      action: more-info
    entity: sensor.garmin_weekly_highlight
    grid_options:
      columns: 6
      rows: 2
  - type: custom:mushroom-template-card
    primary: '{% set total_min = states(''input_number.garmin_skate_year_min'') | float(0) + states(''input_number.garmin_tennis_year_min'')
      | float(0) + states(''input_number.garmin_bike_year_min'') | float(0) %}{{ total_min | round(0) }} min Sport'
    secondary: '{% set sessions = states(''counter.garmin_skate_sessions'') | int(0) + states(''counter.garmin_tennis_sessions'')
      | int(0) + states(''counter.garmin_bike_sessions'') | int(0) %}{{ sessions }} Einheiten in {{ now().year }}'
    icon: mdi:trophy-outline
    layout: vertical
    icon_color: amber
    tap_action:
      action: none
    grid_options:
      columns: 6
      rows: 2
- type: grid
  cards:
  - type: heading
    heading: Skating Minuten (letzte 30 Tage)
    heading_style: title
  - chart_type: bar
    period: day
    type: statistics-graph
    entities:
    - sensor.garmin_skating_min_month
    days_to_show: 30
    stat_types:
    - max
    hide_legend: true
    logarithmic_scale: false
  - type: custom:mushroom-template-card
    primary: '{% set km = states(''input_number.garmin_skate_year_km'') | float(0) %}{% if km > 1300 %}Fast Rom erreicht!{%
      elif km > 700 %}Bis München!{% elif km > 400 %}Hannover incoming{% else %}Lokalrunde{% endif %}'
    secondary: '{{ states(''input_number.garmin_skate_year_km'') | float(0) | round(1) }} km dieses Jahr · Ziel: {{ states(''input_number.garmin_skating_jahresziel'')
      | int(0) }} km'
    icon: mdi:earth
    tap_action:
      action: more-info
    entity: input_number.garmin_skate_year_km
    grid_options:
      columns: 12
      rows: 2
    multiline_secondary: false
    layout: vertical
    fill_container: false
    badge_icon: ''
    badge_color: ''
- type: grid
  cards:
  - type: heading
    heading: Skating
  - type: custom:mushroom-template-card
    primary: '{{ states(''input_number.garmin_skate_month_km'') }}'
    icon: mdi:calendar-month
    entity: input_number.garmin_skate_month_km
    layout: vertical
    tap_action:
      action: more-info
    multiline_secondary: false
    secondary: Skating km (Monat)
  - type: custom:mushroom-template-card
    primary: '{{ states(''input_number.garmin_skate_year_km'') }}'
    icon: mdi:calendar
    entity: input_number.garmin_skate_year_km
    layout: vertical
    secondary: Skating km (Jahr)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:clock-outline
    entity: sensor.garmin_skating_min_month
    primary: '{{ states(''sensor.garmin_skating_min_month'') }}'
    secondary: Minuten (Monat)
    tap_action:
      action: more-info
    layout: vertical
  - type: custom:mushroom-template-card
    icon: mdi:clock-time-four-outline
    entity: input_number.garmin_skate_year_min
    layout: vertical
    primary: '{{ states(''input_number.garmin_skate_year_min'') }}'
    secondary: Minuten (Jahr)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:counter
    entity: counter.garmin_skate_sessions
    layout: vertical
    primary: '{{ states(''counter.garmin_skate_sessions'') }}'
    secondary: Einheiten (Jahr)
    tap_action:
      action: more-info
    icon_color: teal
- type: grid
  cards:
  - type: heading
    heading: Tennis
  - type: custom:mushroom-template-card
    icon: mdi:calendar-month
    entity: input_number.garmin_tennis_month_km
    layout: vertical
    primary: '{{ states(''input_number.garmin_tennis_month_km'') }}'
    secondary: Tennis km (Monat)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:calendar
    entity: input_number.garmin_tennis_year_km
    layout: vertical
    primary: '{{ states(''input_number.garmin_tennis_year_km'') }}'
    secondary: Tennis km (Jahr)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:clock-outline
    entity: input_number.garmin_tennis_month_min
    primary: '{{ states(''input_number.garmin_tennis_month_min'') }}'
    secondary: Minuten (Monat)
    tap_action:
      action: more-info
    layout: vertical
  - type: custom:mushroom-template-card
    icon: mdi:clock-time-four-outline
    entity: input_number.garmin_tennis_year_min
    layout: vertical
    primary: '{{ states(''input_number.garmin_tennis_year_min'') }}'
    secondary: Minuten (Jahr)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:counter
    entity: counter.garmin_tennis_sessions
    layout: vertical
    primary: '{{ states(''counter.garmin_tennis_sessions'') }}'
    secondary: Einheiten (Jahr)
    tap_action:
      action: more-info
    icon_color: orange
- type: grid
  cards:
  - type: heading
    heading: Radfahren
  - type: custom:mushroom-template-card
    icon: mdi:calendar-month
    entity: input_number.garmin_bike_month_km
    layout: vertical
    primary: '{{ states(''input_number.garmin_bike_month_km'') }}'
    secondary: Bike km (Monat)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:calendar
    entity: input_number.garmin_bike_year_km
    layout: vertical
    primary: '{{ states(''input_number.garmin_bike_year_km'') }}'
    secondary: Bike km (Jahr)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:clock-outline
    entity: input_number.garmin_bike_month_min
    layout: vertical
    primary: '{{ states(''input_number.garmin_bike_month_min'') }}'
    secondary: Minuten (Monat)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:clock-time-four-outline
    entity: input_number.garmin_bike_year_min
    layout: vertical
    primary: '{{ states(''input_number.garmin_bike_year_min'') }}'
    secondary: Minuten (Jahr)
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    icon: mdi:counter
    entity: counter.garmin_bike_sessions
    layout: vertical
    primary: '{{ states(''counter.garmin_bike_sessions'') }}'
    secondary: Einheiten (Jahr)
    tap_action:
      action: more-info
    icon_color: green
cards: []