Applying fix in openzwave to get Remotec ZXT-120 working with HASSbian

Tags: #<Tag:0x00007f1b94c0b758>


I am glad I was able to help.
I’ve been fighting with the ZXT-120 for a long time.


I have one with razberry on RP3. It works ok. Is openZ-wave smth another and do not need razbery? Why do you use openZ-wave? Is it cheaper? You can buy cheap rf module, not razberry, whitch costs ~80$?


Open Z-Wave is the software library side of the operation. It tells your controller what the different devices are basically. My Z-Wave controller hardware is a AEOTEC Z-Stick Gen 5.

The options.xml file are software options for the Open Z-Wave software.


This is great! I haven’t tried adding my zxt-120 yet because of this thread but now I will.

Where did you find an options.xml file?

I can’t fine one across my entire filesystem.
“sudo find / -name Options.xml -print” finds nothing.

I suspect from the code that was changed by others that the RetryTimeout does the trick because the code changes folks have been attempting add delays so signals get through. A retry with a long limit should work the same.

You replied to my post but didn’t quote so I have no idea what this comment is in reference to and honestly I don’t understand what you are saying. Open zwave is the open source code used by HA to support zwave. If you use zwave component in HA then you are using open-zwave.


The options.xml file is sitting in the CONFIG folder, on my setup. I use just the default location.

If you have set a path in your config.yaml to point to a particular zwave config file location, it will be in that location.



OK I found it on my main HA system. I was looking on my work instance and I didn’t see it. I have to check there again tomorrow. It was just in the .homeassistant folder. Thanks again!


At first these settings didn’t work for me. I had decided no to change NotifyTransaction when I read the purpose of this setting here.

I was about to post the changes don’t work for me when I realized perhaps it was the setting I didn’t change. So I changed it and now my zxt-120 is working fine when I issue commands they get sent.

This seems to be the Key setting!

  <Option name="NotifyTransactions" value="true" />

The only problem I have is the UI isn’t changing correctly to reflect the changes I am making.

I change the temp to 75, it sends a signal and changes from red to black. But the sensor still reads current setting as 79.

Another problem I have is changing the temp before setting temp sends the signal and the AC turns on but the “Operation” remains off. So to turn it off now I have to change the dropdown to Cool and then back to Off.

I guess once I automate this it will not matter so much because it will set the cool mode, then temp but it would be nice to improve the UI.


I have that same issue and I believe it is because the ZXT-120 does not support ThermostatSetpointCmd_Get command.
In the OZW_log.txt file I will see this line.

2018-08-12 20:32:48.738 Info, Node002, ThermostatSetpointCmd_Get Not Supported on this node

Node002 is my ZXT-120.

I am guessing that is because it uses infrared to communicate with the Air-Con / HVAC and therefore can not verify what temperature that unit has set as target as InfraRed is one way communication. This is the same reason you end up with 2 entities, one for heat and one for cool. If you call to change temperature via the heat command, it sets that temperature in heat mode and via the cool it sets it in cool mode. This would be due to not being able to confirm the units current settings due to it being via infrared.

All I can think of is using a separate card with a variable that stores the last set temp. Obviously if someone was to use the HVAC’s original remote to change the temperature, then it would again be wrong.


I found that adds an entry in the ozw_log file.
2018-08-12 21:11:26.793 Detail, Node002, Notification: Notification - MsgComplete

The notification itself likely isn’t the key as much as the small delay added by the extra command before the next command is sent. That seems to be the key for the ZXT-120, to ensure the commands are not sent to it too quickly.


Good catch. I fixed the issue.

  1. shutdown ha
  2. edit zwcfg_XXXXXX.xml file
  3. Change the following to getsupported=“true”
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" getsupported="true" innif="true" base="0">
  1. restart ha

It wasn’t the zxt-120 that didn’t support get, it was the configuration from Open Zwave was wrong.

I had the exact same thought. It’s also possible that the notification isn’t what I reads like. Perhaps it means for the open zwave to wait for notification ? In either case with that setting it seems to be working pretty well.


Can you get the change to the zwcfg file to stick after a restart?

It seems to be overwritten at a reboot for me.


Dam, your right. It isn’t working again. I see two options.

  1. write start script which edits the file before startup (YUK!)
  2. editing open-zwave and setting it correctly in config/remotec/zxt-120.xml will make it stick.

I tried #2 and it works. I think I will lose the changes next time I upgrade so I have to look into the steps I have seen to use your own OZW build.

But here is what I did. I edited two files I found.

[email protected]:~$ sudo find / -name zxt-120.xml 

I changed the following in both. I commented out this line…by adding

<!-- RRG Yes it is damit....




<CommandClass id="67" base="0" getsupported="false"/>

It looks like this when done.

        <!-- COMMAND_CLASS_THERMOSTAT_SETPOINT get is not supported -->
<!-- RRG Yes it is damit....
        <CommandClass id="67" base="0" getsupported="false"/>


Looks like something we will have to do manually for now.
I wonder if it is worth logging it as a bug on OpenZWave and seeing if the developers will correct the error.


I wonder that also. From what I have seen changes don’t seem to happen much on HA and OZW.

I suspect they mark it as not supported because if you have the ZXT-120 in flirs mode and/or use battery. It will not work. You need to plug the ZXT-120 into usb and put it in continuous listening mode.

