Integration to control OSC-enabled hardware from Home Assistant.
This integration will set up the following platforms:
| Platform | Description |
|---|---|
button |
Trigger OSC messages with predefined values |
number |
Control OSC parameters with sliders/faders (0-1 range by default) |
- ποΈ Sliders/Faders: Control continuous parameters (volume, brightness, etc.)
- π Buttons: Trigger specific OSC commands
- π Network-based: Works over UDP/IP with any OSC-compatible device
- βοΈ Flexible: Support for float, int, and bool value types
- π Native HA Integration: Full Home Assistant UI configuration support
Use v1.0.1 or newer for current Home Assistant releases. It has been verified with Home Assistant Core 2026.6.4 and fixes the button/slider creation failure reported on Core 2025.12.3. Earlier 0.2.x builds used a removed Home Assistant platform setup API, so creating buttons/sliders from Actions can fail on newer Home Assistant Core versions.
- Open HACS in Home Assistant
- Go to "Integrations"
- Click the three dots in the top right
- Select "Custom repositories"
- Add this repository URL and select "Integration" as the category
- Click "Install"
- Restart Home Assistant
- Download the latest release
- Copy the
custom_components/ha_osc_controlfolder to your Home Assistant'scustom_componentsdirectory - Restart Home Assistant
π For a complete step-by-step UI guide, see SETUP_GUIDE.md
- Go to Settings β Devices & Services
- Click + Add Integration
- Search for "OSC Control"
- Enter your OSC server details:
- Device Name: A friendly name for your OSC device
- Host: IP address of your OSC-enabled hardware
- Port: OSC port (default: 9000)
The integration uses a two-step process:
- Create OSC Endpoints - Define target destinations and OSC addresses
- Create Controls - Add buttons/sliders that trigger those endpoints
Endpoints, buttons, and sliders are created from Developer Tools β Actions. The old Developer Tools β Services tab no longer exists in current Home Assistant.
In Developer Tools β Actions, select ha_osc_control.add_endpoint.
name: "Master Volume"
osc_address: "/mix/volume"
value_type: "float"
# host and port are optional (uses integration defaults)Run the action again for each additional endpoint:
name: "FX Trigger"
osc_address: "/fx/trigger"
value_type: "int"Note the endpoint_id that appears in the logs. It is generated from the
config entry ID and OSC address, for example /mix/volume becomes
your_entry_id__mix_volume.
# Select ha_osc_control.add_slider
name: "Master Volume Fader"
endpoint_id: "your_entry_id__mix_volume"
min: 0.0
max: 1.0
step: 0.01# Select ha_osc_control.add_button
name: "Trigger Effect"
endpoint_id: "your_entry_id__fx_trigger"
value: 1You can also create controls automatically when Home Assistant starts:
automation:
- alias: "Setup OSC Controls"
trigger:
- platform: homeassistant
event: start
action:
# Create endpoints first
- action: ha_osc_control.add_endpoint
data:
name: "Master Volume"
osc_address: "/mix/volume"
- action: ha_osc_control.add_endpoint
data:
name: "FX Trigger"
osc_address: "/fx/trigger"
# Then create controls
- action: ha_osc_control.add_slider
data:
name: "Master Volume Fader"
endpoint_id: "your_entry_id__mix_volume"
min: 0.0
max: 1.0
- action: ha_osc_control.add_button
data:
name: "Trigger Effect"
endpoint_id: "your_entry_id__fx_trigger"
value: 1.0Control volume faders and mute buttons on OSC-compatible mixing consoles:
# Create endpoints
action: ha_osc_control.add_endpoint
data:
name: "Ch1 Volume"
osc_address: "/ch/01/mix/fader"
value_type: "float"
---
action: ha_osc_control.add_endpoint
data:
name: "Ch1 Mute"
osc_address: "/ch/01/mix/mute"
value_type: "int"
---
# Create controls
action: ha_osc_control.add_slider
data:
name: "Channel 1 Volume"
endpoint_id: "your_entry_id__ch_01_mix_fader"
min: 0.0
max: 1.0
---
action: ha_osc_control.add_button
data:
name: "Channel 1 Mute"
endpoint_id: "your_entry_id__ch_01_mix_mute"
value: 1Control OSC-enabled lighting systems:
action: ha_osc_control.add_endpoint
data:
name: "Stage Light Brightness"
osc_address: "/light/1/intensity"
value_type: "int"
---
action: ha_osc_control.add_slider
data:
name: "Stage Light Brightness"
endpoint_id: "your_entry_id__light_1_intensity"
min: 0
max: 255Control VJ software or video projectors:
action: ha_osc_control.add_endpoint
data:
name: "Next Scene"
osc_address: "/scene/next"
value_type: "int"
---
action: ha_osc_control.add_button
data:
name: "Next Scene"
endpoint_id: "your_entry_id__scene_next"
value: 1This integration works with any device or software that supports OSC (Open Sound Control), including:
- Audio: QLab, Behringer X32, Midas M32, Allen & Heath dLive, etc.
- Lighting: GrandMA, ETC Eos, Chamsys MagicQ, etc.
- Video: Resolume, VDMX, TouchDesigner, etc.
- Custom: Any DIY project with OSC support (Arduino, Raspberry Pi, etc.)
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.