HomeSeer HS-FLS100-G2 (2nd Generation)

I recently ordered an HS-FLS100-G2 on Amazon ($50). This is a smart outdoor Z-wave motion sensor/switch/thermometer that can replace motion sensors in some external lights (like this one) and make them “smart”.

I did not realize that this was a 2nd-generation device. I previously have the HS-FLS100+, which had its quirks, but I had figured out how to work around them. I thought I ordered exactly the same thing and just make it work like the other one, but I had quite a bit of issues with the 2nd generation.

This thread is to describe my experience, what progress I made, how I did it, what worked, and what doesn’t work, yet.

2 Likes

First, the device is not correctly recognized, because it has an updated ID (Manufacturer id="000c", type="0201" id="000c" — 1st gen. had id="000b"). Well, this was not so difficult to fix. I created a new file homeseer/hs-fls100-g2.xml for openzwave, based on the old one homeseer/hs-fls100plus.xml. I also made corresponding updates in manufacturer_specific.xml, essentially pointing the new ID to the new file. On my system (Home Assistant core), this is all located in /srv/homeassistant/lib/python3.8/site-packages/python_openzwave/ozw_config.
After that change it was recognized and showed basic functionality.

So the main updates of the 2nd gen. sound like really great ideas and improvements, fixing some of the quirks of the 1st gen. According to the its specs, it has 4 additional configuration parameters, which I all implemented in hs-fls100-g2.xml.

<?xml version="1.0" encoding="utf-8"?>
<Product xmlns="http://code.google.com/p/open-zwave/">
  <!-- Configuration Parameters -->
  <CommandClass id="112">
    <Value genre="config" type="short" instance="1" index="1" value="180" label="PIR Trigger Off Period" units="seconds" size="2" min="8" max="720">
      <Help>Period to send Trigger Off command after PIR is triggered.</Help>
    </Value>
    <Value genre="config" type="short" instance="1" index="2" value="50" label="Lux sensor threshold" units="" size="2" min="10" max="900">
      <Help>
        When the lux level falls below this threshold and the PIR gets triggered, the unit emits a Basic Set Command (Value=0xFF) and turns on its floodlight. This overwrites the Lux level set by the Lux knob.
      </Help>
    </Value>
    <Value genre="config" type="short" instance="1" index="3" value="10" label="Auto Report luminance interval" units="minutes" size="2" min="1" max="1440">
      <Help>sets the interval of periodic lux level report to the controller</Help>
    </Value>
    <Value genre="config" type="list" instance="1" index="4" value="1" label="Basic Report" units="" size="1" min="0" max="1">
      <Help></Help>
      <Item value="0" label="Disable Alert"/>
      <Item value="1" label="Enable Alert"/>
    </Value>
    <Value genre="config" type="list" instance="1" index="5" value="1" label="Floodlight Control Mode" units="" size="1" min="0" max="1">
      <Help></Help>
      <Item value="0" label="Z-wave controller only"/>
      <Item value="1" label="PIR and LUX level, or Z-wave controller"/>
    </Value>
    <Value genre="config" type="list" instance="1" index="6" value="0" label="Lux Sensor" units="" size="1" min="0" max="1">
      <Help></Help>
      <Item value="0" label="Floodlight controlled by LUX level and PIR sensor"/>
      <Item value="1" label="Lighting control via LUX only (ignore PIR)"/>
    </Value>
    <Value genre="config" type="byte" instance="1" index="7" value="0" label="Temperature Offset" units="×0.1°C" size="1" min="0" max="255">
      <Help></Help>
    </Value>
    <Value genre="config" type="list" instance="1" index="8" value="2" label="PIR sensitivity level" units="" size="1" min="0" max="2">
      <Help></Help>
      <Item value="0" label="Low level, approx. 6m distance"/>
      <Item value="1" label="Mid level, approx. 10m distance"/>
      <Item value="2" label="High level, approx. 20m distance"/>
    </Value>
  </CommandClass>
  <!-- Association Groups -->
  <CommandClass id="133">
    <Associations num_groups="2">
      <Group index="1" label="Lifeline" max_associations="1" />
      <Group index="2" label="PIR Control" max_associations="4"/>
    </Associations>
  </CommandClass>
</Product>

With the above code, I can do the following:

  • Recognize the device correctly, including its about 8 sensors
  • Switch the light on an off
  • Get a motion signal from the PIR (this is now a “burgler” sensor emitting a number; “0” means no motion, “8” means motion)
  • Read out the temperature using the temperature sensor
  • Calibrate the thermometer with the configuration parameter “7”
  • Read the luminescence with the corresponding sensor

One of the Updates of 2nd gen is that is has a configuration parameter “5”, which is supposed to allow you to switch the device completely in Z-wave mode. This means that the built-in PIR does not directly trigger the switch to turn the light on, but it will only emit a Z-wave report, and then you can decide on the controller side how to act on motion detection. (For instance in some cases I don’t want the super bright lights to go on when the system is disarmed, because this can ruin the outdoor atmosphere in the backyard after dark. Therefore, it’s great that the system has a mode that not directly turns on the lights, but that this can be decided by the controller/HA.)

