Skip to content

Instantly share code, notes, and snippets.

@kraeml
Last active August 11, 2025 09:23
Show Gist options
  • Select an option

  • Save kraeml/491760c9924a9afe1a442901a27fc9b6 to your computer and use it in GitHub Desktop.

Select an option

Save kraeml/491760c9924a9afe1a442901a27fc9b6 to your computer and use it in GitHub Desktop.
blueprint:
name: Gerät steuern (30min-Verlauf + Akku-Leistung)
description: >
Schaltet Gerät ein, wenn Akku > Einschaltschwelle, Solarüberschuss > Limit
und Akku-Leistung positiv ist (lädt).
Schaltet aus, wenn Akku unter Ausschaltschwelle fällt, der Akkustand innerhalb
von 30 Minuten gesunken ist oder Akku-Leistung unter Negativlimit liegt.
domain: automation
input:
battery_level_entity:
name: Akkustandsensor in %
default: sensor.system_ziegelstein_sb_ladestand
selector:
entity:
domain: sensor
device_class: battery
battery_power_entity:
name: Akku-Leistungssensor (positiv = Laden, negativ = Entladen)
default: sensor.system_ziegelstein_sb_akkuleistung
selector:
entity:
domain: sensor
device_class: power
solar_power_entity:
name: Solarstromsensor
default: sensor.solarbank_2_e1600_pro_solarleistung
selector:
entity:
domain: sensor
device_class: power
house_power_entity:
name: Hausverbrauchsensor
default: sensor.total_import_haus_1_8_0
selector:
entity:
domain: sensor
device_class: power
device_entity:
name: Zu steuerndes Gerät
default: switch.sonoff_s20_2_sonoff_s20_2_relay
selector:
entity:
domain: switch
battery_high_threshold:
name: Einschaltschwelle Akku (%)
default: 80
selector:
number:
min: 0
max: 100
unit_of_measurement: "%"
battery_low_threshold:
name: Ausschaltschwelle Akku (%)
default: 92
selector:
number:
min: 0
max: 100
unit_of_measurement: "%"
solar_surplus_threshold:
name: Solarüberschuss (W)
default: 250
selector:
number:
min: 0
max: 10000
unit_of_measurement: W
battery_discharge_limit:
name: Entladeleistungsschwellwert für Ausschalten (W, negativ)
default: -50
selector:
number:
min: -5000
max: 0
unit_of_measurement: W
battery_level_helper:
name: Helper – Akkustand vor 30 Min
default: input_number.akkustand_vor_30min
selector:
entity:
domain: input_number
trigger:
- platform: state
entity_id: !input battery_level_entity
- platform: state
entity_id: !input battery_power_entity
- platform: state
entity_id: !input solar_power_entity
- platform: state
entity_id: !input house_power_entity
- platform: state
entity_id: !input battery_level_helper
condition: []
action:
# 1. Eingaben aus dem Blueprint in Variablen übernehmen
- variables:
battery_level_entity: !input battery_level_entity
battery_power_entity: !input battery_power_entity
solar_power_entity: !input solar_power_entity
house_power_entity: !input house_power_entity
device_entity_var: !input device_entity
battery_high_threshold_var: !input battery_high_threshold
battery_low_threshold_var: !input battery_low_threshold
solar_surplus_threshold_var: !input solar_surplus_threshold
battery_discharge_limit_var: !input battery_discharge_limit
battery_level_helper_entity: !input battery_level_helper
# 2. Messwerte auslesen und berechnen
- variables:
battery: "{{ states(battery_level_entity) | float }}"
battery_power: "{{ states(battery_power_entity) | float }}"
solar: "{{ states(solar_power_entity) | float }}"
house: "{{ states(house_power_entity) | float }}"
surplus: "{{ solar - house }}"
battery_prev: "{{ states(battery_level_helper_entity) | float }}"
# 3. Hauptlogik
- choose:
# ---- Einschalten ----
- conditions:
- condition: template
value_template: "{{ battery > (battery_high_threshold_var | float) }}"
- condition: template
value_template: "{{ surplus > (solar_surplus_threshold_var | float) }}"
- condition: template
value_template: "{{ battery_power > 0 }}"
sequence:
- service: switch.turn_on
target:
entity_id: "{{ device_entity_var }}"
# ---- Ausschalten ----
- conditions:
- condition: or
conditions:
- condition: template
value_template: "{{ battery < (battery_low_threshold_var | float) }}"
- condition: template
value_template: "{{ battery < battery_prev }}"
- condition: template
value_template: "{{ battery_power < (battery_discharge_limit_var | float) }}"
sequence:
- service: switch.turn_off
target:
entity_id: "{{ device_entity_var }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment