No description
Find a file
2025-07-03 00:49:19 +02:00
__init__.py featsss: initial commit 2025-06-30 01:52:10 +02:00
animations.py feat: only cycle 2025-06-30 02:32:11 +02:00
config.py feat: add speech to text 2025-06-30 03:40:36 +02:00
hue_controller.py featsss: initial commit 2025-06-30 01:52:10 +02:00
llm_processor.py fix: StdioServerParameters import 2025-07-03 00:49:19 +02:00
main.py feat: try adding LLM 2025-07-01 01:22:36 +02:00
mapper.py featsss: initial commit 2025-06-30 01:52:10 +02:00
mcp_server.py feat: try adding LLM 2025-07-01 01:22:36 +02:00
midi_controller.py fix: undo reconnection, doesnt really work yet. 2025-06-30 02:08:43 +02:00
README.md feat: try adding LLM 2025-07-01 01:22:36 +02:00
speech_to_text.py fix: try pygame for playback 2025-06-30 04:05:29 +02:00

MIDI-to-Hue Controller

A modular Python application for controlling Philips Hue lights with MIDI controllers.

Features

  • Map MIDI notes and control changes to Hue light parameters
  • Throttled updates to prevent overwhelming the Hue Bridge
  • Configurable mappings via JSON
  • LED feedback support for controller visualization
  • Customizable value transformations

Structure

This application has been refactored to follow modular design principles:

  • config.py - Configuration management module
  • hue_controller.py - Philips Hue bridge and light control
  • midi_controller.py - MIDI device management
  • mapper.py - Mapping logic between MIDI and Hue
  • main.py - Application entry point

Usage

  1. Connect your MIDI device
  2. Edit midi_hue_config.json to configure your mappings
  3. Run python main.py

Configuration

The default configuration file (midi_hue_config.json) contains:

{
  "midi_device": 1,
  "update_interval_ms": 50,
  "bridge_ip": "192.168.178.35",
  "mappings": [
    {
      "midi_channel": 5,
      "midi_control": 1,
      "light_name": "Zimmer Decke",
      "parameter": "bri",
      "value_transform": "value * 2"
    },
    ...
  ]
}

Dependencies

  • mido
  • phue
  • mcp (FastMCP)

MCP Server Integration

The application now includes MCP (Machine Control Protocol) server integration, allowing you to control your Hue lights through an MCP client. This enables voice assistants and other AI agents to control your lighting system.

Running the MCP Server

By default, the MCP server starts automatically alongside the main application. To run only the MCP server:

python main.py --mcp-only

Available MCP Tools

The following tools are available through the MCP server:

Core Light Control

  • list_all_lights - List all available lights and their current states
  • set_light_state - Turn a specific light on or off
  • set_light_brightness - Adjust brightness of a specific light (0-254)
  • flash_alert - Make a light blink/flash for notifications

Advanced Light Control

  • set_light_color - Set a light to a specific color using hex (#RRGGBB), RGB format, or common names
  • get_light_info - Get detailed information about a specific light
  • group_control - Control multiple lights as a group

Scheduling

  • schedule_lighting - Schedule a light change for a future time
  • list_scheduled_tasks - List all scheduled lighting tasks
  • cancel_scheduled_task - Cancel a scheduled lighting task

Example MCP Usage

# Using the list_all_lights tool to see available lights
response = await hue_control.list_all_lights()
print(response)

# Turn on a specific light
response = await hue_control.set_light_state(light_name="Living Room", on=True)
print(response)

# Set a light to a specific color
response = await hue_control.set_light_color(light_name="Bedroom", color="#FF0000")
print(response)

# Schedule a light to turn off in 30 minutes
response = await hue_control.schedule_lighting(
    light_name="Kitchen",
    parameter="on",
    value=False,
    minutes_from_now=30
)
print(response)