Cómo crear un panel de control para el asistente del hogar - Edición para medios de comunicación


Nuestros armarios multimedia han crecido mucho y tenemos muchos aparatos con otros tantos mandos a distancia. Gracias al asistente doméstico, mi plataforma de automatización preferida, puedo controlar mi televisor Samsung, mi televisor Apple, mi sonos playbase y mi playstation 4.

También tengo un servidor multimedia Plex y uso mi Apple TV como cliente Plex.

 

Este cuadro de mandos del asistente doméstico se basa en lo siguiente:

  • Tarjetas de rejilla
  • Tarjetas condicionales
  • Imagen
  • Reproductores multimedia personalizados (tienda comunitaria del asistente doméstico)
  • Botones

Las cartas de cuadrícula mantienen las cosas ordenadas, las cartas condicionales son capaces de mostrar una carta sólo cuando está en juego.

Los reproductores multimedia personalizados son una alternativa al reproductor multimedia incorporado en el asistente doméstico para tener un mejor aspecto y sensación, puedes ocultar el archivo de contenido el botón de pausa, la barra de volumen, personalizar la carátula y mucho más.

Para instalar el mini reproductor multimedia personalizado necesitarás HACS(home assistant community store).

Los botones se utilizan para enviar comandos de control remoto como arriba, abajo, izquierda, derecha, ok y atrás.

He creado scripts para saber qué dispositivo se está utilizando y enviar el mando a distancia al dispositivo correcto. Por ejemplo si estoy usando una PS4 entonces quiero que todos los controles remotos sean enviados a una PS4, lo mismo para cualquier integración de streaming que soporte controles remotos en el asistente de casa.

Antes de iniciar este proyecto

  1. Vas a necesitar que el asistente de casa se ponga en marcha.
  2. Tienda comunitaria del asistente doméstico y el minirreproductor multimedia personalizado
  3. Integra tus dispositivos ya en el asistente del hogar.

Cómo hacer este proyecto

Gabinete de prensa

Creamos un helper llamado "media cabinet" que va a contener los diferentes dispositivos HDMI conectados a nuestro televisor.

Esto podía ser: TV, PS4, PS5, xbox, etc.

En mi caso sí:

  • Apple Tv
  • PS4

Ve a la sección de ayudantes del asistente doméstico y crea una selección de entrada y dale un nombre.

Controlar el mando a distancia

El Apple TV se puede controlar gracias a la integración en el asistente del hogar:

Para ello he creado un script de control remoto: este script controlará lo que esté seleccionado en el selector de entrada del armario multimedia que hemos creado anteriormente:

Copie y pegue lo siguiente en guiones. yaml

Sustituir el entity_id del Apple TV y el nombre del selector de entrada

remote_command: alias: Remote Command fields: command: description: The Command to send to the remote example: up sequence: - choose: - conditions: - condition: state entity_id: input_select.media_cabinet state: Apple TV sequence: - service: remote.send_command target: entity_id: remote.atv_living_room data: command: "{{ command }}" default: [] mode: single

Para cada comando llamamos al script remote_command pasando un valor de comando así:

remote_arrow_up: alias: Remote Arrow Up sequence: - service: script.remote_command data: command: up mode: single
remote_arrow_down: alias: Remote Arrow Down sequence: - service: script.remote_command data: command: down mode: single
remote_arrow_right: alias: Remote Arrow Right sequence: - service: script.remote_command data: command: right mode: single
remote_arrow_left: alias: Remote Arrow Left sequence: - service: script.remote_command data: command: left mode: single
remote_top_menu: alias: Remote Top Menu sequence: - service: script.remote_command data: command: top_menu mode: single
remote_home: alias: Remote Home sequence: - service: script.remote_command data: command: home mode: single
remote_select: alias: Remote select sequence: - service: script.remote_command data: command: select mode: single
remote_wakeup: alias: Remote wakeup sequence: - service: script.remote_command data: command: wakeup mode: single
remote_menu: alias: Remote menu sequence: - service: script.remote_command data: command: menu mode: single

