Compare commits

...

2 Commits

Author SHA1 Message Date
ccecb85c27 Add dashboard Config 2026-02-08 18:37:49 +01:00
c50a941c4a Add fitness tracking yaml 2026-02-08 17:24:01 +01:00
2 changed files with 1287 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,158 @@
# /config/packages/fitness_tracking.yaml
template:
sensor:
# 3. Personen-Erkennung (Deine Logik, leicht bereinigt)
- name: "Prasanna Weight"
unique_id: prasanna_weight_correct
unit_of_measurement: "kg"
state: >
{% set weight = states("sensor.prasanna_weight") | float(0) %}
{% set limit = states("input_number.prasanna_korpergewicht_minimum") %}
{% if weight > limit %}
{{ weight }}
{% else %}
{{ states("sensor.prasanna_weight_correct") }}
{% endif %}
- name: "Jathusha Weight Tracking"
unique_id: jathusha_weight_tracking
unit_of_measurement: "kg"
state: >
{% if states("sensor.prasanna_weight") < states("input_number.prasanna_korpergewicht_minimum") -%}
{{states("sensor.prasanna_weight")}}
{% else %}
{{this.state}}
{% endif -%}
- name: "Gewichtsentwicklung nach 7 Tagen"
unique_id: weight_weekly_difference
unit_of_measurement: "g"
state_class: measurement
state: >
{% set current_weight = states("sensor.prasanna_weight_correct") | float(0) %}
{% set last_week_weight = states("sensor.prasanna_weight_last_weekday") | float(0) %}
{% if current_weight > 0 and last_week_weight > 0 %}
{{((current_weight - last_week_weight)*1000) | round(0)}}
{% else %}
0
{% endif %}
- name: "Gewichtsentwicklung nach 7 Tagen Durchschnitt"
unique_id: weight_weekly_avg_difference
unit_of_measurement: "g"
state_class: measurement
state: >
{% set current_weight = states("sensor.prasanna_weight_correct") | float(0) %}
{% set last_week_weight = states("sensor.prasanna_weight_last_week_avg") | float(0) %}
{% if current_weight > 0 and last_week_weight > 0 %}
{{((current_weight - last_week_weight)*1000) | round(0)}}
{% else %}
0
{% endif %}
- name: "Prasanna: Gewichtstrend Status (Smart)"
unique_id: prasanna_smart_trend
icon: mdi:scale-balance
state: >
{# Wir holen den geglätteten 7-Tage Durchschnitt #}
{% set avg_now = states('sensor.prasanna_gewicht_7_tage_durchschnitt') | float(0) %}
{# Wir simulieren den Vergleichswert (hier vereinfacht: aktueller Durchschnitt vs. Wert vor 7 Tagen #}
{# Für eine echte Trendlinie bräuchtest du einen SQL Sensor oder 'utility_meter' mit cycle weekly #}
{# Workaround: Wir nutzen den Unterschied zwischen 'jetzt' und dem Wochen-Schnitt #}
{% set current = states('sensor.prasanna_weight_correct') | float(0) %}
{# Delta: Ist der heutige Tag über oder unter meinem Wochendurchschnitt? #}
{% set delta = (current - avg_now) * 1000 %}
{# HIER IST DIE MAGIE: Wir bewerten den Trend, nicht den Tag #}
{# Angenommenes Ziel: Leichter Muskelaufbau (Lean Bulk) #}
{% if delta > 500 %}
Achtung: Schnelle Zunahme (Wasser/Fett?)
{% elif delta > 100 %}
Optimaler Aufbau-Trend (+{{ delta | round(0) }}g)
{% elif delta >= -200 and delta <= 200 %}
Gewicht stabil (Erhalt)
{% elif delta < -500 %}
Achtung: Zu schnelle Abnahme
{% else %}
Leichte Abnahme
{% endif %}
attributes:
delta_gramm: >
{{ ((states('sensor.prasanna_weight_correct') | float(0) - states('sensor.prasanna_gewicht_7_tage_durchschnitt') | float(0)) * 1000) | round(0) }}
- name: "Jathusha: Gewichtstrend Status (Smart)"
unique_id: jathusha_smart_trend
icon: mdi:scale-balance
state: >
{# Wir holen den geglätteten 7-Tage Durchschnitt #}
{% set avg_now = states('sensor.jathusha_gewicht_7_tage_durchschnitt') | float(0) %}
{# Wir simulieren den Vergleichswert (hier vereinfacht: aktueller Durchschnitt vs. Wert vor 7 Tagen #}
{# Für eine echte Trendlinie bräuchtest du einen SQL Sensor oder 'utility_meter' mit cycle weekly #}
{# Workaround: Wir nutzen den Unterschied zwischen 'jetzt' und dem Wochen-Schnitt #}
{% set current = states('sensor.jathusha_weight_tracking') | float(0) %}
{# Delta: Ist der heutige Tag über oder unter meinem Wochendurchschnitt? #}
{% set delta = (current - avg_now) * 1000 %}
{# HIER IST DIE MAGIE: Wir bewerten den Trend, nicht den Tag #}
{# Angenommenes Ziel: Leichter Muskelaufbau (Lean Bulk) #}
{% if delta > 500 %}
Achtung: Schnelle Zunahme (Wasser/Fett?)
{% elif delta > 100 %}
Optimaler Aufbau-Trend (+{{ delta | round(0) }}g)
{% elif delta >= -200 and delta <= 200 %}
Gewicht stabil (Erhalt)
{% elif delta < -500 %}
Achtung: Zu schnelle Abnahme
{% else %}
Leichte Abnahme
{% endif %}
attributes:
delta_gramm: >
{{ ((states('sensor.jathusha_weight_tracking') | float(0) - states('sensor.jathusha_gewicht_7_tage_durchschnitt') | float(0)) * 1000) | round(0) }}
sensor:
- platform: statistics
name: "Prasanna Gewicht 7-Tage Durchschnitt"
unique_id: prasanna_gewicht_7_tage_durchschnitt
entity_id: sensor.prasanna_weight_correct
state_characteristic: mean
max_age:
days: 7
sampling_size: 20
precision: 1
- platform: statistics
name: "Jathusha Gewicht 7-Tage Durchschnitt"
unique_id: jathusha_gewicht_7_tage_durchschnitt
entity_id: sensor.jathusha_weight_tracking
state_characteristic: mean
max_age:
days: 7
sampling_size: 20
precision: 1
# 1. Statistik-Sensor (Glättet dein Gewicht über 7 Tage)
# Das eliminiert Wasser-Schwankungen. Das ist deine "echte" Masse.
- platform: statistics
name: "Prasanna Gewicht Durchschnitt"
unique_id: prasanna_weight_avg_stats
entity_id: sensor.prasanna_weight_correct
state_characteristic: mean
max_age:
days: 7
sampling_size: 50
precision: 2
# 2. Derivative Sensor (Die Magie für den Muskelaufbau)
# Berechnet, wie schnell dein Durchschnittsgewicht steigt oder fällt.
# Einheit wird umgerechnet auf "Veränderung pro Woche".
- platform: derivative
name: "Prasanna Zunahme pro Woche"
unique_id: prasanna_weight_gain_weekly
source_sensor: sensor.prasanna_gewicht_durchschnitt
unit_time: d # Berechne pro Tag
time_window: "3d" # Schaut sich den Trend der letzten 3 Tage an
unit: "kg"