homeassistant/blueprints/automation/shelly_charger_monitor.yaml

224 lines
6.8 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,51 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