Zwave_js.value_updated command class NotificationCCReport

Need some assistance determining the correct parameters. Trying to get this to trigger when the notification comes in. I think the command class is correct, totally guessing at the property name.

template:
  - trigger:
      - platform: zwave_js.value_updated
        entity_id:
          - binary_sensor.garage_door_1_sensor
        command_class: 113
        property: "Access Control"
    sensor:
      - name: "garage_door_1_last_updated_sensor"
        state: "{{ now() }} "

2022-05-27T18:08:14.069Z CNTRLR   [Node 005] [~] [Notification] notificationMode: "push" [Endpoint 0] [internal]
                                   => "push"
2022-05-27T18:08:14.069Z SERIAL » [ACK]                                                                   (0x06)
2022-05-27T18:08:14.070Z DRIVER « [Node 005] [REQ] [ApplicationCommand]
                                  └─[NotificationCCReport]
                                      notification type:   Access Control
                                      notification status: 255
                                      notification state:  Window/door is closed
2022-05-27T18:08:14.090Z SERIAL « 0x010a0004000504300300ff3c                                          (12 bytes)

What’s the device? Make/model

  "productLabel": "TILT-ZWAVE2.5-ECO",
  "productDescription": "Z-wave Plus Gold Plated Reliability Garage Door Tilt Sensor",
  "manufacturer": "Ecolink",
  "firmwareVersion": "10.1",

Is there a specific reason you aren’t triggering on the state of the binary sensor?

Yes, I ran into an issue yesterday with an update being missed (just created the topic)

Ecolink Garage Door Tilt Sensor - NotificationCCReport not processed properly? - Configuration / Z-Wave - Home Assistant Community (home-assistant.io)

So as part of the mitigation, if the door is open for more than 30 minutes, I’m going to submit a refresh_value which should get processed at the next configured wakeup interval of 60 minutes to verify the garage door is really open. Since the poll may result in the value not changing if it really is open, I want to trigger off the NotificationCCReport and grab the time at which the poll was actually executed.

And then if the door is open for more than 30 minutes and the NotificationCCReport ocurred after the initial trigger, then I’ll be very sure it’s actually open. This is better than being an hour away from home believing the garage door is open, when in fact it is closed.

If the entity, which is based on that exact Notification Report, is not being updated, then it is more than likely you will never see it with the event automation either. They use the exact same event. Your root cause is probably that HA never saw the notification to begin with (see my reply in the other post).

Refreshing the value of notifications doesn’t always work. Most notification devices are Push notification sensors and they aren’t required to respond with their current state. It just depends on the device. It would mean you’d have to enable a very low wake up interval in order to receive the command, killing the battery life.

Those items aside. Do you know what the property name should be?

You have it right, but this value also has a property_key. Multiple places you can find this information out.


In the other log you posted:

2022-05-27T22:11:46.479Z CNTRLR   [Node 005] [~] [Notification] Access Control[Door state]: 22 => 2 [Endpoint 0]
                                  2

[Notification] Property[Property Key]


In the unique ID from entity registry you posted in the other thread:

"unique_id": "4060453304.5-113-0-Access Control-Door state.22"
...-Property-PropertyKey.StateKey

zwavejs2mqtt control panel:

Yellow is the property, Green is the property_key. Not all values have property keys.


HA Device Diagnostic (download from Device page):

If the value is backed by an entity, it will be shown near the top:

      {
        "domain": "binary_sensor",
        "entity_id": "binary_sensor.front_door_open",
        "original_name": "Recessed Door Window Sensor: Access Control - Window/door is open",
        "original_device_class": "door",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "primary_value": {
          "command_class": 113,
          "command_class_name": "Notification",
          "endpoint": 0,
          "property": "Access Control",
          "property_name": "Access Control",
          "property_key": "Door state",
          "property_key_name": "Door state",
          "state_key": 22
        }
      },

That tells you which value modifies the state of the entity. If there’s no entity for a value (or it’s not the “primary” value), it will be also be listed under all of the known values.

    "state": {
      "values": [
        ...
        {
          "endpoint": 0,
          "commandClass": 113,
          "commandClassName": "Notification",
          "property": "Access Control",
          "propertyKey": "Door state",
          "propertyName": "Access Control",
          "propertyKeyName": "Door state",
          "ccVersion": 4,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Door state",
            "ccSpecific": {
              "notificationType": 6
            },
            "min": 0,
            "max": 255,
            "states": {
              "22": "Window/door is open",
              "23": "Window/door is closed"
            }
          },
          "value": 23
        },
        ...
      ],
1 Like

Thank you very much for the detailed explanation.

Here is the final syntax that works well.

template:
  - trigger:
      - platform: homeassistant
        event: start
      - platform: zwave_js.value_updated
        entity_id:
          - binary_sensor.garage_door_sensor
        command_class: 113
        property: "Access Control"
        property_key: "Door state"
    sensor:
      - name: "garage_door_last_updated_sensor"
        state: "{{ now() }} "

@PeteRage, thanks much!! Works like a charm!

1 Like