AV Scenes - Activity-Based Control for your multimedia devices
An alternative to Logitech Harmony and other macro remotes for Home Assistant
Note: This project is currently in a very early version and has only been tested within my own system. Use at your own risk. Contributions and collaborators are very welcome.
What is AV Scenes?
AV Scenes is a Home Assistant integration that brings activity-based control to your AV equipment. Instead of controlling individual devices, you control activities like âWatch Movieâ, âListen to Musicâ, or âGamingâ - and the integration handles everything else.
100% local - no cloud dependency
Open source - MIT licensed
Native HA integration - works with your existing media_player entities
Modern UI - no YAML required
Key Features
Smart Activity Switching
The integration analyzes which devices are used in a current and new activity:
- Shared devices stay powered on - no interruption
- Only settings are updated - input source and volume change
- Transition time: 2-3 seconds instead of 20-30 seconds
- Extends device lifetime - less power cycling
Automatic Volume Control
- Set a volume controller per activity (usually your receiver)
- Define initial volume levels (0-100%)
- Automatic volume adjustment when starting activities
Power Sequencing
- Configurable delays between device power-on
- Ensures devices are ready before sending commands
- Prevents timing issues with slow-to-boot equipment
Input Source Management
- Dropdown selection of available sources (read from device)
- Automatic input switching when activating scenes
- No manual typing - sources are loaded from your devices
Multi-Room Support
- Independent control of multiple rooms
- Each room can have different activities
- Rooms can be based on Home Assistant areas or custom names
UI-Based Configuration
- No YAML required
- Intuitive config flow for setup
- CRUD operations - add, edit, rename, delete rooms/activities/devices
- Auto-save - changes are immediately applied
- Auto-reload - entities update automatically
Use Case Example
Before (Manual Control):
- Turn on receiver â wait
- Switch receiver input to BD/DVD â wait
- Turn on projector â wait
- Switch projector input to HDMI1 â wait
- Adjust receiver volume
- Turn on Blu-ray player â wait
Total time: ~30 seconds, 6 manual steps
After (AV Scenes):
- Activate âWatch Movieâ scene
And when switching from âWatch TVâ to âWatch Movieâ:
- Receiver stays on, just changes input and volume
- TV/Projector stays on, just changes input if needed
- Only devices not needed are turned off
Screenshots
Installation
HACS (Recommended)
- Open HACS â Integrations
- Click ⎠(three dots) â Custom repositories
- Add repository:
https://github.com/mkshb/ha_av_scenes - Category: Integration
- Click âDownloadâ
- Restart Home Assistant
Manual
- Download latest release from GitHub
- Copy
custom_components/av_scenesto your config folder - Restart Home Assistant
Configuration
After installation:
- Settings â Devices & Services
- Click Add Integration
- Search for âAV Scenesâ
- Follow the setup wizard:
- Add rooms (or use existing HA areas)
- Create activities
- Add devices to activities
- Configure input sources and volume
Entities Created
For each activity:
- Scene:
scene.{room}_{activity}- activate the activity - Switch:
switch.{room}_activity- shows current status, turn off to stop
Example:
# Activate "Watch Movie"
service: scene.turn_on
target:
entity_id: scene.living_room_watch_movie
# Stop current activity
service: switch.turn_off
target:
entity_id: switch.living_room_activity
Example Configuration
Living Room Setup:
Activity: âWatch Movieâ
- Receiver (Input: BD/DVD, Volume: 65%)
- Projector (Input: HDMI1)
- Blu-ray Player
Activity: âWatch TVâ
- Receiver (Input: SAT, Volume: 50%)
- TV (Input: HDMI1)
- Satellite Receiver
Activity: âGamingâ
- Receiver (Input: GAME, Volume: 75%)
- TV (Input: HDMI2)
- PlayStation 5
When switching from âWatch TVâ to âGamingâ:
Receiver stays on â Input: SATâGAME, Volume: 50%â75%
TV stays on â Input: HDMI1âHDMI2
Satellite Receiver turns off
PlayStation 5 turns on
Languages
German - Full translation
English - Full translation
Technical Details
Supported Entities:
- Currently:
media_playerentities only - Future: lights, covers, climate, etc.
Requirements:
- Home Assistant 2025.12.0 or newer
- Devices must support:
turn_on/turn_offservicessource_listattribute (for input switching)volume_setservice (for volume control)
Services Provided:
av_scenes.start_activity- Start an activityav_scenes.stop_activity- Stop current activityav_scenes.reload- Reload configuration
Lovelace Integration
Simple button example:
type: button
entity: scene.living_room_watch_movie
icon: mdi:movie-open
name: Watch Movie
Multiple activities with status:
type: horizontal-stack
cards:
- type: button
entity: scene.living_room_watch_tv
icon: mdi:television-box
name: TV
- type: button
entity: scene.living_room_watch_movie
icon: mdi:movie-open
name: Movie
- type: button
entity: scene.living_room_gaming
icon: mdi:gamepad-variant
name: Gaming
- type: button
entity: switch.living_room_activity
icon: mdi:power-off
name: Off
tap_action:
action: toggle
Known Limitations
- Only
media_playerentities supported (for now) - Input switching requires
source_listattribute - Volume control requires
volume_setservice - No multi-zone receiver support yet (planned for v0.2.0)
Contributing
Contributions are welcome! The project is on GitHub:
- Repository: GitHub - mkshb/ha_av_scenes: Custom Home Assistant integration to control multi audio/video devices as dynamic scenes
- Issues: GitHub ¡ Where software is built
- License: MIT
Documentation
- README: Full documentation with examples
- CHANGELOG: Version history
- SMART_SWITCHING.md: Technical deep-dive
- TRANSLATIONS.md: Translation guide
CHANGELOG
[0.2.1] - 2025-12-15
Added
Sensor Entities for Transparency - Each room gets a configuration sensor
- State: Shows current activity or âIdleâ
- Attributes: Complete details of all activities and devices
- Device order with all settings visible
- Perfect for Lovelace dashboard integration
- Icons change based on status (active:
mdi:play-circle, idle:mdi:information-outline)
Fixed
Config Persistence - Deep copy instead of shallow copy in OptionsFlow
- Nested data (rooms â activities â devices) now copied correctly
- Device deletions persist reliably
- Device order remains after changes
- No more âghost devicesâ in core.config_entries
Removed
Redundant Helper Text - Removed data_descriptionfrom menus- âChoose an actionâ text below dropdown menus no longer visible
- Cleaner UI without redundant text
[0.2.0] - 2025-12-15
Added
-
Multi-Entity Support - Integration of lights, switches and covers in addition to media players -
Lights: Brightness (0-100%), color temperature (Mired), transition time
-
Switches: On/off control with configurable delay
-
Covers: Position (0-100%) and tilt position
-
Device Order Control - Control over device power-on sequence -
Numbered display (1., 2., 3., âŚ)
-
âChange device orderâ function to move up/down
-
Devices execute from top to bottom
-
Important for dependencies (e.g., outlet before TV)
-
Persistent Device Order - Order persists after Home Assistant restart -
Explicit storage of
device_orderlist -
Synchronization with
device_stateson every save -
Backward compatibility with existing configurations
-
Delete Room - Function to delete rooms with all activities -
Copy Activity - Duplicate existing activities including all devices and settings -
Improved Device Display -
Friendly names instead of entity IDs
-
Power-on delay visible for each device
-
Clear formatting with all important parameters
-
Cover Delays - power_on_delay now works for covers too -
Optimized Menu Order - âFinish/Backâ options always at the bottom
Fixed
-
Cover control now uses correct services (open_cover, set_cover_position, close_cover) -
Device order is synchronized before every save -
Deleted devices are removed from device_order
Changed
-
Coordinator now uses device_order for sequential execution -
Devices are turned off in reverse order -
Menus show options dynamically based on content
TL;DR: Activity-based AV control for Home Assistant. Like Harmony, but local, free, and open source. Smart switching keeps devices on during transitions. No YAML needed.





