You are currently viewing Digital door sign for meeting rooms

Digital door sign for meeting rooms

Learn how to build a cost-effective and fully functional digital signage system for meeting rooms (Part 1)

This is a 3-part article, where I will show you how to build a digital door signage for meeting rooms, which is integrated with an Office365 calendar.

Part 1: Overview of the solutions (this article) and the components

Part 2: writing the backend

Part 3: writing the firmware and Integrating all components

In our new office we will have three meeting rooms.
We want electronic door signs to show which meeting is currently in the meeting room and which meetings are due afterwards.

Here are the requirements for the system:

  • The schedule for the meeting rooms will be kept in Office365 calendars
  • The displays should be updated every 10 min
  • The display should show the meeting room name an the current date
  • The display should show, wether the room is currently occupied or not
  • If the room is occupied, the title of the meeting, the organizer and the scheduled time should be shown
  • The next meeting with title and scheduled time for the room should also be shown.

We looked at systems available on the market and were dissatisfied with the functionality and the price.

But hey, we are a tech company, we will build it ourselves ;-).

Evaluated systems cost between 350 € to 500 € per display. Our solution will cost about 100 € and you will need the following components:

– ESP32 development board
– 7.5 inch ePaper display
– 3000 mAH battery
– 3-D printed case
– Backend with REST API and Office365 integration

Since the ePaper display only needs power when the image is updated, we will keep the ESP32 in deep sleep and only wake it up, if it fetches the current booking data from the backend every 10 minutes. One battery charge is enough for several months.
The booking rooms can be conveniently booked using the Office365 calendar and the door signs are updated automatically.

The following diagram shows the building blocks of our solution:

The display is connected via Wifi to the Backend. The Backend is requesting the booking status from Office365

The Backend will be implemented in Python with FastAPI and will provide a REST API for the Displays. The display will periodocally request the current booked event and the next two booked events.

We first have to register our application in order to us the Microsoft Graph API. Here is a step by step Guide how to do that. With the registration, your App will get an unique Client-ID, which is used later for authentication.

You also need to add a secret key for the backend in order to authenticate with Azure.

You need to give the permission to use the Graph API and the permissions to read the calendar to your registered App(Permission Calendar.Read). We have a Calendar for each Meeting-Room, so every room display is associated with a calendar.

For Authenticating on Office365 (Azure) we will use Microsoft Authentication Library (MSAL) for Python (https://github.com/AzureAD/microsoft-authentication-library-for-python)

The following code creates an app Object for further usage:

import msal
import app_configapp = msal.ConfidentialClientApplication(app_config.CLIENT_ID, authority=app_config.AUTHORITY,
client_credential=app_config.CLIENT_SECRET)result = app.acquire_token_for_client(scopes["https://graph.microsoft.com/.default"])

In this example all relevant values are stored in a config file called app_config.py. The authority parameter contains a URL like https://login.microsoftonline.com/{yourTenantID}

To access the Office365 calendar the backend we will use the Microsoft Graph API v1.0, which provide a clean REST API for all Ressourcen in Office365.

In order to retrieve all Entries (Events) in a calendar from a start and end-date we can use the MS Graph Endpoint

https://graph.microsoft.com/v1.0/users/{userId}/calendars/{calendarId}/calendarView?startDateTime={startDateTime}&endDateTime={endDateTime}

startDateTime and endDateTime are ISO 8601 formated DateTime like 2021–03–08T09:00:00–08.

In the second part on the article series we will write the backend of the room signage.

By the way, I will name one of the rooms after my hometown Antalya and furnish it with pictures of the beach and the sea. I haven’t been to Antalya since one year and I really miss my family, the sea and the sun. Hopefully, I can be there this summer.

Schreibe einen Kommentar