“Sitincator” – Simplificator’s Meeting Room Display

image03

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.

image02

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:

Source code of the Sitincator app: https://github.com/simplificator/sitincator

19 thoughts on ““Sitincator” – Simplificator’s Meeting Room Display

  1. 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

    Like

    1. 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

      Like

  2. 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

    Like

    1. 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.

      Like

      1. 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

        Like

      2. 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.

        Like

  3. 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

    Like

    1. 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

      Like

      1. 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.

        Like

  4. 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.

    Like

  5. 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.

    Like

    1. 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

      Like

  6. 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

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s