LG Smart TV mit Home Assistant automatisieren

2022-12-23 - christian - home assistant, ikea tradfri, smart home

Mein 10 Jahre alter Samsung TV ist leider vor ein paar Wochen gestorben. Da Reparatur Versuche nicht erfolgreich waren, musste ein neuer her.

Der “LG OLED55B29LA TV 139 cm (55 Zoll) OLED” läuft mit WebOS, und kann über die WebOS Integration von Home Assistant gesteuert werden.

LG TV in Home Assistant einbinden

Die Integration kann ganz normal über die Einstellungen in der Home Assistant Oberfläche hinzugefügt werden. Der Port 3000/tcp vom LG TV muss von Home Assistant aus erreichbar sein.

Anschalten

Sofern via Ethernet an das Netzwerk angeschlossen, kann der LG TV via Wake on LAN angeschaltet werden. Wenn sich Home Assistant und LG TV im selben Netzwerk befinden, kann die Wake On LAN Integration benutzt werden.

Bei mir ist dies nicht der Fall, daher nutze ich die REST API des Wake On LAN Plugins meines OPNSense Routers.

Dafür muss ein neuer Benutzer in OPNSense angelegt werden, welcher ausschließlich die Berechtigung hat, auf das WoL Modul zuzugreifen. Anschließend muss ein neues API Key Schlüsselpaar in den Benutzer Einstellungen angelegt werden, welches als username und password dient.

# hass configuration.yaml
rest_command:
  wake_device:
    verify_ssl: false
    url: 'https://192.168.1.1/api/wol/wol/set'
    method: POST
    # interface MUST be the real name like 'opt5' and NOT the alias!
    payload: '{"wake":{"interface": "{{interface}}","mac": "{{mac}}"}}'
    content_type:  'application/json'
    username: XXXXXXXXXXXXX
    password: YYYYYYYYYYYYY

Nun können wir damit folgende Scripts erstellen:

# hass scripts.yaml
tv_turn_on_when_off:
  alias: Turn the SmartTV on when it's off
  sequence:
    - if:
        - condition: state
          entity_id: media_player.lg_smart_tv
          state: 'off'
      then:
        - service: rest_command.wake_device
          data:
            interface: opt2
            mac: 'ac:5a:f0:42:42:42'
        - wait_template: "{{ is_state('media_player.lg_smart_tv', 'on') }}"
          timeout: 120
          continue_on_timeout: false
        - delay: 5

tv_firetv:
  alias: SmartTV + FireTV anschalten
  sequence:
    - service: script.tv_turn_on_when_off
    - service: media_player.select_source
      data:
        source: Amazon OTT
      target:
        entity_id: media_player.lg_smart_tv

Wird der Home Assistant Service script.tv_firetv ausgeführt, wird

  • der LG TV über Wake on LAN angeschaltet
  • darauf gewartet, dass der LG TV in Home Assistant als angeschaltet erkannt wird
  • auf den HDMI Kanal vom Amazon FireTV umgeschaltet

(sofern dies nicht schon der Fall ist)

Ausschalten

Mit dem Service script.tv_off wird der LG TV ausgeschaltet:

# hass scripts.yaml
tv_off:
  alias: SmartTV ausschalten
  sequence:
    - service: media_player.turn_off
      entity_id: media_player.lg_smart_tv

Andere Geräte schalten

Da Home Assistant nun den Status des LG TV als Sensor verfügbar hat, können weitere Komponenten geschaltet werden.

In meinem Fall eine IKEA Tradfri Steckdose via Zigbee, welche die Steckerleiste mit FireTV, Nintendo Switch und anderen Dingen schaltet.

# hass automations.yaml
- alias: Turn on other devices when SmartTV is turned on
  mode: single
  max_exceeded: silent
  trigger:
    - platform: state
      entity_id: media_player.lg_smart_tv
      to: 'on'
      for: 1
  action:
    - service: homeassistant.turn_on
      entity_id: switch.tv_switch

- alias: Turn off other devices when SmartTV is turned off
  mode: single
  max_exceeded: silent
  trigger:
    - platform: state
      entity_id: media_player.lg_smart_tv
      to: 'off'
      for: 60
  action:
    - service: homeassistant.turn_off
      entity_id: switch.tv_switch

Die Ausschalt-Automation hat absichtlich eine Verzögerung von 60 Sekunden eingebaut, sodass versehendliches Ausschalten nicht dazu führt, dass alle Geräte abgewürgt werden.

Notifications

WebOS kann auch Benachrichtigungen auf dem LG TV anzeigen. Eine entsprechenden Service gibt es dafür in Home Assistant auch.

service: notify.lg_smart_tv
data:
  message: serverless.industries 🚀

So sieht es dann aus:

Notifications auf dem TV

OLED + Standby

Der Fernsehr selbst bleibt im Standby. OLED TVs führen im Standby einen so genannten “Kompensationsprozess” aus, welcher dafür sorgt, dass Pixel nicht einbrennen. Nimmt man dem Fernsehr den Standby Strom, kann dies die Lebenserwartung drastisch reduzieren.


More


serverless.industries BG by Carl Lender (CC BY 2.0)
ad878168 2022-12-23 21:07
Mastodon via chaos.social Mastodon via einbeck.social