KeyMaster Z-Wave lock manager and scheduler

If you want to disable notifications for users you have to disable them here:
image

1 Like

I just picked up a 2nd Schlage connect Z-Wave Plus lock for my side entrance, I already have a network key in my configuration.yaml from my front door lock, Do I need to generate another key for my new lock and add it below the existing network key before adding it to my Z-Wave network?

Just the one. Your secure nodes will use the same network key. (assume you’re talking about the z-wave configured network key)

2 Likes

Yes that is correct,

The Z-Wave network key I already have from when I added my first lock. Just going to install the lock now :slight_smile:

1 Like

I must be stupid… I just migrated from OZW to ZwaveJS. I uninstalled and reinstalled keymaster, deleted and updated the lovelace view with the one from the reinstalled integration, and I get no response when I toggle the enabled toggle. All of my key slots show disabled, and don’t update to connecting or connected when I hit the toggle.

A few notes:

  1. Most obviously, allow_automations is set to on.
  2. I made sure I followed the directions, including the pre-install directions (made that mistake my first time)
  3. When I migrated, my Schlage BE469 came across as Unknown Manufacturer/Unknown product, but HA recognized it as a lock and it’s operational.
  4. I have the following entities under the lock:
sensor.front_door_alarmlevel
lock.front_door_currentmode
sensor.front_door_battery_level
binary_sensor.front_door_the_current_status_of_the_door
binary_sensor.front_door_low_battery_level
sensor.front_door_alarmtype

Anyone got help/advice for where to start troubleshooting? I don’t see anything of interest in configuration/logs

Version of zwavejs addon/container you’re using?
Please post a screenshot of your keymaster config screen.

using ZwaveJS2MQTT with the ZwaveJS integration - MQTT server is shut down.

KeyMaster
Select the lock to setup and code slots to create.

Paths are relative to your Home Assistant config folder (e.g. /config/packages/keymaster should be entered as packages/keymaster)

If you are using Z-Wave JS you may or may not have alarm level and alarm type entities. If you do, select them on this form, otherwise you can use the sensor.fake values as placeholders.

 
Select your lock
lock.front_door_currentmode
 
Code Slots
10
 
Start from code slot #
1
 
Lock Name (ie: frontdoor)
frontdoor
 
Door Sensor
binary_sensor.fake
 
Alarm Level/User Code Sensor (from lock)
sensor.fake
 
Alarm Type/Access Control Sensor (from lock)
sensor.fake
 
Path to packages directory
packages/keymaster/
Hide PINs in UI?
 
Path to child locks file

I’ve also tried using sensor.front_door_alarmlevel and sensor.front_door_alarmtype in the appropriate field with the same results.

I want to set the PINs/schedules/etc. in one place and have them copied to each of my three identical door locks (kwikset 910s). Is there an easier way to do this without writing a bunch of automation to copy one of the input values to the other input values (which will take longer than simply duplicating the info on each page)?

Tx!

Yes, use the child locks feature.

I’ve tried a bunch of things but I can’t figure out how child locks config is supposed to work - I’m starting with just 2 locks.

  1. Do I create an integration for each lock?
  2. Do I point each integration at the child locks file?
  3. Do I specify each lock in the child locks file?

I’m getting a check config error that the lock name specified in the child locks file doesn’t exist (Package child_locks setup failed. Component front_door Integration ‘front_door’ not found), even though I added the front_door integration.

What’s even more peculiar is that when I did this the other lock folder in packages/keymaster disappeared (so I only have the front_door folder now)

Tx!

No just your “Parent” lock that you’ll be inputting the codes for via lovelace.

Nope

Only the locks that are to copy your “Parent” lock go into the child locks folder.

Post the lock entities (the lock.whatever of the 2 child locks you are syncing), I’ll help you make the file.

Thanks so much for your help. The entities are:

lock.lock_deck_north_door
lock.lock_garage_side_door

Here you go.

deck_north_door:
    lock_entity_id: lock.lock_deck_north_door
    alarm_level_or_user_code_entity_id: sensor.fake
    alarm_type_or_access_control_entity_id: sensor.fake

garage_side_door:
    lock_entity_id: lock.lock_garage_side_door
    alarm_level_or_user_code_entity_id: sensor.fake
    alarm_type_or_access_control_entity_id: sensor.fake

Thanks. I’ve added this to a /config/child_locks.yaml

When I specify that file (literally specify child_locks.yaml) in the integration, I immediately get a success message, but the front_door folder (the name of the door) isn’t created.

When I edit the options, the child_lock.yaml path is not there.

Sounds like an error is being hit, try enabling debugging and creating a github issue please.

I can create a bug, but if you have any ideas how I might work around it, here’s the trace… Tx. :slight_smile:
Traceback (most recent call last):

File “/config/custom_components/keymaster/init.py”, line 418, in update_listener

primary_lock, child_locks = await generate_keymaster_locks(hass, config_entry)

File “/config/custom_components/keymaster/helpers.py”, line 129, in generate_keymaster_locks

child_locks = [

File “/config/custom_components/keymaster/helpers.py”, line 130, in

KeymasterLock(

TypeError: init() missing 1 required positional argument: ‘door_sensor_entity_id’

2021-03-26 17:56:11 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Front Door for keymaster

Traceback (most recent call last):

File “/usr/src/homeassistant/homeassistant/config_entries.py”, line 248, in async_setup

result = await component.async_setup_entry(hass, self) # type: ignore

File “/config/custom_components/keymaster/init.py”, line 166, in async_setup_entry

primary_lock, child_locks = await generate_keymaster_locks(hass, config_entry)

File “/config/custom_components/keymaster/helpers.py”, line 129, in generate_keymaster_locks

child_locks = [

File “/config/custom_components/keymaster/helpers.py”, line 130, in

KeymasterLock(

TypeError: init() missing 1 required positional argument: ‘door_sensor_entity_id’

2021-03-26 17:59:40 ERROR (SyncWorker_8) [custom_components.keymaster.config_flow] The child locks file (/config/child_locks) does not exist

2021-03-26 17:59:49 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved

Ya this is going to require code fixes, please create an issue.

1 Like

@firstof9 any thoughts on my situation?

Enable debugging and check the Home Assistant log.

I’m seeing several repeated loops of this in the logs:

2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Ignoring code slot with * in value for code slot 1.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Work around code in use.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Utilizing FE599 work around code.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Ignoring code slot with * in value for code slot 2.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Work around code in use.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Utilizing FE599 work around code.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Ignoring code slot with * in value for code slot 3.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Work around code in use.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Utilizing FE599 work around code.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Ignoring code slot with * in value for code slot 4.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Work around code in use.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Utilizing FE599 work around code.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Ignoring code slot with * in value for code slot 5.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Work around code in use.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] Utilizing FE599 work around code.
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Code slot 6 not enabled
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Code slot 7 not enabled
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Code slot 8 not enabled
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Code slot 9 not enabled
2021-03-26 22:42:38 DEBUG (SyncWorker_7) [custom_components.keymaster] DEBUG: Code slot 10 not enabled