Maneja tu Televisión LG WebOS con Siri y HA
En este articulo vas a aprender a utilizar tu televisión LG WebOS con Siri y Home Assistant.
Para ello es muy importante tener integrado Homekit en Home Assistant bien a traves de Home Assistant Cloud o bien de forma manual con Homekit. Cualquiera de las dos formas es totalmente validas. Puedes ver como realizar la integración de Homekit 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 Siri.
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 Siri, 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 interruptores en Homekit. Muchos de ellos no tendrán ningún interés para nosotros en que aparezcan en nuestra aplicación Casa, por lo que es recomendable excluirlos para no tener basura y, por tanto, cosas que no vamos a utilizar. Toda la documentación sobre Homekit 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:
- Mediante el servicio media_player.play_media: Esto forma llama al número de canal asignado en tu TV
- 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 Siri y uso mediante comandos de voz
Todos los scripts creados en nuestro Home Assistant los vamos a encontrar en la aplicación Casa como un accesorio más, en este caso, como un switch o interruptor. Es muy importante excluir aquellos que no vayamos a utilizar para no tener basura en nuestro dispositivo.
Una vez los tengamos en la aplicación podríamos agruparlos en una habitación dándole un nombre en concreto, por ejemplo, Canales. Si dejamos pulsado cada uno de ellos (pulsación larga) podemos comprobar toda la información e incluso podemos asignarle un nombre. Imaginemos que el script se llama Tecnosanvaras. Simplemente con decir a Siri: Siri enciende Tecnosanvaras, se ejecutaría el script que hemos creado. Pero esta forma no es muy amigable y se aleja un poco de la realidad porque generalmente no hablamos de esta forma cuando queremos poner un canal en concreto. Por eso la forma que más se asemeja a la nuestra forma de hablar lo conseguiríamos creando Ambientes en la aplicación. Los pasos a seguir son los siguientes:
- Abrimos la aplicación Casa en nuestro dispositivo (movil, tablet…).
- Pulsamos sobre el símbolo + ubicado en la parte superior.
- Seleccionamos Añadir ambiente.
- En las siguientes opciones elegimos Personalizar.
- Le damos un nombre al ambiente, algo que se ajuste a la realidad de lo que queremos hacer, por ejemplo: Pon Telemadrid, Sube canal, Para la pelicula, etc.
- Seleccionamos Añadir accesorios y elegimos el script que hemos creado en nuestro Home Assistant.
- Guardamos pulsando OK.
Como hemos podido comprobar es muy fácil crear ambientes en nuestra aplicación Casa y, por tanto, manejar nuestra Televisión con Siri desde este momento.
Espero que os haya resultado útil.
Nos vemos en el siguiente artículo, nos vemos en Tecnosanvaras.
Un saludo a todos y …