HVAC IR Extender (Remotec ZXT 120) (2014)

@dwight Excellent ! I have 6 of these now :slight_smile:

@Ron buying my second one now that I have this working!

1 Like

Ron -

Great DTH! Thanks to you, I was able to set up my Friedrich in-wall unit working PERFECTLY in about 15 minutes - and it only took that long because there was no Friedrich-based IR codes in the code list. Once I realized that my Friedrich model was basically a re-branding of an LG model, I used the LG code of “17”.

So, in my opinion, you win the interwebs today!


PS: The last code submission (Aug. 15) fixed the slider issue mentioned in the comments above. You might want to update the version number for that code so as not to be confused with the Jan. 15 or Jul. 15 code versions that are also posted.

1 Like

The ZXT-120 seems a little expensive when comparing to the IR projects involving a NodeMCU / ESP8266 which is like $5 plus a $1 for multiple IR LEDs. Here are some projects with generic IR abilities and ST integration:


1 Like

To change the coolingStPoint, the ZXT-120 requires confirmation by sending the command for the “cool” thermostat Mode.

This was a slight inconvenience when using the device itself (having to press “Cool” button after using slider), and a major inconvenience when using CoRE (had to create a lot of extra steps) or SmartTiles (didn’t work at all).

So I just added a line of code to the setCoolingSetpoint() function so that it also called setThermostateMode(“cool”).

You can get this updated version here

1 Like

Hi, Brian, I’ve had no luck following your process. I’ve created the device, but you direct us to input a code on the ide(* Copy the contents of ZXT-120.device-type.groovy to the ide) and there is where I’ve get lost. Where’s the Ide? The only place I’ve found where to input code is on the SmartApps, and when I do input the code and try to save, this is what happens: “No signature of method: script1474151749960260510697.metadata() is applicable for argument types: (script1474151749960260510697$_run_closure2) values: [script1474151749960260510697$_run_closure2@ae2ed0c] Possible solutions: getMetadata(), getState(), setState(java.lang.Object), metaClass(groovy.lang.Closure)” Sure I’m doing something wrong, and this is a very old trend, but … can you please help?

You need to paste this code into a new device handler, not a smart app.

Thanks a lot Mark for your tip! And of course, Brian. It’s connected and now I just need to learn how to really manage it, we only need “cool”, “on/off” and temp control. There are some threads about it that I will follow. Thx again!

Glad to hear you’ve got it working. It’s not the most straightforward device to use with ST, but if you read through the forum posts you can hopefully get it to do what you need. There aren’t a lot of options for controlling window ACs.

1 Like

Fantastic work. So far so good. A few issues with the sliders still and I work in C not F - before I bug you with to many questions can you send over or version the code files so we can see the latest?

Hi Ron,

Thanks for your efforts here. nice work.

I got my samsung smarthing hub and the ZXT 120. by following this thread I was able to add it and configure it to work with my Haier split unit.

I have the following questions.

1- there is no ON button, to switch it on I have to press COOL button right?
2- I see first slide for heat, that I will never use :slight_smile:
3- the second slide for cool, when I change the temperature is not sending anything to my AC. should I press anything after choosing the temperature?
4- the 3ed slide I am not sure what is used for?
5- My AC have 2 type of swings up/down and left/right. I think the 2 buttons available for up/down only. right?
6- My AC have an option to put fix the swings full up or full down. how can I add those options?


  1. Yes
  2. OK, you can hide it if you edit the list of tiles. SmartThingsPublic/zxt-120-ir-sender-improved.groovy at master · gouldner/SmartThingsPublic · GitHub Just remove line 317 for example. That is why the comment is there to tell you what it displays.
    SmartThingsPublic/zxt-120-ir-sender-improved.groovy at master · gouldner/SmartThingsPublic · GitHub
  3. Yes, I don’t like sending the code as the temp is changing because the slider can be tricky. Do you really want to send all your mistakes with the slider :slight_smile: So set your temp and then click “cool” to send your selection. When the temp is sent it will update the tile which displays the current configured cool temp selection. That’s my way of letting you know it was sent.
  4. 3rd slider is for learning mode. You don’t likely need it. You can hide it by removing them from the same sections I mentioned in #2… Namely remove “learningPosition”,“learningPositionControl”, NOTE: I make place it on it’s own line to make that easier. Which will mess up this reply because line numbers will change…Letting you know just in case.
  5. I can’t answer that. It all depends on what code you use and what the company chose to place in the memory for IR codes for the swing modes. You will have to play and test to learn this.
  6. You can’t. Limitation of the ZXT-120. It’s far from a perfect device.
1 Like

Dear Ron

Thanks for the handler, its working fine for me, except I dont seem to be able to affect the temperature tile with the offset setting, also, the device doesnt seem to be polling unless I press the refresh button. Am I doing it wrong?

I believe that’s a limitation of the device itself.

Are you sure, cos the handler has the time of last poll, the header mentions polling, the device used to refresh it’s reading when connected to a zipato system and besides it would be totally useless if it didn’t poll automatically!

No I’m not 100% sure. But AFAIK, the zxt-120 doesn’t periodically report temperature updates on its own unless it’s specifically polled by the controller. So you have to affirmatively do something to get it to update, like change setpoint, mode, hit the refresh button, etc.

I haven’t actually used my zxt-120 for some time because I went with another solution to control my window a/c’s, so hopefully @Ron can clarify further.

Polling as been programmed into the DH but SmartThings drops the ball completely when it comes to polling. It always has and no matter how many people complain the SmartThings folks just don’t seem to care.

For example here is my post regarding the subject from March 2015. That’s right 2015!

I use Fibaro Motion sensors to get my temp readings because they transmit updates when temp changes. They work perfectly. I have tried solutions to fix Smart Things polling. But they all reply on Smart Things not dropping the ball, like scheduled requests to update, relying on actions from other devices to trigger a SmartApp. They ALL fail. SmartThings is terrible on the cloud side. Smart Apps periodically just stop working. So what did SmartThings do to fix it. They added “Update” buttons to smart apps in the ide so you can manually fix your smart apps when they start working. How is that home “automation”? If you have to manually check your apps all the time to make sure they are still active.

Anyway, don’t rely on SmartThings. It works more often than not but expect to have to jump though quite a few hoops to keep it up and running. If you want to try to fix polling for the zxt-120 give pollster a try but trust me and don’t rely on it.

My Mitts Mr. Slim has 4 fan modes. The highest I can achieve with the ZXT (from 1 to 4) is a 3 (high). Is there a way to get it to use the highest/fastest fan mode?

Thanks for your answer Ron, that was very useful.

OK I have my AC working from the app thanks. I would like to run a routine that does the following.
I only got this system to control my guests in my rental homes.

If Any Door sensor is open for 10 minutes then turn off AC via ZXT-120 in each room. Then if a guest turns the AC back on again (using AC remote) whilst the doors are still open it turns off again after another 10 minutes. Forcing them to close all the doors.

How can this be achieved do I have to create a smartapp ??any help would be awesome.
Thanks Steve