Automatische volumeregeling in Home Assistant

Gepubliceerd op 29 december 2023 • 4 min leestijd • 815 woorden
Heb je daar ook een hekel aan? Switch je op je Apple TV van YouTube naar Muziek, of van Prime Video naar Plex en vervolgens staat het geluid van je…
Automatische volumeregeling in Home Assistant

Heb je daar ook een hekel aan? Switch je op je Apple TV van YouTube naar Muziek, of van Prime Video naar Plex en vervolgens staat het geluid van je versterker veel en veel te hard?

Nou, ik in ieder geval wel. Daarom heb ik een tijd geleden een automation gemaakt in Home Assistant die ervoor zorgt dat het geluid van de verschillende bronnen automatisch worden geregeld door Home Assistant. Hoe? Dat leg ik je uit.

Hoe dan  

Apple TV integratie

  • apps als bronnen
  • versterker integratie
  • input_number met het volume
  • automation die op basis van de triggers dingen verandert

Voordat je begint  

Voordat je begint, zorg ervoor dat je basis op orde is. Dat wil zeggen: Je versterker en Apple TV moeten aangestuurd kunnen worden door Home Assistant

Versterker  

In principe kun je dit met iedere versterker die de mogelijkheid heeft om volume aan te passen vanuit Home Assistant. In mijn geval gebruik ik een relatief oude Denon versterker. Gelukkig heeft deze Denon versterker wel een netwerkaansluiting. Hij kan worden aangestuurd door Home Assistant door gebruik te maken van de standaard integratie voor Denon versterkers.

Apple TV  

Voor Apple TV geldt dat je een ‘relatief moderne’ versie nodig hebt. Ik heb een Apple TV HD waar ik dit mee gebruik, dus zo nieuw hoeft het niet te zijn.

Home Assistant  

Je zult gebruik moeten maken van Home Assistant met de Apple TV integratie. Ik weet zo niet vanaf welke versie ik dit al gebruik, maar ik weet in ieder geval zeker dat heeft gewerkt op versies 2023.06 en hoger.

Aangezien je hier op een redelijk geavanceerd onderwerp hebt geklikt, ga ik je niet uitleggen hoe je Home Assistant moet configureren, of hoe je je Apple TV opneemt in Home Assistant. Hetzelfde geldt voor hoe je scripts , automations en input_number helpers moet maken. Klik voor deze onderwerpen op de respectievelijke woorden, die leiden je naar de onderwerpen op de Home Assistant site.

De stappen  

Maak de input_number helpers aan  

Tegenwoordig herkent de Apple TV integratie welke apps er op de Apple TV staan en welke er gestart it. Je kunt apps kiezen op basis van ‘source’, door de naam van de app te geven. Dus wil je Netflix starten, dan kies je als source ‘Netflix’, etc.

Voor deze automation is het gebruik van app_id voor mij iets handiger. App_id is de bundle identifier. Iedere app op TVOS, maar ook op iOS, macOS, maar zelfs op Android, gebruikt het. Het is een manier om een app uniek te kunnen identificeren in het ecosystem. Het is gebruikelijk om bij een bundle ID gebruik te maken van de ‘reverse domain name notation’ te gebruiken om conflicten te voorkomen. Voor Netflix ziet bundle ID er als volgt uit: com.netflix.Netflix.

Waarom ik app_id gebruik, zie je straks bij de automation.

Ik heb nog geen makkelijke manier gevonden om een lijst met apps uit te lezen. Hierbij een lijstje met apps die ik tot nu toe heb gevonden en gebruikt, zodat jij ze niet op hoeft te zoeken. Let op, ik heb ze alvast in kleine letters neergezet.

App bundle ID
Netflix com.netflix.netflix
Disney+ com.disney.disneyplus
Apple Arcade com.apple.Arcade
Facetime com.apple.facetime
Apple Fitness com.apple.Fitness
Apple Movies com.apple.TVMovies
Apple Music com.apple.TVMusic
Apple Podcasts com.apple.podcasts
Amazone Prime Video com.amazon.aiv.aivapp
Airplay com.apple_tvairplay
Apple TV+ com.apple_tvwatchlist
Youtube com.google.ios.youtube
HBO Max com.hbo_hbonow
Ziggo Go com.libertyglobal.ziggogo_tv
Plex com.plexapp.plex
SkyShowtime com.skyshowtime.skyshowtime
Spotify com.spotify.client
NPO Start nl.omroep.uitzendinggemist

Mocht je een andere app willen starten, dan kun je gebruik maken van de ‘Ontwikkelhulpmiddelen’ of ‘Developer tools’.

Ik heb de helpers aangemaakt volgens een bepaalde naamgeving: ‘std_vol_’ Je hebt de keuze om dit via de UI te doen of via YAML-files. Ik heb ervoor gekozen om dit in de UI te doen.

Maak de automation  

De automation zelf wordt getriggerd door het veranderen van app_id attribuut. Vervolgens wordt worden alle puntjes in de app_id vervangen door underscores, ‘_’. Vervolgens wordt er std_vol_ aan toegevoegd aan de voorkant. Ook wordt de hele string omgezet naar kleine letters. Dit is uiteindelijk de naam van de input_number waar de waarde van gebruikt wordt om uiteindelijk het volume in te stellen van de versterker. Mocht een app niet herkend worden door de automation, schakelt de versterker automatisch naar een lager volume. Zo word je nooit meer verrast.

Volledige code


yaml
alias: Automatische volume regeling
description: ""
trigger:
  - platform: state
    entity_id:
      - media_player.woonkamer
    attribute: app_id
condition: []
action:
  - service: media_player.volume_set
    target:
      entity_id: media_player.denon_x2100w
    data_template:
      volume_level: >
        {%if
        states("input_number.std_vol_"+(state_attr('media_player.woonkamer','app_id')|lower|replace('
        ','_')  | replace('.',"_"))) != "unknown" %} {{-
        states("input_number.std_vol_"+(state_attr('media_player.woonkamer','app_id')|lower|replace('
        ','_')  | replace('.',"_"))) }}  {%- else %} 0.1 {%- endif %}
mode: single

Tot slot  

Met deze automation kun je eindelijk genieten van je apps op je Apple TV, zonder iedere keer je kapot te schrikken wanneer het volume weer veel harder blijkt te staan dan je dacht. Mocht je andere app_id’s tegenkomen, deel ze gerust in de reacties hieronder.

Zie ook

    Follow me