Ahora vuelve a cargar los scripts y pruébalos.

Tarjeta de imagen

En mi configuración he añadido los cuatro accesos directos para Netflix, Disney plus, Plex y Apple fitness.

Estos logotipos fueron creados gracias a canvas.com con una relación de aspecto de 500 por 500, de esta manera todos coinciden.

En el salpicadero, son la imagen

 

Apple TV App la Orden

Estos pasos son específicos para el Apple TV, para encender una aplicación estoy enviando comandos de control remoto para volver al top_menu y al home y luego moviéndonos en función de donde pongamos la aplicación en el propio Apple TV.

Por ejemplo: Netflix es la selección correcta, Plex es el derecho a seleccionar.

Código

Copie y pegue lo siguiente en guiones. yaml

lounge_appletv_disney: alias: Select Disney sequence: - service: remote.send_command target: entity_id: remote.atv_living_room data: delay_secs: 1.5 command: - top_menu - home - select - service: input_select.select_option entity_id: input_select.media_cabinet data: option: "Apple TV"
lounge_appletv_netflix: alias: Select Netflix sequence: - service: remote.send_command target: entity_id: remote.atv_living_room data: delay_secs: 1.5 command: - top_menu - home - right - select - service: input_select.select_option entity_id: input_select.media_cabinet data: option: "Apple TV"
lounge_appletv_plex: alias: Select Plex sequence: - service: remote.send_command target: entity_id: remote.atv_living_room data: delay_secs: 1.5 command: - top_menu - home - right - right - select - service: input_select.select_option entity_id: input_select.media_cabinet data: option: "Plex"
lounge_appletv_fitness: alias: Select Fitness sequence: - service: remote.send_command target: entity_id: remote.atv_living_room data: delay_secs: 1.5 command: - top_menu - home - right - right - right - select - service: input_select.select_option entity_id: input_select.media_cabinet data: option: "Apple TV"

Recarga de guiones.

Tablero de mandos (Lovelace)

home assistant media dashboard

Así es como construyo el cuadro de mandos:

¡Crear una tarjeta de cuadrícula con 1 columna dentro de la cual vamos a crear todas las tarjetas! (falso al cuadrado)

 

Añade una tarjeta condicional para cada entrada en el armario de medios. Estoy añadiendo el por el momento Apple TV y Plex. Dependiendo del estado de la entidad en juego, en reposo, etc. Voy a mostrar la tarjeta correcta.

 

Código para el mini reproductor multimedia personalizado

type: 'custom:mini-media-player'
volume_stateless: false
toggle_power: true
sound_mode: icon
hide: volume: true power: true info: false source: true icon: true icon_state: true next: true prev: true
group: true
artwork: full-cover
entity: media_player.atv_living_room
type: 'custom:mini-media-player'
volume_stateless: false
toggle_power: true
sound_mode: icon
hide: volume: true power: true info: false source: true icon: true icon_state: true next: true prev: true
group: true
artwork: full-cover
entity: media_player.plex_plex_for_apple_tv_living_room
type: 'custom:mini-media-player'
hide: name: true icon: true info: true power: true source: true controls: false next: true prev: true play_pause: true icon_state: true
group: true
entity: media_player.lounge

 

A continuación, aplique otra tarjeta condicional para la barra de sonido sonos, de modo que sólo aparezca si "algo" se está reproduciendo.

 

Añade una tarjeta de cuadrícula (4 elementos) con 4 tarjetas de imagen, cada una de las cuales llama al guión correcto.

Tendrás que subir los logotipos que hayas creado previamente en una carpeta www. Entonces enlaza con ellos, por ejemplo: /local/netflix. png

Cambie el tipo de acción para llamar al servicio con el script correcto.

 

Remoto

