HS-FS100-L not coming over to ZWaveJS from deprecated Z-wave?

I’ve made my move from the deprecated openzwave 1.4 to ZwaveJS2MQTT (and renamed 145 out of 146 devices…). I have one device that is claimed supported by ZWaveJS (and appears to be reporting most of it’s information in the ZWaveJS2MQTT panel - minus manufacturer and device ID, but the air temperature, binary sensor and settings are there. but it’s not coming into home assistant as a device with entities. It is coming in as a device that I can configure or re-interview, but I can’t actually configure it through HA. There are no disabled entities available.

It’s a HS-FS100-L (light sensor), and it’s supported Z-Wave JS Config DB Browser under HS-FS100-L. I’m using it in powered mode if it matters

Any ideas on how to troubleshoot or where to start? I’m pretty confident it’s my fault somehow (it worked perfectly fine under ozw 1.4).

I think you mean this device. What is the Interview status? It needs to be Complete in order for HA to recognize the device and create entities.

It’s been “complete” for days

I excluded it and re-added it, and there are some things that got to HA (temp and the buzzer), but not the light sensor… And I have some more information on it - it looks like firmware 5.18, which is supposed to be supported as: Z-Wave JS Config DB Browser

Based on what I see in the Z-Wave Alliance DB, if it was detected properly there should be some disabled sensor entities for light and water notifications. The water notification might also have an enabled binary_sensor. Binary sensor for light isn’t supported by HA yet. There should also be enabled sensors for temperature, illuminance, and moisture.

I would submit an issue, including a network dump. At least it would help to add support for the light binary sensor.

@elwing

Did you have any luck getting your HS-FS100-L (light sensor) to work correctly with HA using ZWaveJS2MQTT.

I’m still very new to HA, and slowly moving over from Hubitat.
I have two of the HS-FS100-L (light sensors) and also using ZWaveJS2MQTT.
I’m also unable to get the light sensor to respond if it senses if a light is on or not in HA.

Hoping you might be able to let me know how you got it working correctly in HA, if you did.

Thanks!

I haven’t, but I also haven’t played with it lately - the husband decided to create a vibration based sensor, and we’ve been using that instead.

1 Like

Thanks. @elwing
I really appreciate you getting back to me and letting me know.

I’m still moving the last of my Z-Wave devices from Hubitat, to HA.
Just having issues with the two HomeSeer HS-FS100-L sensors, and 5 of the Zooz Double Plugs.
I’ve already moved 50 of my Z-Wave devices over with no problem. Keep doing a Z-Wave repair on each Hub (one at a time) after I add or remove devices.

I’m also trying to move all my Philips Hue lights over to HA, but having issues with 3rd party devices that I had connected to the Hue bridge.
The FLS-PP lp wireless ballast (Zigbee Light Link certified ballast with Power PWM interface for 12/24V RGB/RGBW LED strips).
They worked great when they are connect to my Hue bridge (I have 4 of them). It would control any brand RGBW LED strips with the Hue app. But for some reason, HA just doesn’t see them at all?

I’m running Zooz S2 Z-Wave 700 USB dongle with Z-Wave-JS (mqtt).
I’m using the Sonoff Zigbee 3.0 USB dongle plus, along with Zigbee2mqtt.

Sorry for rambling on so much with my HA issues.

Thanks again!

The 700 series devices have a firmware problem that has been patched. You can fix it with ZWaveJS: 🚧 META-Issue: Problems with 700 series (healing, delays, neighbors, ...) 🚧 · Issue #3906 · zwave-js/node-zwave-js · GitHub
I’m still on a 500 series ZST10, and haven’t updated because of the firmware issue. Not sure if it’s related to your problems, but possibly…

1 Like

Thanks, I’ll take a look at that!

I just went through a migration. I had problems with the hs-fs100 - specifically the light sensor. The default entities exposed in home assistant do not work. Go into home assistant / devices and click on the fs100, for there look for the option to show disabled entities. In the disabled entities look for one called _any - this is the one the turns on / off with the light sensor. Enable this. Reboot HA as I saw issues with the integration not reporting events after enabling the entities.

Why the “light sensor light detected on” entity doesn’t work seems like a bug.

The other item i noticed is when this device is USB powered it never wakes up and is reported as sleeping - even though it is awake.

4 Likes

@PeteRage

Thanks for that info!
I didn’t know that some disabled entities could be turned back on in HA. Great to know this when dealing with this type of issues again.

I was able to turn on “Any”, and now it seem to work like it did when it was working with Hubitat.
I am running the USB power supply with it, I’ll have to see later if it goes into sleep mode.

Thanks again!

@freshcoast - here’s the debug info for the HS-FS100-L. I’ve posted it here, as it’s on-topic for this thread.

Summary: By default the binary_sensor.{nodename}_any is disabled, in the screen shot below that is the hvac_running sensor that I’ve renabled. The other sensor name “does not work” is the binary_sensor.{nodename}_light_sensor_light_detected

The device is detecting light from an LED on hvac_system that indicates if the fan is running, so this turns on / off with each hvac cycle.

hvac_fan

Here is the zwavejs2mqtt debug info for the device

{
  "id": 15,
  "name": "hvac_fan",
  "loc": "furnace",
  "values": [
    {
      "id": "15-48-0-Any",
      "nodeId": 15,
      "commandClass": 48,
      "commandClassName": "Binary Sensor",
      "endpoint": 0,
      "property": "Any",
      "propertyName": "Any",
      "type": "boolean",
      "readable": true,
      "writeable": false,
      "label": "Any",
      "ccSpecific": {
        "sensorType": 255
      },
      "stateless": false,
      "commandClassVersion": 1,
      "list": false,
      "value": false,
      "lastUpdate": 1651151229552,
      "newValue": false
    },
    {
      "id": "15-49-0-Air temperature",
      "nodeId": 15,
      "commandClass": 49,
      "commandClassName": "Multilevel Sensor",
      "endpoint": 0,
      "property": "Air temperature",
      "propertyName": "Air temperature",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Air temperature",
      "ccSpecific": {
        "sensorType": 1,
        "scale": 0
      },
      "stateless": false,
      "commandClassVersion": 11,
      "unit": "°C",
      "list": false,
      "value": 17.4,
      "lastUpdate": 1651152994786,
      "newValue": 17.4
    },
    {
      "id": "15-112-0-1",
      "nodeId": 15,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "endpoint": 0,
      "property": 1,
      "propertyName": "Light Sensitvity",
      "type": "number",
      "readable": true,
      "writeable": true,
      "label": "Light Sensitvity",
      "default": 2,
      "stateless": false,
      "commandClassVersion": 3,
      "min": 0,
      "max": 2,
      "list": true,
      "allowManualEntry": false,
      "states": [
        {
          "text": "High",
          "value": 0
        },
        {
          "text": "Medium",
          "value": 1
        },
        {
          "text": "Low",
          "value": 2
        }
      ],
      "value": 0,
      "lastUpdate": 1650842468926,
      "newValue": 0
    },
    {
      "id": "15-112-0-2",
      "nodeId": 15,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "endpoint": 0,
      "property": 2,
      "propertyName": "Water Detecton Beep Frequency",
      "type": "number",
      "readable": true,
      "writeable": true,
      "label": "Water Detecton Beep Frequency",
      "default": 2,
      "stateless": false,
      "commandClassVersion": 3,
      "min": 0,
      "max": 2,
      "list": true,
      "allowManualEntry": false,
      "states": [
        {
          "text": "10 minutes",
          "value": 0
        },
        {
          "text": "5 minutes",
          "value": 1
        },
        {
          "text": "30 minutes",
          "value": 2
        }
      ],
      "value": 0,
      "lastUpdate": 1650842468927,
      "newValue": 0
    },
    {
      "id": "15-112-0-3",
      "nodeId": 15,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "endpoint": 0,
      "property": 3,
      "propertyName": "Temperature reportng interval when on line power",
      "type": "number",
      "readable": true,
      "writeable": true,
      "label": "Temperature reportng interval when on line power",
      "default": 1,
      "stateless": false,
      "commandClassVersion": 3,
      "min": 30,
      "max": 255,
      "unit": "seconds",
      "list": false,
      "value": 60,
      "lastUpdate": 1650842468927,
      "newValue": 60
    },
    {
      "id": "15-112-0-4",
      "nodeId": 15,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "endpoint": 0,
      "property": 4,
      "propertyName": "Enable Notifcaton Buzzer",
      "type": "number",
      "readable": true,
      "writeable": true,
      "label": "Enable Notifcaton Buzzer",
      "default": 0,
      "stateless": false,
      "commandClassVersion": 3,
      "min": 0,
      "max": 1,
      "list": true,
      "allowManualEntry": false,
      "states": [
        {
          "text": "Disable",
          "value": 0
        },
        {
          "text": "Enable",
          "value": 1
        }
      ],
      "value": 0,
      "lastUpdate": 1650842468927,
      "newValue": 0
    },
    {
      "id": "15-112-0-5",
      "nodeId": 15,
      "commandClass": 112,
      "commandClassName": "Configuration",
      "endpoint": 0,
      "property": 5,
      "propertyName": "Flashing LED Detection Delay",
      "type": "number",
      "readable": true,
      "writeable": true,
      "description": "Set delay to avoid continuous notifications when detecting flashing LEDs; 0 to disable",
      "label": "Flashing LED Detection Delay",
      "default": 0,
      "stateless": false,
      "commandClassVersion": 3,
      "min": 0,
      "max": 20,
      "unit": "seconds",
      "list": false,
      "value": 0,
      "lastUpdate": 1650842468928,
      "newValue": 0
    },
    {
      "id": "15-113-0-Light sensor-Light detection status",
      "nodeId": 15,
      "commandClass": 113,
      "commandClassName": "Notification",
      "endpoint": 0,
      "property": "Light sensor",
      "propertyName": "Light sensor",
      "propertyKey": "Light detection status",
      "propertyKeyName": "Light detection status",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Light detection status",
      "ccSpecific": {
        "notificationType": 20
      },
      "stateless": false,
      "commandClassVersion": 8,
      "min": 0,
      "max": 255,
      "list": true,
      "states": [
        {
          "text": "idle",
          "value": 0
        },
        {
          "text": "Light detected",
          "value": 1
        }
      ],
      "value": 1,
      "lastUpdate": 1651150751777,
      "newValue": 1
    },
    {
      "id": "15-114-0-manufacturerId",
      "nodeId": 15,
      "commandClass": 114,
      "commandClassName": "Manufacturer Specific",
      "endpoint": 0,
      "property": "manufacturerId",
      "propertyName": "manufacturerId",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Manufacturer ID",
      "stateless": false,
      "commandClassVersion": 2,
      "min": 0,
      "max": 65535,
      "list": false,
      "value": 12,
      "lastUpdate": 1650842468929,
      "newValue": 12
    },
    {
      "id": "15-114-0-productType",
      "nodeId": 15,
      "commandClass": 114,
      "commandClassName": "Manufacturer Specific",
      "endpoint": 0,
      "property": "productType",
      "propertyName": "productType",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Product type",
      "stateless": false,
      "commandClassVersion": 2,
      "min": 0,
      "max": 65535,
      "list": false,
      "value": 514,
      "lastUpdate": 1650842468930,
      "newValue": 514
    },
    {
      "id": "15-114-0-productId",
      "nodeId": 15,
      "commandClass": 114,
      "commandClassName": "Manufacturer Specific",
      "endpoint": 0,
      "property": "productId",
      "propertyName": "productId",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Product ID",
      "stateless": false,
      "commandClassVersion": 2,
      "min": 0,
      "max": 65535,
      "list": false,
      "value": 1,
      "lastUpdate": 1650842468930,
      "newValue": 1
    },
    {
      "id": "15-128-0-level",
      "nodeId": 15,
      "commandClass": 128,
      "commandClassName": "Battery",
      "endpoint": 0,
      "property": "level",
      "propertyName": "level",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Battery level",
      "stateless": false,
      "commandClassVersion": 1,
      "min": 0,
      "max": 100,
      "unit": "%",
      "list": false,
      "value": 100,
      "lastUpdate": 1650842468930,
      "newValue": 100
    },
    {
      "id": "15-128-0-isLow",
      "nodeId": 15,
      "commandClass": 128,
      "commandClassName": "Battery",
      "endpoint": 0,
      "property": "isLow",
      "propertyName": "isLow",
      "type": "boolean",
      "readable": true,
      "writeable": false,
      "label": "Low battery level",
      "stateless": false,
      "commandClassVersion": 1,
      "list": false,
      "value": false,
      "lastUpdate": 1650842468931,
      "newValue": false
    },
    {
      "id": "15-132-0-wakeUpInterval",
      "nodeId": 15,
      "commandClass": 132,
      "commandClassName": "Wake Up",
      "endpoint": 0,
      "property": "wakeUpInterval",
      "propertyName": "wakeUpInterval",
      "type": "number",
      "readable": false,
      "writeable": true,
      "label": "Wake Up interval",
      "default": 3600,
      "stateless": false,
      "commandClassVersion": 2,
      "min": 600,
      "max": 86400,
      "step": 60,
      "list": false,
      "value": 600,
      "lastUpdate": 1650842468931,
      "newValue": 600
    },
    {
      "id": "15-132-0-controllerNodeId",
      "nodeId": 15,
      "commandClass": 132,
      "commandClassName": "Wake Up",
      "endpoint": 0,
      "property": "controllerNodeId",
      "propertyName": "controllerNodeId",
      "type": "any",
      "readable": true,
      "writeable": false,
      "label": "Node ID of the controller",
      "stateless": false,
      "commandClassVersion": 2,
      "list": false,
      "value": 1,
      "lastUpdate": 1650842468932,
      "newValue": 1
    },
    {
      "id": "15-134-0-libraryType",
      "nodeId": 15,
      "commandClass": 134,
      "commandClassName": "Version",
      "endpoint": 0,
      "property": "libraryType",
      "propertyName": "libraryType",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Library type",
      "stateless": false,
      "commandClassVersion": 2,
      "list": true,
      "states": [
        {
          "text": "Unknown",
          "value": 0
        },
        {
          "text": "Static Controller",
          "value": 1
        },
        {
          "text": "Controller",
          "value": 2
        },
        {
          "text": "Enhanced Slave",
          "value": 3
        },
        {
          "text": "Slave",
          "value": 4
        },
        {
          "text": "Installer",
          "value": 5
        },
        {
          "text": "Routing Slave",
          "value": 6
        },
        {
          "text": "Bridge Controller",
          "value": 7
        },
        {
          "text": "Device under Test",
          "value": 8
        },
        {
          "text": "N/A",
          "value": 9
        },
        {
          "text": "AV Remote",
          "value": 10
        },
        {
          "text": "AV Device",
          "value": 11
        }
      ],
      "value": 3,
      "lastUpdate": 1650842468932,
      "newValue": 3
    },
    {
      "id": "15-134-0-protocolVersion",
      "nodeId": 15,
      "commandClass": 134,
      "commandClassName": "Version",
      "endpoint": 0,
      "property": "protocolVersion",
      "propertyName": "protocolVersion",
      "type": "string",
      "readable": true,
      "writeable": false,
      "label": "Z-Wave protocol version",
      "stateless": false,
      "commandClassVersion": 2,
      "list": false,
      "value": "4.61",
      "lastUpdate": 1650842468933,
      "newValue": "4.61"
    },
    {
      "id": "15-134-0-firmwareVersions",
      "nodeId": 15,
      "commandClass": 134,
      "commandClassName": "Version",
      "endpoint": 0,
      "property": "firmwareVersions",
      "propertyName": "firmwareVersions",
      "type": "string[]",
      "readable": true,
      "writeable": false,
      "label": "Z-Wave chip firmware versions",
      "stateless": false,
      "commandClassVersion": 2,
      "list": false,
      "value": [
        "5.18"
      ],
      "lastUpdate": 1650842468934,
      "newValue": [
        "5.18"
      ]
    },
    {
      "id": "15-134-0-hardwareVersion",
      "nodeId": 15,
      "commandClass": 134,
      "commandClassName": "Version",
      "endpoint": 0,
      "property": "hardwareVersion",
      "propertyName": "hardwareVersion",
      "type": "number",
      "readable": true,
      "writeable": false,
      "label": "Z-Wave chip hardware version",
      "stateless": false,
      "commandClassVersion": 2,
      "list": false,
      "value": 255,
      "lastUpdate": 1650842468934,
      "newValue": 255
    }
  ],
  "groups": [
    {
      "text": "Lifeline",
      "endpoint": 0,
      "value": 1,
      "maxNodes": 5,
      "isLifeline": true,
      "multiChannel": false
    },
    {
      "text": "Basic set",
      "endpoint": 0,
      "value": 2,
      "maxNodes": 5,
      "isLifeline": false,
      "multiChannel": false
    }
  ],
  "neighbors": [],
  "ready": true,
  "available": true,
  "hassDevices": {},
  "failed": false,
  "inited": true,
  "hexId": "0x000c-0x0202-0x0001",
  "dbLink": "https://devices.zwave-js.io/?jumpTo=0x000c:0x0202:0x0001:5.18",
  "manufacturerId": 12,
  "productId": 1,
  "productType": 514,
  "deviceConfig": {
    "filename": "/usr/src/app/store/.config-db/devices/0x000c/hs-fs100_flex.json",
    "isEmbedded": true,
    "manufacturer": "HomeSeer Technologies",
    "manufacturerId": 12,
    "label": "HS-FS100+",
    "description": "Flex Sensor",
    "devices": [
      {
        "productType": 514,
        "productId": 1
      }
    ],
    "firmwareVersion": {
      "min": "5.18",
      "max": "255.255"
    },
    "paramInformation": {
      "_map": {}
    },
    "metadata": {
      "inclusion": "Inclusion: Add the device into your network by a Z-Wave certified controller. HS-FS100+ supports the latest S2 security offered by Z-Wave certified controllers. If your controller supports S2, please refer to the user guide of the controller for detailed instructions on adding devices to the network. The device can be added using the traditional method for Z-Wave as follows:\n1. Place your controller into Inclusion (Add) mode by following the controller manufacturer's instructions.\n2. When the controller is ready, single click the button of HS-FS100+. The controller should indicate that the new device was added successfully. If the controller shows it failed, repeat the procedure",
      "exclusion": "Exclusion: Remove the device from your network by a Z-Wave certified controller. HS-FS100+ supports the latest S2 security offered by Z-Wave certified controllers. If your controller supports S2, please refer to the user guide of the controller for detailed instructions on removing devices from the network. The device can be removed using the traditional method for Z-Wave as follows:\n1. Place your controller into Exclusion mode by following the controller manufacturer's instructions.\n2. When the controller is ready, single click the button of HS-FS100+. The controller should indicate that the device was removed successfully. If the controller shows it failed, repeat the procedure",
      "reset": "Use this procedure to reset Flex Sensor to factory settings when the Z-Wave controller is missing or otherwise inoperable.\n\nPress and hold the Z-Wave button on the sensor body for 10 seconds. If successful, the LED will flash 5 times",
      "manual": "https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3050/HS-FS100-Manual%20081418.pdf"
    }
  },
  "productLabel": "HS-FS100+",
  "productDescription": "Flex Sensor",
  "manufacturer": "HomeSeer Technologies",
  "firmwareVersion": "5.18",
  "protocolVersion": 3,
  "zwavePlusVersion": 1,
  "zwavePlusNodeType": 0,
  "zwavePlusRoleType": 6,
  "nodeType": 1,
  "endpointsCount": 0,
  "endpointIndizes": [],
  "isSecure": false,
  "security": "None",
  "supportsSecurity": false,
  "supportsBeaming": true,
  "isControllerNode": false,
  "isListening": false,
  "isFrequentListening": false,
  "isRouting": true,
  "keepAwake": false,
  "maxDataRate": 100000,
  "deviceClass": {
    "basic": 4,
    "generic": 7,
    "specific": 1
  },
  "deviceId": "12-1-514",
  "status": "Asleep",
  "interviewStage": "Complete",
  "lastActive": 1651153054787,
  "minBatteryLevel": 100,
  "batteryLevels": [
    100
  ],
  "statistics": {
    "commandsTX": 1,
    "commandsRX": 5280,
    "commandsDroppedRX": 0,
    "commandsDroppedTX": 0,
    "timeoutResponse": 0
  },
  "_name": "hvac_fan (furnace)",
  "lastReceive": 1651153054787,
  "errorReceive": false,
  "errorTransmit": false
}

Here is a zwavejs debug log for the light turning on

2022-04-28T10:46:03.720Z SERIAL « 0x010f0004000f097105000000ff1401006c                                (17 bytes)
2022-04-28T10:46:03.722Z CNTRLR   [Node 015] [~] [Notification] notificationMode: "push" [Endpoint 0] [internal]
                                   => "push"
2022-04-28T10:46:03.722Z SERIAL » [ACK]                                                                   (0x06)
2022-04-28T10:46:03.723Z DRIVER « [Node 015] [REQ] [ApplicationCommand]
                                  └─[NotificationCCReport]
                                      notification type:   Light sensor
                                      notification status: 255
                                      notification state:  Light detected
2022-04-28T10:46:03.725Z CNTRLR   [Node 015] [~] [Notification] Light sensor[Light detection status [Endpoint 0]
                                  ]: 1 => 1
2022-04-28T10:46:03.890Z SERIAL « 0x01090004000f033003ff32                                            (11 bytes)
2022-04-28T10:46:03.891Z CNTRLR   [Node 015] [Binary Sensor] Any: metadata updated                  [Endpoint 0]
2022-04-28T10:46:03.892Z CNTRLR   [Node 015] [~] [Binary Sensor] Any: false => true                 [Endpoint 0]
2022-04-28T10:46:03.892Z SERIAL » [ACK]                                                                   (0x06)
2022-04-28T10:46:03.893Z DRIVER « [Node 015] [REQ] [ApplicationCommand]
                                  └─[BinarySensorCCReport]
                                      type:  Any
                                      value: true

Here is a zwavejs debug log for the light turning off

2022-04-28T11:19:13.735Z SERIAL « 0x01100004000f0a7105000000ff1400010272                              (18 bytes)
2022-04-28T11:19:13.735Z CNTRLR   [Node 015] [~] [Notification] notificationMode: "push" [Endpoint 0] [internal]
                                   => "push"
2022-04-28T11:19:13.736Z SERIAL » [ACK]                                                                   (0x06)
2022-04-28T11:19:13.736Z DRIVER « [Node 015] [REQ] [ApplicationCommand]
                                  └─[NotificationCCReport]
                                      notification type:   20
                                      notification status: 255
                                      notification state:  idle
                                      event parameters:    0x02
2022-04-28T11:19:13.905Z SERIAL « 0x01090004000f03300300cd                                            (11 bytes)
2022-04-28T11:19:13.906Z CNTRLR   [Node 015] [Binary Sensor] Any: metadata updated                  [Endpoint 0]
2022-04-28T11:19:13.907Z CNTRLR   [Node 015] [~] [Binary Sensor] Any: true => false                 [Endpoint 0]
2022-04-28T11:19:13.907Z SERIAL » [ACK]                                                                   (0x06)
2022-04-28T11:19:13.908Z DRIVER « [Node 015] [REQ] [ApplicationCommand]
                                  └─[BinarySensorCCReport]
                                      type:  Any
                                      value: false

I have another one of these that is looking at the LED on a generator panel to see if there is utility power. This one only turns off if I lose utility power - as a result I have no logs for this.

utility power

The on event:

2022-04-28T10:46:03.720Z SERIAL « 0x010f0004000f097105000000ff1401006c                                (17 bytes)
2022-04-28T10:46:03.722Z CNTRLR   [Node 015] [~] [Notification] notificationMode: "push" [Endpoint 0] [internal]
                                   => "push"
2022-04-28T10:46:03.722Z SERIAL » [ACK]         2022-04-28T10:46:03.723Z DRIVER « [Node 015] [REQ] [ApplicationCommand]
                                  └─[NotificationCCReport]
                                      notification type:   Light sensor
                                      notification status: 255
                                      notification state:  Light detected
2022-04-28T10:46:03.725Z CNTRLR   [Node 015] [~] [Notification] Light sensor[Light detection status [Endpoint 0]
                                  ]: 1 => 1

This shows the device sending a notification for the Light sensor notification type, with value “Light detected”. This notification is mapped to the “on” state for entity with the same name.

The off event:

2022-04-28T11:19:13.735Z SERIAL « 0x01100004000f0a7105000000ff1400010272                              (18 bytes)
2022-04-28T11:19:13.735Z CNTRLR   [Node 015] [~] [Notification] notificationMode: "push" [Endpoint 0] [internal]
                                   => "push"
2022-04-28T11:19:13.736Z SERIAL » [ACK]                                                                   (0x06)
2022-04-28T11:19:13.736Z DRIVER « [Node 015] [REQ] [ApplicationCommand]
                                  └─[NotificationCCReport]
                                      notification type:   20
                                      notification status: 255
                                      notification state:  idle
                                      event parameters:    0x02
2022-04-28T11:19:13.905Z SERIAL « 0x01090004000f03300300cd

The device is sending an “idle” event. Normally that would cause the light detection entity to go back to “off”. However, there’s extra info. The notification has an event parameter specified, 0x02. If we look at the Z-Wave spec:

The event parameter for the “idle” notification is the notification value for the variable going idle. The device says to clear value 0x2, which corresponds to “Light color transition detected”, and is not even a state variable. The event parameter value should be 0x1, which corresponds to the variable “Light detected”, aka your non-working entity. Unlike the on event, we don’t see the driver emit an Idle notification for the Light detected variable. I assume this is because the event data is wrong, instructing the driver to clear the incorrect notification.

In short, it looks like a device bug to me. I would submit an issue to node-zwave-js with this information for confirmation. If this analysis is correct, and this matters to you, I think you should ask the manufacturer to fix it.

Thanks for the analysis, I will do that and link the issue here.

What’s interesting is the device does claim to be able to detect color change.

The light sensor can be mounted over any indicator light and will notify your controller with an event type (Light Detected No�fica�on), 
if it detects color it will send a different event type (Light Color Change Detected) command and will beep 5 times. A “No Event” 
command will be sent to the controller when light is no longer detected. The sensor will check for light every 60 seconds (on battery 
power) or every 400ms (on line power).

It might, but the color change is a Notification event, as opposed to a state variable. There’s no idling for events (but maybe HomeSeer is doing that), and from the perspective of the Z-Wave JS driver and HA, it’s also an event. It would show up in HA as a zwave_js_notification event.

Hi, I’m late to the game but I also have been having this exact problem with my HS-FS100-L. Is there any work-around for getting this to work that doesn’t involve the manufacturer?

For me, I got around it by adding it as a device on my Universal Devices ISY-994i Z-Wave module, and now Home Assistant sees it as another device on my ISY-994i integration. I was hoping to connect it directly to my Z-Wave USB dongle on my Home Assistant machine, but since I have a lot of Insteon devices I will be keeping the ISY-994i running for quite a while.

Yes, go into the device config in HA and look for disabled sensors. I think it’s called “sensor”, enable that, restart HA and use that one - it works fine.

entity: sensor.hsfsb_light_sensor_light_detection_status
entity: binary_sensor.hsfsb_light_sensor_light_detected

There are the 2 sensors that I see on the device. The top one, “light_sensor_light_detection_status” is the one that was disabled by default - I enabled that one. It went from “Idle” to “Light detected”. The other one, “light_sensor_light_detected”, is set to “On”.

Unfortunately, they both stay at “On” and “Light detected” and never turn off once the light goes away.

I know the communications to the device are working because the temperature sensor is accurate and updates its readings throughout the day.

Any ideas on how to debug this?

Okay, replying to myself here - it appears that sensor “light_sensor_light_detection_status” seems to update whenever it sees new light; I notice this on the Entities card that the time it last changed gets updated. It just never changes from anything other than “Light detected”. So I may have to figure out how to trigger something else based on the history.

EDIT: It seems it doesn’t track when the light turns off - only when it goes from “off to on”. I can only tell this happens by looking at the time passed on the entity card when I click on the entity. When the light goes from on to off, nothing appears to be picked up by HomeAssistant.

My use case is that I have a Residio/Total Connect cellular communication module that is not getting good reception. It has a red “fault light” that lights up whenever it is unable to connect to the service. So I’m using Home Assistant to automatically track whenever this happens, and gather statistics over what time period this happens while I try to re-situate the antenna. So knowing the duruation the fault light is off is just as important as knowing when it is on.

I suppose this is not really the intended use of this device - I think it’s meant just to alert people when the device sees a light turn on.

What I still don’t understand is how the ISY994i seems to know when the light turns off - it’s clearly sending a signal for both transitions, but the Home Assistant Z-Wave integration only sees one direction.

EDIT: Okay, I finally understand freshcoast’s post above - so it appears Universal Devices (ISY994i) must have just hacked around the behavior to get it to work. So for now I’ll keep the device paired with my IS994i and use it that way.