ZWave-JS Kwikset 910 Manual status updater

Tags: #<Tag:0x00007f326451bab0> #<Tag:0x00007f326451b8d0>

Some of the older Kwikset 910 touchpad locks do not update the device’s status when the lock is manually operated. This automation will detect the activity from the lock on the sensor.alarmType and send a command via the zwave_js.refresh_value service to update the lock status’ value.
This new version no longer requires zwavejs2mqtt to function and this is the preferred method. It will work with either zwavejs or zwavejs2mqtt.
Many of the locks do not automatically set up the lifeline association to the controller. If the alarmType sensor does not update it may be necessary to set group 1 association to the controller node.

blueprint:
  name: Kwikset 910 Updater
  description: Updates the manual status of 910 locks.
  domain: automation
  input:
    alarmtype_sensor:
      name: alarmType Sensor for lock
      description: alarmType sensor must be enabled on lock device.
      selector:
        entity:
          domain: sensor
          integration: zwave_js
    lock_entity:
      name: Lock Entity
      description: Lock entity.
      selector:
        entity:
          domain: lock
          integration: zwave_js
trigger:
  - platform: state
    entity_id: !input alarmtype_sensor
action:
  - service: zwave_js.refresh_value
    target:
      entity_id: !input lock_entity
5 Likes

Hi raz0rf0x,

This is an absolute lifesaver for me, I love the new ZWave implementation, but it wasn’t updating my lock and I couldn’t figure out how to do it.

I tried to figure this out myself by reading the API info but I am pretty amateur with MQTT. Is there any way to have this pull the battery status too? I’ve noticed that my battery updates are pretty sporadic. I noticed in the OZW implementation, when the alarm state changed, it did a RefreshClassValue. Maybe there’s something similar with this one?

EDIT: I figured it out. Added an additional automation with


payload_template: '{"args": [{"nodeId":{{ node_id }},"commandClass": 128,"endpoint":0,"property":"level"}]}'

Thanks!

Thanks for this! It got me looking around and I realized with zwavejs we lost the lock alarmtype status translations. Tonight I put this together to make this happen, I also updated my notification automation to include messages that I care about. I have not fully tested this (mainly because its hard to generate some of these errors), I’ll come back and edit this if I find any problems.

sensor:

  - platform: template
    sensors:
      front_door_lock_status:
        friendly_name: "Front door lock status"
        value_template: >-
          {% if is_state('sensor.front_door_lock_alarmtype', '0') %}
            No Status Reported
          {% elif is_state('sensor.front_door_lock_alarmtype', '9') %}
            Lock Jammed
          {% elif is_state('sensor.front_door_lock_alarmtype', '16') %}
            Keypad Unlock
          {% elif is_state('sensor.front_door_lock_alarmtype', '17') %}
            Keypad Lock Jammed
          {% elif is_state('sensor.front_door_lock_alarmtype', '18') %}
            Keypad Lock
          {% elif is_state('sensor.front_door_lock_alarmtype', '19') %}
            Keypad Unlock
          {% elif is_state('sensor.front_door_lock_alarmtype', '21') %}
            Manual Lock
          {% elif is_state('sensor.front_door_lock_alarmtype', '22') %}
            Manual Unlock
          {% elif is_state('sensor.front_door_lock_alarmtype', '23') %}
            RF Lock Jammed
          {% elif is_state('sensor.front_door_lock_alarmtype', '24') %}
            RF Lock
          {% elif is_state('sensor.front_door_lock_alarmtype', '25') %}
            RF Unlock
          {% elif is_state('sensor.front_door_lock_alarmtype', '26') %}
            Auto Lock Jammed
          {% elif is_state('sensor.front_door_lock_alarmtype', '27') %}
            Auto Lock
          {% elif is_state('sensor.front_door_lock_alarmtype', '32') %}
            All Codes Deleted
          {% elif is_state('sensor.front_door_lock_alarmtype', '33') %}
            Code Deleted
          {% elif is_state('sensor.front_door_lock_alarmtype', '112') %}
            Code Changed
          {% elif is_state('sensor.front_door_lock_alarmtype', '113') %}
            Duplicate Code
          {% elif is_state('sensor.front_door_lock_alarmtype', '161') %}
            Bad Code Entered
          {% elif is_state('sensor.front_door_lock_alarmtype', '162') %}
            Lock Code Attempt Outside of Schedule
          {% elif is_state('sensor.front_door_lock_alarmtype', '167') %}
            Battery Low
          {% elif is_state('sensor.front_door_lock_alarmtype', '168') %}
            Battery Critical
          {% elif is_state('sensor.front_door_lock_alarmtype', '169') %}
            Battery Too Low To Operate Lock
          {% else %}
            Unknown alarm type: {{ states('sensor.front_door_lock_alarmtype') }}
          {% endif %}

automation:

- alias: Front Door notification
  initial_state: true
  trigger:
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '9'
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '17' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '23' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '26' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '32' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '33' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '112' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '113' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '161'      
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '162' 
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '168'      
  - platform: state
    entity_id: sensor.front_door_lock_alarmtype
    to: '169'
  action:
  - service: notify.chris_sms
    data:
      title: Front Door Alarm
      message: 'Lock status has changed to: {{ states.front_door_lock_status.state }}'