Maneja tu Televisión LG WebOS con Google y HA

En este articulo vas a aprender a utilizar tu televisión LG WebOS con Google y Home Assistant.

Para ello es muy importante tener integrada Google en Home Assistant bien a traves de Home Assistant Cloud o bien de forma manual con Google Assistant. Cualquiera de las dos formas es totalmente validas. Puedes ver como realizar la integración de Google en Home Assistant aquí.

La documentación la podéis encontrar en la web oficial de Home Assistant, y como siempre digo, recomiendo leer encarecidamente.

También podéis ver el vídeo en mi canal o en el link que dejo justo aquí abajo. Aprovecho la ocasión para animaros a suscribirse a mi canal si os gusta el contenido y pulseis en el Like si os ha gustado el vídeo.

Lo primero que tenéis que hacer es averiguar la IP y la MAC de vuestra Televisión LG WebOS. Esta información la podéis encontrar en la configuración de vuestro dispositivo. No indico la ruta ya que dependiendo del modelo esta podría variar, pero en general suele ser bastante sencillo encontrarla. Una vez que lo tengáis, tendremos que añadirlo dentro del Configuration.yaml de nuestro Home Assistant de la siguiente forma:

webostv:
  host: 192.168.1.xx #IP de vuestra Televisión
  name: LG webOS Smart TV #Nombre que le querais dar a la Televisión
  turn_on_action:
    service: wake_on_lan.send_magic_packet
    data:
        mac: "AA:BB:CC:DD:EE:FF" #MAC de vuestra Televisión

Es muy importante añadir esta línea también al configuration.yaml para poder encender la Televisión cuando está apagada. Esta forma funciona teniendo la televisión conectada por cable de red. En muchos modelos no funciona si la televisión la tenemos por wifi.

wake_on_lan:

Una vez que hemos añadido el código a nuestro Home Assistant reiniciaremos el sistema para que surjan efecto los cambios. Podemos comprobar en el menú de Home Assistant, dentro de la opción de Herramientas para desarrolladores, que se nos ha añadido un nuevo media player con el siguiente formato: media_player.nombre_dado_a_nuestra_television. Es muy recomendable ver todos los atributos que os aparecen para comprobar todo lo que vais a poder seleccionar y por tanto manejar con Home Assistant y, por consiguiente, con Google.

Añadir tarjeta para manejar vuestra TV LG WebOS en HA

Una vez que hemos realizado la integración en Home Assistant, ya podemos crear una tarjeta para controlar nuestra televisión. Para ello elegiremos Añadir tarjeta en nuestro panel y seleccionaremos la tarjeta Control multimedia. Seleccionaremos el dispositivo, es decir, nuestra TV LG, y ya podremos manejarla desde Home Assistant.

Podemos crear tarjetas personalizadas un poco más complejas. Dejo un ejemplo de una creada con una card (custom buton card) que tengo integrada en mi Home Assistant.

cards:
  - entity: media_player.lg_webos_smart_tv
    type: media-control
  - cards:
      - action: service
        color: rgb(0, 62, 209)
        color_type: card
        icon: mdi:volume-plus
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: VOLUMEUP
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(0, 62, 209)
        color_type: card
        icon: mdi:volume-minus
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: VOLUMEDOWN
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:home
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: HOME
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:arrow-up-thick
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: UP
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:arrow-down-thick
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: DOWN
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
    type: horizontal-stack
  - cards:
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:exit-to-app
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: EXIT
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:backup-restore
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: BACK
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:check
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: ENTER
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:arrow-left-thick
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: LEFT
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
      - action: service
        color: rgb(255, 0, 0)
        color_type: card
        icon: mdi:arrow-right-thick
        tap_action:
          action: call-service
          service: webostv.button
          service_data:
            button: RIGHT
            entity_id: media_player.lg_webos_smart_tv
        type: custom:button-card
    type: horizontal-stack
  - cards:
      - color_type: card
        entity: script.canal_tv_live
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        type: custom:button-card
      - color_type: card
        entity: script.canal_netflix
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        type: custom:button-card
      - color_type: card
        entity: script.canal_amazon_tv
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        type: custom:button-card
      - color_type: card
        entity: script.canal_hbo
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        type: custom:button-card
    type: horizontal-stack
  - cards:
      - color_type: card
        entity: script.canal_tve1
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_tve1
          service_data:
            entity_id: script.canal_tve1
        type: custom:button-card
      - color_type: card
        entity: script.canal_tve2
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_tve2
          service_data:
            entity_id: script.canal_tve2
        type: custom:button-card
      - color_type: card
        entity: script.canal_antena_tres
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_antena_tres
          service_data:
            entity_id: script.canal_antena_tres
        type: custom:button-card
      - color_type: card
        entity: script.canal_cuatro
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_cuatro
          service_data:
            entity_id: script.canal_cuatro
        type: custom:button-card
      - color_type: card
        entity: script.canal_tele_5
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_tele_5
          service_data:
            entity_id: script.canal_tele_5
        type: custom:button-card
    type: horizontal-stack
  - cards:
      - color_type: card
        entity: script.canal_la_sexta
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_la_sexta
          service_data:
            entity_id: script.canal_la_sexta
        type: custom:button-card
      - color_type: card
        entity: script.canal_divinity
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_divinity
          service_data:
            entity_id: script.canal_divinity
        type: custom:button-card
      - color_type: card
        entity: script.canal_24_horas
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_24_horas
          service_data:
            entity_id: script.canal_24_horas
        type: custom:button-card
      - color_type: card
        entity: script.canal_telemadrid
        show_entity_picture: true
        show_label: false
        show_name: false
        show_state: false
        styles:
          entity_picture:
            - align-self: middle
            - height: 50px
            - width: 50px
        tap_action:
          action: call-service
          service: script.canal_telemadrid
          service_data:
            entity_id: script.canal_telemadrid
        type: custom:button-card
    type: horizontal-stack
