-
-
Notifications
You must be signed in to change notification settings - Fork 22
MANAGER_GUIDE_COMPREHENSIVE
This comprehensive guide covers every display manager in the LEDMatrix system, their configuration options, features, and how they work.
The LEDMatrix system uses a modular architecture where each feature is implemented as a separate "Display Manager". Each manager handles a specific type of content and can be independently enabled, configured, and customized.
- Core Display Managers - Essential system components
- Sports Managers - All sports leagues and displays
- Financial Managers - Stocks, crypto, and financial news
- Content Managers - News, text, multimedia content
- Utility Managers - System utilities and special functions
Purpose: Displays current time with various formatting options.
Configuration Section: clock
{
"clock": {
"enabled": true,
"format": "%I:%M %p",
"update_interval": 1,
"timezone": "America/Chicago"
}
}Configuration Options:
-
enabled(boolean): Enable/disable clock display -
format(string): Time format using Python strftime codes-
"%I:%M %p"- 12-hour format with AM/PM (default) -
"%H:%M"- 24-hour format -
"%I:%M:%S %p"- Include seconds
-
-
update_interval(integer): Update frequency in seconds -
timezone(string): Timezone for display (uses system timezone if not specified)
Features:
- Real-time clock display
- Automatic timezone handling
- Configurable time formats
- Minimal resource usage
- Always-on display capability
Display Examples:
-
12:34 PM(12-hour format) -
14:34(24-hour format) -
12:34:56 PM(with seconds)
Purpose: Displays current weather conditions, hourly forecasts, and daily forecasts using OpenWeatherMap API.
Configuration Section: weather
{
"weather": {
"enabled": true,
"api_key": "your_openweathermap_api_key",
"update_interval": 1800,
"units": "imperial",
"display_format": "{temp}Β°F\\n{condition}",
"show_feels_like": true,
"show_humidity": true,
"show_wind": true,
"show_uv_index": true,
"icon_set": "animated"
}
}Configuration Options:
-
enabled(boolean): Enable/disable weather display -
api_key(string): OpenWeatherMap API key (required) -
update_interval(integer): Update frequency in seconds (default: 1800) -
units(string): Temperature units-
"imperial"- Fahrenheit (default) -
"metric"- Celsius -
"kelvin"- Kelvin
-
-
display_format(string): Custom display format template -
show_feels_like(boolean): Display "feels like" temperature -
show_humidity(boolean): Display humidity percentage -
show_wind(boolean): Display wind speed and direction -
show_uv_index(boolean): Display UV index with color coding -
icon_set(string): Weather icon style-
"animated"- Animated weather icons -
"static"- Static weather icons
-
Features:
- Current weather conditions with animated icons
- Hourly forecast for next 24 hours
- Daily forecast for next 7 days
- UV index display with color coding
- Wind speed and direction
- Humidity and pressure data
- Automatic error recovery and caching
- Multiple display modes (current/hourly/daily)
Display Modes:
- Current Weather: Temperature, condition, icon
- Hourly Forecast: Temperature trend with time markers
- Daily Forecast: High/low temperatures with day labels
API Requirements:
- OpenWeatherMap API key (free tier available)
- Internet connection for data updates
- Location configured in main config
Purpose: Low-level hardware interface and graphics rendering engine.
Configuration Section: display
{
"display": {
"hardware": {
"rows": 32,
"cols": 64,
"chain_length": 2,
"parallel": 1,
"brightness": 95,
"hardware_mapping": "adafruit-hat-pwm",
"scan_mode": 0,
"pwm_bits": 9,
"pwm_dither_bits": 1,
"pwm_lsb_nanoseconds": 130,
"disable_hardware_pulsing": false,
"inverse_colors": false,
"show_refresh_rate": false,
"limit_refresh_rate_hz": 120
},
"runtime": {
"gpio_slowdown": 3
},
"display_durations": {
"clock": 15,
"weather": 30,
"stocks": 30
}
}
}Hardware Configuration Options:
-
rows(integer): LED matrix height in pixels (32 for 32x64 panels) -
cols(integer): LED matrix width in pixels (64 for 32x64 panels) -
chain_length(integer): Number of panels chained together (2 for 128x32 total) -
parallel(integer): Number of parallel chains (usually 1) -
brightness(integer): Display brightness (0-100) -
hardware_mapping(string): HAT/Bonnet configuration-
"adafruit-hat-pwm"- With jumper mod (recommended) -
"adafruit-hat"- Without jumper mod -
"regular"- Direct GPIO connection
-
-
scan_mode(integer): Panel scan mode (0 for most panels) -
pwm_bits(integer): Color depth (8-11, higher = better colors, slower) -
pwm_dither_bits(integer): Dithering bits for smoother gradients -
pwm_lsb_nanoseconds(integer): PWM timing adjustment -
disable_hardware_pulsing(boolean): Disable hardware PWM -
inverse_colors(boolean): Invert all colors -
show_refresh_rate(boolean): Display refresh rate on screen -
limit_refresh_rate_hz(integer): Maximum refresh rate
Runtime Configuration Options:
-
gpio_slowdown(integer): GPIO timing adjustment-
2-3for Raspberry Pi 3 -
4for Raspberry Pi 4 -
5for faster Pi models
-
Display Duration Options:
- Configure how long each display mode shows before rotating
- All durations in seconds
- Can be overridden by dynamic duration system
Features:
- Hardware RGB LED matrix initialization
- Font loading and management
- Drawing primitives (text, shapes, images)
- Color management and gamma correction
- Performance optimization
- Error recovery and fallback modes
Purpose: Display NHL games, scores, and standings.
Configuration Section: nhl_scoreboard
{
"nhl_scoreboard": {
"enabled": true,
"favorite_teams": ["TB", "FLA"],
"show_odds": true,
"show_records": true,
"test_mode": false,
"logo_dir": "assets/sports/nhl_logos",
"update_interval_seconds": 60,
"live_update_interval": 60,
"recent_game_hours": 48,
"live_priority": true
}
}Configuration Options:
-
enabled(boolean): Enable NHL display -
favorite_teams(array): List of favorite team abbreviations -
show_odds(boolean): Display betting odds for games -
show_records(boolean): Show team win-loss records -
test_mode(boolean): Use test data instead of live API -
logo_dir(string): Directory for team logos -
update_interval_seconds(integer): General update frequency -
live_update_interval(integer): Live game update frequency -
recent_game_hours(integer): Hours to consider games "recent" -
live_priority(boolean): Prioritize live games in rotation
Manager Types:
- NHLLiveManager: Live games in progress
- NHLRecentManager: Recently completed games
- NHLUpcomingManager: Future scheduled games
Features:
- Live game scores with period information
- Team logos and colors
- Betting odds integration
- Win-loss records
- Game status (Pre-game, Live, Final)
- Automatic live game detection and prioritization
Team Abbreviations: Standard NHL team codes (TB, NYR, BOS, etc.)
Purpose: Display NBA games, scores, and standings.
Configuration Section: nba_scoreboard
{
"nba_scoreboard": {
"enabled": true,
"favorite_teams": ["MIA", "LAL"],
"show_odds": true,
"show_records": true,
"test_mode": false,
"logo_dir": "assets/sports/nba_logos",
"update_interval_seconds": 300,
"live_update_interval": 60,
"live_priority": true
}
}Configuration Options:
-
enabled(boolean): Enable NBA display -
favorite_teams(array): List of favorite team abbreviations -
show_odds(boolean): Display betting odds -
show_records(boolean): Show team records -
test_mode(boolean): Use test data -
logo_dir(string): Team logos directory -
update_interval_seconds(integer): Update frequency -
live_update_interval(integer): Live game updates -
live_priority(boolean): Prioritize live games
Manager Types:
- NBALiveManager: Live games
- NBARecentManager: Recent games
- NBAUpcomingManager: Upcoming games
Features:
- Live scores with quarter information
- Team logos and records
- Betting odds
- Game status tracking
- Playoff indicators
Purpose: Display MLB games, scores, and standings.
Configuration Section: mlb
{
"mlb": {
"enabled": true,
"favorite_teams": ["TB", "NYY"],
"show_odds": true,
"show_records": false,
"test_mode": false,
"logo_dir": "assets/sports/mlb_logos",
"update_interval_seconds": 300,
"live_update_interval": 60,
"live_priority": true
}
}Configuration Options:
-
enabled(boolean): Enable MLB display -
favorite_teams(array): Team abbreviations -
show_odds(boolean): Display betting odds -
show_records(boolean): Show team records -
test_mode(boolean): Test mode -
logo_dir(string): Logo directory -
update_interval_seconds(integer): Update frequency -
live_update_interval(integer): Live updates -
live_priority(boolean): Prioritize live games
Manager Types:
- MLBLiveManager: Live games
- MLBRecentManager: Recent games
- MLBUpcomingManager: Upcoming games
Features:
- Live scores with inning information
- Pitcher information
- Base runners display
- Team logos and standings
Purpose: Display NFL games, scores, and standings.
Configuration Section: nfl_scoreboard
{
"nfl_scoreboard": {
"enabled": true,
"favorite_teams": ["TB", "MIA"],
"show_odds": true,
"show_records": true,
"test_mode": false,
"logo_dir": "assets/sports/nfl_logos",
"update_interval_seconds": 300,
"live_update_interval": 60,
"live_priority": true
}
}Features:
- Live scores with down and distance
- Quarter information
- Team records and standings
- Playoff implications
Purpose: Display soccer matches from multiple leagues.
Configuration Section: soccer_scoreboard
{
"soccer_scoreboard": {
"enabled": true,
"favorite_teams": ["Real Madrid", "Barcelona"],
"show_odds": true,
"show_records": false,
"test_mode": false,
"logo_dir": "assets/sports/soccer_logos",
"update_interval_seconds": 60,
"live_update_interval": 60,
"target_leagues": ["uefa.champions", "eng.1", "esp.1"],
"live_priority": true
}
}Configuration Options:
-
target_leagues(array): League identifiers to display-
"uefa.champions"- UEFA Champions League -
"eng.1"- English Premier League -
"esp.1"- Spanish La Liga -
"ger.1"- German Bundesliga -
"ita.1"- Italian Serie A -
"fra.1"- French Ligue 1
-
Features:
- Live match scores
- Multiple league support
- Team logos and colors
- Match status and time
Purpose: Display college football games and scores.
Configuration Section: ncaa_fb_scoreboard
{
"ncaa_fb_scoreboard": {
"enabled": true,
"favorite_teams": ["Florida", "Georgia"],
"show_odds": true,
"show_records": true,
"test_mode": false,
"logo_dir": "assets/sports/ncaa_fbs_logos",
"update_interval_seconds": 300,
"live_update_interval": 60,
"live_priority": true
}
}Features:
- College football scores
- Conference standings
- Playoff rankings
- Bowl game information
Purpose: Display college baseball games and tournaments.
Configuration Section: ncaa_baseball_scoreboard
{
"ncaa_baseball_scoreboard": {
"enabled": true,
"favorite_teams": ["Florida", "Vanderbilt"],
"show_odds": false,
"show_records": true,
"test_mode": false,
"logo_dir": "assets/sports/ncaa_baseball_logos",
"update_interval_seconds": 300,
"live_update_interval": 60,
"live_priority": true
}
}Features:
- College baseball scores
- Tournament brackets
- Conference standings
- Regional and super regional games
Purpose: Display college basketball games and March Madness.
Configuration Section: ncaam_basketball_scoreboard
{
"ncaam_basketball_scoreboard": {
"enabled": true,
"favorite_teams": ["Duke", "North Carolina"],
"show_odds": true,
"show_records": true,
"test_mode": false,
"logo_dir": "assets/sports/ncaa_basketball_logos",
"update_interval_seconds": 300,
"live_update_interval": 60,
"live_priority": true
}
}Features:
- College basketball scores
- March Madness bracket
- Conference tournaments
- AP and Coaches poll rankings
Purpose: Display Minor League Baseball games.
Configuration Section: milb
{
"milb": {
"enabled": true,
"favorite_teams": ["Durham Bulls", "Norfolk Tides"],
"show_odds": false,
"show_records": false,
"test_mode": false,
"logo_dir": "assets/sports/milb_logos",
"update_interval_seconds": 300,
"live_update_interval": 60,
"live_priority": true
}
}Features:
- Minor league scores
- Multiple league levels (AAA, AA, A+, A, etc.)
- Team affiliations
- Playoff information
Purpose: Display stock prices, crypto prices, and financial market data.
Configuration Section: stocks and crypto
{
"stocks": {
"enabled": true,
"symbols": ["AAPL", "MSFT", "GOOGL", "TSLA", "NVDA"],
"update_interval": 600,
"scroll_speed": 1,
"scroll_delay": 0.01,
"toggle_chart": false,
"dynamic_duration": true,
"min_duration": 30,
"max_duration": 300,
"duration_buffer": 0.1
},
"crypto": {
"enabled": true,
"symbols": ["BTC-USD", "ETH-USD", "ADA-USD", "SOL-USD"],
"update_interval": 300
}
}Stock Configuration Options:
-
enabled(boolean): Enable stock display -
symbols(array): Stock ticker symbols to display -
update_interval(integer): Update frequency in seconds -
scroll_speed(integer): Scrolling speed (1-5) -
scroll_delay(float): Delay between scroll steps -
toggle_chart(boolean): Show mini price charts -
dynamic_duration(boolean): Adjust display time based on content -
min_duration(integer): Minimum display duration -
max_duration(integer): Maximum display duration -
duration_buffer(float): Buffer time for scrolling completion
Crypto Configuration Options:
-
enabled(boolean): Enable crypto display -
symbols(array): Cryptocurrency symbols (format: SYMBOL-USD) -
update_interval(integer): Update frequency
Features:
- Real-time stock prices
- Cryptocurrency prices
- Price change indicators (green/red)
- Percentage change display
- Optional mini price charts
- Company/crypto logos
- Market hours awareness
- Pre-market and after-hours data
- Scrolling ticker format
Supported Assets:
- Stocks: Any symbol on major exchanges (NYSE, NASDAQ)
- Crypto: Major cryptocurrencies (BTC, ETH, ADA, SOL, etc.)
- ETFs: Exchange-traded funds
- Indices: Market indices (SPY, QQQ, etc.)
Purpose: Display financial news headlines related to your stock portfolio.
Configuration Section: stock_news
{
"stock_news": {
"enabled": true,
"update_interval": 3600,
"scroll_speed": 1,
"scroll_delay": 0.005,
"max_headlines_per_symbol": 1,
"headlines_per_rotation": 3,
"dynamic_duration": true,
"min_duration": 30,
"max_duration": 180,
"duration_buffer": 0.1
}
}Configuration Options:
-
enabled(boolean): Enable stock news display -
update_interval(integer): News update frequency -
scroll_speed(integer): Text scrolling speed -
scroll_delay(float): Scroll step delay -
max_headlines_per_symbol(integer): Headlines per stock -
headlines_per_rotation(integer): Headlines shown per cycle -
dynamic_duration(boolean): Auto-adjust display duration -
min_duration(integer): Minimum display time -
max_duration(integer): Maximum display time -
duration_buffer(float): Buffer for scroll completion
Features:
- Financial news headlines
- Stock-specific news filtering
- Scrolling news ticker
- Dynamic duration based on content length
- News source attribution
- Automatic headline rotation
Purpose: Display YouTube channel statistics and subscriber counts.
Configuration Section: youtube
{
"youtube": {
"enabled": true,
"api_key": "your_youtube_api_key",
"channels": [
{
"name": "Channel Name",
"channel_id": "UCxxxxxxxxxxxxxxxxxx",
"display_name": "Custom Display Name"
}
],
"update_interval": 3600,
"show_subscriber_count": true,
"show_video_count": true,
"show_view_count": true
}
}Configuration Options:
-
enabled(boolean): Enable YouTube display -
api_key(string): YouTube Data API v3 key -
channels(array): Channel configuration objects -
update_interval(integer): Update frequency -
show_subscriber_count(boolean): Display subscriber count -
show_video_count(boolean): Display total videos -
show_view_count(boolean): Display total views
Channel Object Options:
-
name(string): Channel identifier -
channel_id(string): YouTube channel ID -
display_name(string): Custom name for display
Features:
- YouTube channel statistics
- Subscriber count tracking
- Video count display
- Total view count
- Custom channel names
- YouTube logo integration
Purpose: Display custom text messages and announcements.
Configuration Section: text_display
{
"text_display": {
"enabled": true,
"messages": [
"Welcome to LEDMatrix!",
"Custom message here",
"Another announcement"
],
"scroll_speed": 2,
"scroll_delay": 0.02,
"text_color": [255, 255, 255],
"background_color": [0, 0, 0],
"font_size": "medium",
"rotation_interval": 10
}
}Configuration Options:
-
enabled(boolean): Enable text display -
messages(array): List of text messages to display -
scroll_speed(integer): Text scrolling speed -
scroll_delay(float): Delay between scroll steps -
text_color(array): RGB color for text [R, G, B] -
background_color(array): RGB background color -
font_size(string): Font size ("small", "medium", "large") -
rotation_interval(integer): Seconds between message rotation
Features:
- Custom text messages
- Scrolling text display
- Configurable colors and fonts
- Message rotation
- Multi-line text support
Purpose: Display currently playing music from Spotify or YouTube Music.
Configuration Section: music
{
"music": {
"enabled": true,
"preferred_source": "spotify",
"POLLING_INTERVAL_SECONDS": 2,
"spotify": {
"client_id": "your_spotify_client_id",
"client_secret": "your_spotify_client_secret",
"redirect_uri": "http://localhost:8888/callback"
},
"ytm": {
"enabled": true
}
}
}Configuration Options:
-
enabled(boolean): Enable music display -
preferred_source(string): Primary music source-
"spotify"- Spotify (default) -
"ytm"- YouTube Music
-
-
POLLING_INTERVAL_SECONDS(integer): Update frequency -
spotify(object): Spotify API configuration -
ytm(object): YouTube Music configuration
Spotify Configuration:
-
client_id(string): Spotify app client ID -
client_secret(string): Spotify app client secret -
redirect_uri(string): OAuth redirect URI
Features:
- Currently playing track info
- Artist and album display
- Album artwork
- Progress bar
- Play/pause status
- Spotify and YouTube Music support
- Automatic source switching
Purpose: Display upcoming calendar events from Google Calendar.
Configuration Section: calendar
{
"calendar": {
"enabled": true,
"credentials_file": "credentials.json",
"token_file": "token.pickle",
"calendars": ["primary", "birthdays"],
"max_events": 3,
"update_interval": 300,
"timezone": "America/Chicago"
}
}Configuration Options:
-
enabled(boolean): Enable calendar display -
credentials_file(string): Google API credentials file -
token_file(string): OAuth token storage file -
calendars(array): Calendar names to display -
max_events(integer): Maximum events to show -
update_interval(integer): Update frequency -
timezone(string): Timezone for event display
Features:
- Upcoming calendar events
- Multiple calendar support
- Event times and dates
- All-day event handling
- Timezone conversion
- Google Calendar integration
Purpose: Display scrolling news headlines from RSS feeds.
Configuration Section: news_manager
{
"news_manager": {
"enabled": true,
"enabled_feeds": ["NFL", "NBA", "TOP SPORTS"],
"custom_feeds": {
"TECH NEWS": "https://feeds.feedburner.com/TechCrunch"
},
"headlines_per_feed": 2,
"scroll_speed": 2,
"scroll_delay": 0.01,
"update_interval": 300,
"rotation_enabled": true,
"rotation_threshold": 3,
"dynamic_duration": true,
"min_duration": 30,
"max_duration": 300,
"font_size": 12,
"text_color": [255, 255, 255],
"separator_color": [255, 0, 0]
}
}Configuration Options:
-
enabled(boolean): Enable news display -
enabled_feeds(array): Default feeds to enable -
custom_feeds(object): Custom RSS feed URLs -
headlines_per_feed(integer): Headlines per feed -
scroll_speed(integer): Text scrolling speed -
scroll_delay(float): Scroll step delay -
update_interval(integer): News update frequency -
rotation_enabled(boolean): Enable headline rotation -
rotation_threshold(integer): Cycles before rotation -
dynamic_duration(boolean): Auto-adjust duration -
min_duration(integer): Minimum display time -
max_duration(integer): Maximum display time -
font_size(integer): Text font size -
text_color(array): RGB text color -
separator_color(array): RGB separator color
Default RSS Feeds:
- MLB: ESPN MLB News
- NFL: ESPN NFL News
- NCAA FB: ESPN College Football
- NHL: ESPN NHL News
- NBA: ESPN NBA News
- TOP SPORTS: ESPN Top Sports
- BIG10: ESPN Big Ten Blog
- NCAA: ESPN NCAA News
Features:
- RSS feed parsing
- Custom feed support
- Scrolling news ticker
- Headline rotation
- Dynamic duration adjustment
- Multiple news sources
- Color-coded separators
Purpose: Display daily content like word of the day, bible verse, etc.
Configuration Section: of_the_day
{
"of_the_day": {
"enabled": true,
"sources": ["word_of_the_day", "bible_verse", "slovenian_word"],
"update_interval": 3600,
"scroll_speed": 1,
"scroll_delay": 0.02,
"rotation_enabled": true
}
}Configuration Options:
-
enabled(boolean): Enable "of the day" display -
sources(array): Content sources to enable -
update_interval(integer): Update frequency -
scroll_speed(integer): Text scrolling speed -
scroll_delay(float): Scroll step delay -
rotation_enabled(boolean): Rotate between sources
Available Sources:
-
word_of_the_day- English word with definition -
bible_verse- Daily bible verse -
slovenian_word- Slovenian word of the day
Features:
- Daily content rotation
- Multiple content sources
- Scrolling text display
- Automatic daily updates
Purpose: Display scrolling sports betting odds for multiple leagues.
Configuration Section: odds_ticker
{
"odds_ticker": {
"enabled": true,
"enabled_leagues": ["nfl", "nba", "mlb", "nhl"],
"show_favorite_teams_only": false,
"games_per_favorite_team": 1,
"max_games_per_league": 5,
"show_odds_only": false,
"fetch_odds": true,
"sort_order": "soonest",
"update_interval": 3600,
"scroll_speed": 2,
"scroll_delay": 0.05,
"display_duration": 30,
"future_fetch_days": 7,
"loop": true,
"show_channel_logos": true,
"broadcast_logo_height_ratio": 0.8,
"broadcast_logo_max_width_ratio": 0.8,
"request_timeout": 30,
"dynamic_duration": true,
"min_duration": 30,
"max_duration": 180
}
}Configuration Options:
-
enabled(boolean): Enable odds ticker -
enabled_leagues(array): Sports leagues to include -
show_favorite_teams_only(boolean): Only show favorite teams -
games_per_favorite_team(integer): Games per favorite team -
max_games_per_league(integer): Maximum games per league -
show_odds_only(boolean): Show only odds (no scores) -
fetch_odds(boolean): Fetch betting odds data -
sort_order(string): Game sorting order-
"soonest"- Earliest games first -
"latest"- Latest games first
-
-
update_interval(integer): Update frequency -
scroll_speed(integer): Scrolling speed -
scroll_delay(float): Scroll step delay -
display_duration(integer): Display time per cycle -
future_fetch_days(integer): Days ahead to fetch -
loop(boolean): Loop ticker continuously -
show_channel_logos(boolean): Show broadcast logos -
broadcast_logo_height_ratio(float): Logo height ratio -
broadcast_logo_max_width_ratio(float): Logo width ratio -
request_timeout(integer): API request timeout -
dynamic_duration(boolean): Auto-adjust duration -
min_duration(integer): Minimum display time -
max_duration(integer): Maximum display time
Features:
- Multi-league odds display
- Betting lines and spreads
- Broadcast channel information
- Team logos and colors
- Scrolling ticker format
- Dynamic content duration
- Favorite team filtering
Purpose: Display league standings and leaderboards for multiple sports.
Configuration Section: leaderboard
{
"leaderboard": {
"enabled": true,
"enabled_sports": {
"nfl": {
"enabled": true,
"top_teams": 10,
"season": 2025,
"level": 1,
"sort": "winpercent:desc,gamesbehind:asc"
},
"nba": {
"enabled": true,
"top_teams": 10
},
"mlb": {
"enabled": true,
"top_teams": 10
}
},
"update_interval": 3600,
"scroll_speed": 1,
"scroll_delay": 0.02,
"display_duration": 60,
"show_logos": true,
"show_records": true,
"dynamic_duration": true,
"min_duration": 45,
"max_duration": 120
}
}Configuration Options:
-
enabled(boolean): Enable leaderboard display -
enabled_sports(object): Sports-specific configurations -
update_interval(integer): Update frequency -
scroll_speed(integer): Scrolling speed -
scroll_delay(float): Scroll step delay -
display_duration(integer): Display time -
show_logos(boolean): Show team logos -
show_records(boolean): Show win-loss records -
dynamic_duration(boolean): Auto-adjust duration -
min_duration(integer): Minimum display time -
max_duration(integer): Maximum display time
Sport-Specific Options:
-
enabled(boolean): Enable this sport -
top_teams(integer): Number of teams to show -
season(integer): Season year (NFL) -
level(integer): League level (NFL) -
sort(string): Sorting criteria (NFL)
Features:
- League standings
- Team records and statistics
- Multiple sport support
- Scrolling leaderboard display
- Team logos and colors
- Customizable team count
Purpose: Manage configuration loading, validation, and hot-reloading.
Features:
- JSON configuration file loading
- Configuration validation
- Hot-reload capability
- Default value handling
- Error recovery
Purpose: Intelligent caching system for API data and assets.
Features:
- Multi-tier caching strategy
- Time-based cache invalidation
- Content-based cache validation
- Market-aware caching (stocks)
- Cache statistics and monitoring
- Automatic cache cleanup
Purpose: Manage display layouts and positioning.
Features:
- Dynamic layout calculation
- Multi-panel support
- Text positioning
- Image scaling and positioning
- Color management
Purpose: Test and preview different fonts on the display.
Features:
- Font rendering tests
- Size comparison
- Character set validation
- Performance testing
Purpose: Handle Spotify OAuth authentication flow.
Features:
- OAuth 2.0 flow
- Token refresh handling
- Credential storage
- Error handling
Purpose: Handle YouTube Music authentication.
Features:
- YouTube Music API setup
- Authentication flow
- Session management
Purpose: Spotify API client for music data.
Features:
- Currently playing track info
- Playlist access
- User library access
- Real-time updates
Purpose: YouTube Music API client.
Features:
- Track information
- Playback status
- Library access
- Real-time monitoring
Many managers support dynamic duration adjustment based on content length:
{
"manager_name": {
"dynamic_duration": true,
"min_duration": 30,
"max_duration": 300,
"duration_buffer": 0.1
}
}How it works:
- Calculate content scroll time
- Add buffer time for readability
- Ensure duration is within min/max bounds
- Adjust display rotation accordingly
Configure fixed display durations in the main display configuration:
{
"display": {
"display_durations": {
"clock": 15,
"weather": 30,
"stocks": 30,
"nhl_live": 30,
"nba_live": 30
}
}
}Sports managers support live game prioritization:
{
"sport_scoreboard": {
"live_priority": true,
"live_update_interval": 60
}
}How it works:
- Check for live games every update interval
- If live games exist, prioritize them in rotation
- Use faster update intervals during live games
- Return to normal rotation when games end
All managers include robust error handling:
- API Failures: Automatic retry with exponential backoff
- Network Issues: Graceful degradation and cached data usage
- Invalid Data: Data validation and sanitization
- Configuration Errors: Default value fallbacks
- Hardware Issues: Software fallback modes
- Intelligent cache invalidation
- Market-aware caching for financial data
- Time-based cache expiration
- Content-based cache validation
- Memory-efficient image handling
- Font caching and reuse
- Connection pooling for APIs
- Background data fetching
- Hardware-accelerated rendering
- Graceful update system
- Frame rate optimization
- Scrolling performance tuning
This comprehensive guide covers every manager in the LEDMatrix system. Each manager is designed to be modular, configurable, and performant, allowing you to create a fully customized LED matrix display experience.