Cómo construir un conmutador inteligente sensitivo a la luz con Raspberry Pi e IFTTT
Los interruptores Dusk-til-dawn y los temporizadores son dos maneras prácticas de automatizar sus luces. ¿No sería fantástico si pudiera combinar los dos, o incluso conectarlos a Internet para un sistema de iluminación realmente inteligente??
Una Raspberry Pi, un relé, un sensor de luz y un guión de código son todo lo que necesita para lograr este nirvana de iluminación automática con un presupuesto reducido..
Lo que necesitarás
Los componentes para su interruptor inteligente de detección de luz son fáciles de obtener. Necesitarás:
- Cualquier modelo de Raspberry Pi corriendo Raspbian.
- Un tablero de relé, fácilmente encontrado en Amazon.
- Un sensor de luminosidad Adafruit TSL2561.
- Cables de puente.
- Algunas luces para automatizar.!
SunFounder 2 Channel DC 5V Relay Module con optoacoplador Tarjeta de expansión de disparo de bajo nivel para Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi SunFounder 2 Channel DC 5V Módulo de relé con Optocoupler Low Level Trigger Expansion Board para Arduino UNO R3 ARM PIC AVR STM32 Raspberry Pi Compre Ahora En Amazon $ 6.79
Cómo funciona un interruptor inteligente que detecta la luz
Usando un relé de la misma manera que nuestro proyecto de apertura automática de puertas de garaje Cómo automatizar la puerta de su garaje con IFTTT y Raspberry Pi Cómo automatizar la puerta de su garaje con IFTTT y Raspberry Pi La puerta del garaje no usa nada más que una Raspberry Pi y 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 optar por encender las luces solo cuando son realmente necesarias.
Debido a que una Pi es una computadora pequeña que se puede conectar a una red, también puede configurarlo 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: Conecta la Raspberry Pi al Relay.
Si no está familiarizado con el uso de GPIO, comience leyendo todo lo que necesita saber sobre los pines GPIO de Raspberry Pi.
Primero, verifique si su tablero de relés tiene un puente que conecta los pines VCC y JD-VCC juntos. Si lo tiene, quítalo..
Con todo apagado, conecte el tablero de relés a su Pi de la siguiente manera:
- Pi Pin 2 (5v) al JD-VCC en el tablero de relés.
- Pi Pin 6 (GND) a GND en el tablero de relés.
- Pi Pin 15 (GPIO 22) a IN1 en el tablero de relés
- Pi Pin 17 (3.3v) a VCC en el tablero de relés.
Paso 2: Conecte el sensor de luminosidad
El TSL2561 es un sensor de luz que puede detectar luz infrarroja, de espectro completo y visible por 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 habla con la Raspberry Pi usando el protocolo i2c. I2C solo necesita dos conexiones, una para un reloj que mantiene 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 que 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 de lux
- Conecte Pi Pin 5 (SCL) a SCL en el sensor de lux
- Conecte Pi Pin 9 (GND) a GND en el sensor de lux
Paso 3: Configurar e instalar dependencias
Antes de seguir adelante, deberá verificar que I2C esté habilitado en su Raspberry Pi (está deshabilitado de manera predeterminada). Escriba lo siguiente en la terminal:
sudo raspi-config
Seleccionar Opciones de interfaz> P5 I2C, entonces escoge Sí.
Golpear Entrar luego selecciona Terminar para salir de la pantalla de configuración. Reinicie su Pi para que el cambio surta efecto:
reinicio de sudo
Algunas dependencias son necesarias para que la 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 comprobar que todo funciona correctamente 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.
Todavía no has terminado con las dependencias. También necesitarás algunas bibliotecas. Primero, haga una carpeta para guardar todo lo relacionado con este proyecto en:
mkdir ~ / lighting cd ~ / lighting
A continuación, descargue bottle, un marco liviano que creará un servidor web simple en su Pi. Lo utilizarás para controlar tus luces desde la web..
wget https://bottlepy.org/bottle.py
Las otras bibliotecas que necesitarás están en Github, así que si tu Raspberry Pi no tiene Git instalado, agrégalo ahora:
sudo apt-get install git
Ahora clona dos bibliotecas, así:
clon de git https://github.com/adafruit/Adafruit_Python_GPIO.git clon de git https://github.com/adafruit/Adafruit_Python_PureIO.git
Y por último, cree un script de prueba creando un nuevo archivo:
nano test.py
Pega en este código (cortesía de Adafruit):
#! / usr / bin / env python # - * - codificación: utf-8 - * - desde __future__ importar absolute_import, division, print_function, unicode_literals desde tsl2561 import TSL2561 si __name__ == "__main__": tsl = TSL2561 (debug = True ) imprimir (tsl.lux ())
prensa Ctrl + X para guardar, siguiendo las instrucciones en pantalla para salir.
Cuando hayas terminado, ejecuta el script de prueba:
python test.py
Si todo está instalado y funcionando, obtendrás un número. Ese número es una lectura de lux del sensor. Intente bloquear el sensor o moverlo para que se ilumine más o menos. A continuación, vuelva a ejecutar el script de prueba y vea cómo cambia el número.
Paso 4: Crear los scripts de automatización
La 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 se apague alrededor de la medianoche para ahorrar electricidad. Podrían volver a aparecer temprano en la mañana y luego apagarse cuando haya luz..
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 las horas en que desee que se enciendan las luces si está oscuro. El otro (offzone.py) correrá cada minuto durante los momentos en que desee que las luces se apaguen, independientemente del nivel de luz.
Las secuencias de comandos se programarán para que se ejecuten con los 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í. Cada usuario de Linux puede beneficiarse de la programación de tareas del sistema y del usuario, gracias a cron, un servicio en segundo plano fácil de usar. Lee mas . Al elegir a qué horas del día y de la noche se ejecuta cada script, será fácil establecer las horas en que sus luces pueden encenderse 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 administrar las situaciones de anulación. Esto le permitirá encender las luces de forma remota independientemente del nivel de luz ambiental.
Script 1: La Zona ON
Esta secuencia de comandos de Python se ejecutará cada minuto del día en que desea que se enciendan las luces si está oscuro. Descargue el script copiando y pegando este comando en el terminal:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Cada vez que se ejecuta onzone.py, se obtiene 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 script verá si las luces están encendidas. Si lo son, los apagará a menos que hayan sido anulados.
El script usa una variable llamada bajo flujo para decidir en qué punto está lo suficientemente oscuro como para encender las luces. Puede cambiarlo a algo adecuado para su propia instalación modificando el valor en esta línea cerca de la parte superior de onzone.py:
bajo flujo = 50
Script 2: La zona de apagado
Esta secuencia de comandos se ejecutará cada minuto del día en que desee que las luces permanezcan apagadas, a menos que se hayan anulado. Descarga el script:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
A este script no le importa lo claro u oscuro que sea. Su trabajo es simplemente apagar las luces si están encendidas (a menos que hayan sido anuladas).
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 encendidas o apagadas.
- Averigüe cuánto tiempo más se mantendrán encendidas las luces cuando se hayan anulado..
Descarga el script:
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 los guiones
Tu Raspberry Pi puede ejecutar los scripts de automatización con cron. Configure el horario de esta manera:
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 predeterminado Pi, cambia el camino 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 desea 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 el 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 la Raspberry Pi para que pueda comprobar que la secuencia de comandos del servidor se está cargando como debería
reinicio de sudo
Paso 6: Prueba el relé
Antes de conectar sus luces, pruebe que todo funciona con 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 permanecerán encendidas las luces 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, puedes apagarlos de nuevo con:
11.22.33.44:1234/overrideoff
El relé hará clic cuando se abra..
Paso 7: conecta tus luces
Apague y desenchufe su Raspberry Pi antes de conectar sus luces al relé. Use los conectores normalmente abiertos (NO) en el tablero de relés en lugar de un interruptor regular, 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
La anulación remota de su nueva configuración de iluminación inteligente escribiendo comandos en un navegador web es bastante incómoda. Una mejor manera es conectar algo como un eco de Amazon para facilitar las cosas. Combinar el servicio de Alexa y el servicio de Webhooks en IFTTT es una forma sencilla de agregar control de voz.
Consulte nuestra guía para usar IFTTT para ayudarlo a comenzar.
Otra opción es usar los atajos de Siri. Un solo acceso directo con menús puede consultar el estado de las luces y usar las funciones de anulación para encenderlas y apagarlas..
Si disfrutaste de este proyecto, asegúrate de revisar estos extraños proyectos de Raspberry Pi. 10 Proyectos más raros de Raspberry Pi. 10 Proyectos más extraños de Raspberry Pi. Hay un científico loco dentro de cada uno de nosotros, y Raspberry Pi permite que salga y juegue tu loco. A veces, las cosas se ponen raras. Muy raro. Leer más para más ideas.
Obtenga más información sobre: IFTTT, Raspberry Pi, iluminación inteligente.