diff --git a/README.md b/README.md index f4b880f7..1e278af4 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,73 @@ # LEDMatrix +A sophisticated LED matrix display system that provides real-time information display capabilities for various data sources. The system is highly configurable and supports multiple display modes that can be enabled or disabled based on user preferences. -A modular LED matrix display system for sports information using Raspberry Pi and RGB LED matrices. +## Core Features + +### Time and Weather +- Real-time clock display +- Weather information with custom icons +- Google Calendar event display + +### Sports Information +The system supports live, recent, and upcoming game information for multiple sports leagues: +- NHL (Hockey) +- NBA (Basketball) +- MLB (Baseball) +- NFL (Football) +- NCAA Football +- NCAA Men's Basketball +- NCAA Men's Baseball +- Soccer +(Note, some of these sports seasons were not active during development and might need fine tuning when games are active) + +### Financial Information +- Near real-time stock & crypto price updates +- Stock news headlines +- Customizable stock & crypto watchlists + +### Entertainment +- Music playback information from multiple sources: + - Spotify integration + - YouTube Music integration +- Album art display +- Now playing information with scrolling text + +### Custom Display Features +- Text display capabilities +- Font testing and customization +- Configurable display modes +- Cache management for improved performance + + +## System Architecture + +The system is built with a modular architecture that allows for easy extension and maintenance: +- `DisplayController`: Main orchestrator managing all display modes +- Individual managers for each feature (sports, weather, music, etc.) +- Separate authentication handlers for different services +- Configurable display modes and rotation patterns + +## Configuration + +The system can be configured through a JSON configuration file that allows users to: +- Enable/disable specific features +- Set display durations +- Configure API keys and endpoints +- Customize display modes and rotation patterns +- Set preferred music sources +- Configure sports team preferences -# Work in Progress, things may break. I'll try to keep the main branch as stable as I can but this is absolutely in a pre-release state. There are also a ton of commits as it's an easy way to get the changes to the rpi for testing. ## Hardware Requirements -- Raspberry Pi 4 or older +- Raspberry Pi 3b or 4 + - Amazon Affiliate Links: - Adafruit RGB Matrix Bonnet/HAT - 2x LED Matrix panels (64x32) - DC Power Supply for Adafruit RGB HAT + +----------------------------------------------------------------------------------- + ## Installation 1. Clone this repository: @@ -27,12 +85,7 @@ pip3 install --break-system-packages -r requirements.txt ## Configuration -1. Copy the example configuration: -```bash -cp config/config.example.json config/config.json -``` - -2. Edit `config/config.json` with your preferences +1.Edit `config/config.json` with your preferences via `sudo nano config/config.json` ## Important: Sound Module Configuration @@ -370,7 +423,6 @@ The Music Display module shows information about the currently playing track fro 2. **YouTube Music (YTM):** * Requires the [YouTube Music Desktop App](https://ytmdesktop.app/) (YTMD) to be installed and running on a computer on the *same network* as the Raspberry Pi. * In YTMD settings, enable the "Companion Server" under Integration options. Note the URL it provides (usually `http://localhost:9863` if running on the same machine, or `http://:9863` if running on a different computer). - * Note, The YTM Display seems to most reliably update on the display switch INTO the MusicManager Display. Song changes after this are less reliable in updating on time. I am trying to figure this quirk out but shouldn't be too disruptive. Spotify doesn't have this issue. **Configuration:** @@ -414,6 +466,7 @@ The Music Display module shows information about the currently playing track fro **`preferred_source` Options:** +* `"auto"`: (Default) Checks Spotify first. If Spotify is playing, shows its track. If not, checks YTM. * `"spotify"`: Only uses Spotify. Ignores YTM. * `"ytm"`: Only uses the YTM Companion Server. Ignores Spotify.