Ive had a look around on occasion, and never found a complete option for a central heating system, that has adjustable timers, weekday and weekend settings, and the stuff youd like from a HIVE like system.
I have a Sonoff basic controlling the heating as a switch, and a DHT11 connected to a sonoff in my lounge, to give me my heating zone which is the area i use to base my heating on.
I use Input Select to set my timers, Input Number to set my temperatures and have ’
binary sensor’ set up to tell me if we are on a weekday or a weekend. Climate is set for the lounge, and i have created a sensor which has a long convuluted check, to tell me which part of the week we are in. these checks are based on the Input select timers, and the binary sensor.
The output of my sensor is then used for an automation. When the sensor value changes, an automation sets the climate based on its output.
To top it off, ive set up an Alexa skill to be able to do all of this via voice.
Ive placed all of my YAML code into one set of code which is below. As i have separated my config, it will all need placing in its own areas in your own config, should you choose to give all of this a go.
In due course, I will post a link to my whole configuration!
Heres my YAML,
#####################
# binary sensor: #
#####################
- platform: workday
country: 'UK'
name: 'workday_today'
#########
#boolean#
########
vacation_mode:
name: Holiday Mode
initial: off
school_holidays:
name: School Holiday Mode
initial: off
#################
## Input_number ##
#################
morning_temp:
name: Morning Heating Level
initial: 16
min: 13
max: 20
step: 1
evening_temp:
name: Evening Temperature
initial: 16
min: 13
max: 20
step: 1
daytime_temp:
name: Daytime Temperature
initial: 12
min: 12
max: 20
step: 1
nighttime_temp:
name: Overnight Temperature
initial: 12
min: 12
max: 20
step: 1
holiday_temp:
name: Vacation Temperature
initial: 14
min: 12
max: 16
step: 1
##################################
# Heating mode sensor ###########
###################################
#sensor:
- platform: template
sensors:
current_heating_mode:
friendly_name: "Heating mode"
value_template: >-
{% if is_state('binary_sensor.workday_today', 'on') and ( states.sensor.time.state >= states.input_select.weekday_morn_on.state ) and ( states.sensor.time.state <= states.input_select.weekday_morn_off.state) %} weekday morning
{% elif is_state('binary_sensor.workday_today', 'on') and ( states.sensor.time.state >= states.input_select.weekday_morn_off.state ) and ( states.sensor.time.state <= states.input_select.weekday_eve_on.state) %} weekday daytime
{% elif is_state('binary_sensor.workday_today', 'on') and ( states.sensor.time.state >= states.input_select.weekday_eve_on.state ) and ( states.sensor.time.state <= states.input_select.weekday_eve_off.state) %} weekday evening
{% elif is_state('binary_sensor.workday_today', 'on') and ( states.sensor.time.state >= states.input_select.weekday_eve_off.state ) and ( states.sensor.time.state <= '23:59') %} weekday overnight
{% elif is_state('binary_sensor.workday_today', 'on') and ( states.sensor.time.state >= '00:00') and ( states.sensor.time.state <= states.sensor.time.state <= states.input_select.weekday_morn_on.state) %} weekday overnight
{% elif is_state('binary_sensor.workday_today', 'off') and ( states.sensor.time.state >= states.input_select.weekend_morn_on.state ) and ( states.sensor.time.state <= states.input_select.weekend_morn_off.state) %} weekend morning
{% elif is_state('binary_sensor.workday_today', 'off') and ( states.sensor.time.state >= states.input_select.weekend_morn_off.state ) and ( states.sensor.time.state <= states.input_select.weekend_eve_on.state) %} weekend daytime
{% elif is_state('binary_sensor.workday_today', 'off') and ( states.sensor.time.state >= states.input_select.weekend_eve_on.state ) and ( states.sensor.time.state <= states.input_select.weekend_eve_off.state) %} weekend evening
{% elif is_state('binary_sensor.workday_today', 'off') and ( states.sensor.time.state >= states.input_select.weekend_eve_off.state ) and ( states.sensor.time.state <= '23:59') %} weekend overnight
{% elif is_state('binary_sensor.workday_today', 'off') and ( states.sensor.time.state >= '00:00') and ( states.sensor.time.state <= states.sensor.time.state <= states.input_select.weekend_morn_on.state) %} weekend overnight
{% endif %}
###############
## Input_select ##
###############
# by leaving out initial, the time is restored from recorder
weekday_morn_on:
name: 'Morn On'
icon: mdi:timer
#initial: '06:30'
options:
- '06:00'
- '06:15'
- '06:30'
- '06:45'
- '07:00'
- '07:15'
- '07:30'
- '07:45'
- '08:00'
- '08:15'
- '08:30'
- '08:45'
- '09:00'
- '09:15'
- '09:30'
- '09:45'
- '10:00'
weekday_morn_off:
name: 'Morn Off'
icon: mdi:timer-off
#initial: '07:00'
options:
- '07:00'
- '07:15'
- '07:30'
- '07:45'
- '08:00'
- '08:15'
- '08:30'
- '08:45'
- '09:00'
- '09:15'
- '09:30'
- '09:45'
- '10:00'
- '10:15'
- '10:30'
- '10:45'
- '11:00'
weekday_eve_on:
name: 'Eve On'
icon: mdi:timer
#initial: '16:30'
options:
- '15:00'
- '15:15'
- '15:30'
- '15:45'
- '16:00'
- '16:15'
- '16:30'
- '16:45'
- '17:00'
- '17:15'
- '17:30'
- '17:45'
- '18:00'
- '18:15'
- '18:30'
- '18:45'
- '19:00'
- '19:15'
- '19:30'
- '19:45'
- '20:00'
- '20:15'
- '20:30'
- '20:45'
- '21:00'
- '21:15'
- '21:30'
- '21:45'
- '22:00'
- '22:15'
- '22:30'
- '22:45'
- '23:00'
- '23:15'
- '23:30'
- '23:45'
- '00:00'
weekday_eve_off:
name: 'Eve Off'
icon: mdi:timer-off
#initial: '17:00'
options:
- '15:00'
- '15:15'
- '15:30'
- '15:45'
- '16:00'
- '16:15'
- '16:30'
- '16:45'
- '17:00'
- '17:15'
- '17:30'
- '17:45'
- '18:00'
- '18:15'
- '18:30'
- '18:45'
- '19:00'
- '19:15'
- '19:30'
- '19:45'
- '20:00'
- '20:15'
- '20:30'
- '20:45'
- '21:00'
- '21:15'
- '21:30'
- '21:45'
- '22:00'
- '22:15'
- '22:30'
- '22:45'
- '23:00'
- '23:15'
- '23:30'
- '23:45'
- '00:00'
weekend_morn_on:
name: 'Morn On'
icon: mdi:timer
#initial: '08:30'
options:
- '06:00'
- '06:15'
- '06:30'
- '06:45'
- '07:00'
- '07:15'
- '07:30'
- '07:45'
- '08:00'
- '08:15'
- '08:30'
- '08:45'
- '09:00'
- '09:15'
- '09:30'
- '09:45'
- '10:00'
weekend_morn_off:
name: 'Morn Off'
icon: mdi:timer-off
#initial: '09:30'
options:
- '07:00'
- '07:15'
- '07:30'
- '07:45'
- '08:00'
- '08:15'
- '08:30'
- '08:45'
- '09:00'
- '09:15'
- '09:30'
- '09:45'
- '10:00'
- '10:15'
- '10:30'
- '10:45'
- '11:00'
weekend_eve_on:
name: 'Eve On'
icon: mdi:timer
#initial: '16:00'
options:
- '15:00'
- '15:15'
- '15:30'
- '15:45'
- '16:00'
- '16:15'
- '16:30'
- '16:45'
- '17:00'
- '17:15'
- '17:30'
- '17:45'
- '18:00'
- '18:15'
- '18:30'
- '18:45'
- '19:00'
- '19:15'
- '19:30'
- '19:45'
- '20:00'
- '20:15'
- '20:30'
- '20:45'
- '21:00'
- '21:15'
- '21:30'
- '21:45'
- '22:00'
- '22:15'
- '22:30'
- '22:45'
- '23:00'
- '23:15'
- '23:30'
- '23:45'
- '00:00'
weekend_eve_off:
name: 'Eve Off'
icon: mdi:timer-off
#initial: '19:00'
options:
- '15:00'
- '15:15'
- '15:30'
- '15:45'
- '16:00'
- '16:15'
- '16:30'
- '16:45'
- '17:00'
- '17:15'
- '17:30'
- '17:45'
- '18:00'
- '18:15'
- '18:30'
- '18:45'
- '19:00'
- '19:15'
- '19:30'
- '19:45'
- '20:00'
- '20:15'
- '20:30'
- '20:45'
- '21:00'
- '21:15'
- '21:30'
- '21:45'
- '22:00'
- '22:15'
- '22:30'
- '22:45'
- '23:00'
- '23:15'
- '23:30'
- '23:45'
- '00:00'