Besides being a tech Company-Builder, my company Mühlemann&Popp is also operating a Coworking-Space for startups. 5 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 4S, 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.
Turn on the volume and try it below. – Pro tip: Click all buttons at once. 😜
This is the replacement for our ring button.
This is a large screen equipped with speakers.
Jodi and Anja from Evenito show you how it works.
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 Heroku.
The screen in the office is also 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