Skip to content

hyperb1iss/signalrgb-homeassistant

Repository files navigation

🌌 SignalRGB Home Assistant Integration

CI Status Latest Release License

HACS Default Home Assistant 2026.4+ Python 3.14+

Transform your smart home lighting with the power of SignalRGB, integrated directly into Home Assistant.

FeaturesRequirementsInstallationConfigurationUsageDevelopmentContributing


🔮 Features

  • 🌐 Control SignalRGB as a light entity in Home Assistant
  • 💡 Seamless on/off control with brightness adjustment
  • 🎭 Apply lighting effects from SignalRGB's full effect library
  • 🧬 Automatic effect image and color extraction
  • 🧩 Select and apply per-effect presets
  • 📐 Change device layouts with the layout selector
  • 🪄 Navigate effects with next / previous / random buttons
  • ⚡ Single-shot state polling (one API call per coordinator cycle)

Want more features? Vote for this SignalRGB feature request!

📡 Requirements

  • Home Assistant 2026.4.0 or newer
  • Python 3.14.2 or newer (matches Home Assistant's floor)
  • SignalRGB installed and running on a Windows PC reachable from your HA instance
  • SignalRGB HTTP API enabled (default port: 16038)
  • SignalRGB Pro subscription — the HTTP API requires Pro

💎 Installation

HACS (Recommended)

This integration is in the HACS default repository:

  1. Open HACS in Home Assistant
  2. Go to Integrations and click the + button
  3. Search for SignalRGB and select it
  4. Click Download and restart Home Assistant

Manual Installation

  1. Download the latest release from the releases page
  2. Copy the custom_components/signalrgb/ folder into your Home Assistant custom_components/ directory
  3. Restart Home Assistant

Enable the SignalRGB HTTP API

  1. Open SignalRGB on your Windows PC
  2. Go to Settings → General → Enable HTTP API
  3. Note the port number (default: 16038)
  4. If needed, allow incoming connections on that port in Windows Firewall

⚙️ Configuration

After installation, add the integration from the Home Assistant UI:

  1. Navigate to Settings → Devices & Services
  2. Click Add Integration and search for SignalRGB
  3. Enter the hostname or IP address of the PC running SignalRGB and the port number
  4. Click Submit

🎭 Usage

Once configured, SignalRGB exposes several entities:

  • 💡 Light Entity — power, brightness, and effect selection
  • 📐 Layout Selector — switch between SignalRGB device layouts
  • 🧩 Effect Preset Selector — apply presets for the current effect
  • 🪄 Button Entities — navigate effects (next, previous, random)

💡 Light Entity

The main light entity lets you turn SignalRGB on/off, select effects, and adjust brightness — all from automations, scripts, and scenes.

automation:
  - alias: "Gaming Time"
    trigger:
      platform: state
      entity_id: binary_sensor.gaming_pc_status
      to: "on"
    action:
      - service: light.turn_on
        target:
          entity_id: light.signalrgb
        data:
          effect: "Cyberpunk 2077"
          brightness: 255

📐 Layout Selector

Switch between SignalRGB device layouts:

service: select.select_option
target:
  entity_id: select.signalrgb_layout
data:
  option: "My Gaming Setup"

Automation example — switch layout in the evening:

automation:
  - alias: "Evening Gaming Setup"
    trigger:
      platform: time
      at: "20:00:00"
    action:
      - service: select.select_option
        target:
          entity_id: select.signalrgb_layout
        data:
          option: "Gaming Setup"
      - service: light.turn_on
        target:
          entity_id: light.signalrgb
        data:
          effect: "Ambient Waves"
          brightness: 200

🧩 Effect Preset Selector

Apply presets for the current effect:

service: select.select_option
target:
  entity_id: select.signalrgb_effect_preset
data:
  option: "Rainbow"

Movie-night script example:

script:
  movie_night:
    alias: "Movie Night Lighting"
    sequence:
      - service: light.turn_on
        target:
          entity_id: light.signalrgb
        data:
          effect: "Audio Visualizer"
      - delay: 00:00:02
      - service: select.select_option
        target:
          entity_id: select.signalrgb_effect_preset
        data:
          option: "Subtle Pulse"
      - service: light.turn_on
        target:
          entity_id: light.signalrgb
        data:
          brightness: 128

🪄 Effect Navigation Buttons

# Next effect
service: button.press
target:
  entity_id: button.signalrgb_next_effect
# Random effect
service: button.press
target:
  entity_id: button.signalrgb_random_effect

Cycle effects every hour while the light is on:

automation:
  - alias: "Hourly Effect Change"
    trigger:
      platform: time_pattern
      hours: "*"
    condition:
      - condition: state
        entity_id: light.signalrgb
        state: "on"
    action:
      - service: button.press
        target:
          entity_id: button.signalrgb_next_effect

Dashboard button card:

type: button
name: Next Effect
icon: mdi:skip-next
tap_action:
  action: call-service
  service: button.press
  target:
    entity_id: button.signalrgb_next_effect

🪄 Enhance Your UI with hyper-light-card

Take your SignalRGB control to the next level with hyper-light-card — a custom Lovelace card featuring:

  • 🌈 Dynamic color adaptation based on the current effect
  • 📊 Detailed effect information display
  • 🖼️ Effect preview images
  • 🎛️ Easy effect switching and parameter control

Install via HACS as a custom repository in the Frontend category.

🧪 Development

This project uses the Astral stack — uv for packaging, ruff for linting and formatting, and ty for type checking.

# Install uv (one-time)
curl --proto '=https' --tlsv1.2 -sSf https://astral.sh/uv/install.sh | sh

# Clone and set up
git clone https://github.com/hyperb1iss/signalrgb-homeassistant.git
cd signalrgb-homeassistant
uv sync

# Install pre-commit hooks
uv run pre-commit install

Common Commands

Command What it does
make test Run the test suite
make coverage Tests with coverage (HTML report in htmlcov/)
make lint ruff check + ruff format --check
make typecheck ty check
make check lint → typecheck → test (the full gauntlet)
make format Format with ruff
make fix Auto-fix lint issues + format

All commands run through uv run — no virtualenv activation needed.

🦋 Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create a branch: git checkout -b your-feature-name
  3. Make your changes, commit using Gitmoji conventions
  4. Run make check to verify lint, types, and tests all pass
  5. Open a pull request

🐛 Support

📄 License

Apache License 2.0 — see LICENSE for details.

⚠️ Disclaimer

This integration is not officially affiliated with or endorsed by WhirlwindFX or SignalRGB. Use at your own risk.


Created by Stefanie Jane 🌠

If you find this project useful, buy me a Monster Ultra Violet 💜

About

Transform your smart home lighting with the power of SignalRGB, now integrated directly into Home Assistant!

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages