We have two meeting rooms at our Simplificator headquarter office in central Zurich. As they have opaque doors and no windows towards the aisle, it was often unclear whether a meeting room was occupied or not. Frequently, people opened the door and immediately apologized when realizing that there was an ongoing meeting. As an agile company we strive to reduce such nuisances and to improve our efficiency.
We, the “Smooth Operators” team, came up with an idea to improve the situation by mounting a display next to the door of each meeting room showing its occupancy. A 3-day retreat was planned to focus our efforts on this project.
We decided to use a Raspberry Pi 3 with its official touch screen display. This allowed us to not only display information, but to make the system interactive. We started out by brainstorming the functionality we wanted to provide to the user. Most importantly, it should be obvious whether the meeting room was occupied or not. Scheduled meetings of the current day should be visible and we wanted to provide the ability to make a “quick reservation”, i.e. anonymously book the room for 15 or 30min. This feature is quite useful if you want to have a short ad-hoc talk or a quick phone call. As we already schedule meetings in Simplificator’s Google Calendar, we fetch booking data from the Google Calendar API.
After defining the functionality, we created wireframes to clarify how many screens we would have to implement and what information and interactivity they should provide. We ended up having two screens: the main screen showing whether the room is free or busy and a screen showing all scheduled meetings of the current day. As the functionality and the screens were defined, our designer started to layout the screens and define its components graphically. We tested the design on the display of the Raspberry Pi regarding size and colors and performed quick user tests to finetune the behavior.


