[TIP] Managing multiple locks with Lock Mirror system app

I feel like this may be a little known secret. I just started my journey with smart locks and one of my other posts @mike.maxwell mentioned using lock mirror to make sure things were all locked up for the night or when leaving.

Originally I had in my goodnight rule a simple lock command being sent to all 4 locks. I think due to the FLiRS beaming it was struggling to lock all 4 at once, and actually causing the entire mesh to slow down for a few seconds. So I decided to see if the Lock Mirror I had heard about had any sort of optimization or metering, and it basically has both. If enabled it only commands locks that need the state changed, and commands them one at a time.

This is part of the system Mirror app, and you add a Lock Mirror child to it.

First you create your Virtual Lock, to sort of use like a state-less group. I used the (no codes) virtual lock driver since I only want to mirror the lock command. Then once setup you just send a lock command to that virtual device to lock all the locks selected in the app.

The announcement via TTS is the icing on the cake, it is perfect.

Here is my setup in Lock Mirror

The Docs explain all the options pretty well so no sense in re-explaining it

5 Likes

For the developer inclined people here, I've resolved similar "sometimes doesn't listen" issues, but with my window shades rather than locks. My locks are all auto-locked, so there's never a time where all the locks get commanded at the same time. But my blinds are almost always commanded at the same time, at least all of them in a specific room, but often all of them in the house. Similarly, tho ZigBee, the blinds occasionally fail to "listen". Probably the same issue with FLiRS, but whatever the ZigBee version of that is.

So what I've done is add a few lines to the driver where any time they get a "setLevel" command they store a state variable for "desiredLevel". 30 seconds after a setLevel command, the driver calls a refresh() on them and checks their level/position. If it matches "desired", it deletes the state variable for desiredLevel. If it doesn't match, it command the blinds to move again to "desired" level. Every now and again it'll catch a failure and 30 seconds after the shade should have move it actually does. But short of a completely dead battery, there's never once been a failure of the shades to move as they're supposed to.

Sadly, the "Mirror" app, while able to create mirrors for shades/blinds in the app, doesn't allow for any sort of "retry" setting on shades. It seems that "custom mirror" doesn't have that functionality.

2 Likes

Thanks for posting this. I just set up a lock mirror based on your example. I have a question related to multiple locks and Lock Code Manager. I hope you don't mind me asking it on this thread.

When I added a second door lock to my system, I went into lock code manager and clicked on each user, then clicked on the user's code and selected the second lock. The page now shows "Code xxxxxx on [Basement Door Lock, Kitchen Door Lock].

That seemed to work ok, but the Lock Code Manager only shows a subscription to the first one (Kitchen Door Lock). When I look at each of the device details, only that device shows it is 'in use by' Lock Code Manager.

Is that how this is supposed to work? I was thinking I could add a second instance of LCM for the second lock, but even if that's possible it seems like that would make managing them harder. I can't see anywhere else to set anything in LCM that would create the second subscription.

My LCM is subscribed to all 4 of my locks. Did you press "Done" in the app until it was closed and you went back to the apps list? That is probably what triggers settings up the subscriptions.

I added a new user and code to both locks, and now they're both subscribed. :man_shrugging: