Controla tu Aire Acondicionado con una Raspi

En este pequeño tutorial vamos a ver cómo configurar una Raspberry Pi 4B (4GB de RAM) para controlar nuestro aire acondicionado (cualquier otro elemento que se controle mediante un Infrarrojos) de manera automática para mantener una estancia -en nuestro caso un CPD- siempre a la temperatura adecuada y además nos permitirá encender, apagar o variar la temperatura de manera remota.

Material que vamos a necesitar:

*Tened en cuenta que el hat IR Remote Shield necesita tener soldado el jumper SJ1 tal como se muestra en este tutorial. Hay algunos IR Remote Shield que vienen con ese jumper soldado pero en mi caso, lo tuve que unir con un poco de estaño. Teniendo un soldador y estaño se hace en 20 segundos.

Una vez hecho esto empezamos con la programación. Nosotros usaremos LIRC, que aunque es un poco truculenta la configuración una vez leídos los códigos funciona sin problemas y de manera estable.

Actualizamos el Sistema Operativo, en nuestro caso Raspbian OS e instalamos LIRC.

sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install lirc -y

Configuración del Bootloader

Ahora tenemos que actualizar el bootloader de linux para que cargue los módulos del IR. Primero abrimos el archivo que tenemos que modificar:

sudo nano /boot/config.txt

Y ahora tenemos que modificar lo siguiente:

# Descomentamos estas lineas para habilitar la comunicacion de infrarrojos
# y cambiamos los pines el 17 por el 18
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

dtoverlay=gpio-ir,gpio_pin=18

#De momento el envio de señales lo comentamos para recibir las señales sin 
#problema. No es obligatorio pero si falla nos ahorraremos este paso
#dtoverlay=gpio-ir-tx,gpio_pin=17

Configuración del Módulo Hardware LIRC

Vamos a configurar el módulo LIRC. Para ello primero abrimos el archivo:


sudo nano /etc/lirc/hardware.conf

Y añadimos las siguientes líneas:

LIRCD_ARGS="--uinput --listen"
LOAD_MODULES=true
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

Después vamos a modificar la configuración del LIRC. Para lo cual abrimos:


sudo nano /etc/lirc/lirc_options.conf

Y comentamos y añadimos las siguientes líneas:

#driver         = devinput
#device         = auto
driver          = default
device          = /dev/lirc0

Una vez actualizado necesitamos reiniciar el sistema operativo para que cargue la nueva configuración del módulo:

sudo reboot

Una vez hemos reiniciado, comprobamos que el servicio de LIRC está corriendo correctamente:

sudo /etc/init.d/lircd status

La salida de ese comando nos tendrá que indicar que está corriendo y sin errores:

Registro Manual de las Señales IR Aire Acondicionado

Paramos el servicio para poder recibir las señales que nos mandará el telemando de control remoto del Aire Acondicionado. La idea es recibir esas señales y después reproducirlas enviándolas desde nuestras Raspi. Para ello deberemos grabar tantas señales como queramos del tipo: encender, apagar, poner la temperatura a 24 grados, etc.

Paramos el servicio de LIRC:

sudo /etc/init.d/lircd stop

El resultado tiene que ser este:

Ahora lanzamos el siguiente comando para comprobar que recibimos las selañes correctamente y las guardamos en un archivo para utilizarlas posteriormente:

sudo mode2 -m -d /dev/lirc0 > test_recepcion.lircd.conf

Tras enviar varias señales, si lo hacemos en orden y anotamos la secuencia ya podremos crear el archivo para enviar esas señales. Por ejemplo, primero envío la señal de encendido, después bajar la temperatura, luego subir la temperatura y por último apagar.

