KeyMaster Z-Wave lock manager and scheduler

Unfortunately that is all I am getting in the logs. Default level is set to warning. I don’t see any activity in OZW admin either.

Does it work if you set the code via dev-tools->Services ozw.set_usercode ?

I am not seeing any ozw activity which may be an indication of how my logging is set up. The log is working within OZW as I see updates when manually doing things but I am not seeing anything outgoing from HA. I’ll keep poking around. Sorry for the delay, I apparently responded too much for my first day. :smiley:

So maybe a little bit of progress here. I added an addition code slot, one that did not currently contain a code. The code was in fact added to the lock in the correct spot, but it is still not saying it is synchronized. Additionally, disabling the code in lovelace does not disable the code on the lock. So it seems that at least adding is working but the other parts are not.

1 Like

Adding a code and deleting a code use the same bool so they should both work, unless your lock is having RF issues, or if for some reason the bool is flipping to off at some point.

I seem to be running into a weird issue with having multiple locks. So I’m currently working with two locks, frontdoor and backdoor. All works well when I generate the files for frontdoor, but when I go to generate files for backdoor, this is what shows up under my entities for sensor_LOCKNAME_code_slot_*.

Seems like it’s just replacing the name of the entity into the frontdoor sensor. So I have a non-existent sensor.backdoor_code_slot_*. Been scratching my head about this!

1 Like

Ooops, I see the problem, I’ll get a PR in to fix it.

Thanks! I was trying to find the problem but had to go to work :sob:

Total noob here, but I was running into configuration issues, including the last one where it said I didn’t have MQTT. From the github/instructions in the post, I didn’t see any pre-requisite that you had to have MQTT installed. Is it truly required? If so, it may make sense to add it to the instructions.

Also, I added my Schlage be469 and set up my integration, but noticed a few issues:

  1. I didn’t see a User Code sensor for my lock - the dropdown only listed the “alarm_level” entity. Is that the right one?
  2. When I created the integration, it did not create a subfolder under custom_components. What did I do wrong?

Post logs of the error please. MQTT is not required for this integration.

If it’s listed, it’s the right one the drop down is filtered so you can only choose valid entities.

You will have to explain.

I can’t see the error any more because I installed MQTT, but it happened when I tried to add the binary_sensor in the OP, but it does specify that the platform is “mqtt”. Once I installed the integration it went away. I’m using the default z-wave integration instead of OZW.

As for the entities - thanks! I did see a mention that in the OZW integration this entity might be disabled, so I thought I might check to see if it’s disabled, but it just didn’t exist.

For the last one, I think I misread the folder name and thought it would create a folder for each lock under the /custom_components/lock-manager/ folder. I see it’s in another folder now, sorry!

Edit: Added the lovelace piece, but nothing appears to be working, I just get a bunch of “entity not found”

