E-thermostaat | ICY

As a new dad didn’t want to spend the time to figure out what I want regarding thermostats and didn’t want to go out and spend 250 euros outright on a Nest thermostat. So I bought the ICY license for 25 euros a year. The good news? The integration continues to work because the URLs/Software is essentially the same, without the Essent logos.

With the lovelace API, the default mode names in Dutch break the UI. From the hint above and the Google Assistant mode names, I’ve changed mine to this:

    STATE_COMFORT = "auto"          # "comfort"
    STATE_SAVING = "eco"           # "saving"
    STATE_AWAY = "off"           # "away"
    STATE_FIXED_TEMP = "heat"  # "fixed temperature"

You could debate whether comfort should be heat or auto, since auto does automatically switch off. Either works and I now have beautiful lovelace cards again.

I dumped the ICY thermostaat and bought a used TOON for €50.
After the rooting of the thermostat I can control it from HA locally without the subscription.

@gerard33, just wanted to say thanks for keeping this plugin alive and rocking on 0.89 :slight_smile:

1 Like

Thanks. The link to the latest version of the component that works with the custom updater can be found here.

I updated HASS from 0.90 to 0.92, now your component seems broken @gerard33, could you check if it works for you? Unfortunately I cant find any helpful error messages in the log…

I think it will work again when you place this file in the component folder.
Will let you know if that works for me when updating to 0.92.

Edit: just updated to 0.92 and the component is working when placing the __init__.py file from the above link.

It works indeed! Thanks for the quick fix :+1:

When update to 0.96.0b0 I Saw: Platform not found: climate.e_thermostaat
I submitted an error/question at:

There are some big changes to climate in 0.96. I will have a look at this to see if I can fix this component to work with 0.96.

1 Like

You can try this version -> https://gist.github.com/gerard33/6458944babbe0888c194e83e589f6243.

Did some quick tests and is working for me. Please also test it and let me know if it works for you as well.

It looks like its working fine!! thank you very much!

Version 0.3.0 is released which supports HA 0.96 -> https://github.com/custom-components/climate.e_thermostaat/releases/tag/0.3.0

Also HACS support is added which will let you install the correct version based on your HA version, which is 0.2.3 for HA 0.95 and older.

1 Like

Awesome, thank you for continuing to make this work.

The default climate widget unfortunately doesn’t work anymore except for the ‘eco’ mode.

Thanks.
Can you share a screenshot and which modes have you configured? And which one you use for eco, is it ‘bespaarstand’?

This is the result in the latest release:

The settings I use are above, I use ‘eco’ for Bespaarstand, it’s the only one that works. auto, off and heat don’t work. I think I need to try heat_cool for the fixed_temp mode.

I am not using the preset modes for that thermostat card, maybe you can have a look here to see how the preset modes are called -> github

In the component these modes are imported but not used:
PRESET_AWAY, PRESET_COMFORT, PRESET_HOME, PRESET_SLEEP

Are you still using the E-thermostaat in combination with HA?
I just started using it and I think the mapping to the operation mode can be extended. BIT2 (i.e. value 4) of the config_int states whether the thermostat is in heating or idle mode. I’m using this information to set the hvac_action. If someone is interested I’ll clean up my code changes and post it here.

I 'm interested.

You need to add a new variable to the class storing the current HVAC action:

    self._current_hvac_action = CURRENT_HVAC_IDLE

The HVAC action property should return the earlier stored action:

    @property
    def hvac_action(self):
        """Return the current running hvac operation."""
        return self._current_hvac_action

The _get_data function will be called once new data from the thermostat is received. Here we need to update the current HVAC action. Assign the _current_hvac_action according to the state of BIT2 of the first configuration byte:

def _get_data(self):
		"""Get the data of the E-Thermostaat."""
		payload = (("username", self._username), ("password", self._password))

		r = self._request_with_retry(URL_DATA, payload, request_type="get")
		if r:
				data = r.json()

				self._target_temperature = data["temperature1"]
				self._current_temperature = data["temperature2"]

				self._old_conf = data["configuration"]
				self._current_operation_mode = self.map_int_to_operation_mode(
						self._old_conf[0]
				self._current_hvac_action = CURRENT_HVAC_HEAT if self._old_conf[0] & 4 > 0 else CURRENT_HVAC_IDLE
				)
				_LOGGER.debug("E-Thermostaat value: {}".format(self._old_conf[0]))
		else:
				_LOGGER.error("Could not get data from E-Thermostaat.")