The cheapest solution to show content on TV screens (monitoring, dashboard, digital signage, etc.) with a modern browser, automatic rotation of the content and configuration per screen!
This project is based on:
- Chilipie Kiosk: Linux distro optimised for RPi and to run in kiosk mode
- Chromium: Latest version of Chromium (Chrome open source version) that provides a modern browser that support SVG, modern JS, etc.
- Tab Rotate: Chrome extension that run in fullscreen and rotate between multiple tabs
- Tab Rotate Server: Webserver that manages the content per screen for the Tab Rotate Chrome extension
- Dedicated Google account: This Google account will syncronised the settings and extensions between the screens
How does it work
- Chilipie Kiosk will boot the RPi and launches the Chromium browser in full screen without the mouse cursor and with a nice background image
- The Tab Rotate extension will call the Tab Rotate Server to get a playlist of contents
- The Tab Rotate Server detect the IP of the screen that requested the playlist and if a playlist exists for this screen, it send it or uses the default one
- The Tab Rotate extension will create a tab for each content (website, image, etc.) and start rotating between the tabs
- After a configurable time, the Tab Rotate extension will request a new version of the playlist and reload each tab if the playlist changed
What do you need
This project is running on the RaspberryPi hardware only. For now :)
You will need per screen:
- A Raspberry Pi board: from RPi2 to RPi3 (need to test RPi4 when available)
- A TV or monitor with HDMI
- An HDMI cable
- An AC power that can deliver 2.5Amp minimum with micro-USB connector (USB-C for RPi4)
How to start
The following information will help you to create the first player. This will be your master image.
If you have multiple screens, you will be able to clone this master image to avoid to redo these manual steps on the other players.
To be able to sync extensions and other settings between screens without the need to plug a mouse and keyboard, we use a dedicated Google account.
// TODO: Add Google account creation steps
All the screens that are connected to this Google Account will be sync and will received the extensions to install, configure them with the same settings and you can pilot the configuration from your own computer by switching between your Google user profile and the Google screens user profile.
Sometimes, the content (dashboards, websites, etc.) are not accessible without authentication.
When possible, you can use Basic Auth, API Token (Bearer, etc.) and inject them in the HTTP headers, using the Chrome Extension Requestly for example.
Be careful to create users or API tokens that have limited access (read only) to your accounts and save your credentials/api keys securely.
- Requestly can be uses to inject HTTP headers like Auth token for Grafana dashboards or other websites that require authentication
- Ignore X-Frame headers can help you if you need to
<iframe>a site that doesn't want to be framed
- Tampermonkey can be useful for injecting custom JS or CSS to a page you're displaying
- Finish the "How to start"
- Create an Ansible role to configure and maintain the RPi automatically instead of doing manual process