224 lines
6.8 KiB
YAML
224 lines
6.8 KiB
YAML
blueprint:
|
||
name: Ladegerät überwachen (Shelly Plug S)
|
||
description: >
|
||
Erkennt automatisch, wann ein Ladevorgang beginnt und endet – anhand der
|
||
Leistungsaufnahme des Shelly Plug S. Sendet Push-Benachrichtigungen bei
|
||
Start und Ende des Ladevorgangs. Berechnet die geladene Energiemenge (kWh)
|
||
und die Stromkosten. Kann für mehrere Geräte (z. B. E-Bike und Gartengeräte)
|
||
als separate Automationen eingerichtet werden.
|
||
domain: automation
|
||
input:
|
||
power_sensor:
|
||
name: Leistungssensor
|
||
description: Shelly Plug S Leistungssensor (W) – z. B. sensor.shelly_plug_s_power
|
||
selector:
|
||
entity:
|
||
domain: sensor
|
||
device_class: power
|
||
|
||
energy_sensor:
|
||
name: Energiesensor
|
||
description: >
|
||
Shelly Plug S Energiesensor (kWh oder Wh, kumulativ) –
|
||
z. B. sensor.shelly_plug_s_energy
|
||
selector:
|
||
entity:
|
||
domain: sensor
|
||
device_class: energy
|
||
|
||
energy_unit:
|
||
name: Einheit des Energiesensors
|
||
description: >
|
||
Bitte in Home Assistant nachschauen, welche Einheit der Sensor anzeigt.
|
||
Neuere Shelly-Integrationen liefern kWh, ältere Wh.
|
||
default: kWh
|
||
selector:
|
||
select:
|
||
options:
|
||
- kWh
|
||
- Wh
|
||
|
||
device_name:
|
||
name: Gerätename
|
||
description: Wird in den Push-Nachrichten angezeigt (z. B. E-Bike oder Gartengeräte)
|
||
default: Gerät
|
||
selector:
|
||
text:
|
||
|
||
start_power_threshold:
|
||
name: Einschalt-Schwellwert (W)
|
||
description: >
|
||
Ladevorgang gilt als gestartet, wenn die Leistung diesen Wert übersteigt.
|
||
Typischer Wert: 10 W. Standby-Leistung des Shelly liegt bei ca. 0,5–1 W.
|
||
default: 10
|
||
selector:
|
||
number:
|
||
min: 1
|
||
max: 500
|
||
step: 1
|
||
unit_of_measurement: W
|
||
mode: slider
|
||
|
||
stop_power_threshold:
|
||
name: Ausschalt-Schwellwert (W)
|
||
description: >
|
||
Ladevorgang gilt als beendet, wenn die Leistung unter diesen Wert fällt.
|
||
Sollte kleiner als der Einschalt-Schwellwert sein.
|
||
default: 5
|
||
selector:
|
||
number:
|
||
min: 1
|
||
max: 100
|
||
step: 1
|
||
unit_of_measurement: W
|
||
mode: slider
|
||
|
||
start_debounce_seconds:
|
||
name: Startbestätigung (Sekunden)
|
||
description: >
|
||
Die Leistung muss diesen Zeitraum stabil über dem Einschalt-Schwellwert
|
||
liegen, bevor der Ladestart erkannt wird. Vermeidet Fehlalarme durch
|
||
kurze Lastspitzen.
|
||
default: 30
|
||
selector:
|
||
number:
|
||
min: 5
|
||
max: 300
|
||
step: 5
|
||
unit_of_measurement: s
|
||
mode: slider
|
||
|
||
stop_debounce_seconds:
|
||
name: Stopbestätigung (Sekunden)
|
||
description: >
|
||
Wartezeit nach dem Unterschreiten des Ausschalt-Schwellwerts, bevor das
|
||
Ende des Ladevorgangs bestätigt wird. Verhindert Fehlalarme wenn das
|
||
Ladegerät kurz Strom schwankt (z. B. Balancing-Phase beim Akku).
|
||
default: 120
|
||
selector:
|
||
number:
|
||
min: 30
|
||
max: 600
|
||
step: 30
|
||
unit_of_measurement: s
|
||
mode: slider
|
||
|
||
electricity_price:
|
||
name: Strompreis (€/kWh)
|
||
description: Aktueller Strompreis für die Kostenberechnung
|
||
default: 0.30
|
||
selector:
|
||
number:
|
||
min: 0.01
|
||
max: 1.00
|
||
step: 0.01
|
||
unit_of_measurement: €/kWh
|
||
mode: box
|
||
|
||
notify_target_1:
|
||
name: Benachrichtigungsgerät 1 (optional)
|
||
description: >
|
||
Notify-Service für Push-Nachrichten, z. B. notify.mobile_app_iphone.
|
||
Den genauen Namen findest du unter Entwicklerwerkzeuge → Dienste.
|
||
Leer lassen für keine Benachrichtigung.
|
||
default: ""
|
||
selector:
|
||
text:
|
||
|
||
notify_target_2:
|
||
name: Benachrichtigungsgerät 2 (optional)
|
||
description: >
|
||
Zweiter Notify-Service, z. B. notify.mobile_app_android.
|
||
Leer lassen wenn nicht benötigt.
|
||
default: ""
|
||
selector:
|
||
text:
|
||
|
||
variables:
|
||
power_sensor: !input power_sensor
|
||
energy_sensor: !input energy_sensor
|
||
energy_unit: !input energy_unit
|
||
device_name: !input device_name
|
||
stop_power_threshold: !input stop_power_threshold
|
||
stop_debounce_seconds: !input stop_debounce_seconds
|
||
electricity_price: !input electricity_price
|
||
notify_target_1: !input notify_target_1
|
||
notify_target_2: !input notify_target_2
|
||
notify_targets: >
|
||
{{ [notify_target_1, notify_target_2] | select('ne', '') | list }}
|
||
|
||
trigger:
|
||
- platform: numeric_state
|
||
entity_id: !input power_sensor
|
||
above: !input start_power_threshold
|
||
for:
|
||
seconds: !input start_debounce_seconds
|
||
|
||
action:
|
||
- variables:
|
||
start_ts: "{{ now().timestamp() | int }}"
|
||
start_power: "{{ states(power_sensor) | float(0) | round(1) }}"
|
||
start_energy_kwh: >
|
||
{{ (states(energy_sensor) | float(0)) / 1000
|
||
if energy_unit == 'Wh'
|
||
else (states(energy_sensor) | float(0)) }}
|
||
|
||
- if:
|
||
- condition: template
|
||
value_template: "{{ notify_targets | length > 0 }}"
|
||
then:
|
||
- service: notify.send_message
|
||
target:
|
||
entity_id: "{{ notify_targets }}"
|
||
data:
|
||
title: "🔋 Laden gestartet – {{ device_name }}"
|
||
message: >
|
||
Ladevorgang erkannt: {{ start_power }} W.
|
||
Gestartet um {{ start_ts | timestamp_custom('%H:%M Uhr') }}.
|
||
|
||
- wait_for_trigger:
|
||
- platform: numeric_state
|
||
entity_id: !input power_sensor
|
||
below: !input stop_power_threshold
|
||
timeout:
|
||
hours: 24
|
||
continue_on_timeout: true
|
||
|
||
- delay:
|
||
seconds: "{{ stop_debounce_seconds }}"
|
||
|
||
- variables:
|
||
end_ts: "{{ now().timestamp() | int }}"
|
||
charged_kwh: >
|
||
{{ [((states(energy_sensor) | float(0)) / 1000
|
||
if energy_unit == 'Wh'
|
||
else (states(energy_sensor) | float(0)))
|
||
- start_energy_kwh, 0] | max | round(3) }}
|
||
total_cost: >
|
||
{{ ([((states(energy_sensor) | float(0)) / 1000
|
||
if energy_unit == 'Wh'
|
||
else (states(energy_sensor) | float(0)))
|
||
- start_energy_kwh, 0] | max * electricity_price) | round(2) }}
|
||
duration_text: >
|
||
{% set s = (now().timestamp() | int) - start_ts %}
|
||
{% set h = (s // 3600) | int %}
|
||
{% set m = ((s % 3600) // 60) | int %}
|
||
{% if h > 0 %}{{ h }} h {{ m }} min{% else %}{{ m }} min{% endif %}
|
||
|
||
- if:
|
||
- condition: template
|
||
value_template: "{{ notify_targets | length > 0 }}"
|
||
then:
|
||
- service: notify.send_message
|
||
target:
|
||
entity_id: "{{ notify_targets }}"
|
||
data:
|
||
title: "✅ Laden fertig – {{ device_name }}"
|
||
message: >
|
||
Ladevorgang abgeschlossen.
|
||
Dauer: {{ duration_text }}
|
||
Geladen: {{ charged_kwh }} kWh
|
||
Kosten: ca. {{ total_cost }} €
|
||
|
||
mode: single
|
||
max_exceeded: silent
|