Dutch & Dutch 8C Smart Volume Control with Philips Hue Dial
Dutch & Dutch 8C active speakers have a very comprehensive web interface, also encapsulated into a phone App, that allows configuration of all the supported modes, inputs, DSP filters etc.
I wanted to be able to incorporate the speakers into my existing home automation setup, that's based on Home Assistant. So I wrote a custom component for HA that allows for control of all the basic features of the 8C: Volume, Input and Preset selection, track navigation. Github link
One thing that was still missing in my setup was a decent volume control solution, as depending on an app to control the device volume is annoying, and using multiple remotes to control volume of different devices is confusing for non-technical users.
I recently learnt about the Philips Hue Tap Dial switch, for which support has been added to Home Assistant. Since I already had a Zigbee network set up, this seemed like an ideal solution. It provides four buttons and a rotary dial that can be hooked up to actions within HA. Someone had already written an HA Blueprint to allow the device to be easily connected up to a Media Player.
# Universal media player for Lounge AV. # Some commands are specifically done to match the Hue Dial Blueprint. # Uses second Universal Media Player to handle MiniDSP or 8C volume media_player: - platform: universal name: TVandDSP state_template: > {% if is_state('media_player.minidspshd', 'off') and is_state('media_player.sony_kdl_55w829b', 'off') %} off {% else %} on {% endif %} children: - media_player.sony_kdl_55w829b - media_player.DSPor8C active_child_template: > {% if not is_state('media_player.sony_kdl_55w829b', 'off') %} media_player.sony_kdl_55w829b {% else %} media_player.DSPor8C {% endif %} commands: turn_on: action: switch.turn_on target: entity_id: switch.watch_tv turn_off: action: media_player.turn_off target: entity_id: media_player.sony_kdl_55w829b media_play_pause: action: switch.turn_on target: entity_id: switch.watch_tv volume_up: action: media_player.volume_up target: entity_id: media_player.DSPor8C volume_down: action: media_player.volume_down target: entity_id: media_player.DSPor8C volume_set: action: media_player.volume_set target: entity_id: media_player.DSPor8C data: volume_level: "{{volume_level}}" select_source: action: media_player.select_source target: entity_id: media_player.sony_kdl_55w829b data: source: "{{source}}" volume_mute: action: media_player.volume_mute data: entity_id: media_player.DSPor8C is_volume_muted: "{{ is_volume_muted }}" unique_id: TVandDSP_UID_IS_HERE attributes: is_volume_muted: media_player.DSPor8C|is_volume_muted volume_level: media_player.DSPor8C|volume_level # The configuration files don't support enough templating, so we need # to handle switching between MiniDSP and 8C volume with a second player # that is essentially a passthrough - platform: universal name: DSPor8C state_template: > {% if is_state('media_player.minidspshd', 'off') and is_state('media_player.8c_3012', 'off') %} off {% else %} on {% endif %} children: - media_player.minidspshd - media_player.8c_3012 active_child_template: > {% if not is_state_attr('media_player.8c_3012', 'source', 'XLR') %} media_player.8c_3012 {% else %} media_player.minidspshd {% endif %} unique_id: DSPor9C_UID_IS_HERE
Comments
Post a Comment