681 lines
24 KiB
YAML
681 lines
24 KiB
YAML
- automation heating_pump_helpers:
|
|
- id: heating_pump_activate_partymode_with_solar_power
|
|
alias: Wärmepumpe Partymodus aktivieren bei Stromüberschuss
|
|
description: Wenn genügend Strom von der PV kommt und die Heizung aktiv ist, Partymodus
|
|
(erhöhte Raumtemperatur) aktivieren
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.rct_power_storage_grid_power
|
|
below: -4000
|
|
for:
|
|
hours: 0
|
|
minutes: 5
|
|
seconds: 0
|
|
conditions:
|
|
- condition: numeric_state
|
|
entity_id: sensor.energy_production_today_remaining_total
|
|
above: 30
|
|
- condition: state
|
|
entity_id: binary_sensor.heating_pump_heating_mode
|
|
state: 'on'
|
|
actions:
|
|
- action: select.select_option
|
|
metadata: {}
|
|
data:
|
|
option: Heizen+WW+Party
|
|
target:
|
|
entity_id: select.mosquitto_broker_betriebsart
|
|
mode: single
|
|
- id: heating_pump_deactivate_partymode_without_solar_power
|
|
alias: Wärmepumpe Partymodus deaktivieren bei Stromknappheit
|
|
description: Den aktivierten Partymodus der Wärmepumpe deaktivieren, wenn am restlichen
|
|
Tag weniger als 20 kWh Produktion erwartet werden
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.energy_production_today_remaining_total
|
|
below: 20
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.heating_pump_party_mode
|
|
state: 'on'
|
|
actions:
|
|
- action: select.select_option
|
|
metadata: {}
|
|
data:
|
|
option: Heizen+WW
|
|
target:
|
|
entity_id: select.mosquitto_broker_betriebsart
|
|
mode: single
|
|
- id: heating_pump_deactivate_hot_water
|
|
alias: Einmal Warmwasseraufbereitung beenden, wenn Zieltemperatur erreicht
|
|
description: Sobald die eingestellte Zieltemperatur erreicht wurde, Aufbereitung
|
|
stoppen
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.mosquitto_broker_warmwassertemperatur_oben
|
|
above: number.mosquitto_broker_warmwassersolltemperatur_2
|
|
conditions:
|
|
- condition: state
|
|
entity_id: switch.mosquitto_broker_einmal_ww_bereitung
|
|
state: 'on'
|
|
actions:
|
|
- action: switch.turn_off
|
|
metadata: {}
|
|
data: {}
|
|
target:
|
|
entity_id: switch.mosquitto_broker_einmal_ww_bereitung
|
|
mode: single
|
|
- id: heating_pump_activate_hot_water
|
|
alias: Wärmepumpe einmal Warmwasseraufbereitung im Party Modus aktivieren
|
|
description: Um 13:30 Uhr Warmwasseraufbereitung starten, wenn der Tank unter
|
|
40 Grad warm ist
|
|
triggers:
|
|
- trigger: time
|
|
at: '13:30:00'
|
|
conditions:
|
|
- condition: numeric_state
|
|
entity_id: sensor.mosquitto_broker_warmwassertemperatur_oben
|
|
below: 40
|
|
- condition: state
|
|
entity_id: binary_sensor.heating_pump_party_mode
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: binary_sensor.mosquitto_broker_status_warmwasserventil
|
|
state: 'off'
|
|
actions:
|
|
- action: switch.turn_on
|
|
metadata: {}
|
|
data: {}
|
|
target:
|
|
entity_id: switch.mosquitto_broker_einmal_ww_bereitung
|
|
mode: single
|
|
- template:
|
|
- binary_sensor:
|
|
- unique_id: waschmaschine
|
|
name: Waschmaschine
|
|
state: ''
|
|
device_class: running
|
|
icon: mdi:washing-machine
|
|
- unique_id: geschirrspulmaschine
|
|
name: Geschirrspülmaschine
|
|
state: ''
|
|
device_class: running
|
|
icon: mdi:dishwasher
|
|
automation power_plug_helpers:
|
|
- id: waschmaschine_statusbenachrichtigung
|
|
alias: Waschmaschine Statusbenachrichtigung
|
|
description: ''
|
|
use_blueprint:
|
|
path: sbyx/notify-or-do-something-when-an-appliance-like-a-dishwasher-or-washing-machine-finishes.yaml
|
|
input:
|
|
power_sensor: sensor.steckdose_ug_waschmaschine_power
|
|
starting_threshold: 20
|
|
starting_hysteresis: 3
|
|
finishing_threshold: 50
|
|
finishing_hysteresis: 4
|
|
actions:
|
|
- action: notify.kodi_t470
|
|
data:
|
|
title: Waschmaschine ist fertig
|
|
message: Die Waschmaschine kann geleert werden
|
|
data:
|
|
displaytime: 20000
|
|
icon: info
|
|
- action: notify.kodi_libreelec_eg2
|
|
data:
|
|
title: Waschmaschine ist fertig
|
|
message: Die Waschmaschine kann geleert werden
|
|
data:
|
|
displaytime: 20000
|
|
icon: info
|
|
- action: python_script.set_state
|
|
data:
|
|
entity_id: binary_sensor.waschmaschine
|
|
state: 'off'
|
|
pre_actions:
|
|
- action: python_script.set_state
|
|
data:
|
|
entity_id: binary_sensor.waschmaschine
|
|
state: 'on'
|
|
- id: geschirrspulmaschine_statusbenachrichtigung
|
|
alias: Geschirrspülmaschine Statusbenachrichtigung
|
|
description: ''
|
|
use_blueprint:
|
|
path: sbyx/notify-or-do-something-when-an-appliance-like-a-dishwasher-or-washing-machine-finishes.yaml
|
|
input:
|
|
power_sensor: sensor.steckdose_eg_geschirrspuhler_power
|
|
starting_threshold: 10
|
|
starting_hysteresis: 3
|
|
finishing_threshold: 2
|
|
finishing_hysteresis: 2
|
|
actions:
|
|
- action: notify.kodi_t470
|
|
data:
|
|
title: Geschirrspüler ist fertig
|
|
message: Die Geschirrspülmaschine kann geleert werden
|
|
data:
|
|
displaytime: 20000
|
|
icon: info
|
|
- action: notify.kodi_libreelec_eg2
|
|
data:
|
|
title: Geschirrspüler ist fertig
|
|
message: Die Geschirrspülmaschine kann geleert werden
|
|
data:
|
|
displaytime: 20000
|
|
icon: info
|
|
- action: python_script.set_state
|
|
data:
|
|
entity_id: binary_sensor.geschirrspulmaschine
|
|
state: 'off'
|
|
pre_actions:
|
|
- action: python_script.set_state
|
|
data:
|
|
entity_id: binary_sensor.geschirrspulmaschine
|
|
state: 'on'
|
|
- id: wasser_im_keller_technikraum
|
|
alias: Wasser im Keller Technikraum
|
|
description: Der Wassersensor meldet Wasser im Technikraum
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.wassersensor_ug_technikraum_water_leak
|
|
to: 'on'
|
|
actions:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.steckdose_ug_waschmaschine
|
|
- action: notify.kodi_t470
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Technikraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelecmanfred
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Technikraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelec_eg2
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Technikraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.anrufhawasserugtechnik
|
|
- id: wasser_im_keller_kellerraum
|
|
alias: Wasser im Keller Kellerraum
|
|
description: Der Wassersensor meldet Wasser im Kellerraum
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.wassersensor_ug_kellerraum_water_leak
|
|
to: 'on'
|
|
actions:
|
|
- action: notify.kodi_t470
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Kellerraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelecmanfred
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Kellerraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelec_eg2
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Kellerraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.anrufhawasserugkeller
|
|
- id: wasser_im_keller_fittnesraum
|
|
alias: Wasser im Keller Fittnesraum
|
|
description: Der Wassersensor meldet Wasser im Fittnesraum
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.wassersensor_ug_fittnesraum_water_leak
|
|
to: 'on'
|
|
actions:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.steckdose_ug_hauswasserwerk
|
|
- action: notify.kodi_t470
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Fittnesraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelecmanfred
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Fittnesraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelec_eg2
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Fittnesraum meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.anrufhawasserugfitness
|
|
- id: wasser_im_keller_werkstatt
|
|
alias: Wasser im Keller Werkstatt
|
|
description: Der Wassersensor meldet Wasser im Werkstatt
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.wassersensor_ug_werkstatt_water_leak
|
|
to: 'on'
|
|
actions:
|
|
- action: notify.kodi_t470
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Werkstatt meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelecmanfred
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Werkstatt meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelec_eg2
|
|
data:
|
|
title: Wasser im Keller
|
|
message: Der Wassersensor im Werkstatt meldet Wasser!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.anrufhawasserugwerkstatt
|
|
- id: rauch_im_keller_fittnesraum
|
|
alias: Rauch im Keller Fittnesraum
|
|
description: Der Rauchmelder meldet Rauch im Fittnesraum
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.rauchmelder_ug_fittnesraum_smoke
|
|
to: 'on'
|
|
actions:
|
|
- action: notify.kodi_t470
|
|
data:
|
|
title: Rauch im Keller
|
|
message: Der Rauchmelder meldet Rauch im Fittnesraum!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelecmanfred
|
|
data:
|
|
title: Rauch im Keller
|
|
message: Der Rauchmelder meldet Rauch im Fittnesraum!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: notify.kodi_libreelec_eg2
|
|
data:
|
|
title: Rauch im Keller
|
|
message: Der Rauchmelder meldet Rauch im Fittnesraum!
|
|
data:
|
|
displaytime: 50000
|
|
icon: error
|
|
- action: button.press
|
|
target:
|
|
entity_id: button.anrufharauchugfitness
|
|
- template:
|
|
- sensor:
|
|
- unique_id: calculated_maximum_battery_soc
|
|
name: Calculated maximum battery soc
|
|
icon: mdi:battery
|
|
state_class: measurement
|
|
unit_of_measurement: '%'
|
|
state: "{% if is_state(\"sun.sun\", \"above_horizon\") -%}\n {% set epr_today\
|
|
\ = (states('sensor.energy_production_today_remaining_total')|float(0.0))\
|
|
\ %}\n {% set ep_tomorrow = (states('sensor.energy_production_tomorrow_total')|float(0.0))\
|
|
\ %}\n {% set heating_on = states(\"binary_sensor.heating_pump_heating_mode\"\
|
|
) | bool %}\n {% set before_noon_minus_one = ((states('sensor.sun_next_noon')\
|
|
\ | as_datetime() | as_local()).day == now().day) and (now() + timedelta(\
|
|
\ hours = 1 )) < (states('sensor.sun_next_noon') | as_datetime() | as_local())\
|
|
\ %}\n {% set after_sunrise = (((states('sensor.sun_next_rising') | as_datetime()\
|
|
\ | as_local()).day == now().day) and (now() < (states('sensor.sun_next_rising'))\
|
|
\ | as_datetime() | as_local()) | bool) == false %}\n {% set hold_phase =\
|
|
\ after_sunrise and before_noon_minus_one %}\n {% set temperature = (states('sensor.mosquitto_broker_aussentemperatur')|float(0.0))\
|
|
\ %}\n {% if ((epr_today > 40 and heating_on) or (epr_today > 20 and heating_on\
|
|
\ == false)) and hold_phase -%}\n 27\n {%- elif ((epr_today > 30 and\
|
|
\ heating_on) or (epr_today > 15 and heating_on == false)) and hold_phase\
|
|
\ -%}\n 37\n {%- elif ((epr_today > 20 and heating_on) or (epr_today\
|
|
\ > 10 and heating_on == false)) and hold_phase -%}\n 47\n {%- elif\
|
|
\ ((epr_today > 15 and heating_on) or (epr_today > 7 and heating_on == false))\
|
|
\ and hold_phase -%}\n 57\n {%- elif ((epr_today > 10 and heating_on)\
|
|
\ or (epr_today > 5 and heating_on == false)) and hold_phase -%}\n 67\n\
|
|
\ {%- elif ep_tomorrow > 40 and (heating_on == false or temperature > 15)\
|
|
\ -%}\n 77\n {%- elif ep_tomorrow > 20 and (heating_on == false or temperature\
|
|
\ > 10) -%}\n 87\n {%- else -%}\n 97\n {%- endif %}\n{%- else\
|
|
\ -%}\n {{ states('sensor.calculated_maximum_battery_soc') }}\n{%- endif\
|
|
\ %}"
|
|
availability: '{{ has_value(''sensor.energy_production_today_remaining_total'')
|
|
and has_value(''sensor.energy_production_tomorrow_total'') and has_value(''binary_sensor.heating_pump_heating_mode'')
|
|
and has_value(''sensor.sun_next_noon'') and has_value(''sensor.sun_next_rising'')
|
|
and has_value(''sensor.mosquitto_broker_aussentemperatur'') }}'
|
|
input_number:
|
|
rct_power_storage_battery_maximum_state_of_charge:
|
|
name: Input RCT Power Storage Battery Maximum SOC
|
|
icon: mdi:battery-charging-wireless-90
|
|
unit_of_measurement: '%'
|
|
mode: slider
|
|
initial: 97
|
|
min: 7
|
|
max: 97
|
|
step: 1
|
|
rct_power_storage_battery_minimum_state_of_charge:
|
|
name: Input RCT Power Storage Battery Minimum SOC
|
|
icon: mdi:battery-charging-wireless-10
|
|
unit_of_measurement: '%'
|
|
mode: slider
|
|
initial: 7
|
|
min: 7
|
|
max: 97
|
|
step: 1
|
|
automation rct_soc_min_max:
|
|
- id: pv_battery_calculated_soc_max_to_input
|
|
alias: RCT Power SOC Errechnet Max in Input-Feld
|
|
description: Netzdienliches und Akku schonendes Laden des Akkus, errechneten Wert
|
|
in entsprechendes Eingabefeld übernehmen
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.calculated_maximum_battery_soc
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
not_to:
|
|
- unknown
|
|
- unavailable
|
|
conditions: []
|
|
actions:
|
|
- action: input_number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ states(''sensor.calculated_maximum_battery_soc'')|float(97.0) }}'
|
|
target:
|
|
entity_id: input_number.rct_power_storage_battery_maximum_state_of_charge
|
|
mode: single
|
|
- id: pv_battery_soc_max_to_input
|
|
alias: RCT Power SOC Max vom Wechselrichter in Input-Feld
|
|
description: Eingabefeld mit SOC Max Vorgabewert befüllen, wenn dieser sich ändert
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.rct_power_storage_battery_maximum_state_of_charge
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
not_to:
|
|
- unknown
|
|
- unavailable
|
|
conditions: []
|
|
actions:
|
|
- action: input_number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ states(''sensor.rct_power_storage_battery_maximum_state_of_charge'')|float(97.0)
|
|
}}'
|
|
target:
|
|
entity_id: input_number.rct_power_storage_battery_maximum_state_of_charge
|
|
mode: single
|
|
- id: pv_battery_soc_max_input_to_inverter
|
|
alias: Eingabe an RCT Power SOC Max des Wechselrichters senden
|
|
description: Den maximalen Ladestand der PV-Batterie anpassen
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- input_number.rct_power_storage_battery_maximum_state_of_charge
|
|
for:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 3
|
|
conditions: []
|
|
actions:
|
|
- action: pyscript.rct_ha_call
|
|
data:
|
|
parameter: power_mng.soc_max
|
|
value: '{{ states(''input_number.rct_power_storage_battery_maximum_state_of_charge'')|float(97.0)|multiply(0.01)|round(2)
|
|
}}'
|
|
mode: single
|
|
- id: pv_battery_soc_min_to_input
|
|
alias: RCT Power SOC Min vom Wechselrichter in Input-Feld
|
|
description: Eingabefeld mit SOC Min Vorgabewert befüllen, wenn dieser sich ändert
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.rct_power_storage_battery_minimum_state_of_charge_2
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
not_to:
|
|
- unknown
|
|
- unavailable
|
|
conditions: []
|
|
actions:
|
|
- action: input_number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ states(''sensor.rct_power_storage_battery_minimum_state_of_charge_2'')|float(7.0)
|
|
}}'
|
|
target:
|
|
entity_id: input_number.rct_power_storage_battery_minimum_state_of_charge
|
|
mode: single
|
|
- id: pv_battery_soc_min_input_to_inverter
|
|
alias: Eingabe an RCT Power SOC Min des Wechselrichters senden
|
|
description: Den minimalen Ladestand der PV-Batterie anpassen
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- input_number.rct_power_storage_battery_minimum_state_of_charge
|
|
for:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 3
|
|
conditions: []
|
|
actions:
|
|
- action: pyscript.rct_ha_call
|
|
data:
|
|
action: set
|
|
parameter: power_mng.soc_min
|
|
value: '{{ states(''input_number.rct_power_storage_battery_minimum_state_of_charge'')|float(7.0)|multiply(0.01)|round(2)
|
|
}}'
|
|
mode: single
|
|
- id: pv_battery_grid_power_enable
|
|
alias: Batterie laden mit Energie vom SMA Wechselrichter erlauben
|
|
description: Wenn der RCT Wechselrichter zu wenig produziert, um die Battierie
|
|
zu laden, SMA dazu schalten
|
|
triggers:
|
|
- trigger: sun
|
|
event: sunrise
|
|
conditions: []
|
|
actions:
|
|
- action: pyscript.rct_ha_call
|
|
data:
|
|
action: set
|
|
parameter: power_mng.use_grid_power_enable
|
|
value: '{% if (states(''sensor.energy_production_today_remaining'')|float(0.0))
|
|
< 15 -%}true{%- else -%}false{%- endif %}'
|
|
mode: single
|
|
- id: pv_batery_start_unload_to_grid_on_calibration
|
|
alias: RCT Batterie Kalibrierung, Entladen ins Netz starten
|
|
description: RCT Batterie Kalibrierung, vor Sonnenaufgang Entladen ins Netz starten
|
|
um die Batterie leer zu bekommen
|
|
triggers:
|
|
- trigger: sun
|
|
event: sunrise
|
|
offset: -00:30:00
|
|
conditions:
|
|
- condition: state
|
|
entity_id: sensor.rct_power_storage_battery_status
|
|
state: discharging
|
|
actions:
|
|
- action: pyscript.rct_ha_call
|
|
data:
|
|
action: set
|
|
parameter: p_rec_lim[1]
|
|
value: '{{ min(4000, ((states(''sensor.rct_battery_capacity_unload_calibration'')|float(0.0))
|
|
* (states(''sensor.rct_power_storage_battery_state_of_charge'')|float(0.0)))|multiply(10)|round(0))
|
|
}}'
|
|
mode: single
|
|
- id: pv_batery_stop_unload_to_grid_on_calibration
|
|
alias: RCT Batterie Kalibrierungsende, Entladen ins Netz stoppen
|
|
description: RCT Batterie Kalibrierung, zum Ende der Entladung bei Kalibrierung,
|
|
Entladen ins Netz stoppen
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.rct_power_storage_battery_status
|
|
from: discharging
|
|
to: normal
|
|
conditions: []
|
|
actions:
|
|
- action: pyscript.rct_ha_call
|
|
data:
|
|
action: set
|
|
parameter: p_rec_lim[1]
|
|
value: 0
|
|
mode: single
|
|
- template:
|
|
- sensor:
|
|
- unique_id: power_consumption
|
|
name: Power Consumption
|
|
icon: mdi:home-lightning-bolt
|
|
state_class: measurement
|
|
unit_of_measurement: kW
|
|
state: '{{ ((states(''sensor.rct_power_storage_external_generator_s0_power'')|float(0.0))
|
|
+ (states(''sensor.rct_power_storage_grid_power'')|float(0.0)) + (states(''sensor.rct_power_storage_inverter_ac_power'')|float(0.0)))|multiply(0.001)|round(3)
|
|
}}'
|
|
availability: '{{ has_value(''sensor.rct_power_storage_external_generator_s0_power'')
|
|
and has_value(''sensor.rct_power_storage_grid_power'') and has_value(''sensor.rct_power_storage_inverter_ac_power'')
|
|
}}'
|
|
- unique_id: installed_pv_wr_sum
|
|
name: Installed PV WR Sum
|
|
icon: mdi:solar-power
|
|
state_class: measurement
|
|
unit_of_measurement: kW
|
|
state: '{{ ((states(''sensor.installed_pv_wr1'')|float(6.0)) + (states(''sensor.installed_pv_wr2'')|float(20.0)))|round(3)
|
|
}}'
|
|
availability: '{{ has_value(''sensor.installed_pv_wr1'') and has_value(''sensor.installed_pv_wr2'')
|
|
}}'
|
|
- unique_id: solar_power_generators_sum
|
|
name: Solar Power Generators Sum
|
|
icon: mdi:solar-power
|
|
state_class: measurement
|
|
unit_of_measurement: W
|
|
state: '{{ ((states(''sensor.rct_power_storage_all_generators_power'')|float(0.0))
|
|
+ (states(''sensor.stp_20_50_pv_power_a'')|float(0.0)) + (states(''sensor.stp_20_50_pv_power_b'')|float(0.0))
|
|
+ (states(''sensor.stp_20_50_pv_power_c'')|float(0.0)))|round(0) }}'
|
|
availability: '{{ has_value(''sensor.rct_power_storage_all_generators_power'')
|
|
and has_value(''sensor.stp_20_50_pv_power_a'') and has_value(''sensor.stp_20_50_pv_power_b'')
|
|
and has_value(''sensor.stp_20_50_pv_power_c'') }}'
|
|
- unique_id: solar_power_grid_limit_soft
|
|
name: Solar Power Grid Limit Soft
|
|
icon: mdi:solar-power
|
|
state_class: measurement
|
|
unit_of_measurement: kW
|
|
state: "{% set solar_grid_limit = states('input_number.solar_grid_limit')|float(100.0)\
|
|
\ %} {% set calc_limit = (((states('sensor.installed_pv_size')|float(29.645))\
|
|
\ * solar_grid_limit / 100) + (((states('sensor.power_consumption')|float(0.0))\
|
|
\ -0.05)|round(1))) %} {% set wr_limit = states('sensor.installed_pv_wr_sum')|float(26.0)\
|
|
\ %} {% if solar_grid_limit == 100 -%}\n {{ wr_limit | round(3) }}\n{%- else\
|
|
\ -%}\n {{ max(0, min(wr_limit, calc_limit)) | round(3) }}\n{%- endif %}"
|
|
availability: '{{ has_value(''sensor.installed_pv_size'') and has_value(''sensor.power_consumption'')
|
|
and has_value(''sensor.installed_pv_wr_sum'') }}'
|
|
- unique_id: solar_power_grid_limit_soft_sma
|
|
name: Solar Power Grid Limit Soft SMA
|
|
icon: mdi:solar-power
|
|
state_class: measurement
|
|
unit_of_measurement: kW
|
|
state: '{{ max(0, min((states(''sensor.solar_power_grid_limit_soft'')|float(26.0)),
|
|
(states(''sensor.installed_pv_wr2'')|float(20.0)))) | round(3) }}'
|
|
availability: '{{ has_value(''sensor.solar_power_grid_limit_soft'') and has_value(''sensor.installed_pv_wr2'')
|
|
}}'
|
|
input_number:
|
|
solar_grid_limit:
|
|
name: Einspeisebegrenzung
|
|
icon: mdi:transmission-tower-import
|
|
unit_of_measurement: '%'
|
|
mode: slider
|
|
initial: 100
|
|
min: 0
|
|
max: 100
|
|
step: 1
|
|
automation grid_power_limitation:
|
|
- id: rct_converter_set_grid_power_limit
|
|
alias: RCT Wechselrichter Limit setzen
|
|
description: Setze das prozentuale Einspeiselimit des RCT Wechselrichters
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- input_number.solar_grid_limit
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
not_to:
|
|
- unknown
|
|
- unavailable
|
|
for:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 3
|
|
conditions: []
|
|
actions:
|
|
- action: pyscript.rct_ha_call
|
|
data:
|
|
action: set
|
|
parameter: buf_v_control.power_reduction
|
|
value: '{{ states(''input_number.solar_grid_limit'')|float(100.0)|multiply(0.01)|round(2)
|
|
}}'
|
|
mode: single
|
|
- id: sma_converter_set_grid_power_limit
|
|
alias: SMA Wechselrichter Limit setzen
|
|
description: Setze das absoluten Einspeiselimits des SMA Wechselrichters in Watt
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.solar_power_grid_limit_soft_sma
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
not_to:
|
|
- unknown
|
|
- unavailable
|
|
conditions: []
|
|
actions:
|
|
- action: pysmaplus.set_value
|
|
metadata: {}
|
|
data:
|
|
entity_id: sensor.stp_20_50_inverter_power_limit
|
|
value: '{{ states(''sensor.solar_power_grid_limit_soft_sma'')|float(20.0)|multiply(1000)|round(0)
|
|
}}'
|
|
mode: single
|