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.

1 Like

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.

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