M&P Coworking-Space Doorbell

Besides being a tech Company-Builder, my company Mühlemann&Popp is also operating a Coworking-Space for startups. 3 startups in one big office. This office had one doorbell. With one ringtone for all startups. The doorbell rang, and a big guesswork started: Who is it for? Guess what: Either two people got up. Or noone. What a mess!

Not anymore: Using an old iPhone 5S, a Raspberry Pi and a few lines of Python and VueJS I built a doorbell replacement. That doorbell has one distinct ringtone for each subtenant.

In addition to the screen there is a companion Chrome extension which displays a notification right on the screen of the corresponding person.

Update: 15. February 2020: Now it also takes a picture of the person standing in the front of the door. Using face recognition it crops the interesting area of the picture and displays it both in the screen in the office and in the notification on the desktop.

Device at the door

This is the replacement for our ring button.

Screen in the office

This is a large screen equipped with speakers.

How it works

Jodi and Anja from Evenito show you how it works.

For the Geeks

The screen with the buttons is a VueJS app. It runs inside Kiosk Pro. The iPhone 4S is running in Single App mode so that when the phone reboot the Kioskpro with the buttons is reloaded. The app with the buttons trigger a Xhttprequest to a Flask server running on APPUiO.

The screen in the office is a VueJS app. It's running on a full screen Chromium. This service is connected via WebSockets to the server. I have used WebSockets because I wanted a low latency. If someone pushes the button outside the ringer music inside should start immediately.

Of course I could have added the webserver directly on the Raspberry Pi. But I think it's just geekier if the server is in Ireland. :-)

In case the connection is interrupted the doorbell will of course stop working. This will however be announced to the user: Try to disconnect your network (e.g. via the Network emulation built into the developer tools of Chrome) and see what happens.

Silvan Mühlemann, 16.10.2017