AutomationDataset/ManfredTremmel/ManfredTremmel_automations....

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