No description
| __init__.py | ||
| animations.py | ||
| config.py | ||
| hue_controller.py | ||
| llm_processor.py | ||
| main.py | ||
| mapper.py | ||
| mcp_server.py | ||
| midi_controller.py | ||
| README.md | ||
| speech_to_text.py | ||
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 modulehue_controller.py- Philips Hue bridge and light controlmidi_controller.py- MIDI device managementmapper.py- Mapping logic between MIDI and Huemain.py- Application entry point
Usage
- Connect your MIDI device
- Edit
midi_hue_config.jsonto configure your mappings - 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)