[RELEASE] Remotec ZXT-120 AC IR Controller (2015)

I have a ZXT-120 from Remotec which I can’t seem to get working correctly with my ST Hub.

I have added the device from @bdahlem but can only toggle through the modes. I can’t get it to read temp and I can’t seem to do anything in a smart app other than set the hot and cool temp. I want want to be able issue mode commands like “Turn On AC”, 'Turn on Heat", “Turn on Dry” and “Turn Off”

When I watch the logs I don’t see any output from the device. I would like to see that message the unit is sending.

This device has pretty good documentation on it’s zwave communication. So I am hoping to learn enough to fix the code for this device type.

Does anyone have this device working ?


I have been writing new device code for the ZXT-120 and it is working much better now.
So far I have fixed the following

  1. Fixed the current temperature tile. It was coded incorrectly.
  2. Added a Battery level tile.
  3. Adding discreet control tiles “Off”,“Heat”,“Cool”,“Dry” so you don’t have to toggle through the modes just to get to Off. I have added Off first and have that working so the rest will be easy.

Next I plan to improve the UP/Down Temp, Fan Control, and most importantly I plan to add a learning mode interface.

When I am done I will share the code here and offer it to be published by ST.


Hi Ron,

I’m trying to do the same as you with my two ZXT-120 (one for each floor of my house), to get them to work as switches (turn on heat, turn off, turn on ac, etc…). I’m new to groovy (have done a bunch of other languages though) and ST and struggling a little bit. I started with @bdahlem code and played a with it bit, but couldn’t get what I wanted to work. Would you mind sharing your code?

Thanks a bunch for any hints.

Sure my code is here. Enjoy…let me know if you have any questions.
I also wrote two smart apps
To set a mode on schedule, I implemented two schedules in this version M-F and S-S

Set mode when temp is reached…untested…i don’t use this one so much.


Hi Ron,

Sorry for the delay. I can only play with it on weekends :-/

Thanks a lot. Your examples helped me a lot to understand some basics.
I’ll try some stuff and I’ll share if I produce anything interesting.

– Mauro

@Ron Sorry to jump on an old thread but I was wondering if you still had your code out there for scheduling (the links now return a 404)?

I’ve gotten my zxt-120 working with my Fujitsu Split and can change the temps etc. What I’d like to do now is to either a) Have it turn On/Off on a schedule or b)Have something that says “When the room temperature gets above a user-specified value, turn on the A/C”

Thanks in advance for any assistance you may be able to offer.

@spotlizard just rearranged my code a little causing the 404.
This is the root of my zxt-120 code now.

for on/off on schedule use this

To change on temp use this

Beautiful! Thank you sir :smile:

@Ron Sorry to bug you again but I have a question regarding the On/Off schedule app.

I’m using a Fujitsu split with the code 016 from the code library. I can control the unit when it is on and running and the “Off” part of the schedule works perfectly.

There is no “On” option for the scheduling app and the original split remote uses the same button to power the unit on and off, so when I wanted to turn the unit on I sent it the “Off” command, however, this does not appear to work to turn it on. I also tried “Cool” but that doesn’t work either. Any suggestions as to how I can get it to turn on?

Thanks in advance.

Currently my device code maps “On” to “Cool” because my Mitsubishi only has Off button. On is done by selecting Heat, Cool or Dry modes.

If you know how to code you can alter the device type to issue the “Resume” command which is the “On” command for thermostats

If you don’t know how to code this I can give it a shot and send you the modified version. It might take me a while to get around to and I can’t test it since my AC doesn’t have the resume command. So we may have to work together on debugging if it doesn’t work.

You will also need to alter the Smart App to add “On” as an option. That part is easy. I can do that also if you do not know how.

@Ron Thank you so much for the reply :smile: The problem was actually with the ZXT-120 itself. I removed and re-added it it to my devices and was able to get it to power on using the “Cool” function.

I really appreciate all your help with this

Best regards.

Cool (Pun intended) :slight_smile:

@Ron :smile: One more question (I promise). Would it be possible to modify the code so that when it turns the split on it sends a command that specifies a temperature and fan speed (e.g. 72 degrees, fan speed medium)? If so, how could I accomplish this?

Thanks in advance.

I am not sure but I do have to figure that out. I have the problem also. My Mitsubishi when started by pressing cool on the remote starts with the fan in auto mode and the house cools well. When I start from the zxt-120 the fan runs low and it doesn’t cool well. Up until now I haven’t needed it but it is getting hotter now so I need to figure out why this happens.

I think it will be easy to just send a fan speed with cool the question is how to select the fan speed we want to set. I have to think about that a bit.

No worries. I appreciate your taking the time to look at it. I have exactly that problem. The split remote fires it right up with the fan set at medium, which is perfect. The ZXT seems to default to a low setting. It takes a lot longer to get the job done this way.

All the best.

@spotlizard That’s good to know. I thought it was a quirk with Mitsubishi codes. But if it happens to you also I need to look closer at the device code and see what it is doing. Honestly I would prefer it keep the previous setting of the fan and only issue the cool command. But if sending the fan command works I will live with that.

How does one go about finding the right code? I have a Mr. Slim Heat Pump. Do I just try them all? There are quite a lot.

Pretty much trial and error.

I tried several before realizing I was setting them wrong and had to start over. Then when I started to do it right they all seemed to work. This makes me wonder what the difference is but I just picked one and it has been working fine.

I have 5 Mr Slims and have been using code 176 for all of them.

Thanks a lot for publishing your improved ZXT-120-DeviceNew script, because of it I was able to get my setup up and running and linked with my Amazon Echo (for which I used the Alexa Helper, thank you @MichaelS)


One question, my ‘Cool’ mode was originally set at 22 Celsius, then I touched the temperature bar for cooling mode and then it jumped to 28 Celsius which is the lowest I can set it at in the App at the moment:

So above first screenshot was made before I had touched the temperature bar for ‘Heat’ mode but had already touched the temperature bar for ‘Cool’ mode.

Below second screenshot was made after I had touched the temperature bars of booth ‘Cool’ mode as ‘Heat’ mode.

I am not sure whether this is because I activated showing Celcius instead of Fahrenheit.

Wondering whether you may have a suggestion on how I could resolve this?

You need to tweak the code a bit to get Celsius working.

There is no way to modify the limit of the slider based on the user preferred temp scale.

So the tiles are hard coded to range in the Fahrenheit range

controlTile(“heatSliderControl”, “device.heatingSetpoint”, “slider”, height: 1, width: 2, inactiveLabel: false, range:"(67…84)") {
state “setHeatingSetpoint”, action:“thermostat.setHeatingSetpoint”, backgroundColor: “#d04e00

you should change 67…84 to 19-28

I have not tested with celsius either so you may have to debug a bit. The range limit of the ZXT-120 is 19-28 and I think that is coded correctly but in case for the following code.

def setHeatingSetpoint(degrees) {
def degreesInteger = degrees as Integer
def temperatureScale = getTemperatureScale()

if (temperatureScale == "C") {
    // ZXT-120 lowest settings is 19 C
    if (degreesInteger < 19) {
        degreesInteger = 19;
    // ZXT-120 highest setting is 28 C
    if (degreesInteger > 28) {
        degreesInteger = 28;
} else {
    // ZXT-120 lowest settings is 67 F
    if (degreesInteger < 67) {
        degreesInteger = 67;
    // ZXT-120 highest setting is 84
    if (degreesInteger > 84) {
        degreesInteger = 84;

I hope that helps.