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 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: singleTot 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.


