Homeseer HSM200 Zwave LED On/Off and Color Control

Finally figured out that while you can set each of the R/G/B colors from 0-255, each of the colors are really just on or off, so sending a 1 or 0 for each color suffices. I don’t need an entity for the light in HA, I just set it in automations, so I got it wired up in NodeRed sending the zwave_js set_value command. Here’s a dump of the node-red config:

[{"id":"7b0becb9.bc8374","type":"api-call-service","z":"2181a3f5.c73f6c","name":"","server":"73766d51.ce4224","version":3,"debugenabled":false,"service_domain":"zwave_js","service":"set_value","entityId":"binary_sensor.night_light_home_security_motion_detection_location_provided","data":"{\t   \"command_class\":51,\t   \"endpoint\":0,\t   \"property\":\"hexColor\",\t   \"value\":payload\t}","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":590,"y":980,"wires":[[]]},{"id":"34862d9d.3ee2a2","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"black","payloadType":"str","x":110,"y":920,"wires":[["7fc51df7.fef104"]]},{"id":"7fc51df7.fef104","type":"function","z":"2181a3f5.c73f6c","name":"Color to RGB","func":"// RGB color in HEX\nswitch (msg.payload) {\n    case 'black'  : msg.payload = '#000000'; break;\n    case 'white'  : msg.payload = '#010101'; break;\n    case 'red'    : msg.payload = '#010000'; break;\n    case 'green'  : msg.payload = '#000100'; break;\n    case 'blue'   : msg.payload = '#000001'; break;\n    case 'aqua'   : msg.payload = '#000101'; break;\n    case 'pink'   : msg.payload = '#010001'; break;\n    case 'yellow' : msg.payload = '#010100'; break;\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":980,"wires":[["7b0becb9.bc8374"]]},{"id":"68096279.c230fc","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"white","payloadType":"str","x":110,"y":960,"wires":[["7fc51df7.fef104"]]},{"id":"b60be33b.19509","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"red","payloadType":"str","x":110,"y":1000,"wires":[["7fc51df7.fef104"]]},{"id":"bc103ac4.699918","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"green","payloadType":"str","x":110,"y":1040,"wires":[["7fc51df7.fef104"]]},{"id":"1471617.b84e79f","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"blue","payloadType":"str","x":110,"y":1080,"wires":[["7fc51df7.fef104"]]},{"id":"fed81087.1fede","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"aqua","payloadType":"str","x":110,"y":1120,"wires":[["7fc51df7.fef104"]]},{"id":"68ed4b2f.7b7744","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"pink","payloadType":"str","x":110,"y":1160,"wires":[["7fc51df7.fef104"]]},{"id":"1da8330.dd4c7cd","type":"inject","z":"2181a3f5.c73f6c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"yellow","payloadType":"str","x":110,"y":1200,"wires":[["7fc51df7.fef104"]]},{"id":"73766d51.ce4224","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Thanks, that was just the information I needed (and didn’t have time to look up) for me to put together this light template which will make an entity in HA and controls on/off and color. At some point if I find the time I’ll have to find out if there’s a way to get the current light color to keep the frontend in sync…

light:
  - platform: template
    lights:
      garage_ezm:
        friendly_name: "Garage EZM: Light"
        turn_on:
          service: zwave_js.set_value
          data:
            command_class: '51'
            endpoint: '0'
            property: hexColor
            value: "#010101"
          target:
            entity_id: binary_sensor.garage_ezm_motion
        turn_off:
          service: zwave_js.set_value
          data:
            command_class: '51'
            endpoint: '0'
            property: hexColor
            value: "#000000"
          target:
            entity_id: binary_sensor.garage_ezm_motion
        set_color:
          service: zwave_js.set_value
          data:
            command_class: '51'
            endpoint: '0'
            property: hexColor
            value: >
              {% set s = s / 100 %}
              {% set hf = h / 60 %}
              {% set i = hf|round(0, "floor") %}
              {% set f = hf - i %}
              {% set p = (1 - s) %}
              {% set q = (1 - s * f) %}
              {% set t = (1 - s * (1 - f)) %}
              
              {% if i == 0 %}
                {% set r = 1 %}
                {% set g = t %}
                {% set b = p %}
              {% elif i == 1 %}
                {% set r = q %}
                {% set g = 1 %}
                {% set b = p %}
              {% elif i == 2 %}
                {% set r = p %}
                {% set g = 1 %}
                {% set b = t %}
              {% elif i == 3 %}
                {% set r = p %}
                {% set g = q %}
                {% set b = 1 %}
              {% elif i == 4 %}
                {% set r = t %}
                {% set g = p %}
                {% set b = 1 %}
              {% elif i == 5 %}
                {% set r = 1 %}
                {% set g = p %}
                {% set b = q %}
              {% elif i == 6 %}
                {% set r = 1 %}
                {% set g = t %}
                {% set b = p %}
              {% elif i == -1 %}
                {% set r = 1 %}
                {% set g = p %}
                {% set b = q %}
              {% endif %} 
              
              {% set r = '%0x' % ((r * 255) | int) %}
              {% set g = '%0x' % ((g * 255) | int) %}
              {% set b = '%0x' % ((b * 255) | int) %}
              
              #{{ ("0" + r)[-2:] }}{{ ("0" + g)[-2:] }}{{ ("0" + b)[-2:] }}
          target:
            entity_id: binary_sensor.garage_ezm_motion

Just replace all instances of binary_sensor.garage_ezm_motion above with the correct entity_id for your EZM.

2 Likes

Has anyone successfully updated the firmware on one of these? I tried using the zwavejs2mqtt control panel, the first time I tried to start it, it said something like “unable to start, because the device is waiting for an authorized button input” or something of that nature. (I tried pressing the button on the unit, before, and after initiating the upgrade with no joy either.) The second time I tried to start the upgrade, it reports an upgrade is already in progress. It still reports that a day later, so I’m not sure how to actually get it to work.

I’m on 2.3, and trying to get version 2.4, (posted here,) to work.

1 Like

For posterity, I did figure out how to update this with the zwavejs2mqtt control panel. You do have to push the button on the device just before you push upgrade through the control panel. I guess it didn’t work for me before because it was in some sort of failed state while I was trying it. After I tried it several days later everything just worked, and I’m on the newly posted 2.5 firmware.

2 Likes

I am on the HomeSeer site and they only have the 2.2 firmware posted. My HSM200 already reports it’s on 2.3, and I see your link to 2.4 in the HomeSeer forums. Do you mind sharing with me the URL for the latest firmware please?
Many thanks.

Looks like 2.8 may be the latest. I ended up returning my devices since there were too many false motion triggers. https://forums.homeseer.com/forum/homeseer-products-services/homeseer-z-wave-products/hsm200-multisensor/1457998-hsm200-motion-sensor-triggered-by-led-light-control-changes-new-firmware-available/page3#post1507047

1 Like

Thank you :pray:

This has been fixed for the EZM v1 devices here: https://github.com/home-assistant/core/pull/67089

1 Like

I do realize you’ve returned this, but beyond pushing the button before sending the command, do you have a full set of instructions to update the firmware or a link where you got instructions?

I currently have the HSM200 in eisy (Universal Devices hub) and the 7 ‘sentinel’ lights on the dimmer are programmed to indicate if lights are ON or OFF in 7 different areas of my home. How would I do that with HA ?

Hey guys did you find a way tomake it work as a ligh in zwaveJS?

Pls explain what you mean with “work as a light” ? Mine works fine as a light switch and I was able to program the led lights.

All good looks like i found i can control light using light turn on ,

2 Likes

Clay, thanks. Dumb question: Where would I add this? and is there any way to “templatize” it so I don’t have redundant copy/paste blocks for multiple devices?

This would be in your configuration.yaml, under light:. I believe Home Assistant now supports creating template functions that might allow you to minimize the redundant code in hexColor, but I have not used that feature. In fact, I’ve since removed this configuration; it should no longer be necessary with up-to-date versions of Home Assistant and ZWave-JS, light entities should be created automatically.

1 Like

Oddly, my HSM200 v1 entities (1.08 fw, can’t seem to update to 1.10…) work fine with light.turn_on and setting the rgb color, but they don’t respond to light.turn_off. I’ve also tried setting the rgb to 0/0/0, to no avail. Anyone else experienced this?

I pass rgb_color and brightness to the light.turn_on service, but only the entity_id to the light.turn_off service, no problems.

My devices are on firmware v2.3 however. It has been quite some time since I messed with these, so I can’t recall if that means I don’t have v1 versions or if the firmware is what sets the version and you can update to it regardless of hardware.

EDIT: I scrolled up and there’s a post about V2 having a tab at the top, and mine have the tab so they are V2.

1 Like