Tulip for managed keyless door entry

For the past year and a half I’ve run a semi-cooperative workshop and manufacturing space in Brooklyn. Located in a light industrial building in Bed Stuy, the shop is about 200 m^2 and currently has about a dozen members. For the purposes of this show & tell, you can think of it as a co-working space that has industrial amenities and is targeted at hardware startups and engineers.

For my first few tenants I went down to a hardware store and issued physical keys to the space. But as the shop has gotten busier and we’ve taken on a few part-time members, I’ve wanted a better way to manage access. I wanted a system that was more flexible than physical keys, and also wanted visibility into who was using the shop when. As a bonus, I was interested in setting up a remote access system - a way to allow for package delivery or guest access even if I wasn’t physically present at the shop.

So, I wired up a gateway and got hacking :slight_smile:

The app group consists of two apps and two tables:

  1. An “Entry” app that provides the main interface to the door
  2. An “Admin” app that allows new users to be created and associated with an RFID fob
  3. An “Entry Log” table that contains records of every time the door was unlocked
  4. An “Entry Users” table that contains RFID payloads, user names, and a boolean “Active” field that allows someone’s access to be disabled without deleting their entire account

The “Entry” app will be run headless, meaning that a Tulip Player will almost never be running during normal circumstances. Partly as a result of this, I started out by creating a Tulip User named “ENTRY” that will be permanently logged into the app. I then mounted a Tulip I/O Gateway and a Light Kit to the wall right inside of the shop’s front door. I wired the light kit through the wall, mounting the light strip to the exterior door jamb. I also wired a RFID scanner (I used the RFIDeas RDR-80581AKU, which supports both 125 kHz and 13.56 MHz cards/fobs) through the wall, with the scanner mounted just outside the door and its USB cable plugged into the I/O Gateway.

I also, of course, wired our electronic latch into the I/O Gateway, along with an inexpensive buzzer (which we’re using temporarily as a chime) and a simple momentary push button (which we’re using as the doorbell button).

tulip keyless entry at theprepared.org-3
Our entry door, as seen from the interior.

tulip keyless entry at theprepared.org-1
The I/O Gateway and Light Kit are mounted to a piece of DIN rail. The doorbell and RFID reader are wired through the wall right behind the I/O Gateway.

tulip keyless entry at theprepared.org-2
We mounted the Light Kit strip right to the exterior of the door jamb, and made a walnut bezel to mount the RFID reader and doorbell to the wall next to the door.

The “Entry” app has four steps:

  1. Turn the Light Kit red to indicate that the door is locked. Wait for input from either doorbell (which triggers “go to step 2”) or RFID reader (which triggers “go to step 3”)
  2. Turn the Light Kit blue to indicate a change in status. Ring the doorbell buzzer and prompt an admin (via the Player - as described above, the Player isn’t typically open but the functionality exists nonetheless and I have some thoughts on how to expand it) to approve (triggers “go to step 4”) or disapprove (triggers “go back to step 1”) the request.
  3. Check whether the scanned RFID data matches any of the records in the “Entry Users” table. If it does, and if the “Active” field is true, then move to step 4. If not, return to step 1.
  4. Turn the Light Kit green to indicate the door is unlocked. Unlock the door, record the event in the “Entry Log” table, and then wait for a time-based trigger to fire - at which point the app completes and is sent back to step 1.

Note that the actual RFID scanning uses the new RFID feature flag that was announced in r177 - get in touch with support@tulip.co to have it enabled on your Tulip instance.

The whole experience is super user friendly, and makes it a lot easier to get into the space while you’re carrying a bike, or a bunch of tools, or (as happens more often than you might expect) a hand truck loaded with a couple thousand electronic components:

After a few days of testing (and some fiddling with the underlying data, hence the overall low usage rates) we’re starting to get some interesting trends on our analytics dashboard (namely, that I’m at work a lot):

I also rigged up a useful Cloud Connector with the workshop’s Slack instance. Every time the app sees either an unlock event or a doorbell press, it triggers a HTTP connector to a simple Slack bot that announces that to the workshop’s Slack instance:


The Slack connector is super simple to set up, and can be used for all kinds of applications.


When the doorbell button is pressed, we turn the lights blue, send a message to our Slack connector, toggle the doorbell buzzer, and set a “doorbell” variable to True.

Screen Shot 2020-01-29 at 17.14.31
Hilarity ensues.

The best part of all of this is that the system is totally extensible, and we can pretty much rig any 24v device (or web service) up to make the experience of being in the shop more streamlined and convenient. We’ve got a pretty clever remote access system coming shortly (I’ll update this thread when it’s done) and have a number of other ideas around tool access, room booking, and guest management in the works as well :slight_smile:

I find that pushing slightly weird applications for Tulip makes me better at building straight-up manufacturing apps, and would love to see other wacky things that you all have built! More to come from my end, including a view into the Admin side app, :soon::exclamation:

11 Likes