I wrote the device handler for this on SmartThings so I am pretty familiar with how it works. Maybe I will try to submit the change once I figure out how to alter the code and build it locally for a more permanent change. I think I will have to learn how to do this anyway. I feel like a lot needs to be hacked.

I just added a GE light switch which is pretty basic and been around forever. Open Zwave doesn’t support any of it’s configuration options. So I have to fix that. I like to turn off the blue led when it is powered off.


@brendan have you also noticed that if you set temp when the unit is off it turns the unit on but the MODE remains “Off”.
I think this is because it is not issuing a COMMAND_CLASS_THERMOSTAT_REPORT_MODE command for the ZXT-120. Very similar the issue we just fixed but I have not figured out how to fix this one.


Yes I have noticed that.
I think that comes from the remote codes for the air-con/hvac unit. At least for mine it does. Mine has two options for turning on, either the “resume” just using the power button or using the temp settings.
I have noticed if a temp setting is sent via the zxt-120, the mode is not updated.
Not sure how to fix that one either, but I am no expert when it comes to the coding behind openzwave.


Good point. It has always annoyed me that changing the temp on my remote turns on the unit. I always thought they just needed a “Send” button or something. Mine is Mitsubishi and you are correct. It’s really not a problem so far.

Another problem I have is getting “Alexa” to work correctly and not lose sync if the AC remote is used instead of automation. HA doesn’t seem to support a “stateless” switch or input_boolean so I am trying to hack my way around that. But I started another thread for that issue so lets not go on tangent here :slight_smile:


Well, the fix I had for this device seems to have stopped working with the latest patches that went out in Home Assistant / OpenZWave.
Frustrating as the issue of time-outs is unique to OpenZWave for this device and Home Assistant is really the only HA Platform that does everything I want without being overly complex.
This issue with the ZXT-120 is preventing me having that “ultimate” smart home that doesn’t need constant attention.


Thank you guys for helping with the Zxt-120 problem, changing the option.xml seems to fix some of the issues. However, I cannot seem to get the temperature reporting/polling to be working, It will only update when I send a command to the remotec, and battery and temp will update. The device is in listening mode. Anyone experience this issue?

I agree, OpenZwave struggling with the timeouts and other issues and it does not seems that anyone will fix this in the near future:/ I have never had problem with the zwave on other smarthubs systems.


Hey all, I’m trying to update my OZW since they finally fixed the glitch that keeps my CT-101 thermostat from reporting humidity…anyways I tried to install the shared flavor python-openzwave and get this mess of a kerfluffle:

pip3 install python_openzwave --install-option="--flavor=shared" --no-deps
/srv/homeassistant/lib/python3.5/site-packages/pip/_internal/commands/ UserWarning: Disabling all use of wheels due to the use of --build-options / --global-options / --install-options.
Collecting python_openzwave
&#160;Using cached
Skipping bdist_wheel for python-openzwave, due to binaries being disabled for it.
Installing collected packages: python-openzwave
&#160;Running install for python-openzwave ... error
&#160;&#160;&#160;Complete output from command /srv/homeassistant/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-xzllkw0v/python-openzwave/';f=getattr(tokenize, 'open', open)(__file__);co'\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-n8l0anda/install-record.txt --single-version-externally-managed --compile --install-headers
/srv/homeassistant/include/site/python3.5/python-openzwave --flavor=shared:
&#160;&#160;&#160;sysargv ['-c', 'install', '--record', '/tmp/pip-record-n8l0anda/install-record.txt', '--single-version-externally-managed', '--compile', '--install-headers', '/srv/homeassistant/include/site/python3.5/pyt
&#160;&#160;&#160;Found SETUP_DIR : /tmp/pip-install-xzllkw0v/python-openzwave
&#160;&#160;&#160;&lt;pyozw_setup.SharedTemplate object at 0x7f9ebbda6d30&gt;
&#160;&#160;&#160;Fail to install minimal dependencies Cython
&#160;&#160;&#160;Can't find Cython
&#160;&#160;&#160;Traceback (most recent call last):
&#160;&#160;&#160;&#160;&#160;File "&lt;string&gt;", line 1, in &lt;module&gt;
&#160;&#160;&#160;&#160;&#160;File "/tmp/pip-install-xzllkw0v/python-openzwave/", line 42, in &lt;module&gt;
&#160;&#160;&#160;&#160;&#160;File "/tmp/pip-install-xzllkw0v/python-openzwave/", line 225, in ctx
&#160;&#160;&#160;&#160;&#160;File "/tmp/pip-install-xzllkw0v/python-openzwave/", line 246, in finalize_context
&#160;&#160;&#160;&#160;&#160;&#160;&#160;ctx['define_macros'] += [('PY_LIB_FLAVOR', self.flavor.replace('--flavor=',''))]
&#160;&#160;&#160;TypeError: 'NoneType' object is not subscriptable
Command "/srv/homeassistant/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-xzllkw0v/python-openzwave/';f=getattr(tokenize, 'open', open)(__file__);'\r\
n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-n8l0anda/install-record.txt --single-version-externally-managed --compile --install-headers /srv/homeassistant/inclu
de/site/python3.5/python-openzwave --flavor=shared" failed with error code 1 in /tmp/pip-install-xzllkw0v/python-openzwave/ &#160;&#160;&#160;&#160;&#160;&#160;&#160;

I’ve no idea whatsoever what I’m doing in this virtual environment thing, nor how python-openzwave interacts with openzwave. I did get openzwave compiled and installed at least.