Each screen has several possible states (e.g. free and busy), so we decided to use an interactive web frontend technology. As retreats at Simplificator offer an educational component as well, we decided to create two versions of the app, one in React and one in Elm. To run the app in a kiosk mode on the Raspberry Pi, we chose to package our app with Electron.
After the three days of retreat we had two basic apps in React and Elm. For future maintainability we decided to go on with the React app. We mounted the Raspberry Pis and their display next to the meeting room doors, installed our app on them and tested for a while. We found some bugs to fix and improvements to implement. The app is now running quite smoothly and our meetings are free of disturbances!
If you want to rebuild this setup at your office as well, you find the required hardware components and a link to the app’s code below. Drop us a line and tell us how it is working out for you!
Components:
- Original Raspberry Pi touch screen 7”, https://www.pi-shop.ch/raspberry-pi-7-touch-screen-display-mit-10-finger-capacitive-touch
- Raspberry Pi 3, https://www.pi-shop.ch/raspberry-pi-3
- Display case for the Raspberry Pi and its touchscreen, https://www.pi-shop.ch/raspberry-pi-7-touchscreen-display-frame-noir
Source code of the Sitincator app: https://github.com/simplificator/sitincator
Hi,
I am trying to implement this very useful application on a raspberry pi zero w and a touch screen. I was able to follow the download instructions but when I ran the application it froze. I believe this is due to the google calendar I was using. Would it be possible for you to post or send to me an example version of a google calendar that works: the format?, how to differentiate between rooms?, does each room gets its own calendar?, etc. In addition, do you think its possible to run this application but instead of reading reservation information from a google calendar, read it from an excel spreadsheet? Could you please direct me to where in the code this is called?
Thank you in advance,
Matt
LikeLike
Hi Matt!
About the freezing: Do you see anything in the logs or on the console? Maybe there is an error (e.g. that a configuration is missing). Sitincator accesses one specific calendar. If you have multiple rooms, you would need to run one Sitincator application per room (on separate devices). There is no `format` of the Google Calendar in that sense. We are using the Google Calendar API to get the data. It could be though that your configuration is wrong and Sitincator is not able to access the Google Calendar API.
About reading from Excel spreadsheet: you would need to change the code in `src/gcal/client.js` and change the API invocations to read and write the Excel file.
Hope that helps!
Serge
LikeLike
Hi,
I tried reinstalling Sitincator from github and when I try to run it, this error is displayed:
bash: line 13: 18867 Illegal instruction
Can you help with this?
Regards,
Matt
LikeLike
Hi Matt! Has this issue been solved? Otherwise, please create an issue on https://github.com/simplificator/sitincator. Thank you!
LikeLike
Is it possible to link this to a Office 365 Calendar?
LikeLike
Currently this is not implemented. However, you could add this functionality on your own.
You’d want to use the Office 365 Calendar API for that: https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations
Within Sitincator, have a look at src/gcal. The file index.js handles the OAuth authentication and client.js provides functions to list and create events. Both files you need to adapt to use the Office 365 API.
If the API is not using OAuth, you would also need to change main.js as that is calling the authorization code.
LikeLike
Are there any tutorials on this? My Javascript skills aren’t the best. Or will changing the values in the index and client.js files not be that complicated?
Cheers
LikeLike
It would require some programming. I guess the complicated part is to know where to hook into Sitincator. I’d suggest you first try to access the API from within the NodeJS code in Sitincator, without actually combining the UI with the data. For that have a look at https://www.youtube.com/watch?v=Sx46yCYPsek and/or https://www.youtube.com/watch?v=_Duf2hhMThQ
If that works, let us know (best if you create a pull request on Github with your code) and we can see whether we can help integrating it.
LikeLike
Hello Jim could you do the tests with office 365 ??
LikeLike
Hi sergehaenni,
erst einmal vorab, wir finden eure OpenSource-Lösung richtig gut.
Nun wollen wir diese Lösung bei uns im Unternehmen anwenden.
Wir haben derzeit nur 2 Probleme, wobei ein Problem konnten wir lösen.
FYI: Wir haben kleine Anpassungen beim aussehen getätigt und erfolgreich auf dem MacBook testen können.
Diese Änderungen sollen nun auch auf dem Pi zu sehen sein.
1. Problem: Nach ausführen des Scripts, bekommen wir folgenden Fehlermeldung:
(Packaging app for platform linux armv7l using electron v1.8.6
Failed to locate module “babel-core” from “.”)
1.1 Dazu haben wir im Script, was ausgeführt wird folgendes in Zeile 16 hinzugefügt
npm install babel-core
1.2 Danach lief das Script reibungslos durch.
2. Problem: Nachdem das Script durch war, haben wir die Ordner überprüft. Dabei haben wir festgestellt, das die Änderungen sowie die hinzugefügt .svg-Datein im Verzeichnis (/tmp/sitincator/Sitincator-linux-armv7l/static/icons) nicht mehr vorhanden waren.
Entweder machen wir etwas falsch oder etwas stimmt derzeit nicht wirklich.
Könnten Sie uns dort evtl. weiterhelfen?
FYI: MacBook, Ubunto 16.04 LTS x86, Node v6 und neuste Version.
Vielen Dank vorab für die Mühe.
Ich würde mich über eine Rückmeldung freuen.
Mit besten Grüßen
Daniel
LikeLike
Hallo Daniel
Entschuldigt die späte Antwort.
1. `babel-core`: Dieses Paket sollte nur in der Entwicklungsumgebung nötig sein (dort ist es als Abhängigkeit hinterlegt). Welches Skript versucht ihr auszuführen? Das Binärpaket dürfte dieses Paket nicht suchen. In der Entwicklungsumgebung muss zwingend ein `npm install` gemacht werden, damit alle Pakete installiert werden.
2. Die Icons sollten in `/tmp/sitincator/Sitincator-linux-armv7l/resources/app/` zu finden sein. Electron verschiebt die eigentliche Applikation in den Unterordner `resources`.
Hoffe das hilft!
Viele Grüsse
Serge
LikeLike
I’m super green in Linux. I’ve installed Rasbian and have typed the following command in my terminal:
“curl -ssL https://github.com/simplificator/sitincator/raw/master/scripts/automatic_updates.sh”
It doesn’t install the program. Please help.
LikeLike
Hi Ricky
You would need to add `| bash` to the command, so that it reads:
“`
curl -ssL https://github.com/simplificator/sitincator/raw/master/scripts/automatic_updates.sh | bash
“`
Alternatively, you could download the file from Github and then run it (in the directory you have downloaded it to):
“`
bash automatic_updates.sh
“`
Hope that helps!
Serge
LikeLike
Thank you so much. I have it working and writing back to the calendar. My only issue, and it has nothing to do with your program, is how to rotate the screen 90°. I’ve tried “display_rotate” but that rotated the display and not the touch screen. I also tried “lcd_rotate” and it didn’t do anything. Any help would be awesome! Thank you.
LikeLike
Hello Ricky Sett,
have you installed the driver for you touch display?
We have the same issue but our solution was the calibration of the touch system.
Look at the following side under point “Touch screen calibration”: https://www.elecrow.com/wiki/index.php?title=HDMI_Interface_5_Inch_800x480_TFT_Display
Best regards
Daniel
LikeLike
I am getting error: Failed to connect to the Google Calendar API. I followed the guide word-to-word from the GitHub page. I rechecked the token in the credentials folder and everything appears to be all right. What am I doing wrong? Or is it something on Google’s end that has changed? FYI I am using an account within Google Apps account.
LikeLike
Hello Serge,
I have an issue that i have 3 Meetings Rooms and the facility where i am at – we don’t have an internet connection. is there any way that i can still be able to connect all these three devices and update there calendar with an information about the meeting.
Kindly advise,
Thank you in advance,
Best Regards
Faheem W.
LikeLike
Hi Faheem,
Unfortunately, Serge left our company. I will be taking over this project (Whenever I get some time for it).
The current implementation would not allow that, it only works if you have a connection to google calendar.
Best regards,
Florian
LikeLike
Hello Guys,
i would like to do this at my school – but the problem is this, we are asked to provide a solution which should be offline or an application to be in-house. Not cloud or online. we have 3 rooms and every morning we have the schedule for current and future days for training and would like to have a display outside the room.
i have ordered all the hardware but need a push and some support that where to start.
Thank you,
Faheem
LikeLike