skip to content
Scraplab
Table of Contents

Introductie

Iedere (LG) TV eigenaar kent het wel; de knop op je afstandbediening die voorzien is van een dienst waar je 0,0 gebruik van maakt. In mijn geval was het de rakuten tv knop die een mooie plek heeft op mijn afstandbediening maar tot nu toe alleen per ongeluk ingedrukt is. Met deze stappen laat ik zien hoe ik de knop nuttig heb gemaakt door middel van mijn lampen te dimmen naar een filmstand zodra de knop wordt ingedrukt en je gezellig film kan kijken.

Remote

Randvoorwaarden

Ik ga er vanuit dat je de volgende zaken hebt:

Via cani.rootmy.tv kun je je tv-model opzoeken en controleren of er een exploit beschikbaar is om je tv te rooten. In mijn geval heb ik een 49NANO866NA die ik heb kunnen rooten middels faultmanager-autoroot.

LG TV Input hook

Vervolgens kun je via de homebrew store de applicatie LG TV Input hook installeren. Dit is een applicatie die op de achtergrond draait en keystrokes van je afstandbediening kan afvangen om er vervolgens een actie aan te hangen. In ons geval gaan we er een command aanhangen.

Na het opstarten van lg tv input hook op je televisie, ziet je scherm er zo uit:

Remote

Nu kun je via je telefoon, laptop of pc de URL benaderen die bovenaan weergegeven wordt. Blijf wel even in de buurt van je tv, want we gaan nu het ID achterhalen van de button die we een nieuwe actie willen geven. Je scherm op je telefoon zal er ongeveer hetzelfde uitzien als de tv, alleen is het wat makkelijker om dingen in te typen.

Remote

Druk nu op de rakutentv knop (of een andere knop die je wilt vervangen) In de log verschijnt iets als:

Key pressed: 1083

Dat is alles wat we nodig hebben.

Actie koppelen aan de knop

LG TV Input Hook kan meerdere acties uitvoeren, maar de meest flexibele optie is het uitvoeren van een shell command. Daarmee kunnen we straks Home Assistant aanroepen.

Scroll in de webinterface naar Key bindings en voeg een nieuwe binding toe:

Key: 1083

Action type: Command

Command: (die vullen we zo in)

In Home Assistant heb ik een script aangemaakt die mijn woonkamer in “filmstand” zet, wat inhoudt dat alleen de eetkamerlamp zachtgedimd aangaat en de andere lampen uit. Als ik nog een keer op de knop druk, dan moet de vorige instellingen teruggezet worden van de lampen.

Voorbeeld script.yaml (Gegenereerd met ChatGPT):

alias: Toggle Film Scene
mode: single
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.film_scene_active
state: "on"
sequence:
- service: scene.turn_on
target:
entity_id: scene.film_previous
- service: input_boolean.turn_off
target:
entity_id: input_boolean.film_scene_active
default:
- service: scene.create
data:
scene_id: film_previous
snapshot_entities:
- light.woonkamer_tafel
- service: scene.turn_on
target:
entity_id: scene.film
- service: input_boolean.turn_on
target:
entity_id: input_boolean.film_scene_active

Maak ook een helper aan waarin we de state van onze lampen bijhouden. Noem de toggle helper film_scene_active en valideer dat de script name van de input_boolean in zijn volledigheid overeenkomt met input_boolean.film_scene_active.

Maak een scene in home assistant aan waarin je stand van je lampen (en eventuele andere smarthome apparaten) insteld op de voor jouw gewenste stand.Sla dit op en test het script. Als het goed is, wordt de scene film nu geactiveerd bij 1x drukken en bij nogmaals drukken wordt de vorige stand van je lampen (en andere automatiseringen) terug gezet.

Script triggeren via de API

We gaan dit script aanroepen via de Home Assistant REST API. Dat kan met een simpele curl.

Eerst heb je een Long-Lived Access Token nodig. Ga in Home Assistant naar je profiel en maak een Long-Lived Access Token aan. Kopieer deze en plak hem in onderstaand commando. Laat ook onderstaande url naar jouw home assistant instantie wijzen.

Terminal window
curl -s -X POST https://yourhomeassistanturl.nl/api/services/script/turn_on \
-H "Authorization: Bearer PLAK_JE_TOKEN_HIER" \
-H "Content-Type: application/json" \
-d '{"entity_id":"script.toggle_film_mode"}'

Test dit eerst even vanaf je laptop of PC via een terminal. Gaan je lampen netjes in filmstand en ook weer uit filmstand? Dan zijn we klaar voor de laatste stap.

Command toevoegen aan LG TV Input Hook

Plak exact hetzelfde command in het Command veld bij key 1083 in LG TV Input Hook. Klik op Save. Je rakuten knop zal nu niet meer RakutenTV opstarten, maar een curl commando sturen naar je home assistant zodat je lampen op film-modus gezet zullen worden. Dus geen ongelukjes meer met het opstarten van RakutenTV, maar een mooie knop op je afstandbediening waardoor je niet meer je telefoon hoeft te pakken voor het instellen van je lampen.

Veel kijkplezier!

  • Brian