here’s what it generated:

 - title: back_door Codes and Configuration
    path: keypad-back_door
    icon: 'mdi:lock-smart'
    panel: false
    badges:
      - input_boolean.back_door_lock_notifications
      - input_boolean.back_door_dooraccess_notifications
      - input_boolean.back_door_garageacess_notifications
      - entity: lock.door_lock_backdoor
      - entity: binary_sensor.back_door_contact_sensor
      - entity: input_text.back_door_status_report
    cards:
      - type: vertical-stack
        cards:
          - content: |
              ## Code 3
            type: markdown
          - type: entities
            show_header_toggle: false
            entities:
              - entity: input_text.back_door_name_3
              - entity: input_text.back_door_pin_3
              - entity: input_boolean.enabled_back_door_3
              - entity: input_boolean.notify_back_door_3
              - type: divider
              - entity: binary_sensor.active_back_door_3
                state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Debug
                open: true
                entities:
                  - entity: sensor.back_door_code_slot_3
                    state_color: true
                  - type: divider
                  - entity: binary_sensor.pin_synched_back_door_3
                    state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Advanced Options
                entities:
                  - entity: input_boolean.reset_codeslot_back_door_3
                  - type: divider
                  - entity: input_boolean.accesslimit_back_door_3
                  - entity: input_number.accesscount_back_door_3
                  - type: divider
                  - entity: input_boolean.daterange_back_door_3
                  - entity: input_datetime.start_date_back_door_3
                  - entity: input_datetime.end_date_back_door_3
                  - type: divider
                  - input_boolean.sun_back_door_3
                  - input_boolean.sun_inc_back_door_3
                  - input_datetime.sun_start_date_back_door_3
                  - input_datetime.sun_end_date_back_door_3
                  - type: divider
                  - input_boolean.mon_back_door_3
                  - input_boolean.mon_inc_back_door_3
                  - input_datetime.mon_start_date_back_door_3
                  - input_datetime.mon_end_date_back_door_3
                  - type: divider
                  - input_boolean.tue_back_door_3
                  - input_boolean.tue_inc_back_door_3
                  - input_datetime.tue_start_date_back_door_3
                  - input_datetime.tue_end_date_back_door_3
                  - type: divider
                  - input_boolean.wed_back_door_3
                  - input_boolean.wed_inc_back_door_3
                  - input_datetime.wed_start_date_back_door_3
                  - input_datetime.wed_end_date_back_door_3
                  - type: divider
                  - input_boolean.thu_back_door_3
                  - input_boolean.thu_inc_back_door_3
                  - input_datetime.thu_start_date_back_door_3
                  - input_datetime.thu_end_date_back_door_3
                  - type: divider
                  - input_boolean.fri_back_door_3
                  - input_boolean.fri_inc_back_door_3
                  - input_datetime.fri_start_date_back_door_3
                  - input_datetime.fri_end_date_back_door_3
                  - type: divider
                  - input_boolean.sat_back_door_3
                  - input_boolean.sat_inc_back_door_3
                  - input_datetime.sat_start_date_back_door_3
                  - input_datetime.sat_end_date_back_door_3
      - type: vertical-stack
        cards:
          - content: |
              ## Code 4
            type: markdown
          - type: entities
            show_header_toggle: false
            entities:
              - entity: input_text.back_door_name_4
              - entity: input_text.back_door_pin_4
              - entity: input_boolean.enabled_back_door_4
              - entity: input_boolean.notify_back_door_4
              - type: divider
              - entity: binary_sensor.active_back_door_4
                state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Debug
                open: true
                entities:
                  - entity: sensor.back_door_code_slot_4
                    state_color: true
                  - type: divider
                  - entity: binary_sensor.pin_synched_back_door_4
                    state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Advanced Options
                entities:
                  - entity: input_boolean.reset_codeslot_back_door_4
                  - type: divider
                  - entity: input_boolean.accesslimit_back_door_4
                  - entity: input_number.accesscount_back_door_4
                  - type: divider
                  - entity: input_boolean.daterange_back_door_4
                  - entity: input_datetime.start_date_back_door_4
                  - entity: input_datetime.end_date_back_door_4
                  - type: divider
                  - input_boolean.sun_back_door_4
                  - input_boolean.sun_inc_back_door_4
                  - input_datetime.sun_start_date_back_door_4
                  - input_datetime.sun_end_date_back_door_4
                  - type: divider
                  - input_boolean.mon_back_door_4
                  - input_boolean.mon_inc_back_door_4
                  - input_datetime.mon_start_date_back_door_4
                  - input_datetime.mon_end_date_back_door_4
                  - type: divider
                  - input_boolean.tue_back_door_4
                  - input_boolean.tue_inc_back_door_4
                  - input_datetime.tue_start_date_back_door_4
                  - input_datetime.tue_end_date_back_door_4
                  - type: divider
                  - input_boolean.wed_back_door_4
                  - input_boolean.wed_inc_back_door_4
                  - input_datetime.wed_start_date_back_door_4
                  - input_datetime.wed_end_date_back_door_4
                  - type: divider
                  - input_boolean.thu_back_door_4
                  - input_boolean.thu_inc_back_door_4
                  - input_datetime.thu_start_date_back_door_4
                  - input_datetime.thu_end_date_back_door_4
                  - type: divider
                  - input_boolean.fri_back_door_4
                  - input_boolean.fri_inc_back_door_4
                  - input_datetime.fri_start_date_back_door_4
                  - input_datetime.fri_end_date_back_door_4
                  - type: divider
                  - input_boolean.sat_back_door_4
                  - input_boolean.sat_inc_back_door_4
                  - input_datetime.sat_start_date_back_door_4
                  - input_datetime.sat_end_date_back_door_4
      - type: vertical-stack
        cards:
          - content: |
              ## Code 5
            type: markdown
          - type: entities
            show_header_toggle: false
            entities:
              - entity: input_text.back_door_name_5
              - entity: input_text.back_door_pin_5
              - entity: input_boolean.enabled_back_door_5
              - entity: input_boolean.notify_back_door_5
              - type: divider
              - entity: binary_sensor.active_back_door_5
                state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Debug
                open: true
                entities:
                  - entity: sensor.back_door_code_slot_5
                    state_color: true
                  - type: divider
                  - entity: binary_sensor.pin_synched_back_door_5
                    state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Advanced Options
                entities:
                  - entity: input_boolean.reset_codeslot_back_door_5
                  - type: divider
                  - entity: input_boolean.accesslimit_back_door_5
                  - entity: input_number.accesscount_back_door_5
                  - type: divider
                  - entity: input_boolean.daterange_back_door_5
                  - entity: input_datetime.start_date_back_door_5
                  - entity: input_datetime.end_date_back_door_5
                  - type: divider
                  - input_boolean.sun_back_door_5
                  - input_boolean.sun_inc_back_door_5
                  - input_datetime.sun_start_date_back_door_5
                  - input_datetime.sun_end_date_back_door_5
                  - type: divider
                  - input_boolean.mon_back_door_5
                  - input_boolean.mon_inc_back_door_5
                  - input_datetime.mon_start_date_back_door_5
                  - input_datetime.mon_end_date_back_door_5
                  - type: divider
                  - input_boolean.tue_back_door_5
                  - input_boolean.tue_inc_back_door_5
                  - input_datetime.tue_start_date_back_door_5
                  - input_datetime.tue_end_date_back_door_5
                  - type: divider
                  - input_boolean.wed_back_door_5
                  - input_boolean.wed_inc_back_door_5
                  - input_datetime.wed_start_date_back_door_5
                  - input_datetime.wed_end_date_back_door_5
                  - type: divider
                  - input_boolean.thu_back_door_5
                  - input_boolean.thu_inc_back_door_5
                  - input_datetime.thu_start_date_back_door_5
                  - input_datetime.thu_end_date_back_door_5
                  - type: divider
                  - input_boolean.fri_back_door_5
                  - input_boolean.fri_inc_back_door_5
                  - input_datetime.fri_start_date_back_door_5
                  - input_datetime.fri_end_date_back_door_5
                  - type: divider
                  - input_boolean.sat_back_door_5
                  - input_boolean.sat_inc_back_door_5
                  - input_datetime.sat_start_date_back_door_5
                  - input_datetime.sat_end_date_back_door_5
      - type: vertical-stack
        cards:
          - content: |
              ## Code 6
            type: markdown
          - type: entities
            show_header_toggle: false
            entities:
              - entity: input_text.back_door_name_6
              - entity: input_text.back_door_pin_6
              - entity: input_boolean.enabled_back_door_6
              - entity: input_boolean.notify_back_door_6
              - type: divider
              - entity: binary_sensor.active_back_door_6
                state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Debug
                open: true
                entities:
                  - entity: sensor.back_door_code_slot_6
                    state_color: true
                  - type: divider
                  - entity: binary_sensor.pin_synched_back_door_6
                    state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Advanced Options
                entities:
                  - entity: input_boolean.reset_codeslot_back_door_6
                  - type: divider
                  - entity: input_boolean.accesslimit_back_door_6
                  - entity: input_number.accesscount_back_door_6
                  - type: divider
                  - entity: input_boolean.daterange_back_door_6
                  - entity: input_datetime.start_date_back_door_6
                  - entity: input_datetime.end_date_back_door_6
                  - type: divider
                  - input_boolean.sun_back_door_6
                  - input_boolean.sun_inc_back_door_6
                  - input_datetime.sun_start_date_back_door_6
                  - input_datetime.sun_end_date_back_door_6
                  - type: divider
                  - input_boolean.mon_back_door_6
                  - input_boolean.mon_inc_back_door_6
                  - input_datetime.mon_start_date_back_door_6
                  - input_datetime.mon_end_date_back_door_6
                  - type: divider
                  - input_boolean.tue_back_door_6
                  - input_boolean.tue_inc_back_door_6
                  - input_datetime.tue_start_date_back_door_6
                  - input_datetime.tue_end_date_back_door_6
                  - type: divider
                  - input_boolean.wed_back_door_6
                  - input_boolean.wed_inc_back_door_6
                  - input_datetime.wed_start_date_back_door_6
                  - input_datetime.wed_end_date_back_door_6
                  - type: divider
                  - input_boolean.thu_back_door_6
                  - input_boolean.thu_inc_back_door_6
                  - input_datetime.thu_start_date_back_door_6
                  - input_datetime.thu_end_date_back_door_6
                  - type: divider
                  - input_boolean.fri_back_door_6
                  - input_boolean.fri_inc_back_door_6
                  - input_datetime.fri_start_date_back_door_6
                  - input_datetime.fri_end_date_back_door_6
                  - type: divider
                  - input_boolean.sat_back_door_6
                  - input_boolean.sat_inc_back_door_6
                  - input_datetime.sat_start_date_back_door_6
                  - input_datetime.sat_end_date_back_door_6
      - type: vertical-stack
        cards:
          - content: |
              ## Code 7
            type: markdown
          - type: entities
            show_header_toggle: false
            entities:
              - entity: input_text.back_door_name_7
              - entity: input_text.back_door_pin_7
              - entity: input_boolean.enabled_back_door_7
              - entity: input_boolean.notify_back_door_7
              - type: divider
              - entity: binary_sensor.active_back_door_7
                state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Debug
                open: true
                entities:
                  - entity: sensor.back_door_code_slot_7
                    state_color: true
                  - type: divider
                  - entity: binary_sensor.pin_synched_back_door_7
                    state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Advanced Options
                entities:
                  - entity: input_boolean.reset_codeslot_back_door_7
                  - type: divider
                  - entity: input_boolean.accesslimit_back_door_7
                  - entity: input_number.accesscount_back_door_7
                  - type: divider
                  - entity: input_boolean.daterange_back_door_7
                  - entity: input_datetime.start_date_back_door_7
                  - entity: input_datetime.end_date_back_door_7
                  - type: divider
                  - input_boolean.sun_back_door_7
                  - input_boolean.sun_inc_back_door_7
                  - input_datetime.sun_start_date_back_door_7
                  - input_datetime.sun_end_date_back_door_7
                  - type: divider
                  - input_boolean.mon_back_door_7
                  - input_boolean.mon_inc_back_door_7
                  - input_datetime.mon_start_date_back_door_7
                  - input_datetime.mon_end_date_back_door_7
                  - type: divider
                  - input_boolean.tue_back_door_7
                  - input_boolean.tue_inc_back_door_7
                  - input_datetime.tue_start_date_back_door_7
                  - input_datetime.tue_end_date_back_door_7
                  - type: divider
                  - input_boolean.wed_back_door_7
                  - input_boolean.wed_inc_back_door_7
                  - input_datetime.wed_start_date_back_door_7
                  - input_datetime.wed_end_date_back_door_7
                  - type: divider
                  - input_boolean.thu_back_door_7
                  - input_boolean.thu_inc_back_door_7
                  - input_datetime.thu_start_date_back_door_7
                  - input_datetime.thu_end_date_back_door_7
                  - type: divider
                  - input_boolean.fri_back_door_7
                  - input_boolean.fri_inc_back_door_7
                  - input_datetime.fri_start_date_back_door_7
                  - input_datetime.fri_end_date_back_door_7
                  - type: divider
                  - input_boolean.sat_back_door_7
                  - input_boolean.sat_inc_back_door_7
                  - input_datetime.sat_start_date_back_door_7
                  - input_datetime.sat_end_date_back_door_7
      - type: vertical-stack
        cards:
          - content: |
              ## Code 8
            type: markdown
          - type: entities
            show_header_toggle: false
            entities:
              - entity: input_text.back_door_name_8
              - entity: input_text.back_door_pin_8
              - entity: input_boolean.enabled_back_door_8
              - entity: input_boolean.notify_back_door_8
              - type: divider
              - entity: binary_sensor.active_back_door_8
                state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Debug
                open: true
                entities:
                  - entity: sensor.back_door_code_slot_8
                    state_color: true
                  - type: divider
                  - entity: binary_sensor.pin_synched_back_door_8
                    state_color: true
              - type: divider
              - type: 'custom:fold-entity-row'
                head:
                  type: section
                  label: Advanced Options
                entities:
                  - entity: input_boolean.reset_codeslot_back_door_8
                  - type: divider
                  - entity: input_boolean.accesslimit_back_door_8
                  - entity: input_number.accesscount_back_door_8
                  - type: divider
                  - entity: input_boolean.daterange_back_door_8
                  - entity: input_datetime.start_date_back_door_8
                  - entity: input_datetime.end_date_back_door_8
                  - type: divider
                  - input_boolean.sun_back_door_8
                  - input_boolean.sun_inc_back_door_8
                  - input_datetime.sun_start_date_back_door_8
                  - input_datetime.sun_end_date_back_door_8
                  - type: divider
                  - input_boolean.mon_back_door_8
                  - input_boolean.mon_inc_back_door_8
                  - input_datetime.mon_start_date_back_door_8
                  - input_datetime.mon_end_date_back_door_8
                  - type: divider
                  - input_boolean.tue_back_door_8
                  - input_boolean.tue_inc_back_door_8
                  - input_datetime.tue_start_date_back_door_8
                  - input_datetime.tue_end_date_back_door_8
                  - type: divider
                  - input_boolean.wed_back_door_8
                  - input_boolean.wed_inc_back_door_8
                  - input_datetime.wed_start_date_back_door_8
                  - input_datetime.wed_end_date_back_door_8
                  - type: divider
                  - input_boolean.thu_back_door_8
                  - input_boolean.thu_inc_back_door_8
                  - input_datetime.thu_start_date_back_door_8
                  - input_datetime.thu_end_date_back_door_8
                  - type: divider
                  - input_boolean.fri_back_door_8
                  - input_boolean.fri_inc_back_door_8
                  - input_datetime.fri_start_date_back_door_8
                  - input_datetime.fri_end_date_back_door_8
                  - type: divider
                  - input_boolean.sat_back_door_8
                  - input_boolean.sat_inc_back_door_8
                  - input_datetime.sat_start_date_back_door_8
                  - input_datetime.sat_end_date_back_door_8

