Cómo construir un interruptor inteligente sensible a la luz con Raspberry Pi e IFTTT
Anuncio
Los interruptores de anochecer hasta el amanecer y los interruptores del temporizador son formas prácticas de automatizar sus luces. ¿No sería genial si pudieras combinar los dos, o incluso conectarlos a Internet para un sistema de iluminación verdaderamente inteligente?
Un Raspberry Pi, un relé, un sensor de luz y una pizca de código son todo lo que necesita para lograr este nirvana de iluminación automático con muy poco dinero.
Lo que necesitarás
Los componentes para su interruptor inteligente con sensor de luz son fáciles de obtener. Necesitarás:
- Cualquier modelo de Raspberry Pi con Raspbian.
- Una placa de relé, fácil de encontrar en Amazon.
- Un sensor de luminosidad Adafruit TSL2561.
- Cables de puente.
- ¡Algunas luces para automatizar!
Cómo funciona un interruptor inteligente con sensor de luz
Al usar un relé de la misma manera que nuestro proyecto de apertura automática de puertas de garaje Cómo automatizar su puerta de garaje con IFTTT y Raspberry Pi Cómo automatizar su puerta de garaje con IFTTT y Raspberry Pi En este tutorial, le mostraremos cómo automatizar su puerta puerta de garaje utilizando nada más que una Raspberry Pi e IFTTT. Lea más, puede programar una Raspberry Pi para encender y apagar un circuito de iluminación a horas fijas. Agregar un sensor de luminosidad a la mezcla significa que el Pi puede detectar el nivel de luz ambiental y elegir encender las luces solo cuando realmente sean necesarias.
Debido a que un Pi es una computadora pequeña que se puede conectar a una red, también puede configurarla para que se controle a través de Internet. Sus luces inteligentes tendrán tres entradas para determinar cuándo se encenderán:
- Un horario programado.
- El nivel de luz ambiental.
- Una señal de anulación enviada a través de la red.
Paso 1: conecte la Raspberry Pi al relé
Si es nuevo en el uso de GPIO, comience leyendo Todo lo que necesita saber sobre los pines GPIO de Raspberry Pi.
Primero, verifique si su placa de relé tiene un puente que conecta los pines VCC y JD-VCC juntos. Si es así, retírelo.
Con todo apagado, conecte la placa de relé a su Pi de la siguiente manera:
- Pi Pin 2 (5v) al JD-VCC en la placa de relés.
- Pi Pin 6 (GND) a GND en la placa de relés.
- Pi Pin 15 (GPIO 22) a IN1 en la placa de relés
- Pi Pin 17 (3.3v) a VCC en el tablero de relés.
Paso 2: conecta el sensor de luminosidad
El TSL2561 es un sensor de luz que puede detectar infrarrojos, espectro completo y luz visible para humanos. Puede enviar una lectura digital muy precisa a la Raspberry Pi. El sensor informa el nivel de luz en una escala de 0.1 (sin luz) a 40, 000 (sol brillante).
La placa TSL2561 se comunica con la Raspberry Pi utilizando el protocolo i2c. I2C solo necesita dos conexiones, una para un reloj para mantener los dos dispositivos sincronizados y otra para los datos que se transfieren. Por supuesto, el sensor de lux también necesita algo de energía, por lo que hay cuatro conexiones para hacer:
- Conecte Pi Pin 1 (3.3v) a Vin (o VCC) en el sensor de lux
- Conecte Pi Pin 3 (SDA) a SDA en el sensor lux
- Conecte Pi Pin 5 (SCL) a SCL en el sensor de lux
- Conecte Pi Pin 9 (GND) a GND en el sensor lux
Paso 3: configurar e instalar dependencias
Antes de continuar, deberá verificar que I2C esté habilitado en su Raspberry Pi (está deshabilitado de manera predeterminada). Escriba lo siguiente en la terminal:
sudo raspi-config
Seleccione Opciones de interfaz> P5 I2C, luego elija Sí .
Presiona Enter y luego selecciona Finish para salir de la pantalla de configuración. Reinicie su Pi para que el cambio surta efecto:
sudo reboot
Algunas dependencias son necesarias para que el Pi pueda comunicarse con la placa del sensor. Escriba los siguientes comandos:
sudo apt-get update sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools
Puede verificar que todo esté funcionando escribiendo:
sudo i2cdetect -y 1
Si sus dependencias están instaladas y su sensor de lux está conectado correctamente, verá una respuesta como esta:
Aquí, la utilidad informa que ha encontrado un dispositivo I2C (el sensor de lux) en la dirección I2C 39.
Aún no has terminado con las dependencias. También necesitarás algunas bibliotecas. Primero, haga una carpeta para mantener todo lo relacionado con este proyecto en:
mkdir ~/lighting cd ~/lighting
A continuación, descargue la botella, un marco ligero que creará un servidor web simple en su Pi. Lo usará para controlar sus luces desde la web.
wget https://bottlepy.org/bottle.py
Las otras bibliotecas que necesitará están en Github, por lo que si su Raspberry Pi aún no tiene instalado Git, agréguelo ahora:
sudo apt-get install git
Ahora clone dos bibliotecas, así:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
Y, por último, cree un script de prueba creando un nuevo archivo:
nano test.py
Pegue este código (cortesía de Adafruit):
#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import absolute_import, division, print_function, unicode_literals from tsl2561 import TSL2561 if __name__ == "__main__": tsl = TSL2561(debug=True) print(tsl.lux())
Presione Ctrl + X para guardar, siguiendo las instrucciones en pantalla para salir.
Cuando termines, ejecuta el script de prueba:
python test.py
Si todo está instalado y funcionando, obtendrá un número. Ese número es una lectura de lux del sensor. Intente bloquear el sensor o moverlo para que reciba más o menos luz. Luego ejecute el script de prueba nuevamente y vea cómo cambia el número.
Paso 4: crear los scripts de automatización
El Raspberry Pi encenderá las luces cuando oscurezca, pero también las apagará en ciertos momentos. Por ejemplo, es posible que desee que se enciendan las luces cuando oscurece por la noche, y luego apagarse alrededor de la medianoche para ahorrar electricidad. Podrían volver a encenderse temprano en la mañana, y luego apagarse cuando amanezca.
Para administrar una programación con múltiples zonas de tiempo como esta, hay dos scripts diferentes. Uno ( onzone.py ) se ejecutará cada minuto durante el tiempo que desee que sus luces estén encendidas si está oscuro. El otro ( offzone.py ) se ejecutará cada minuto durante el tiempo que desee que las luces se apaguen independientemente del nivel de luz.
Las secuencias de comandos se programarán para ejecutarse utilizando trabajos cron Cómo programar tareas en Linux con Cron y Crontab Cómo programar tareas en Linux con Cron y Crontab La capacidad de automatizar tareas es una de esas tecnologías futuristas que ya está aquí. Todos los usuarios de Linux pueden beneficiarse del sistema de programación y las tareas del usuario, gracias a cron, un servicio en segundo plano fácil de usar. Lee mas . Al elegir qué horas del día y de noche se ejecuta cada script, será fácil establecer las horas en que las luces se pueden encender automáticamente. Puede configurar tantos períodos de encendido y apagado como desee.
Además de los scripts para controlar automáticamente las luces, hay un tercer script para gestionar situaciones de anulación. Esto le permitirá encender las luces de forma remota, independientemente del nivel de luz ambiental.
Script 1: La Zona ON
Este script de Python se ejecutará cada minuto del día que desee que se enciendan las luces si está oscuro. Descargue el script copiando y pegando este comando en la terminal:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Cada vez que se ejecuta onzone.py, obtendrá un valor de lux del sensor para ver si está oscuro. Si es así, verificará si las luces están encendidas o apagadas. Si están apagados, los encenderá. Si no está oscuro, el guión verá si las luces están encendidas. Si lo están, los apagará a menos que se hayan anulado.
El script usa una variable llamada lowlux para decidir en qué punto está lo suficientemente oscuro como para encender las luces. Puede cambiarlo a algo adecuado para su propia instalación alterando el valor en esta línea cerca de la parte superior de onzone.py:
lowlux = 50
Script 2: La Zona OFF
Este script se ejecutará cada minuto del día que desee que las luces permanezcan apagadas, a menos que se hayan anulado. Descargar el guión:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
A este script no le importa cuán claro u oscuro sea. Su trabajo es simplemente apagar las luces si están encendidas (a menos que se hayan anulado).
Script 3: El servidor de anulación
Este script crea un servicio web simple que puede aceptar comandos para realizar las siguientes acciones:
- Encienda las luces durante varios minutos, independientemente del nivel de luz ambiental.
- Apaga las luces.
- Averigüe si las luces están actualmente encendidas o apagadas.
- Averigüe cuánto tiempo más deben permanecer encendidas las luces cuando se han anulado.
Descargar el guión:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Antes de pasar al siguiente paso, ejecute el script offzone.py de esta manera:
python offzone.py
Esto creará los archivos de control que utilizan los scripts para realizar un seguimiento de todo.
Paso 5: programar las secuencias de comandos
Su Raspberry Pi puede ejecutar los scripts de automatización con cron. Configure el horario así:
sudo crontab -e
Pegue estas dos líneas en el editor de texto:
* 7, 8, 9, 17, 18, 19, 20, 21, 22, 23 * * * python /home/pi/lighting/onzone.py > NULL * 0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16 * * * python /home/pi/lighting/offzone.py > NULL
Nota: Si el nombre de usuario con el que inició sesión en su Raspberry Pi no era el pi predeterminado, cambie la ruta en consecuencia.
Enumere todas las horas en las que desea que se enciendan las luces cuando está oscuro en la primera línea. Todas las horas en las que quieres apagar las luces van en la segunda línea.
Ahora configure el script de anulación para que se ejecute automáticamente cuando se inicie Pi:
sudo nano /etc/rc.local
Pegue esta línea en la parte inferior del archivo, luego guarde y salga:
nohup python /home/pi/lighting/lightserver.py &
Finalmente, reinicie Raspberry Pi para que pueda verificar que el script del servidor se esté cargando como debería
sudo reboot
Paso 6: prueba el relé
Antes de conectar sus luces, compruebe que todo funciona utilizando la función de anulación. Escriba lo siguiente en un navegador web en la misma red que su Pi, reemplazando la dirección IP con la dirección de su propia Raspberry Pi:
11.22.33.44:1234/overrideon/3
Si todo está bien, escuchará el clic del relé y el navegador responderá que las luces se han encendido durante tres minutos.
Mientras el relé está cerrado, puede probar las otras funciones de anulación. Esto le indicará durante cuántos minutos más las luces permanecerán encendidas debido a la anulación:
11.22.33.44:1234/getoverrideremaining
Esto debería decirle que las luces están encendidas:
11.22.33.44:1234/lightstatus
Finalmente, puede apagarlos nuevamente con:
11.22.33.44:1234/overrideoff
El relé hará clic cuando se abra.
Paso 7: conecta tus luces
Apague y desconecte su Raspberry Pi antes de conectar sus luces al relé. Use los conectores normalmente abiertos (NO) en la placa de relés en lugar de un interruptor normal, como este:
Finalmente, puede instalar su sensor de lux en un lugar donde capturará el nivel de luz ambiental. Tenga en cuenta que el TSL2561 informará que está saturado si encuentra luz solar directa, por lo que es mejor mantenerlo a la sombra si es posible.
Más proyectos de Raspberry Pi para que pruebes
Reemplazar de forma remota su nueva configuración de iluminación inteligente escribiendo comandos en un navegador web es bastante engorroso. Una mejor manera es conectar algo como un Amazon Echo para facilitar las cosas. La combinación del servicio Alexa y el servicio Webhooks en IFTTT es una forma sencilla de agregar control de voz.
Consulte nuestra guía sobre el uso de IFTTT para ayudarlo a comenzar.
Otra opción es usar Atajos de Siri. Un solo acceso directo con menús puede consultar el estado de las luces y utilizar las funciones de anulación para encenderlas y apagarlas.
Si disfrutaste de este proyecto, asegúrate de ver estos proyectos extraños de Raspberry Pi 10 Proyectos de Raspberry Pi más extraños 10 Proyectos de Raspberry Pi más extraños Hay un científico loco dentro de cada uno de nosotros, y el Raspberry Pi permite que tu loon interno salga y juegue. A veces, las cosas se ponen raras. Muy raro. Leer más para más ideas.
Explore más sobre: IFTTT, Raspberry Pi, Smart Lighting.