The problem is: it does not work! I set that parameter 5 to “0” to turn the system into “Z-wave only” mode. I did some Z-wave debugging by reading the logs, and it appears to read correctly that parameter 5 was set to 0, but it never changes the behavior. The device always switches the light on if there is a PIR event. Because it does not work, it’s actually worse than the 1st gen. device, because in the old device you could switch parameter 2 to “255” to achieve the same behavior.

Not sure what to do now. I might have to try contacting HomeSeer or hitting some other forums (OpenHub, smartthings, etc.). Any ideas and suggestions would be welcome!

I found information about this device in some other forums, so let me just add the links here, in case someone is interested: hubitat, smartthings, HomeSeer and smartthings on Gen-1/Gen-2 device.

OMG. I finally found out what the problem is!

The device has manual dials to set motion sensor time and light sensitivity. If they are on the minimal setting (“T”), the device is put into “Walk Test” mode, in which the light always go on for 5 seconds, irrespective of any other setting. That’s why the Z-wave settings would not work. After moving the dials away from the “T” setting, everything worked as expected!

The manual should really make this clearer. I did find one table there that mentioned something about the different modes… I should have had a closer look before. I just couldn’t imagine it. I had somehow expected that the Z-wave capabilities of this device would be able to override the manual settings, and that’s why I didn’t even touch the dials. This took me forever to get sorted out!

I guess the conclusion is RTFM!!!

2 Likes

THANK YOU. This has been driving me crazy for, MONTHS.

@schniepp Thank you for documenting all your work. My motion sensors are arriving tomorrow. Your information will make their install go much smoother.

I’m considering getting a couple of these. Are you still happy with them? The Amazon reviews show a lot of 1’s… people complaining about the motion sensors (maybe this is because they are still in walk test mode). :wink:

I would say mine has been doing pretty good. I think was getting false positives when the wind was blowing too hard and moving leaves in the trees close to them. Then I simply reduced the sensitivity to a lower (I believe the lowest) level, and it hasn’t been too much of a problem since. I haven’t thoroughly tested its actual sensitivity by walking, etc.; I simply considered it good enough. I would get it again.

Thanks for sharing and glad to hear. I may pick up a couple and try them.

I’ve had the first gen FLS100 for a while now and trying to program it for a one-time event. We want the lights to stay on during the evening, so essentially disable the PIR. From the user manual, parameter 2 Lux Sensor has a range of 0,30-200,255. This doesn’t correspond to HA config of 10-900. From the manual, a value of 0 means to ignore the PIR, which I think is what I want.

Does anyone have any idea how to accomplish this? I’d like to be able to do this via software so I can keep the lights on when we’re outside.

I’m a little late to this party, but since this is the most informative thread one these I’ve found, I figured I’d help where I could.

To control the pir switch purely with software, I went the route of bypassing the switching ability physically, I have full time power going to both the sensor and the lights. I then use the pir notice in an automation and control the lights independently. I never found a set of settings that worked to my liking. The pir is just too sensitive for my location.

I use lifx infrared bulbs to support the nighttime view of the cameras without blinding the neighbors, when motion occurs I change brightness accordingly and after motion stops I revert back the the lifx ir mode.

I have two of the flood lights. I find that the PIR sensor is way too sensitive too.

I have a brownstone in the a tough neighborhood. I’ve got one on my front stoop and one over my back deck. I’ve had to turn off the PIR on the front flood light entirely. I was going off constantly–things like a passing car would trigger the light. But it is still useful. I have ip cameras monitoring the stoop and HA will turn on the flood light if Frigate detects a person on my stoop.

The PIR sensor in rear flood light is works better so I haven’t disabled it. But it too is still very sensitive.

You can actually adjust the sensitivity level. It has high (20 m), medium (10 m) and low (6 m) sensitivities.

I recently had to do that for one of mine that is facing the woods. Every time wind would move the bushes and trees too much, it would trigger. I switched it from high to medium, and now it’s fine.

I use Z-wave JS server as my Z-wave server, and there, it’s easy to set it. You click on the node for the sensor, then it will open with more options. Select “Configuration v1”, and a menu with many options will open. There, you can adjust the sensitivity via drop-down menu. (The option is called “[34-112-0-8] PIR Sensitivity”.) If you use another server, there is probably another way to adjust it.

1 Like

I’m considering using this for some outdoor lighting with Home Assistant. Is it possible to get the unit to give a motion signal to Home Assistant and then have more complex logic to determine if the light is actually turned, such as having a dark period, say midnight to 6 AM where the light does not turn on?

Yes, this is exactly what I am doing. The lights I have it connected to are quite aggressive and bright, and I want them to act as a deterrent. I don’t want them to trigger when I am normally wandering around my house. Therefore, my automations are written such that the motion sensor will only trigger the lights going on when my system is armed.

1 Like

Zooz has a new outdoor motion sensor. Given some of the reported problems in this thread with this one, that could be a better solution.