Repository navigation
docs: add Game Day Scoreboard guides to the M-1 section #1174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,106 @@ | ||
| --- | ||
| title: Flash your lights when your team scores | ||
| description: Make your room celebrate with the Game Day Scoreboard on your M-1 by flashing your lights every time your team scores. | ||
| --- | ||
| # Flash your lights when your team scores | ||
|
|
||
| <span class="difficulty lvl-3">Difficulty: Level 3</span> | ||
|
|
||
| In football, baseball, hockey, and soccer, your Apollo M-1 already throws a splash in your team's color when they score. This automation brings the rest of the room along: every time your team puts points on the board, your lights flash. The opponent's scores, kickoff, halftime, and the final leave the lights alone. | ||
|
|
||
| !!! warning "Not for basketball" | ||
|
|
||
| A basketball game has around a hundred scoring plays, so the panel only celebrates the win, and this automation would flash your lights on almost every basket. Use it for NFL, college football, MLB, NHL, MLS, and Premier League teams. | ||
|
|
||
| !!! note "Before you start" | ||
|
|
||
| - Your M-1 runs Game Day Scoreboard and follows your team, in **My team** or **Favorite teams**. See [Getting started (Game Day Scoreboard)](/products/m1/setup/getting-started-m1-game-day.md). | ||
| - The scoreboard is added to Home Assistant through the ESPHome integration. | ||
| - A light in Home Assistant that you want to flash. | ||
|
|
||
| ## How it knows your team scored | ||
|
|
||
| The scoreboard's **Game Status** entity sums up the game in one line, with the team the panel follows first: | ||
|
|
||
| | The panel shows | Game Status reads | | ||
| | --- | --- | | ||
| | A game to come | `DAL vs PHI | Wed 7:20 PM` | | ||
| | A game in progress | `Live | DAL 14, PHI 7` | | ||
| | Halftime | `Halftime | DAL 14, PHI 7` | | ||
| | The final | `Final | DAL 31, PHI 28` | | ||
|
|
||
| Game Status changes when a game starts, when someone scores, and when it ends, not on every play. The automation compares the old and new value, and runs only when the same game is still live and the first score, your team's, went up. When the panel switches to a different game, the lights stay off. | ||
|
|
||
| !!! tip "Live games mode" | ||
|
|
||
| In **Live games** the panel follows a game picked for you, and the first team listed is whichever side it follows, so the automation flashes for that team. The panel moves to another game when that game ends or after **Switch every** minutes; a switch to a different game never flashes the lights. | ||
|
|
||
| ## Find your Game Status entity | ||
|
|
||
| The automation watches one entity on your scoreboard. Copy its ID now so you can paste it into the automation in the next section. | ||
|
|
||
| 1. Go to **Settings → Devices & services** and open the **ESPHome** integration. | ||
|
|
||
| [](https://my.home-assistant.io/redirect/integration/?domain=esphome) | ||
|
|
||
| 2. Open your scoreboard's device and click **Game Status**. | ||
| 3. Click the gear icon and copy the **Entity ID**. It ends with `_game_status`. | ||
|
|
||
| ## Create the automation | ||
|
|
||
| This is where your lights join the celebration. You paste a ready-made automation, then point it at your Game Status entity and the light you want to flash. | ||
|
|
||
| 1. Go to **Settings → Automations & scenes** and click **Create automation**, then **Create new automation**. | ||
|
|
||
| [](https://my.home-assistant.io/redirect/automations/) | ||
|
|
||
| 2. Open the three-dot menu in the top right and choose **Edit in YAML**. | ||
| 3. Paste the automation below over what's there. | ||
| 4. Replace `sensor.game_day_scoreboard_2f6a70_game_status` with your Game Status entity ID, and `light.living_room` with the light you want to flash. | ||
| 5. Click **Save** and give the automation a name. | ||
|
|
||
| ```yaml title="Flash the lights when my team scores" | ||
| alias: Flash the lights when my team scores | ||
| description: Flashes a light when the team the Game Day Scoreboard follows scores. | ||
| triggers: | ||
| - trigger: state | ||
| entity_id: sensor.game_day_scoreboard_2f6a70_game_status | ||
| # Only state changes, not attribute changes | ||
| to: ~ | ||
| conditions: | ||
| - condition: template | ||
| value_template: >- | ||
| {% set before = trigger.from_state.state.split(' | ') if trigger.from_state else [] %} | ||
| {% set after = trigger.to_state.state.split(' | ') if trigger.to_state else [] %} | ||
| {% if before | length >= 2 and after | length >= 2 | ||
| and before[0] in ['Live', 'Halftime'] and after[0] in ['Live', 'Halftime'] %} | ||
| {% set old_line = before[1].split(', ') %} | ||
| {% set new_line = after[1].split(', ') %} | ||
| {% if old_line | length == 2 and new_line | length == 2 %} | ||
| {% set old_team = old_line[0].rsplit(' ', 1) %} | ||
| {% set new_team = new_line[0].rsplit(' ', 1) %} | ||
| {{ new_team[0] == old_team[0] | ||
| and new_line[1].rsplit(' ', 1)[0] == old_line[1].rsplit(' ', 1)[0] | ||
| and (new_team[-1] | int(0)) > (old_team[-1] | int(0)) }} | ||
| {% else %} | ||
| false | ||
| {% endif %} | ||
| {% else %} | ||
| false | ||
| {% endif %} | ||
| actions: | ||
| - action: light.turn_on | ||
| target: | ||
| entity_id: light.living_room | ||
| data: | ||
| flash: long | ||
| mode: single | ||
| ``` | ||
|
|
||
| Your lights now celebrate with the panel. The next time your team scores, the M-1 shows its splash and your light flashes. | ||
|
|
||
| !!! tip "Make it your own" | ||
|
|
||
| - **Not every light can flash.** If yours ignores `flash: long`, swap the action for a scene in your team's colors, or a short color change followed by a delay and a scene that puts the room back. | ||
| - **Football's extra point** counts as its own score, so a touchdown and the extra point after it flash twice. Add a delay of a minute at the end of the actions and keep `mode: single` to flash once per score drive. | ||
| - **Play a sound too** by adding a `media_player.play_media` action to the same automation. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,143 @@ | ||
| --- | ||
| title: Getting started (Game Day Scoreboard) | ||
| description: Turn your M-1 into a live sports scoreboard that follows your team from ESPN, with its own settings page and Home Assistant support. | ||
| --- | ||
| # Getting started (Game Day Scoreboard) | ||
|
|
||
| !!! tip "Running WLED instead?" | ||
|
|
||
| M-1 units ship with WLED. If you want to keep it, the [Getting Started page](/products/m1/setup/getting-started-m1.md) covers it. You can come back to Game Day Scoreboard any time, and go back to WLED the same way. | ||
|
|
||
| Game Day Scoreboard turns your Apollo M-1 LED Matrix into a scoreboard for your team. Before a game it shows the matchup, both records, the start time, the betting line, and the TV network. Once the game starts it switches to the live score and game clock, fills the panel with a splash in your team's color when they score (in basketball, when they win), and stays on the final for a while before it looks up the next game. It covers the NFL, college football, MLB, the NBA, the WNBA, men's college basketball, the NHL, MLS, and the Premier League. | ||
|
|
||
| The panel reads the scores from ESPN by itself, so there's no hub, account, or other computer to run. It serves its own settings page, and it shows up in Home Assistant as an ESPHome device if you want it there. Apollo Automation maintains the open-source firmware at [ApolloAutomation/gameday-scoreboard-main](https://github.com/ApolloAutomation/gameday-scoreboard-main). | ||
|
|
||
| !!! note "Before you start" | ||
|
|
||
| - An M-1 with a **Rev6** controller. The revision is printed on the back of the board, and every M-1 sold today is Rev6. | ||
| - A desktop or laptop computer with Chrome or Edge, and a USB-C cable that carries data. | ||
| - A 2.4 GHz Wi-Fi network and its password. The panel can't join a 5 GHz network. | ||
|
|
||
| !!! warning "Rev6 controllers only" | ||
|
|
||
| Game Day Scoreboard uses the MoonHub75 pin layout, which the Rev6 controller shares. An older Rev4 controller wires the panel to different pins, so the prebuilt firmware won't drive it. | ||
|
|
||
| ## Attach the M-1 controller | ||
|
|
||
| Your M-1 LED Matrix and M-1 controller ship separately to keep them safe in transit. Gently press the controller onto the back of the panel, as shown below. Skip this if your M-1 is already together. | ||
|
|
||
|  | ||
|
|
||
| ## Flash Game Day Scoreboard | ||
|
|
||
| The Game Day Scoreboard installer flashes the firmware from your browser, with nothing to install on your computer. Flashing replaces WLED, along with its presets and settings. | ||
|
|
||
| 1. Open the [Game Day Scoreboard DIY installer](https://apolloautomation.github.io/gameday-scoreboard-main/install/diy/) in Chrome or Edge. | ||
| 2. Click the picture that matches your setup: | ||
| - **One 64x64 panel** for a single M-1. | ||
| - **One 128x64 panel** (or two 64x64 side by side) for two M-1 panels in a row. See [Multiple Panels](/products/m1/setup/m1-multiple-panels.md) for chaining them. | ||
| 3. Plug the M-1 controller into your computer with the USB-C cable. | ||
| 4. Click **Install for MoonHub75** and pick the M-1's port when the browser asks. This is the right build for the M-1: the two boards share a pin layout. | ||
| 5. Wait for the install to finish. Leave the cable plugged in until it does. | ||
|
|
||
| The panel lights up with **GAME DAY** across the top and **Starting** under it, then shows **SETUP** while it waits for Wi-Fi. You can change the panel layout later on its settings page, so a wrong pick here costs you nothing. | ||
|
|
||
| !!! tip "The browser doesn't see your M-1?" | ||
|
|
||
| Put the controller into boot mode and try again: hold the boot button while you plug in the USB-C cable. See [M-1 Boot Mode](/products/m1/troubleshooting/m1-boot-mode.md). | ||
|
|
||
| ## Connect to Wi-Fi | ||
|
|
||
| Your M-1 needs your home Wi-Fi to read the scores. There are two ways to give it your network: | ||
|
|
||
| - **Right after the install,** the installer offers to put the panel on your Wi-Fi. Enter your network name and password there, and you're done with this section. | ||
| - **From the panel's hotspot.** While it shows **SETUP**, the panel starts its own Wi-Fi network named **Game Day** plus six letters and numbers, like **Game Day 2f6a70**, and shows the name on screen. | ||
|
|
||
| To use the hotspot: | ||
|
|
||
| 1. On your phone or laptop, join the **Game Day** network the panel shows. A setup page opens. | ||
| 2. Pick your Wi-Fi network and enter the password. | ||
| 3. Tap **Save**. | ||
|
|
||
| The panel joins your Wi-Fi and shows its address, like **gameday-2f6a70.local**. Use your main network, not a guest network: a guest network can let the panel join but keep your phone from reaching it afterward. | ||
|
|
||
| !!! tip "About the QR code on the screen" | ||
|
|
||
| The QR code the panel shows during setup is for the separate Game Day phone app, which Apollo Automation doesn't maintain, and which may not find panels running this firmware. You don't need it: the hotspot and the panel's settings page do everything it does. | ||
|
|
||
| ## Pick your team | ||
|
|
||
| The panel serves its own settings page, the device page. This is where you pick your team and set up everything else, from any phone or computer on your Wi-Fi. | ||
|
|
||
| 1. Open the address the panel shows, like `http://gameday-2f6a70.local`, in a browser. | ||
| 2. Tap **Change team**. | ||
| 3. Pick a league tab and tap a logo, or search for any team. | ||
|
|
||
| The page says **Now following the** and the team's name, and the panel switches to them. Until you pick a team, the ticker along the bottom asks you to and shows the panel's IP address, for phones that can't open `.local` names. To see the address again any time, hold the boot button on the controller for about 1.5 seconds. | ||
|
|
||
| From the same page you can follow up to 16 **Favorite teams** that take turns, or switch to **Live games**, which follows a game in progress in the leagues you pick. The timezone follows the browser you open the page in, so start times read right without setting anything. | ||
|
|
||
| ## Add it to Home Assistant | ||
|
|
||
| Nothing about the scoreboard needs Home Assistant, but it's an ordinary ESPHome device, so it fits right in. Once it's added, you can automate the panel's power and brightness and react to the game itself. | ||
|
|
||
| 1. With Home Assistant on the same network, go to **Settings → Devices & services**. Home Assistant discovers the panel as a new ESPHome device and lists it under **Discovered**. | ||
|
|
||
| [](https://my.home-assistant.io/redirect/integrations/) | ||
|
|
||
| 2. Click **Add** (or **Configure**) and confirm. The firmware has no API encryption key, so there's no key to enter. | ||
| 3. Pick an area for the panel if you like, and finish. | ||
|
|
||
| Not discovered? Add it by its address instead: | ||
|
|
||
| 1. Go to **Settings → Devices & services** and click **Add integration**. The button below covers this step and the next. | ||
|
|
||
| [](https://my.home-assistant.io/redirect/config_flow_start/?domain=esphome) | ||
|
|
||
| 2. Pick **ESPHome**. | ||
| 3. Enter the panel's `.local` name or IP address. | ||
|
|
||
| Your scoreboard now shows up under the ESPHome integration with the entities worth automating: **Team**, **Mode**, **Power**, **Brightness**, **Scroll Speed**, **Game Status**, **Last Play**, **Firmware**, **Install Updates Automatically**, and the WizMote pairing controls. Favorites, the timezone, and the ticker options live on the device page only. The **Microphone Enabled** switch belongs to the [microphone addon](/products/m1/addons/adding-microphone-to-m-1.md); the scoreboard doesn't use the microphone. | ||
|
|
||
| **Game Status** changes when a game starts, when someone scores, and when it ends, which makes it a great trigger for your own automations. | ||
|
|
||
| !!! success "Next step: celebrate scores with your lights" | ||
|
|
||
| Make your room join in when your team scores: the step-by-step guide sets up an automation that flashes your lights on every score. | ||
|
|
||
| [Flash your lights when your team scores](/products/m1/examples/game-day-score-lights.md){ .md-button .md-button--primary } | ||
|
|
||
| ### Adopt it in ESPHome Device Builder | ||
|
|
||
| Adopting the panel in the **ESPHome Device Builder** app lets you build its firmware yourself and add your own YAML. You don't need this to use the scoreboard in Home Assistant. | ||
|
|
||
| 1. Go to **Settings → Apps**, click **Install app**, and install the **ESPHome Device Builder** app if you don't have it yet. Click **Start**, then **Open Web UI**. | ||
|
|
||
| [](https://my.home-assistant.io/redirect/supervisor_app/?app=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon) | ||
|
|
||
| 2. Find your panel under the discovered devices, click **Take Control**, and confirm. Device Builder discovers the panel when it's on the same network. | ||
| 3. Install the firmware when Device Builder offers to, using the wireless install. | ||
|
|
||
| The adopted firmware gets its own API encryption key, which Home Assistant picks up from the app. Leave **Install updates automatically** off on an adopted panel: a release installed from the device page puts the prebuilt firmware back, without your changes. | ||
|
|
||
| ## Updates | ||
|
|
||
| The scoreboard checks for a new release every six hours. When one is out, the **Firmware** box on the device page shows an **Install** button, and the update goes over Wi-Fi with your team and settings kept. Turn on **Install updates automatically** and the panel installs new releases by itself between 3 and 5 AM, never during a game it's following. | ||
|
|
||
| ## Pair a WizMote remote | ||
|
|
||
| Game Day Scoreboard works with a WiZ WizMote, the small battery remote sold for WiZ smart bulbs. Pair it once and you can run the panel from across the room. | ||
|
|
||
| 1. Open the **Remote** card on the device page. | ||
| 2. Turn on **Discovery**. | ||
| 3. Press any button on the remote. | ||
|
|
||
| The card says **Paired:** and the remote's address. **ON** and **OFF** turn the panel on and off, the brightness buttons make it brighter or dimmer, **NIGHT** drops it to a night level, and buttons **1** to **4** jump to your first four favorite teams. | ||
|
|
||
| ## Go back to WLED | ||
|
|
||
| You can return your M-1 to WLED at any time with the Apollo M-1 installer. See [Factory re-flash M-1](/products/m1/troubleshooting/m1-reflash.md). | ||
|
|
||
| ## Learn more | ||
|
|
||
| The [Game Day Scoreboard docs](https://github.com/ApolloAutomation/gameday-scoreboard-main/tree/main/docs/wiki/src/content/docs) cover every setting, each sport's board, the boot button's holds and resets, and fixes for the things that go wrong. Found a bug? [Open an issue on GitHub](https://github.com/ApolloAutomation/gameday-scoreboard-main/issues). | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
Warn readers that device settings and updates are not protected by a password.
The firmware README says that any device on the Wi-Fi can change settings, updates have no password protection, and the panel should not be exposed to the internet. (github.com) Line 88 only explains that no API key is needed. Add a warning to keep the panel on a trusted network and not forward its ports.
🤖 Prompt for AI Agents