This is a Custom Component for Home-Assistant (https://home-assistant.io) that provides a climate device for rooted Toon thermostats.
You can read and control thermostat mode and presets, read current temperature and control the setpoint.
Based on the standard behavior of the Toon the following two work modes are supported:
- Heat: Heat to a target temperature (schedule off)
- Auto: Follow the configured schedule as configured in your Toon (schedule on)
The following five presets are supported
- Away: This will change the setpoint to what you have configured in your Toon for the away state
- Home: This will change the setpoint to what you have configured in your Toon for the home state
- Comfort: This will change the setpoint to what you have configured in your Toon for the comfort state
- Sleep: This will change the setpoint to what you have configured in your Toon for the sleep state
(*) The above four presets can be used independent of the selected work mode. - When the Toon is set to "heat" mode the preset will change the setpoint to the setpoint configured for the respective preset. It will keep that setpoint until you change it manually or switch to "auto" mode - When the Toon is set to "auto" mode the preset will change the setpoint to the setpoint configured for the respective preset. However it will only change the setpoint temporatily until the schedule changes to the next programmed preset.
- Eco: This will be used for the vacation mode the Toon offers. Regardless of the active work mode the preset will change the setpoint to the setpoint configured for the "vacation" setting. It will stay in this mode untill you change to one of the other four presets or chnage the work mode. So as long as the Toon is in eco (vacation) mode it will ensure the temperature does not drop below the set setpoint.
(*) Please note that to use the "eco" (vacation) setpoint you will need to activate the vacation mode at least once on your Toon. If not the setpoint will use the lowest temperature (6 degrees celcius)
NOTE: This component only works with rooted Toon devices. Toon thermostats are available in The Netherlands and Belgium.
More information about rooting your Toon can be found here: Eneco Toon as Domotica controller
- Have HACS installed, this will allow you to easily manage and track updates.
- Search for 'Toon Climate'.
- Click Install below the found integration.
- Configure using the configuration instructions below.
- Restart Home-Assistant.
- Copy directory
custom_components/toon_climate
to your<config dir>/custom_components
directory. - Configure with config below.
- Restart Home-Assistant.
To use this component in your installation, add the following to your configuration.yaml
file:
# Example configuration.yaml entry
climate:
- platform: toon_climate
name: Toon Thermostat
host: IP_ADDRESS
port: 80
scan_interval: 10
min_temp: 6.0
max_temp: 30.0
Configuration variables:
- name (Optional): Name of the device. (default = 'Toon Thermostat')
- host (Required): The IP address on which the Toon can be reached.
- port (Optional): Port used by your Toon. (default = 80, other used port numbers can be 10080 or 7080)
- scan_interval (Optional): Number of seconds between polls. (default = 60)
- min_temp (Optional): Minimal temperature you can set (default = 6.0)
- max_temp (Optional): Maximal temperature you can set (default = 30.0)
Toon with simple-thermostat in Lovelace
Install Javascript from: https://github.com/nervetattoo/simple-thermostat
Using this card (replace 'climate.toon' with your device name if different):
- type: 'custom:simple-thermostat'
entity: climate.toon
control:
- preset
For the following examples please replace 'climate.toon' with your own climate device name if different.
If you want to automate changing the working mode of your Toon you can use the folowing scripts:
script:
- toon_enable_manual_mode:
alias: Toon enable Manual mode
sequence:
- service: climate.set_hvac_mode
data:
hvac_mode: 'heat'
entity_id: climate.toon
mode: single
- toon_enable_schedule_mode:
alias: Toon enable Schedule mode
sequence:
- service: climate.set_hvac_mode
data:
hvac_mode: 'auto'
entity_id: climate.toon
mode: single
If you want to automate changing the standard presets of your Toon you can use the folowing scripts:
script:
- toon_activate_preset_comfort:
alias: Toon activate preset Comfort
sequence:
- service: climate.set_preset_mode
data:
preset_mode: 'comfort'
entity_id: climate.toon
mode: single
- toon_activate_preset_away:
alias: Toon activate preset Away
sequence:
- service: climate.set_preset_mode
data:
preset_mode: 'away'
entity_id: climate.toon
mode: single
- toon_activate_preset_home:
alias: Toon activate preset Home
sequence:
- service: climate.set_preset_mode
data:
preset_mode: 'home'
entity_id: climate.toon
mode: single
- toon_activate_preset_sleep:
alias: Toon activate preset Sleep
sequence:
- service: climate.set_preset_mode
data:
preset_mode: 'sleep'
entity_id: climate.toon
mode: single
And in case you want to use the additional "vacation" feature you can use the following script:
script:
- toon_activate_preset_eco:
alias: Toon activate preset Eco
sequence:
- service: climate.set_preset_mode
data:
preset_mode: eco
entity_id: climate.toon
mode: single
As a result the Toon Climate Component will put the Toon in "vacation" mode. In this mode none of the standard presets in the Toon are activated. Instead it will use the setpoint that was set the last time the vacation mode on the Toon device itself was actiated. It will ensure the room will not drop below that specific setpoint. This vacation mode will be cancelled as soon as any of the presets on the Toon device are selected or by means of the Toon Climate Component being triggered through either the climate card in Home Assistant or any related home assistant scripts or automation requests.
If you want a sensor that provides you with the current working mode of the Toon (manual, auto or vacation) add the following:
sensor:
- platform: template
sensors:
toon_operation_mode:
friendly_name: 'Programma'
value_template: >-
{% if is_state('climate.toon','off') %}
Vakantie
{% elif is_state('climate.toon','heat') %}
Handmatig
{% elif is_state('climate.toon','auto') %}
Automatisch
{% endif %}
If you want a sensor that allows you to show the current room temperature (e.g. in a badge) add the following:
template:
- sensor:
- name: "Temperatuur Woonkamer"
state: "{{ state_attr('climate.toon','current_temperature') }}"
unit_of_measurement: °C
device_class: temperature
state_class: measurement
If you have a Toon2 and want to gather the environment sensor data you can create REST sensors like this:
sensor:
- platform: rest
name: Toon2 AirSensors
json_attributes:
- humidity
- tvoc
- eco2
value_template: '{{ value_json["temperature"] }}'
device_class: temperature
unit_of_measurement: "°C"
resource: http://192.168.2.106/tsc/sensors
template:
- sensor:
- name: "Toon2 Humidity"
state: '{{ states.sensor.toon2_airsensors.attributes["humidity"] }}'
device_class: humidity
state_class: measurement
- name: "Toon2 TVOC"
state: '{{ states.sensor.toon2_airsensors.attributes["tvoc"] }}'
device_class: volatile_organic_compounds
state_class: measurement
- name: "Toon2 eCO2"
state: '{{ states.sensor.toon2_airsensors.attributes["eco2"] }}'
device_class: carbon_dioxide
state_class: measurement
You can create a sensor with more heating information like so:
template:
- sensor:
- name: "Toon Driewegklep"
state: >-
{% if is_state_attr('climate.toon','burner_info', 0) %}
Neutraal
{% elif is_state_attr('climate.toon','burner_info', 1) %}
CV
{% elif is_state_attr('climate.toon','burner_info', 2) %}
Warm Water
{% endif %}
Trigger on burner state change (example from CV to Neutral):
automation:
- alias: "Detect Burnerstate change"
trigger:
platform: state
entity_id: climate.toon_thermostat
condition:
condition: template
value_template: >
{{ trigger.from_state and
trigger.to_state.attributes.burner_info == 0 and
trigger.from_state.attributes.burner_info == 1}}
action:
service: persistent_notification.create
data:
message: Burner state changed!
title: "Thermostat Info"
You can also control the Toon device with Google's assistant.
Add the relevant lines below to the configuration.yaml
:
logger:
default: info
logs:
custom_components.toon_climate: debug