Last active
June 8, 2022 18:18
-
-
Save Styx85/37357b1a007ed84002e3efb94f88758a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
heizung: # This is our app instance name. | |
module: hass_apps_loader | |
class: SchedyApp | |
actor_type: thermostat | |
actor_templates: | |
default: | |
## off_temp: 5 | |
supports_hvac_modes: true | |
hvac_mode_on: 'auto' | |
hvac_mode_off: 'off' | |
schedule_prepend: | |
# Valve maintenance | |
# don't turn on when it's > 24 degrees outside | |
- x: "IncludeSchedule(schedule_snippets['snippet_wartung']) if heizung_wartung() == 'on' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.vicare_outside_temperature') or 0) > 23 else Next()" | |
- x: "Mark(OFF, Mark.OVERLAY) if not (is_empty(filter_entities('binary_sensor', state='on', window_room=room_name))) else Next()" | |
- x: "Mark(OFF, Mark.OVERLAY) if not (is_empty(filter_entities('binary_sensor', state='on', window_room2=room_name))) else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_abwesend']) if heating_mode() == 'abwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if heating_mode() == 'aus' else Next()" | |
rescheduling_delay: 10 | |
expression_environment: | | |
def heating_mode(): | |
return state("input_select.heating_mode") | |
def heizung_wartung(): | |
return state("input_boolean.heizung_wartung") | |
schedule_snippets: | |
snippet_aus: | |
- value: 5 | |
snippet_durchgehend_wohnen: | |
- value: 21 | |
snippet_wartung: | |
- v: 20 | |
weeks: "*/2" | |
rules: | |
- weekdays: 4 | |
rules: | |
- { start: "10:29", end: "10:30", v: 35 } | |
- { start: "10:30", end: "10:31", v: 5 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_schlafen: | |
## Winter ## | |
- v: 18 | |
months: "!5-8" | |
rules: | |
- { start: "06:00", end: "06:15", v: 19 } | |
- { start: "06:15", end: "07:00", v: 20 } | |
- { start: "07:00", end: "20:00", v: 18.5 } | |
- { start: "20:00", end: "21:29", v: 19 } | |
- { start: "21:29", end: "21:30", v: 17 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
rules: | |
- { start: "08:00", end: "20:00", v: 17 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_wc: | |
## Winter ## | |
- v: 17 | |
months: "!5-8" | |
rules: | |
- { start: "07:00", end: "19:00", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
rules: | |
- { start: "07:00", end: "19:00", v: 18 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_baby: | |
- v: 18 | |
rules: | |
- { start: "07:00", end: "08:00", v: 21 } | |
- { start: "08:00", end: "18:00", v: 20 } | |
- { start: "18:00", end: "21:00", v: 21 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_kinder: | |
## Winter ## | |
- v: 18 | |
months: "!5-8" | |
rules: | |
- { start: "07:00", end: "20:00", v: 20 } | |
- { start: "20:00", end: "21:29", v: 19 } | |
- { start: "21:29", end: "21:30", v: 17 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
rules: | |
- { start: "07:00", end: "20:00", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_keller: | |
## Winter ## | |
- v: 16 | |
months: "!5-8" | |
rules: | |
- { start: "10:00", end: "19:00", v: 18 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
rules: | |
- { start: "10:00", end: "18:00", v: 16 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_abwesend: | |
## Winter ## | |
- v: 16 | |
months: "!5-8" | |
rules: | |
- { start: "10:00", end: "20:00", v: 18 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
snippet_standard: | |
## Winter ## | |
- v: 17 | |
months: "!5-8" | |
rules: | |
- { start: "06:15", end: "23:00", weekdays: "1-5", v: 20 } | |
- { start: "07:30", end: "23:30", weekdays: "!1-5", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
rules: | |
- { start: "07:00", end: "22:00", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_standard_2: | |
## Winter ## | |
- v: 17 | |
months: "!5-8" | |
rules: | |
- { start: "07:00", end: "21:00", weekdays: "1-5", v: 20 } | |
- { start: "07:30", end: "22:00", weekdays: "!1-5", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
rules: | |
- { start: "07:00", end: "22:00", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
snippet_gast: | |
## Winter ## | |
- v: 17 | |
months: "!5-8" | |
rules: | |
- { start: "07:00", end: "21:00", weekdays: "1-5", v: 20 } | |
- { start: "07:30", end: "22:00", weekdays: "!1-5", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
## Sommer ## | |
- v: 5 | |
months: 5-8 | |
rules: | |
- { start: "07:00", end: "20:00", v: 20 } | |
- { start: "0:00", end: "0:00+1d" } | |
watched_entities: | |
- input_select.heating_mode | |
- sensor.vicare_outside_temperature | |
- input_boolean.heizung_wartung | |
################# | |
rooms: | |
####### ######### | |
Arbeitszimmer: | |
rescheduling_delay: 15 | |
watched_entities: | |
- sensor.arbeitszimmer_sensor_temperature | |
- binary_sensor.arbeitszimmer_sensor_fenster_links_contact | |
- binary_sensor.arbeitszimmer_sensor_fenster_mitte_contact | |
- binary_sensor.arbeitszimmer_sensor_fenster_rechts_contact | |
- binary_sensor.wc_sensor_fenster_contact | |
actors: | |
climate.arbeitszimmer_heizung: | |
min_temp: 5 | |
max_temp: 30 | |
delta: 1.0 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.arbeitszimmer_sensor_temperature') or 0) > 22 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_standard_2']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_standard_2']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Bibliothek: | |
rescheduling_delay: 15 | |
watched_entities: | |
- sensor.bibliothek_sensor_temperature | |
- binary_sensor.bibliothek_sensor_dachfenster_contact | |
- binary_sensor.gastezimmer_fenster_links_contact | |
- binary_sensor.gastezimmer_fenster_links_contact | |
- binary_sensor.gastezimmer_dachfenster_gross_contact | |
- binary_sensor.gastezimmer_dachfenster_klein_contact | |
actors: | |
climate.bibliothek_heizung: | |
hvac_mode_on: 'heat' | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.bibliothek_sensor_temperature') or 0) > 22 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_gast']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_abwesend']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Gästezimmer: | |
rescheduling_delay: 15 | |
watched_entities: | |
- sensor.mobiler_sensor_temperature | |
- binary_sensor.bibliothek_sensor_dachfenster_contact | |
- binary_sensor.gastezimmer_fenster_links_contact | |
- binary_sensor.gastezimmer_fenster_links_contact | |
- binary_sensor.gastezimmer_dachfenster_gross_contact | |
- binary_sensor.gastezimmer_dachfenster_klein_contact | |
actors: | |
climate.gastezimmer_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.mobiler_sensor_temperature') or 0) > 22 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_gast']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_abwesend']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Gästebad: | |
rescheduling_delay: 15 | |
watched_entities: | |
- sensor.mobiler_sensor_temperature | |
actors: | |
climate.gastebad_heizung: | |
hvac_mode_on: 'heat' | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.mobiler_sensor_temperature') or 0) > 22 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_gast']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_abwesend']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Wohnzimmer: | |
rescheduling_delay: 10 | |
watched_entities: | |
- sensor.wohnzimmer_sensor_temperature | |
- binary_sensor.wohnzimmer_sensor_fenster_contact | |
- binary_sensor.esszimmer_sensor_fenster_links_contact | |
- binary_sensor.esszimmer_sensor_fenster_rechts_contact | |
actors: | |
climate.wohnzimmer_heizung_fenster: | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1 | |
climate.wohnzimmer_heizung_wand: | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.wohnzimmer_sensor_temperature') or 0) > 22 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_standard']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_standard']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Esszimmer: | |
rescheduling_delay: 10 | |
watched_entities: | |
- sensor.ble_temperature_esszimmer_sensor | |
- binary_sensor.esszimmer_sensor_fenster_links_contact | |
- binary_sensor.esszimmer_sensor_fenster_rechts_contact | |
- binary_sensor.wohnzimmer_sensor_fenster_contact | |
actors: | |
climate.esszimmer_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.ble_temperature_esszimmer_sensor') or 0) > 22 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_standard']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_standard']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Schlafzimmer: | |
rescheduling_delay: 20 | |
watched_entities: | |
- sensor.schlafzimmer_sensor_temperature | |
- binary_sensor.schlafzimmer_sensor_fenster_links_contact | |
- binary_sensor.schlafzimmer_sensor_fenster_rechts_contact | |
actors: | |
climate.schlafzimmer_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
off_temp: 5 | |
supports_hvac_modes: false | |
# delta: 1.0 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.schlafzimmer_sensor_temperature') or 0) > 21 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_schlafen']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_schlafen']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Kinderzimmer: | |
rescheduling_delay: 20 | |
watched_entities: | |
- binary_sensor.kinderzimmer_sensor_fenster_links_contact | |
- binary_sensor.kinderzimmer_sensor_fenster_rechts_contact | |
- sensor.kinderzimmer_sensor_temperature | |
actors: | |
climate.kinderzimmer_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
off_temp: 5 | |
supports_hvac_modes: false | |
# delta: 1.0 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.kinderzimmer_sensor_temperature') or 0) > 22 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_kinder']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_kinder']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
WC: | |
rescheduling_delay: 10 | |
watched_entities: | |
- binary_sensor.wc_sensor_fenster_contact | |
- binary_sensor.arbeitszimmer_sensor_fenster_links_contact | |
- binary_sensor.arbeitszimmer_sensor_fenster_mitte_contact | |
- binary_sensor.arbeitszimmer_sensor_fenster_rechts_contact | |
actors: | |
climate.wc_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1.0 | |
climate.diele_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
# delta: 1.0 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.vicare_outside_temperature') or 0) > 21 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_wc']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_wc']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### | |
Werkstatt: | |
rescheduling_delay: 10 | |
# watched_entities: | |
actors: | |
climate.werkstatt_flur_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
off_temp: 5 | |
supports_hvac_modes: false | |
# delta: 1.0 | |
climate.werkstatt_heizung: | |
min_temp: 5 | |
max_temp: 35 | |
off_temp: 5 | |
supports_hvac_modes: false | |
# delta: 1.0 | |
schedule: | |
- x: "IncludeSchedule(schedule_snippets['snippet_aus']) if float(state('sensor.vicare_outside_temperature') or 0) > 21 else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_keller']) if heating_mode() == 'anwesend/gast' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_keller']) if heating_mode() == 'anwesend/zeitgesteuert' else Next()" | |
- x: "IncludeSchedule(schedule_snippets['snippet_durchgehend_wohnen']) if heating_mode() == 'durchgehend aktiv' else Next()" | |
####### ######### |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment