Cómo controlar la TV con Broadlink y Home Assistant

Si tienes un Broadlink (RM MiniR3, R4...) y Home Assistant, puedes controlar fácilmente cualquier aparato por infrarrojos que tengas en casa como, por ejemplo, cualquier TV, por vieja que sea. Te enseño cómo en esta entrada.

Cómo controlar la TV con Broadlink y Home Assistant
Photo by Jakub Żerdzicki / Unsplash

Hace tiempo ya que me hice con un dispositivo de Broadlink, concretamente con el modelo RM Mini3, el cual es un dispositivo que permite emitir comandos mediante infrarrojos, como si de un mando universal se tratara (solo que sin botones y con conexión Wi-Fi). He de reconocer que llevo usándolo años y, tanto desde la aplicación móvil, como desde la integración con Alexa, me ha sido de mucha utilidad a la hora de controlar la TV todas esas veces que te sientas a ver una peli, te arropas con la manta, te acomodas... y te acuerdas entonces de que el mando a distancia está en la otra punta de la mesa... En lugar de maldecir, moverme y perder esa ansiada comodidad, con una orden de voz o desde el móvil (que, reconozcámoslo, es más difícil que no esté al alcance de nuestra mano cuando nos sentamos en el sofá) he podido solventar esos problemas sin más.

Sé que no es más que comodidad pura y dura, pero... ¿para qué queremos la tecnología si no es para hacernos la vida más fácil y cómoda, precisamente?

El tema es que, con el tiempo, he ido domotizando la casa poco a poco, y la gestión simple de la TV no podía ser menos. No depender de la voz, o de tener la aplicación en el móvil, o facilitar la vida a las visitas para cosas tan sencillas como el volumen o apagar y encender la TV desde el propio sofá, me llevaron a integrar Broadlink con Home Assistant. En esta entrada os cuento cómo lo he hecho para la TV, pero igualmente se puede hacer para el aire acondicionado, o cualquier elemento que funcione por infrarrojos. ¡Vamos al lío!

Primer paso: Grabar los comandos en HA

Lo primero que tenemos que hacer es registrar en nuestra instancia de Home Assistant los comandos que nuestro mando a distancia emite y que queremos controlar. Para este caso concreto, vamos a controlar el volumen de la tele desde un dispositivo Moes como éste (lo tenéis bastante más barato en sitios como Aliexpress).

Comenzaremos pues grabando los comandos de volumen. Para ello, en Home Assistant iremos a Herramientas para desarrolladores e iremos a la pestaña de Acciones. Una vez en ella, seleccionaremos la acción remote.learn_command y rellenaremos los siguientes campos:

  • Objetivos: Elegimos Entidad y seleccionamos nuestro Broadlink.
  • Dispositivo: El nombre del dispositivo que queremos controlar, en nuestro caso: tv_salon.
  • Comando: El comando que queremos ejecutar. Como los pasos son iguales para todos, nos centraremos en el primero: subir_volumen.
  • Tipo de comando: Como es el mando de la tele, éste será ir (infrarrojos).

Con esto, ya podemos pulsar sobre Realizar una acción y veremos cómo en nuestro Broadlink se enciende el LED. En ese momento, apuntaremos hacia él con el mando y pulsaremos el botón que queremos grabar (en este ejemplo: el de subir volumen).

Comprobaremos que se ha grabado bien accediendo de nuevo a a la pestaña de Acciones en Home Assistant y seleccionando esta vez el servicio remote.send_command. Indicamos la misma entidad, dispositivo y comando que en el paso anterior y pulsamos sobre Realizar una acción. Si todo ha ido bien, deberíamos ver cómo en la TV se sube el volumen como si lo hiciéramos desde el mando a distancia.

Si todo ha ido bien, repetimos los pasos para el resto de comandos que queramos grabar.

Si por lo que sea no ha ido bien, podemos borrar el comando desde el mismo sitio, llamando al servicio remote.delete_command y seleccionando la misma entidad, dispositivo y comando que queremos eliminar.

Utilización de los comandos

Una vez hemos grabado todos los comandos que queremos, bastará con usarlos en las automatizaciones. De nuevo, lo haremos para controlar el volumen, pero el proceso es el mismo para todos.

Creamos una nueva automatización. En ella, como disparador o trigger añadiremos nuestro dispositivo remoto (el que puse para el ejemplo, el Moes) y como disparador, el rotate_right que usaremos para subir el volumen. Podemos añadir aquí todos, cada uno con su ID, y así tendremos en la automatización todos juntos.

En el campo Entonces o then crearemos un bloque de construcción del tipo Elegir acción y en cada una de las opciones como condición pondremos una de Disparado por y seleccionaremos el ID del evento que la desencadenará, mientras que en el campo Acciones escogeremos Realizar una acción y en ella pondremos remote.send_command y rellenaremos los campos al igual que hicimos cuando las probamos para ver si funcionaban en el punto anterior.

Os dejo aquí el YAML generado a modo de ejemplo. Para importarlo, basta con que lo copiéis y lo peguéis en una automatización limpia en el modo Editar en YAML cambiando el DEVICE_ID por el de vuestro dispositivo (y los entity_id y command, de ser distintos a los de este tutorial):

alias: Controlar TV desde mando remoto
description: ""
triggers:
  - domain: mqtt
    device_id: DEVICE_ID
    type: action
    subtype: double
    trigger: device
    id: Encender o apagar TV
  - domain: mqtt
    device_id: DEVICE_ID
    type: action
    subtype: rotate_right
    trigger: device
    id: Subir volumen
  - domain: mqtt
    device_id: DEVICE_ID
    type: action
    subtype: rotate_left
    trigger: device
    id: Bajar volumen
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Encender o apagar TV
        sequence:
          - action: remote.send_command
            target:
              entity_id: remote.broadlink
            data:
              num_repeats: 1
              delay_secs: 0.4
              hold_secs: 0
              device: tv_salon
              command: encender_apagar
      - conditions:
          - condition: trigger
            id:
              - Subir volumen
        sequence:
          - action: remote.send_command
            target:
              entity_id: remote.broadlink
            data:
              num_repeats: 1
              delay_secs: 0.4
              hold_secs: 0
              device: tv_salon
              command: subir_volumen
      - conditions:
          - condition: trigger
            id:
              - Bajar volumen
        sequence:
          - action: remote.send_command
            target:
              entity_id: remote.broadlink
            data:
              num_repeats: 1
              delay_secs: 0.4
              hold_secs: 0
              device: tv_salon
              command: bajar_volumen
mode: single

Automatización para Home Assistant en formato YAML

Guardamos la automatización con un nombre... ¡y ya podemos probarla!

Bonus: Recordar los comandos creados

Normalmente este tipo de comandos los grabaremos en nuestro Home Assistant y, de no usarlos en el momento, es posible que nos olvidemos de con qué nombre los creamos o cómo los configuramos. En caso de ser así, hay una opción para ver qué hemos grabado. Bastará con acceder desde un complemento tipo File Editor o Studio Code Server o desde SSH a la carpeta config/.storage/ y ahí veremos que hay un archivo tipo broadlink_remote_xxxxx_codes. Lo abrimos (o le hacemos un cat y ahí nos aparecerá tanto el nombre del dispositivo que usamos, como la lista de comandos que hemos creado. Algo tal que así:

{
  "version": 1,
  "minor_version": 1,
  "key": "broadlink_remote_xxxxx_codes",
  "data": {
    "tv_salon": {
      "subir_volumen": "<CÓDIGO_CODIFICADO>",
      "bajar_volumen": "<CÓDIGO_CODIFICADO>",
      "encender_apagar": "<CÓDIGO_CODIFICADO>",
    }
  }
}

Ejemplo del fichero que contiene los códigos grabados por Broadlink

¡Y ya estaría! Ahora podemos controlar algo tan básico como el volumen de la tele desde un pequeño mando pegado al sofá. Es un ejemplo tonto, pero nos puede venir bien, por ejemplo, para controlar el aire acondicionado desde la cama si no tenemos el mando a mano, o cualquier otro caso que se os ocurra.

Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación pulsando sobre el siguiente botón: