Garmin – Neue Aktivität protokollieren
Diese Automation wertet neue Garmin-Aktivitäten aus und schreibt Werte für Tennis, Radfahren und Skating in passende Helfer. Es wird nur gezählt, wenn die Aktivität neu ist (nicht doppelt).
Entitäten:input_number.garmin_skate_year_mininput_number.garmin_skate_month_mininput_number.garmin_tennis_month_kmcounter.garmin_tennis_sessionsinput_number.garmin_bike_year_mininput_number.garmin_bike_year_kmcounter.garmin_skate_sessionssensor.last_activitiesinput_number.garmin_tennis_year_mininput_number.garmin_bike_month_kminput_number.garmin_skate_month_kminput_number.garmin_tennis_year_kminput_number.garmin_skate_year_kminput_number.garmin_tennis_month_mininput_number.garmin_bike_month_mininput_text.garmin_last_logged_activity_idcounter.garmin_bike_sessions
So funktioniert diese Automation
Schritt 1
Auslöser
- Zustandsänderung
last activities
Schritt 2
Bedingungen
- Template
Template-Auswertung
Schritt 3
Aktionen
Aktion
Verzweigung
Wenn: Template-Auswertung
Helfer-Wert setzen
garmin tennis month km
Helfer-Wert setzen
garmin tennis year km
Helfer-Wert setzen
garmin tennis month min
Helfer-Wert setzen
garmin tennis year min
Zähler erhöhen
garmin tennis sessions
Wenn: ODER-Verknüpfung
Helfer-Wert setzen
garmin bike month km
Helfer-Wert setzen
garmin bike year km
Helfer-Wert setzen
garmin bike month min
Helfer-Wert setzen
garmin bike year min
Zähler erhöhen
garmin bike sessions
Wenn: Template-Auswertung
Helfer-Wert setzen
garmin skate month km
Helfer-Wert setzen
garmin skate year km
Helfer-Wert setzen
garmin skate month min
Helfer-Wert setzen
garmin skate year min
Zähler erhöhen
garmin skate sessions
input_text.set_value
garmin last logged activity id
Garmin – Neue Aktivität protokollieren
# Entity-IDs sind anonymisiert. Ersetze sie durch deine eigenen.
# Beispiel: light.dein_wohnzimmer_licht -> light.wohnzimmer_deckenlampe
alias: Garmin – Neue Aktivität protokollieren
description: 'Diese Automation wertet neue Garmin-Aktivitäten aus und schreibt Werte für Tennis, Radfahren und Skating in
passende Helfer. Es wird nur gezählt, wenn die Aktivität neu ist (nicht doppelt).
'
mode: single
trigger:
- entity_id: sensor.last_activities
attribute: last_activities
trigger: state
condition:
- condition: template
alias: Prüfe, ob es eine neue Aktivität ist
value_template: '{% set new_id = state_attr(''sensor.last_activities'', ''last_activities'')[0][''activityId''] %} {{ new_id
| string != states(''input_text.garmin_last_logged_activity_id'') }}
'
action:
- alias: Variablen setzen
variables:
latest: '{{ state_attr(''sensor.last_activities'', ''last_activities'')[0] }}'
typekey: '{{ latest.activityType.typeKey }}'
id: '{{ latest.activityId }}'
km: '{{ (latest.distance | float(0)) / 1000 }}'
min: '{{ (latest.duration | float(0)) / 60 | round(0) }}'
- alias: Werte je nach Aktivitätstyp setzen
choose:
- alias: Wenn Aktivität Tennis ist
conditions:
- condition: template
value_template: '{{ typekey == ''tennis_v2'' }}'
sequence:
- target:
entity_id: input_number.garmin_tennis_month_km
data:
value: '{{ (states(''input_number.garmin_tennis_month_km'') | float(0) + km) | round(2) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_tennis_year_km
data:
value: '{{ (states(''input_number.garmin_tennis_year_km'') | float(0) + km) | round(2) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_tennis_month_min
data:
value: '{{ (states(''input_number.garmin_tennis_month_min'') | float(0) + min) | round(0) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_tennis_year_min
data:
value: '{{ (states(''input_number.garmin_tennis_year_min'') | float(0) + min) | round(0) }}
'
action: input_number.set_value
- target:
entity_id: counter.garmin_tennis_sessions
action: counter.increment
data: {}
- alias: Wenn Aktivität Radfahren ist
conditions:
- condition: or
conditions:
- condition: template
value_template: '{{ typekey == ''cycling'' }}'
- condition: template
value_template: '{{ typekey == ''e_bike_fitness'' }}'
sequence:
- target:
entity_id: input_number.garmin_bike_month_km
data:
value: '{{ (states(''input_number.garmin_bike_month_km'') | float(0) + km) | round(2) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_bike_year_km
data:
value: '{{ (states(''input_number.garmin_bike_year_km'') | float(0) + km) | round(2) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_bike_month_min
data:
value: '{{ (states(''input_number.garmin_bike_month_min'') | float(0) + min) | round(0) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_bike_year_min
data:
value: '{{ (states(''input_number.garmin_bike_year_min'') | float(0) + min) | round(0) }}
'
action: input_number.set_value
- target:
entity_id: counter.garmin_bike_sessions
action: counter.increment
data: {}
- alias: Wenn Aktivität Skating ist
conditions:
- condition: template
value_template: '{{ typekey == ''inline_skating'' }}'
sequence:
- target:
entity_id: input_number.garmin_skate_month_km
data:
value: '{{ (states(''input_number.garmin_skate_month_km'') | float(0) + km) | round(2) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_skate_year_km
data:
value: '{{ (states(''input_number.garmin_skate_year_km'') | float(0) + km) | round(2) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_skate_month_min
data:
value: '{{ (states(''input_number.garmin_skate_month_min'') | float(0) + min) | round(0) }}
'
action: input_number.set_value
- target:
entity_id: input_number.garmin_skate_year_min
data:
value: '{{ (states(''input_number.garmin_skate_year_min'') | float(0) + min) | round(0) }}
'
action: input_number.set_value
- target:
entity_id: counter.garmin_skate_sessions
action: counter.increment
data: {}
- alias: Letzte geloggte ID speichern (Duplikatvermeidung)
target:
entity_id: input_text.garmin_last_logged_activity_id
data:
value: '{{ id }}'
action: input_text.set_value