Para crear este cuadrado estoy utilizando, sí, otra tarjeta cuadriculada. Esta vez con 3 columnas y 9 botones.

  1. Esta es una palanca de encendido de la TV (estoy usando una TV Samsung)
  2. Flecha arriba
  3. Controla todas las luces del salón (grupo de luces)
  4. Izquierda
  5. OK
  6. A la derecha
  7. Volver
  8. Abajo
  9. Inicio

Cada botón utiliza un script que construimos previamente, aparte de los botones de la TV y una bombilla.

remote

 

Ahora diviértete, por favor, dame tu opinión.

 

¿Quieres saber más?

Aprenda a construir su propio panel de control. Tengo este curso llamado " "

Las 10 primeras personas consiguen un trato con esto

 

Código del panel de control

views: - icon: 'mdi:movie' panel: false badges: [] cards: - type: grid cards: - type: grid cards: - type: conditional conditions: - entity: media_player.atv_living_room state_not: idle - entity: media_player.plex_plex_for_apple_tv_living_room state: idle card: &ref_0 type: 'custom:mini-media-player' volume_stateless: false toggle_power: true sound_mode: icon hide: volume: true power: true info: false source: true icon: true icon_state: true next: true prev: true group: true artwork: full-cover entity: media_player.atv_living_room - type: conditional conditions: - entity: media_player.atv_living_room state_not: idle - entity: media_player.plex_plex_for_apple_tv_living_room state: idle card: *ref_0 - type: conditional conditions: - entity: media_player.atv_living_room state: playing card: type: 'custom:mini-media-player' hide: name: true icon: true info: true power: true source: true controls: false next: true prev: true play_pause: true icon_state: true group: true entity: media_player.lounge columns: 1 square: false - type: grid cards: - type: picture image: /local/netflix.png tap_action: action: call-service service: script.lounge_appletv_netflix service_data: {} target: {} hold_action: action: call-service service: script.lounge_appletv_netflix service_data: {} target: {} - type: picture image: /local/disneyplus.png tap_action: action: call-service service: script.lounge_appletv_disney service_data: {} target: {} hold_action: action: call-service service: script.lounge_appletv_disney service_data: {} target: {} - type: picture image: /local/plex.png tap_action: action: call-service service: script.lounge_appletv_plex service_data: {} target: {} hold_action: action: call-service service: script.lounge_appletv_plex service_data: {} target: {} - type: picture image: /local/apple_fitness.png tap_action: action: call-service service: script.lounge_appletv_fitness service_data: {} target: {} hold_action: action: call-service service: script.lounge_appletv_fitness service_data: {} target: {} columns: 4 square: false - type: grid cards: - type: button tap_action: action: toggle entity: switch.wake_on_lan icon: 'mdi:television' show_name: false icon_height: 50px - type: button tap_action: action: toggle entity: script.remote_arrow_up icon: 'mdi:arrow-up' show_name: false icon_height: 50px - type: button tap_action: action: toggle entity: light.living_room_lights show_name: false show_state: false icon_height: 50px - type: button tap_action: action: toggle entity: script.remote_arrow_left icon: 'mdi:arrow-left' show_name: false icon_height: 50px - type: button tap_action: action: toggle entity: script.remote_select name: OK show_icon: true icon: 'mdi:square-rounded' show_name: false icon_height: 50px - type: button tap_action: action: toggle entity: script.remote_arrow_right icon: 'mdi:arrow-right' show_name: false icon_height: 50px - type: button tap_action: action: toggle entity: script.remote_menu icon: 'mdi:menu' show_name: false icon_height: 50px - type: button tap_action: action: toggle entity: script.remote_arrow_down show_name: false icon: 'mdi:arrow-down' icon_height: 50px - type: button tap_action: action: toggle entity: script.remote_home name: Home icon: 'mdi:home' show_name: false hold_action: action: toggle icon_height: 50px - type: entities entities: - input_select.media_cabinet columns: 1 square: false

 

Entradas recientes