Eso dará como resultado del archivo test_recepcion.lircd.conf algo de este estilo (esto es sólo la primera señal enviada desde el telemando al IR de la Raspi:

Running as regular user idassa
 16777215

     3163     1573      412      382      408     1177
      410      383      409      384      410     1175
      410      383      410     1176      411      381
      410      383      409     1176      409     1179
      410     1176      408      383      410     1176
      410      384      409     1177      409     1177
      410     1178      409      384      409      383
      409      383      410      382      410     1177
      410     1176      408      384      409     1177
      410     1179      410      382      409      381
      409     1177      412      380      408      384
      410     1176      410      383      411      382
      409     1176      409     1177      411      382
      410     1176      410     1176      411     1175
      409      385      408      384      409     1176
      411     1176      408     1177      409     1180
      407     1177      410      383      409     1178
      409     1176      409      384      410      383
      409      383      409      384      407      384
      408     1179      408     1176      411     1176
      411     1177      411      381      409     1177
      408     1180      408     1176      410      382
      410      384      409      383      410      383
      409     1176      410      385      408      383
      409      385      408      383      409     1179
      407     1176      411      383      409      383
      410     1178      408     1178      408      383
      410     1180      407      382      410      383
      409     1176      411     1176      410      382
      409      383      409     1178      409   130858-pulse  3206856-space

Tendremos tantos bloques como este por cada señal enviada. Ahora nos crearemos un archivo nuevo llamado aire_acondicionado.lircd.conf:

nano aire_acondicionado.lircd.conf

Necesitamos que tenga el siguiente formato (mucho cuidado con la identación o no funcionará) para que podamos llamar a cada señal y ejecutarla desde la línea de comandos. Como podéis suponer los puntos suspensivos (…) son para evitar mostrar aquí un archivo muy largo. Sólo he dejado el primer bloque como ejemplo:

begin remote

  name   mitsubishi
  flags RAW_CODES
  eps            25
  aeps          100

  ptrail          0
  repeat     0     0
  gap    20921

  begin raw_codes

    name SWITCH_ON
     3163     1573      412      382      408     1177
      410      383      409      384      410     1175
      410      383      410     1176      411      381
      410      383      409     1176      409     1179
      410     1176      408      383      410     1176
      410      384      409     1177      409     1177
      410     1178      409      384      409      383
      409      383      410      382      410     1177
      410     1176      408      384      409     1177
      410     1179      410      382      409      381
      409     1177      412      380      408      384
      410     1176      410      383      411      382
      409     1176      409     1177      411      382
      410     1176      410     1176      411     1175
      409      385      408      384      409     1176
      411     1176      408     1177      409     1180
      407     1177      410      383      409     1178
      409     1176      409      384      410      383
      409      383      409      384      407      384
      408     1179      408     1176      411     1176
      411     1177      411      381      409     1177
      408     1180      408     1176      410      382
      410      384      409      383      410      383
      409     1176      410      385      408      383
      409      385      408      383      409     1179
      407     1176      411      383      409      383
      410     1178      408     1178      408      383
      410     1180      407      382      410      383
      409     1176      411     1176      410      382
      409      383      409     1178      409

    name TEMP_25
        ...

    name TEMP_26
       ...

    name SWITCH_OFF
     ...

    name SWITCH_ON_24
     ...

  end raw_codes
end remote

Una vez guardadas todas las señales, copias este archivo en la carpeta de las librerias que LIRC carga al iniciar el Sistema Operativo:

sudo cp ~/aire-acondicionado.lircd.conf /etc/lirc/lircd.conf.d/aire-acondicionado.lircd.conf

Ahora ya podremos llamar a cada uno de esos señales desde la línea de comandos de la siguiente manera:

# mostras los comandos que tenemos en nuestro archivo
irsend LIST mitsubishi ""

# para encender el aire acondicionado:
irsend SEND_ONCE mitsubishi SWITCH_ON

# para apagar el aire acondicionado:
apagar = 'irsend SEND_ONCE mitsubishi SWITCH_OFF

# poner la temperatura a 25 C
temp_25 = 'irsend SEND_ONCE mitsubishi TEMP_25'

Ahora ya con esto podremos crear un sencillo script con shell, python o el lenguaje que más os guste y controlar el encendido y apagado del aire acondicionado. Nosotros usaremos un sencillo script de Python pero antes, para poder enviar estas señales recogidas y una vez hayamos grabado todas las señales que queremos tendremos que habilitar el envío de señales en el módulo del LIRC de Bootloader:

sudo nano /boot/config.txt

Descomentamos esta línea:

dtoverlay=gpio-ir-tx,gpio_pin=17

y reiniciamos la Raspi:

sudo reboot

Una vez reiniciada la Raspi ya podríamos enviar las señales que quisiéramos desde la línea de comandos. Por ejemplo con este comando podemos ver todas nuestras señales:

irsend LIST mitsubishi ""

3 Respuestas to “Controla tu Aire Acondicionado con una Raspi

  • Que ganas de probarlo crack

    • Cuando quieras! La verdad que no es muy complicado y es super útil para ahorrar energía. Cualquier duda me dices. 😉

  • [url=https://santehnik-na-dom-spb.ru/]сантехник санкт петербург[/url]
    [url=http://santehnik-na-dom-spb.ru]https://www.santehnik-na-dom-spb.ru/[/url]
    [url=http://ridgedale.net/?URL=santehnik-na-dom-spb.ru]http://www.google.gg/url?q=https://santehnik-na-dom-spb.ru[/url]

Deja una respuesta

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