Did you restart after hitting “submit” in the integration UI?

Hey there, yep, I have restarted a few times now trying different things.

I tried to see if maybe it was my pairing that was the issue. I can lock/unlock the door from the UI, but can’t seem to use the Node configuration to change any configuration values (e.g. the PIN code length). Is that normal/expected? Or should I attempt to re-pair? Would that explain the missing entity for User Code?

Please see the wiki.

Ok, so I saw the entry in the Wiki and added the packages to the configuration.yaml according to the pre-install instructions. That helped resolve that issue, but it was showing the allow_automations as Off.

So I followed those instructions in the Additional Steps page, where it shows that you can either got the Easy way or the other way. I deleted the binary_sensor and input_boolean out of the configuration.yaml file, then created a file in the packages for lock_manager_additional.yaml file. Then restarted HA. I then got an error in the log:

Invalid config for [binary_sensor.template]: expected dictionary for dictionary value @ data['sensors']. Got None extra keys not allowed @ data['allow_automation']. Got OrderedDict([('friendly_name', 'Allow Automation'), ('value_template', "{{ is_state('input_boolean.allow_automation_execution', 'on') }}")]). (See ?, line ?).

Not sure why this is happening - it wasn’t when it was in the configuration.yaml file.

Usually a formatting error with the spaces.
Try it like this I just fixed the spacing:

    - platform: template
      sensors:
        allow_automation:
          friendly_name: "Allow Automation"
          value_template: "{{ is_state('input_boolean.allow_automation_execution', 'on') }}" 

Thank you, that worked!

Lastly, on the UI, I’m seeing “Entity not available: sensor.back_door_code_slot_3” for each Code card. I didn’t see that issue in the Wiki - any advice?

Also, is there a way to configure the code PIN length through this?

There’s a PR inbound to patch that error.

No this isn’t a standard option across all locks, ie: Kwikset locks accept 4-8 no need to change a setting.

Ah gotcha, thank you.

So I think the procedure is to “Reset Code Slot” which then allowed me to put in a Name and PIN and enable it and notifications.

For the “PIN Syncronized with the lock”, it shows as “Off” - Is that normal? I’ll be doing some testing tonight to see if any new codes are working in the door, but wanted to make sure I’ve got it set up properly.

It’ll show as ‘off’ when the code slot doesn’t match, there’s an updating coming to fix this up, stay tuned.

Ah ok, sorry if this has been all addressed before, I always just figure I’m doing something wrong lol.

So the patch will fix the PIN syncronization or just the message that it’s “Off” instead of “is not synced” or “doesn’t match”?