type: vertical-stack

Esta es solo un ejemplo para que veais la variedad de cosas que podemos llegar a realizar.

Integración con Alexa mediante script

Para poder manejar mediante comandos de voz nuestra televisión LG WebOS con Google, la mejor manera de hacerlo es mediante script. El script lo que hace es ejecutar una acción y esa acción es lo que nosotros vamos a querer que haga Alexa cuando digamos una frase.

Todos los script que realicemos en Home Assistant los vamos a encontrar como escenas en Google. Muchos de ellos no tendrán ningún interés para nosotros en que aparezcan en nuestro Google Home por lo que es recomendable excluirlos para no tener basura y, por tanto, cosas que no vamos a utilizar. Toda la documentación sobre Google en Home Assistant y la forma de incluir y excluir entidades, dominios, etc, podéis consultarla aquí.

Cambio de canales

Para cambiar los canales de nuestra televisión podemos realizarlo de 2 formas distintas:

  1. Mediante el servicio media_player.play_media: Esto forma llama al número de canal asignado en tu TV.
  2. Mediante el servicio webostv.button: Esto es como si pulsásemos un boton del mando a distancia.

Las dos formas son totalmente válidas y los scripts varían un poco dependiendo de la forma que queramos utilizar. Esto va por gustos de cada uno por lo que recomiendo probar ambas formas y utilizar la que más guste a cada uno.

# Ejemplo de acción eligiendo el servicio play_media para poner el canal 1
service: media_player.play_media
target:
  entity_id: media_player.lg_webos_smart_tv
data:
  media_content_id: 1
  media_content_type: "channel"

# Ejemplo de acción eligiendo el servicio play_media y el nombre del canal
service: media_player.play_media
target:
  entity_id: media_player.lg_webos_smart_tv
data:
  media_content_id: "Telecinco"
  media_content_type: "channel"

Personalmente esta forma de elegir el canal a mi me ha dado muchos errores y no siempre me ha funcionado por lo que prefiero utilizar el servicio webos.button como si pulsase yo el botón del mando a distancia. Este es el método que os muestro a continuación.

Service webostv.button

# Ejemplo del boton Casa o Inicio
script:
  home_button:
    sequence:
      - service: webostv.button
        target:
          entity_id:  media_player.lg_webos_smart_tv
        data:
          button: "HOME"

# Ejemplo subir canal como si pulsásemos el botón Subir Canal
script:
  subir_canal:
    sequence:
      - service: webostv.button
        target:
          entity_id:  media_player.lg_webos_smart_tv
        data:
          button: "CHANNELUP"

# Ejemplo de una canal en el cual tenemos que pulsar 2 botones
script:
  tecno_tv:
    sequence:
    - service: webostv.button
      data:
        entity_id: media_player.lg_webos_smart_tv
        button: '1'
    - delay:
        hours: 0
        minutes: 0
        seconds: 1
        milliseconds: 0
    - service: webostv.button
      data:
        entity_id: media_player.lg_webos_smart_tv
        button: '5'
    mode: single
    alias: Tecno TV

La lista completa de botones los podéis encontrar en la documentación oficial de Home Assistant. Estos son solo unos ejemplos pero que se realizarían de la misma forma con los demás botones.

Service webostv.command

