Physical access control
We (Omni) are currently using:
We are working on a new system for all of Omni.
Here is a list of existing hackerspace access control software with some notes for each.
The front door and old system uses magnetic stripe cards.
The new system uses NFC tokens. As long as they have a unique ID and speak NFC they should work.
The Omni front door uses a Beagle Bone Black with battery backup present in the same box.
The sudo/ccl door currently doesn't have a computer but we are working on it.
The Omni front door uses an Arduino hooked to the BBB. Jake knows more. It is powered from the BBB.
The sudo/ccl door uses an ESP32 running ESPHome firmware. The yml config is here. It talks to an RC522 RFID module over SPI, reading every second and returns the read as the event "tag_scanned" with the NFC tag ID. It has an API service that Home Assistant can call, named "unlock_door" which turns on the GPIO pin controlling the solenoid. Changing the PWM power and amount requires re-flashing which can be done over the air (OTA). It uses a few transistors to control the 12 VDC for the solenoid. Alex made this circuit. The ESP32 board is powered from a 5 V regulator which is powered by the same 12 V as the solenoid.
It is planned that the power for the ESP32 and solenoid will ultimately come from PoE with a central battery backup in the server closet which will also server as power backup for the new access control computer.
Both the Omni front door and sudo/ccl door use electric strikes. These just need 12 V and enough amps.
To control the strikes from a microcontroller the Omni front door arduino uses some sort of motor controller board. Jake knows about it.
Off the shelf
juul has been testing the August Smart Lock Pro which speaks z-wave. He wrote up a [guide](https://gist.github.com/Juul/755ac2895a4b1ea430d5edd31abbf82f) on how to use it with Home Assistant.
Custom hackery solution
Since none of the off-the-shelf solutions do exactly what we want, we could instead build our own. One way would be to use a z-wave smartlock and add our own control electronics for wifi / bluetooth / rfid. Unfortunately those locks start at around $150.
Another option is to build pretty much the whole thing from scratch from a deadbolt and a $17 3 V smartlock motor from Aliexpress (our spam filter is blocking Aliexpress links but go to their .com/item/4000226861796.html ). This would require some mechanical fabrication which seems like a bit much.
A simple but still lower cost option is to add e.g. an ESP32 and a Nordic low power bluetooth module to the cheapest possible battery-operated electronic deadbolt. If we want something with a replaceable and re-keyable mechanical lock core then kwikset sells one for $60 and there are some no-brand versions around for a bit less.
We could then have the ESP32 operate in low power wifi client mode and keep an updated access control list, then let folks open the doors with their phones using wifi or bluetooth where bluetooth would continue working as long as the lock has batteries. We could even potentially use the built-in buttons to wake up an RFID reader for a few seconds if that doesn't drain the battery too much. We would of course rip out the existing control circuitry.