Home Assistant custom integration for madVR Envy video processors, powered by madvr-envy.
This repository is the canonical and maintained madVR Envy integration for Home Assistant.
This project is intentionally maintained as a high-quality custom integration instead of targeting Home Assistant Core. That allows faster iteration, deeper protocol support, and tighter product-focused UX.
Release notes and compatibility updates are tracked in this repository.
- Home Assistant with HACS installed
- madVR Envy reachable from Home Assistant on your network
- Envy API port available (default
44077)
- Open HACS in Home Assistant.
- Go to
Integrations. - Search for
madVR Envy. - Open it and click
Download. - Restart Home Assistant.
- Go to Settings > Devices & Services >
Add Integration. - Search for
madVR Envyand complete setup.
If HACS has not synced the default index update yet, temporarily add it as a custom repository:
- In HACS, open the top-right menu (three dots) and choose
Custom repositories. - Add
https://github.com/binarylogic/madvr-envy-homeassistantas categoryIntegration. - Refresh HACS and install as above.
- Copy
custom_components/madvr_envyinto your Home Assistantconfig/custom_components/. - Restart Home Assistant.
- Go to Settings > Devices & Services >
Add Integration. - Search for
madVR Envyand complete setup.
- Go to Settings > Devices & Services.
- Click
Add Integration. - Search for
madVR Envy. - Enter host and port (default
44077).
If you just want to get working quickly:
- Add the integration with your Envy host/IP and port.
- Add these entities to a dashboard:
remote.madvr_envy_*sensor.*_power_stateswitch.*_tone_mapselect.*_power_modeselect.*_active_profile
- Verify
sensor.*_power_stateupdates correctly when the Envy power mode changes. - Use
remote.turn_on/remote.turn_offfrom Home Assistant to confirm command path works.
Common day-to-day patterns:
- Use the
selectentities for deterministic automation state:select.*_power_modeselect.*_active_profile
- Use
switch.*_tone_mapfor quick enable/disable in scenes. - Use
remote.send_commandfor remote buttons and direct actions. - Use integration services when you want explicit, script-friendly control.
Example: startup scene with profile selection
automation:
- alias: "Movie Night - Envy"
trigger:
- platform: state
entity_id: input_boolean.movie_night
to: "on"
action:
- service: remote.turn_on
target:
entity_id: remote.madvr_envy_*
- delay: "00:00:02"
- service: select.select_option
target:
entity_id: select.madvr_envy_*_active_profile
data:
option: "Cinema: Day"
- service: switch.turn_on
target:
entity_id: switch.madvr_envy_*_tone_mapExample: remote action command
service: remote.send_command
target:
entity_id: remote.madvr_envy_*
data:
command:
- MENU
- INFO
- action:restartmadvr_envy.press_keykey(for exampleMENU,INFO,OK,BACK,LEFT,RIGHT,UP,DOWN)
madvr_envy.activate_profilegroup_id,profile_index
madvr_envy.run_actionaction:standby,power_off,hotplug,restart,reload_software,tone_map_on,tone_map_off
- Sensors: power state, temperatures, version
- Sensors: incoming/outgoing signal resolution, frame rate, HDR mode, incoming aspect ratio
- Sensors: aspect ratio mode, aspect ratio name/decimal, masking ratio decimal, active profile
- Sensors (advanced): version, current menu
- Binary sensor: signal present
- Switch: tone mapping
- Select: power mode, active profile, per-profile-group selects
- Buttons: power, standby, hotplug, restart, reload software, remote buttons
- Remote: keypress and action commands (
action:standby,action:restart, etc.)
Adapter events are forwarded to the HA event bus as madvr_envy.<event_kind>, including:
madvr_envy.initialmadvr_envy.system_actionmadvr_envy.display_changedmadvr_envy.settings_uploadedmadvr_envy.buttonmadvr_envy.option_inherited
- Setup says
Failed to connect to the madVR Envy:- Confirm host/IP and port (
44077by default). - Confirm Home Assistant can reach the Envy over the network.
- Confirm host/IP and port (
- Integration loads but commands do not execute:
- Check entity availability and
sensor.*_power_statefirst. - Verify the Envy is not in a state that rejects command execution.
- Check entity availability and
- Some entities are missing:
- Check integration options and ensure
Enable advanced entitiesis on.
- Check integration options and ensure
make install
make lint
make testmake install behavior:
- If
../py-madvr-envyexists, it installs editable local library. - Otherwise it installs
madvr-envyfrom GitHub.
- Conventional commits on
master release-pleaseopens/updates release PRs automatically- Merging release PR creates GitHub release and uploads
madvr_envy.zip

