DIY HomeKey locks via Reactor
-
We're working on a (giant) new door for our house, and I'm exploring HomeKey locks, because I have CarKey on my cars and I love it - but unfortunately, due to Apple and their demands to have the lock and the reader all in a single hardware piece, door locks in Europe with HomeKey are few - and the few available are after market solutions, so not aesthetically WAF-approved. And then, I wondered, how cool could it be to open the garage door with the same HomeKey?
So I went down thru a rabbit hole and then found this:
I ordered a couple of things, and started tinkering. After a couple of hours, I had it implemented under Reactor via MQTT and on my desk, turning ON a light when the key is recognized. It costed about 20 bucks per entry, so not bad at all.
We only have iPhones at home, because of CarKeys and CarPlay - but we're not really using Home, so I had to buy an HomeHub in order to share the key - I got an Apple TV 4k that's basically just doing the HomeHub part. I'll eventually expose other things to Siri via Homebridge or HomeAssistant - or maybe not. HomeKey is the feature, for me.
Using Express mode, you just pass your watch/device on the reader and the key is recognized. You get the same key, but different device ID for a different watch/phone.
The logic is MQTT-based, so every time you pass a tag (MiFare is supported, but it's less secure because easily duplicable), you get a message at a given endpoint. You grab the keys via your virtual device, and check if they're valid in your own logic. I have a tag capability mapped to represent the key id, the device id, and a very easy logic to determine if the data is valid and the entry should be open. Remember, Key ID will be the same, Device ID will be unique across your devices (watches, phones) per person (the key is easily shareable in your family). See this screenshot:
You need to map the virtual lock in Reactor to the real status of the entry it's representing - but that's done using the lock capability of the device mapped via MQTT. See my template for it https://github.com/dbochicchio/reactor-mqtt-contrib
Setup is very easy.Since the reader itself isn't doing anything special, it's the same security as a ZWave door lock: if they open the case, no contacts is exposed, since this is just a reader, where the security is inside your phone/watch. You have -of course - to use it to drive your real lock. Easy job for the garage, doable for the new proprietary lock for the door, with 12v input to unlock - via ZWave or whatever - and auto-lock feature.
A couple of photos of the various steps - and the final case I found for 5 bucks on Ali, to mount it securely outside (it had the original electronics and I took it apart to insert mine - I recommend a smaller ESP32 if you have better soldering skills than mine).
I'll mount it with the Garage Door outside - very handy during pool season, since this is the easiest way to the bathroom after some time chilling. It's powered by a 3,3 converter housed inside the house, eliminating the need for the bulky USB connector. The reader is completely covered, so the fact that is not really IP-6x is not a problem: it will not get splashes at all.
Feel free to ask me anything, if you want to embark into a new adventure.
-
Yep, thanks to @toggledbits for adding the
tag
capability in a very short time frame!