Horstmann - hrt4-zw & ASR-ZW Z-wave Thermostat

Hi all, had a fair bit of aggro getting these things working so thought I’d knock up and all-in-one post.

I’m UK based and wanted a smart heating system. Nest etc didn’t seem to do what I wanted, and having an existing smartthings ecosystem (temp sensors etc) I wondered if it were possible to add something cheap that would be (a) a bit of initial aggro but, (b) work well for my needs.


  • Cheap
  • Reliable
  • Customisable (to link into home alarm, wake alarms, presence sensors, multiroom etc).

So first up, bought one of these from ebay for £25 (£60 new)

Had a load of aggro installing it, finally following the instructions from here : The ‘aggo’ part was mainly down to poor instructions - I could get the thermostat to control the switch, but when paired to smartthings, I could see the setpoint changing if I physically spun the wheel, but this didn’t have any effect on the switch. It was as if one was connected, or the other. Started to think I’d wasted my money! Grr. Anyhoo, it was because it needed to be reset, as per instructions here (https://k2aab.com/home-automation/fibaro-hc2-and-horstmann-hrt4-zw/) and quoted below just in case.

Not here, that in my hours of messing about trying to get the f**ker working, I installed some new DTH’s.

Here’s the thermostat

here’s the modified code found on here:

And here’s the switch:

Again, with the code found here:

Followed the install below, and this gave the two devices in smartthings.

If I turn the wheel, this reflects immediately in the device type in smartthings, and the switch activates as planned if the temp is lower than the temp set on the dial. Result!

Next up, wanted to be able to control this from smartthings. Boo. This seems a bit of a pain, possibly due to the time delay of a battery powered thermostat, I don’t quite get it and to be honest I got cheesed off trying to figure it out, so instead, I sacked it off and went a different route.

Webcore! Woo!

So at the minute, I have two simple pistons (I’ll expand on this in a bit)

Very simple, and this means if the physical wheel is spun, after 5 seconds of ‘stability’, the ‘target’ temp is set as a variable. This variable can also be set by the up/down arrows in smartthings from the thermostat device (note that changing it in software does not change the display on the thermostat - rather the last device to alter is the one which sets the target temp overall, make sense?).

Obviously this setpoint can be easily set by webcore via timers, presence, whatever. The list is endless.

Now all I need to do is add a few TRV’s.

Not the best guide, but if I’d had this available yesterday I probably could have saved some heartache.

Does anyone know if its possible that, after setting the setpoint via webcore or the app etc, how the display on the dial can be forced to reflect this?

At the minute if the dial is set to 18, and the app changes it to say 10, the dial continues to read 18.

I’m still in testing phase a little here and I’m unsure if the heating is getting switched on by an ‘out of whack’ dial… I. E. Setpoint is altered to 10, but dial still reads 18, so heating kicks in. Not entirely sure. Was potentially thinking of disassotiating the thermostat from the receiver and just having the receiver controlled by webcore and the actual setpoint (thinking the dial can still be used as a physical switch to alter the temp and setpoint anyway). Not the best explanation I’m sure. But hopefully you get the point =p

© 2019 SmartThings, Inc. All Rights Reserved. Terms of Use | Privacy Policy

SmartThings; SmartApps®; Physical Graph; Hello, Home; and Hello, Smart Home are all trademarks of the SmartThings, Inc.