Este servicio, a diferencia del anterior, ejecuta una serie de servicios disponibles en nuestras televisiones LG WebOS y que podéis encontrar en el siguiente enlace. La intención de este articulo no es mostrar todos los servicios que aquí encontráis y que significa cada uno de ellos porque, entre otras cosas, el github pertenece a Josh Bendavid al cual es de agradecer esta enorme aportación. Por lo tanto, dejo solo unos ejemplos para que aprendáis el gran potencial que tiene para integrar nuestras LG:

# Subir canal mediante el servicio webostv.command
script:
  subir_canal:
    alias: Subir canal
    sequence:
    - service: webostv.command
      data:
        entity_id: media_player.lg_webos_smart_tv
        command: tv/channelUp
    mode: single

# Abre la web de google en el navegador de nuestra televisión
script:
  abrir_web_google:
    sequence:
      - service: webostv.command
        target:
          entity_id:  media_player.lg_webos_smart_tv
        data:
          command: "system.launcher/open"
          payload:
            target: https://www.google.com

# Pausa una película (por ejemplo si estamos viendo Netflix)
script:
  pausar_pelicula:
    alias: Pausar pelicula
    sequence:
    - service: webostv.command
      data:
        entity_id: media_player.lg_webos_smart_tv
        command: media.controls/pause
    mode: single

Integración en Google y uso mediante comandos de voz

Como ya he mencionado anteriormente, todos los scripts creados en nuestro Home Assistant los vamos a encontrar en Google como escenas. Siento ser pesado en esto, pero es muy importante excluir aquellos que no vamos a utilizar para no tener cosas innecesarias en nuestro Google Home.

La ruta para encontrar las escenas en nuestro Google Home es la siguiente:

  1. Pulsar en la inicial de la ventana principal de Google Home, arriba a la derecha.
  2. Seleccionar Ajustes del Asistente.
  3. En las nuevas opciones, seleccionar Control de la casa.
  4. En el menú superior que se nos muestra, seleccionar Escenas.

Google los scripts los interpreta como un switch (más o menos como un botón para que lo entendais). Por tanto, todos los script que hemos creado para que Google los entienda tendríamos que llamarlos bajo la orden: Google enciende … (nombre que hemos dado al script).

Es verdad que de esta forma ya podríamos manejarlo con nuestro Google pero no suena muy real decir: Google enciende Telecinco, o Google enciende sube canal o Google enciende para película. No se, creo que resulta extraño porque nosotros no hablamos así habitualmente. Por eso, y para hacerlo más real, vamos a crear rutinas en Google utilizando los scripts que hemos creado y, de esta forma, hablar a Google como si se lo estuviésemos pidiendo a una persona real.

Una vez creados todos los script es conveniente reiniciar nuestro Home Assistant. También podríamos recargarlos mediante el panel configuración, pero como yo soy muy maniático prefiero siempre reiniciar.

El siguiente paso es abrir la app Google Home (aplicación para aquellos un poco perdidos) en nuestro dispositivo (movil, tablet…).

  1. En el menú principal pulsaremos sobre la opción «Rutinas». En el desplegable que nos aparece seleccionaremos el simbolo + situado abajo a la izquierda.
  2. Dentro de la opción Activadores – Elige cómo se activa esta rutina, pulsaremos sobre + Añadir primer elemento.
  3. En el siguiente menú seleccionaremos la primera opción Comando de voz.
  4. Ahora escribiremos lo que nosotros queramos pedirle a Google: Hey Google pon Telecinco o Hey Google sube el canal. Pulsamos en Añadir primer elemento para finalizar este paso.
  5. Ahora elegiremos la Acción, es decir, elegiremos uno de los script que hemos creado en nuestro Home Assistant.
    • Para ello pulsamos sobre + Añadir acción.
    • En la lista de opciones que nos aparece seleccionaremos Ajustar los dispositivos Domesticos.
    • Tendremos 3 nuevas opciones. Nosotros seleccionaremos Configurar ambientes, pulsando en la flecha de su derecha.
    • Por último seleccionamos el script que deseamos y finalizamos pulsando sobre Hecho 2 veces.
    • Guardamos la rutina pulsando en Guardar.
  6. Ya tenemos nuestra primera rutina creada.

Ahora cuando queramos poner telecinco en nuestra televisión con Google, simplemente diremos: Hey Google pon telecinco. Como podemos comprobar algo más real y semejante a nuestro lenguaje.

Con esto ya podríais controlar todas las funciones de vuestra televisión LG WebOS Smart TV con Google y Home Assistant. Espero que os haya resultado útil.

Nos vemos en el siguiente artículo, nos vemos en Tecnosanvaras.

Un saludo a todos y …

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada.