Übersicht: Fitness
Dashboard-View 'Fitness' mit 29 Karten. Teil des Haupt-Dashboards.
Ü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 }} 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 juenger'
secondary: 'Fitness Age: {{ states(''sensor.garmin_fitness_age'') | 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 Aktivitaeten
- type: entities
entities:
- type: custom:template-entity-row
entity: sensor.last_activities
name: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') %}{% if acts and acts|length > 0 %}{%
set a = acts[0] %}{{ a.activityName }} ({{ a.startTimeLocal[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
%}'
state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') %}{% 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'') %}{% 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'') %}{% if acts and acts|length > 1 %}{%
set a = acts[1] %}{{ a.activityName }} ({{ a.startTimeLocal[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
%}'
state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') %}{% 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'') %}{% 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'') %}{% if acts and acts|length > 2 %}{%
set a = acts[2] %}{{ a.activityName }} ({{ a.startTimeLocal[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
%}'
state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') %}{% 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'') %}{% 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'') %}{% if acts and acts|length > 3 %}{%
set a = acts[3] %}{{ a.activityName }} ({{ a.startTimeLocal[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
%}'
state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') %}{% 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'') %}{% 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'') %}{% if acts and acts|length > 4 %}{%
set a = acts[4] %}{{ a.activityName }} ({{ a.startTimeLocal[:10] | replace(''-'', ''.'') }}){% else %}---{% endif
%}'
state: '{% set acts = state_attr(''sensor.last_activities'', ''last_activities'') %}{% 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'') %}{% 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'') | round(1) }} km dieses Jahr · Ziel: {{ states(''input_number.garmin_skating_jahresziel'')
| int }} 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: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: []
