Homeseer HSM200 Zwave LED On/Off and Color Control


Sadly, it appears as though I have the devices mentioned by a previous post. No entity of that type with mine. Out of luck I suppose.

Hmmmmm? I see. Have you tried to re-add the device. I also remember somewhere reading that when devices are added into Z-wave JS they must be “activated or toggled” so that JS sees them. When I first plug in my HSM200 and press the include button the led lights up blue with motion. ( I guess to let the user know its is detecting motion and working properly) It only does this for about 30 secs or so then it stop doing it. Maybe when it does this it adds the light entity. Does your device do that? Has it ever done that?

One other note my device is Homeseer brand, on firmware 2.3.

I noticed that yours is not the same brand and the firmware is 1.8.

Not sure if that has anything to do with it. Nor do I know how to update the firmware.

But it could be worth checking out.

Re-adding is worth a try. I have migrated from from each of the other Zwave integrations to JS, so who knows. I noticed the difference of brands, and that was my primary concern.
I am also curious if I could update the firmware on these somehow. More reading to do I suppose!
Thanks :slight_smile:

No joy. Comes back exactly the same way. Must be a different version of the product entirely.

Doing a little digging myself. So it does look like there are two different versions of the hsm200. V1 looks very similar to v2… except version two has a screw tab on top like below. Which is exactly what I have.

V2 lastest firmware is 2.2

V1 latest firmware is 1.10

I noticed that your is 1.8 so you have v1 and can update to 1.10. That may or may not help. If it doesn’t help then looks like you’ll need a v2.

Here is a forum post talking about it. Luckily there is a link to firmware 1.10 for v1 in post #9 if you wanna try it out.

https://forums.homeseer.com/forum/homeseer-products-services/homeseer-z-wave-products/hsm200-multisensor/1282342-firmware-configuration-parameters

That’s all I’ve got for now.

1 Like

My EZM (v1) is on 1.10 and the light entity isn’t created. My HSM200s (v2) are on 2.2 and do have light entities. I could be mistaken, but I believe they both utilize COMAND_CLASS_COLOR and I’m almost positive I’ve controlled the indicator when paired with different Z-Wave controllers so it should just be a matter of some compatibility changes being made to ZWave JS.

Any updates? I’m porting things over from SmartThings where I was able to control the color of the light. My EZM v1 is on 1.8. Just connected to zwavejs2mqtt and see color switch config, but sending values does nothing and HA doesn’t see it as a light entity.

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