Raspberry Pi Dashboard with IPS display

Raspberry Pi Dashboard for Meeting Rooms

A couple of years ago I developed a custom dashboard for my company. It’s been running well with occasional updates. I switched it to run lighter FullpageOS recently instead of vanilla Raspbian.

After I have created this dashboard, I also had some cheap Android tablets installed for the meeting rooms to serve as displays. They were to show upcoming meetings and info on meeting room occupancy, so people could take quick meetings in between etc.

Android tablet battery swelling up

The problem with those tablets was they were constantly charging. They were connected via USB to their chargers and clearly they didn’t have cut off for charging even when charged to 100%. So battery degradation was imminent and we had battery swollen up (but fortunately no fire). Since this happened twice the only (primitive) solution would have been to have a timer plug socket to cut off electricity.

But there were other problems to these cheap Android tablets such as kiosk browser app crashing repeatedly or random Android crashes that disabled the interface altogether and required restart.

Therefore I decided to switch to Raspberry Pi for these meeting room calendar dashboard as well.

Raspberry Pi Zero W dashboard with Waveshare IPS 7″ display

Again I went with Raspberry Pi Zero W with vanilla Raspbian. I decided to use cheap Waveshare 7inch IPS display, so no HDMI is needed, but this specific Raspberry Pi comes with a GPIO hat soldered on. The Waveshare display comes with a RGB hat, so it was easy to put them together.

Kiosk fullscreen browser

I have settled on using Firefox ESR edition as a kiosk fullscreen browser.

I have tried Chromium, but it does not run on Raspbian 11 Bullseye and there is no up to date Chromium version that would run. I have also tried Midori (fullscreen CLI does not work well), Dillo (no fullscreen mode), Eric and others to no avail. All of these had some issues. I had to use Firefox ESR in the end although it is on a heavy side compared to others.

It takes longer to launch into fullscreen, but it has to do it only once after reboot. Since I have seen it crashing intermittently (e.g. after a couple of hours) I have also created a script to periodically check on firefox-esr process and put in a crontab. If the process is running, it does not do anything. If it is not detected, then it relaunches it in fullscreen kiosk mode with custom URL for each meeting room.

Software controller

The browser opens a custom URL served by Laravel backend controller. That controller imports Google calendar resources for each meeting room. Then it deduplicates them, handles some normalization and saves it into a database table.

That database table is then presented using Webslides framework.

It’s a really simple setup and it works well. Of course, if I wanted to I could add different screens (slides) and display some news or weather info etc.

Putting Raspberry Pi with RGB hat in a box

I settled on buying these electronic junction boxes from Amazon that are plastic but with nice black glossy finish. I drilled and sanded a hole to have space for 5V micro-USB adapter connection to RPi. I sliced off a small piece of box insulation to have space for the ribbon cable for the display to connect.

I used very strong double sided transparent acrylic tape to glue small, but strong neodymium magnets on the box. Those are used to hold display in place, while allowing display to be easily separated later, if need be.

I finished with two pieces of acrylic tape to attach the box with the display to the glass wall. The only thing left is to beautify the way that electrical cable is connected.

That’s it (the message in the photo says “no further meetings”).


Have a comment? Join discussion on Mastodon as a reply to: @dusoft@fosstodon.org