The basics
Wookey Hole Screens is our own digital signage system. You manage it from the dashboard, on a computer or your phone, and every TV picks up your changes within a minute.
The big yellow button. Put a message, poster or playlist on any screens, for as long as you like. It switches itself off.
Regular changes, like the café menu at lunchtime or Halloween posters for the season.
A loop of slides, such as the Welcome loop. Each zone has a default playlist.
Groups of screens in the same area: Entrance, Caves, Papermill, Café.
- Show something now beats everything. Emergency messages beat everything else.
- Then schedules. If two clash, the more specific one wins: one for a season or certain dates beats an all-year one; one for a single screen beats a whole zone; a shorter time slot beats a longer one.
- Otherwise the screen plays its default playlist, or its zone's.
Show something now
For anything happening today: an area closed, a delay, sold out, a quick promotion.
- Click Show something now at the top of any page. Or click Change on a screen card, or Show something now next to a zone, and it starts with those screens already chosen.
- Where? All screens, a zone, or tap individual screens.
- What? A message (start from Closed, Delayed, Sold out, Last entry or Weather, then edit the words), a poster, or a playlist.
- For how long? 30 minutes, an hour, until closing, until midnight, until a date, or until you end it.
- Click Show it now. The screens switch over within a minute, straight away rather than waiting for the next slide.
While it's on, a yellow banner across the top of the dashboard shows what's running, with +30 min, +1 hour and End now buttons. When the time is up, the screens go back to normal by themselves.
Posters
The quickest way: drag it onto a screen
On the Screens page, drag an image or video from your computer straight onto a screen's card, or onto a zone. Then choose:
- Add to what's usually playing there: it joins that screen's normal playlist. The dashboard tells you how many other screens use that playlist.
- Show only this, for a while: it takes over those screens until a time you choose.
Posters that take themselves down
Give a poster a Stop showing after date, when you drop it or later on the Media page. After that date it drops out of every playlist by itself, so the Halloween posters disappear after half term without anyone touching them. Expired posters stay in Media, marked Expired, in case you want them next year.
The longer way
- Open the Media tab and drag your image or video onto the purple dotted box.
- Open the Playlists tab, pick the playlist, choose your poster under "Add slide" and click Add slide.
- Use the arrows to move it into place, then click Save playlist.
For quick notices like "Last cave tour 4:30pm", there's no need to design a poster: use Text slide on the Media page, or a message in Show something now.
To change how long a slide shows, type the seconds next to it in the playlist. Leave it blank for the slide's normal time. A video set to 0 plays all the way through.
Schedules
Use a schedule for things that repeat, such as the café menu at lunchtime or Halloween posters for the season.
See the week
The Schedules page shows a week calendar for whichever zone or screen you pick. Coloured blocks are schedules. Striped yellow blocks are "show something now". A faded block is hidden by something more important at that time; hover over it to see why.
Add a schedule
- Drag on the calendar over the day and times you want, or click Add schedule.
- Fill in the sentence: "Show Café lunch on the Café screens every day at lunchtime all year round". Each part is a simple choice, with "certain days", "certain times" and "certain dates" when you need them.
- If it clashes with another schedule, a yellow note explains which one will show and why, before you save.
Seasons and holidays
Set up dates you use again and again, like half terms or Christmas, once under Seasons and holidays. Then choose "during Halloween season" in any schedule. Change the season's dates next year and every schedule using it moves too.
Opening hours
Set the opening and closing times on the Schedules page. They're used by "Until closing" and "in opening hours".
All times are UK time, and the clocks changing is handled for you. A schedule whose end time is earlier than its start carries on past midnight.
Screens
What's on, and what's next
Click any screen on the Screens page to see what it's showing now, what's next and what's later today, with pictures. From there you can change it, preview it, see its week, refresh it or change its settings.
Add a screen
- In Screens, click Add screen, give it a name, and choose its zone, layout and orientation.
- It gets a 6-letter code shown in yellow on its card.
- Ask IT to set up the Raspberry Pi with that code (see below), or type the code on the TV's pairing screen with a keyboard.
- When the yellow lamp on its card lights up, it's online.
Click Preview on any screen card to see exactly what that TV is showing, at its real shape, in a new browser tab.
Refresh a screen
Changes normally reach the TVs by themselves within a minute. If a screen looks stuck, or IT has updated the system, you can make it reload:
- Refresh on a screen card reloads that one TV.
- Refresh zone next to a zone's name reloads every TV in that zone.
- Refresh all at the top of the Screens page reloads every TV.
The card says Refresh pending until the TV picks it up, which is usually within a minute. The screen goes blank for a few seconds while it reloads.
TVs on and off
The TVs switch themselves on in the morning and off at night, so nobody has to walk round with a remote.
Screen hours
Set when the TVs are on under Schedules → Opening hours and screen hours. They start at 09:30 to 17:30, half an hour either side of opening, and there's a link to match them to opening hours. A zone, such as the Café, or a single screen can have its own hours, or be always on, in its settings.
See and change it
- Each screen card shows whether its TV is on and when it next changes, for example "TV on, off at 17:30".
- Click a screen to see why it's on or off, and to Turn off for 1 hour, Turn off until tomorrow, Turn on for 1 hour or Turn on until midnight. Back to normal returns it to its screen hours.
- On the Schedules page, grey stripes on the week calendar show when the TVs are off.
Changes reach the TV within a minute or two. While a TV is meant to be off, its Pi shows plain black, so nothing gets burned into the screen even if the TV ignores the off command.
How it works
The Pi switches the TV through the HDMI cable using HDMI-CEC, the same way a games console wakes a TV. For that to work:
- Turn on HDMI-CEC in the TV's settings. Samsung calls it Anynet+, LG SimpLink, Sony Bravia Sync, Panasonic VIERA Link, Philips EasyLink.
- Plug the Pi straight into the TV, not through a switch or splitter.
- Leave the TV plugged in at the wall. Turning it off at the socket means it can't hear "switch on".
If something's wrong
| What you see | What to do |
|---|---|
| The lamp on a screen card is grey | The Pi hasn't checked in for a few minutes. Check that it's switched on and connected to Wi-Fi. It keeps playing its last content in the meantime. |
| A small pink dot in the top corner of a TV | That screen has lost its connection and is playing what it saved. It catches up by itself once it reconnects. |
| A web page slide is blank | Some websites refuse to be shown inside another page. That's the website, not you. Use a screenshot as an image instead. |
| My change isn't showing | Make sure you clicked Save playlist. Screens update within a minute, at the next slide change. Click the screen to see what it's showing and why: a "show something now" or a schedule may be on top. |
| A poster has disappeared | It may have passed its Stop showing after date. Look for Expired on the Media page and change or clear the date. |
| A screen looks frozen or out of date | Click Refresh on its card. If it still shows Refresh pending after a few minutes, the Pi is offline: switch it off and on again. |
| A card says TV not answering | The TV isn't responding to on/off commands. Turn on HDMI-CEC in the TV's settings (see TVs on and off) and check the Pi is plugged straight into the TV. Until then the Pi shows black when the TV should be off. |
| A TV didn't come on in the morning | Check it's switched on at the wall, and click the screen to see why it's off (screen hours, a closed day, or turned off by hand). Use Turn on for 1 hour to wake it now. |
| The TV shows "Pair this screen" | Its code was changed or the screen was deleted. Type the code from its card on the Screens page. |
On a TV with a keyboard plugged in: i shows screen info, and Shift + R unpairs it.
For IT: setting up
The system runs on Cloudflare: a Worker for the website and API, D1 for the database and R2 for images and videos. You'll need Node.js 18 or newer and the Wookey Hole Cloudflare account.
npm install
npx wrangler login
npx wrangler d1 create wookey-signage # copy the database_id into wrangler.toml
npx wrangler r2 bucket create wookey-signage-media
npm run db:init
npx wrangler secret put ADMIN_TOKEN # the dashboard password
npm run deploy
It's already set up at screens.wookey.team. To publish changes, run npm run deploy.
/player, /sw.js, /api/player/*, /api/weather, /media/* and /pi-setup.sh.Setting up a Raspberry Pi
- Flash the SD card with Raspberry Pi OS (64-bit, with desktop) using Raspberry Pi Imager. In its settings, set a username and the Wi-Fi, and turn on SSH.
- On the Pi, run the line below, swapping in the screen's code. The Pi installs everything, then restarts and shows the screen.
curl -fsSL https://screens.wookey.team/pi-setup.sh | bash -s -- ABC123
Pis restart themselves every night at 04:30 to stay fresh. A Pi 4 handles 1080p video comfortably; on a Pi 3, use 720p video.
The setup also installs the TV power helper, which checks every minute whether the TV should be on and switches it over HDMI-CEC. It needs the screen code on the setup line. If a screen is given a new code, run the setup again with the new code. To see what it's doing, run journalctl -t wookey-power on the Pi.