Sync Philips Hue lights with Dota 2 matches. Pulses red on kills, rainbow on rampages, fades on death.
- Kills - Red pulse for each enemy elimination
- Killing Sprees - Intense red flashing for domination (3+ kills)
- Rampage - Rainbow celebration for legendary streaks (5+ kills)
- Death - Lights fade to darkness during respawn
- Respawn - Bright white flash when returning to battle
- Ultimate - Epic purple pulse when casting ultimate abilities
- Low Health - Urgent red breathing effect when health drops below 20%
- Victory/Defeat 8000 - Rainbow celebration or blue fade at game end
- Dota 2 (Steam)
- Philips Hue Bridge and compatible smart lights
- Node.js 16+ or Bun runtime
- Local network connection
git clone https://github.com/greenb1rd/dota2-hue-gsi.git
cd dota2-hue-gsi
npm install
Create a .env
file in the project root:
GSI_PORT=3000
HUE_BRIDGE_IP=192.168.1.100 # Your Hue Bridge IP
HUE_USERNAME=your-hue-username # Generated from Hue API
HUE_LIGHT_IDS=1,2,5 # Optional: specific light IDs
Finding your Hue Bridge IP:
- Open the Philips Hue app
- Settings → Hue Bridges → (i) icon
- Note the IP address
Getting a Hue username:
- Visit
http://<bridge-ip>/debug/clip.html
- Press the physical button on your Hue Bridge
- Send a POST to
/api
with body:{"devicetype":"dota2-hue-gsi"}
- Copy the generated username
Copy the GSI configuration file to your Dota 2 directory:
Windows:
copy gamestate_integration_hue.cfg "C:\Program Files (x86)\Steam\steamapps\common\dota 2 beta\game\dota\cfg\"
macOS:
cp gamestate_integration_hue.cfg ~/Library/Application\ Support/Steam/steamapps/common/dota\ 2\ beta/game/dota/cfg/
Linux:
cp gamestate_integration_hue.cfg ~/.steam/steam/steamapps/common/dota\ 2\ beta/game/dota/cfg/
npm start
Launch Dota 2
# Development mode with hot reload
npm run dev
# Build TypeScript
npm run build
# Type checking
npm run lint
graph LR
A[Dota 2] -->|Game State| B[GSI Server]
B --> C[Event Detection]
C --> D[Event Mapper]
D --> E[Hue Controller]
E --> F[Philips Hue Lights]
Environment Variable | Description | Default |
---|---|---|
GSI_PORT |
Port for GSI server | 3000 |
HUE_BRIDGE_IP |
Philips Hue Bridge IP address | Required |
HUE_USERNAME |
Hue API authentication token | Required |
HUE_LIGHT_IDS |
Comma-separated light IDs | All lights |
- Verify Hue Bridge IP and username in
.env
- Ensure lights are powered on and connected
- Check firewall settings for port 3000
- Confirm GSI config file is in the correct Dota 2 directory
- Restart Dota 2 after adding the config
- Check Windows Firewall or antivirus blocking
- Verify you're on the same network as Hue Bridge
- Test Hue API access:
http://<bridge-ip>/api/<username>/lights