Raspberry Pi Sports LED Matrix
Go-based software to control a raspberry pi LED matrix.
This is a Go project for displaying various types of "Boards" on a Raspberry Pi controlled RGB Matrix. The ideas here were heavily inspired by https://github.com/riffnshred/nhl-led-scoreboard . It uses some CGO bindings for the RGB matrix library https://github.com/hzeller/rpi-rgb-led-matrix. I chose to create my own project based off of those existing ideas because I wanted to be able to easily extend support for additional sports (see Roadmap section). I chose to write this in Go because I prefer it over Python, and theoretically it will run more efficiently than a Python-based one.
I run this on a Pi zero and a Pi 4. If you want to use the "Web Board" feature (see Web UI), I recommend at least a Pi 3.
Table of Contents
Getting Help
There's a public Discord channel, "RGB Sportsmatrix Help" https://discord.gg/8vPp4xfdtV
Premium Version
There is a premium version of this app that contains some extra features. See the for more info
Premium features include:
- Scroll Mode
- Weather Board
- Stock Board
- Live MLB game view - shows baserunners, pitch count, outs, inning
- Gambling odds
Current Board Types
- Sports. Shows upcoming, live, and completed games for the day (or the week for football), as well as news headlines:
- NHL
- MLB
- NFL
- NBA
- MLS
- NCAA Football
- NCAA Men's Basketball
- English Premiere League
- PGA Tour Leaderboards
- UEFA Champions League
- FIFA World Cup
- Bundesliga
- DFB German Pokal
- Racing. Currently just shows upcoming event schedule
- Google Calendar
- Player Stats boards- currently supports MLB and NHL.
- Image Board: Takes a list of directories containg images and displays them. Works with GIF's too!
- Clock
- Sys: Displays basic system info. Currently Mem and CPU usage
Installation
Supported Pi
This project currently supports all Raspberry Pi's with an armv7l or aarch64 architecture. This includes Pi 3b, 4, Zero 2. Pi's with the armv6 architecture are no longer supported,
but those can run version v0.0.83 and older- this would include the original Pi Zero.
You can check your Pi's architecture by running the following command:
uname -m
Install script
There's a helper install script that pulls the latest release's .deb package and installs it and starts the service. Obviously, piping a
remote script to sudo bash
is risky, so please take a look at script/install.sh
to verify nothing nefarious is going on. You can always manually download the .deb package in the Releases Section. Just make sure to pick the correct one for your architecture.
Run the following command in a Terminal on your Pi
curl https://raw.githubusercontent.com/robbydyer/sports/master/script/install.sh | sudo bash
To try out the latest beta release, run the following on your Pi:
curl https://raw.githubusercontent.com/robbydyer/sports/master/script/beta-install.sh | sudo bash
Configuration
You can run the app without passing any configuration, it will just use some sane defaults. Currently it only defaults to showing the NHL board. Each board that is enabled will be rotated through. The default location for the config file is /etc/sportsmatrix.conf
See the Full Example Configuration
For a list of all possible team abbreviations (including conference/divisions when available), see this list
Running the Board
If you installed the app with the installer script or a .deb package directly, then the service will run automatically. You can start/stop/restart the service with systemctl commands:
# stops the service
sudo systemctl stop sportsmatrix
# Restarts the service, like after changes to the config file
sudo systemctl restart sportsmatrix
You can also run the app manually in the foreground. The .deb package installs the binary to /usr/local/bin/sportsmatrix
NOTE: You MUST run the app via sudo. The underlying C library requires it. It does switch to a less-privileged user after the matrix is initialized.
# Show all CLI options
sportsmatrix --help
# Run with defaults
sudo sportsmatrix.bin run
# With config file
sudo sportsmatrix.bin run -c myconfig.conf
# NHL demo mode
sudo sportsmatrix.bin nhltest
Web UI
There is a (very) basic web UI frontend for managing the board. It is bundled with the binary and served as a single-page app. The UI gives buttons for all the backend API Endpoints. You can also view a rendered version of the board in the "Board" section (make sure your configuration enables this). Front-end dev is not my strongsuit, so it's not particularly pretty.
The Web UI is accessible at http://[HOSTNAME OR IP]:[PORT]
, where port is whatever you configure the httpListenPort
in your config file to be. For example, if your Pi's hostname is mypi
and your configured listen port is 8080
, http://mypi:8080
Example of the Web Board:
API endpoints
The Web UI has a built-in doc page describing the API. It also includes an interactive way to test API calls. There's a
button in the nav "API Docs", or you can go to http://[YOURIP]/docs
Special "Jump only" Image directories
If you would like to configure certain image directories to contain "jump only" images (only seen when an API call is made to show them), you can
do so by configuring them like:
imageConfig:
directoryList:
- directory: /my/image/dir
jumpOnly: true
Then, to display a particular image in that directory, make the API call and pass the desired image name.
curl -X POST --header "Content-Type: application/json" -d '{"name":"goal.gif"}' "http://myhost:myport/imageboard.v1.ImageBoard/Jump"
Examples
NHL
MLB
STOCK TICKER
PGA Tour Leaderboard
NHL Stats
MLB Stats
In real life, this is a GIF of Mario running. This is using the Image Board.