Honeywell Evohome 2020 device handler update

After about 35154 tries, i have finally got it to work!!! :grin: :grin: :grin: :grin:

So happy! Did not expect to pull it through… Thank you so much!

Alexa can now successfully change the temperature using either the app or voice commands.

As an added bonus, for some reason, the thermostat mode now displays all the modes correctly instead of that large string of characters…

Do i need to remove the mode from the hot water now. I don’t use it there anyway.

Any chance we can give this a shot now?

I am afraid this won’t be possible as if i recall correctly the evohome api does not support OAth2.0.

Hm… strange issue i can only set the temperature between 8 and 32 when using alexa when it should be 5 to 35…

What’s the current behavior after the addition of the SendEvent?
After this, are you still getting the generateEvents log with the opposite value?

I’m getting the same and I have a different range configured, I’ll ask the corresponding team about this.

Yes this is still switching back and forth every time.

Thank a ton for this.

Hi, @Andremain.
Have you tried to print a log here to see if the response of the Evohome Hot Water device is received before or after the generateEvent() function is executed?
There, it also mentions that the update takes some time on the Evohome side, so, when the poll gets the current status:

  • It receives the previous value (before sending the command from ST)
  • It generates the events to set the value received in ST (and it goes back to the initial value)
  • After some time, the new status is effective in Evohome (the poll receives now the correct value)

I suggest you print some logs to track the events flow, this way we can know better what’s going on.
About the 8-32º range in Alexa. I’ve verified this is a default range based on how all the known thermostats by the platform work. I’m trying to see if this can be modified, I haven’t been able to do so yet.

Not sure but i 'll show you some logs.

I have read this and it works. It is just a bit confusing to work with when it switches back and forth.

This is strange honestly. I am eager to know why this is.

Here are some logs:

Not sure if this is what you need.

Ok, in the SmartApp logs, I can see there’s no response for the HTTP request to update the status on Evohome’s side, there should be a log similar to this one.

  • The command to change the Switch status was issued at 4:15:50.
  • Then the SmartApp setDHWSwitchState() function was called at 4:15:51
  • At 4:15:56 getEvohomeStatus function is executed(and still no response from the command sent)
  • The Status on the Evohome device takes that long to be updated or only the response is delayed?

What I meant before was adding a line to print a log when the response is received on the DTH side here, something like: "Switch Command successful, sending state update to the API"

Thank you @nayelyz . So i need to just add the line inside the if statement of the // Send update via parent: section and that should enable it to send the logs over to the ide? creates a log exactly in that part of the execution, you can show whatever text you want (even concatenate variables), it should be something to guide you on where this log comes from and some important results.
As you can see in the IF statement, it compares if the value returned by parent.setDHWSwitchState() doesn’t exist. This is because when the command is successful, the value returned is “null
So, if this condition is met and you indicated to print a log inside, you should see it in the log section of the DTH.
But, it’s important to notice if the state on Evohome changed but the response hasn’t been received.


Ok i think i understand. I have added the line at the hot water dth but just to make sure…

If i go on the ide and copy and paste the new dth inside the existing device handler, save it and publish it again, delete the device and reinitialize the evohome smartapp, it should start getting the new logs?

Or do in need to delete everything, create them again in the ide and do the whole process over?

Here are the new logs:

I hope this helps a bit more.

Yes, it was helpful, thank you.
I think I got it. I think I cannot see the last version (3.3) in your repository, but based on 3.2, there are two things:

  1. This event is sending the “Celsius” unit to all the attributes.
    a. In Evohome, this was applied only for the temperature attribute.
    b. For the Hot Water zone, it should be applied for those who work with temperature, eg. thermostatHeatingSetpoint
  2. A new poll is executed when the success response is received here.
    a. This triggers the status query and the change is not effective yet.
    b. If you remove that line, the other event should not be generated.

Sorry. I added the 3.3 Release in Github.
Also as i have replaced the 3.2 release, the links no longer open. Can you please update them to work with the new release?
When you say in Evohome, you mean the smartapp or the DTH?

So If i go and comment out that line, once i send the on command, because it will no longer poll the api for the on / off status, it will become a dumb switch and stay at the position set by the user. Correct?

I mean the Evohome DTH. The links are correct now.

I think that will solve the issue, if not, we need to see which other events are causing the change.

Thanks @nayelyz that seems to be it! :slight_smile:

It is now a dumb switch but it works great!

@nayelyz Any luck with the alexa limitations on the degree range?

Also any chance we could change the hot water switch to actually show the correct state on the dashboard instead of ON all the time?

Hi, can you share the logs of the switch actions, please?
This means, the events generated when you click on the switch control and the scheduled poll, from both, the SmartApp and Hot Water DTH.

Sorry, but no. This range can’t be configured from the device handler so far.

Bad Luck for this then…

Here you go some logs:


Hot Water:

Can you explain more where’s the issue with the Switch, please? I see the events are being sent, changing from On to Off. However, in generateEvents(), you keep sending the “C” unit for every attribute, including switch, I just want to discard this can cause an issue.

@nayelyz sorry for not being clear. I meant that the icon for the hot water is always showing as on and does not change in the Smartthings Dashboard. Any chance we could get that to work properly?

oooh, now I get it. Sadly, the only way to control the device icon is by using a capability in the Dashboard’s state section with “active” and “inactive” alternatives.
As you are using the Temperature capability, the icon remains active.