Come costruire uno Smart Switch sensibile alla luce con Raspberry Pi e IFTTT
Annuncio pubblicitario
Gli interruttori crepuscolo-all'alba e i timer sono entrambi modi utili per automatizzare le luci. Non sarebbe bello se tu potessi unire i due o addirittura collegarli a Internet per un sistema di illuminazione davvero intelligente?
Un Raspberry Pi, un relè, un sensore di luce e un trattino di codice sono tutto ciò che serve per ottenere questo nirvana di illuminazione automatica con pochi soldi.
Cosa ti servirà
I componenti per il tuo interruttore intelligente sensibile alla luce sono facili da trovare. Avrai bisogno:
- Qualsiasi modello Raspberry Pi con Raspbian in esecuzione.
- Una scheda relè, facilmente reperibile su Amazon.
- Un sensore di luminosità Adafruit TSL2561.
- Cavi jumper.
- Alcune luci da automatizzare!
Come funziona uno Smart Switch sensibile alla luce
Usando un relè allo stesso modo del nostro progetto di apertura automatica della porta del garage Come automatizzare la porta del garage con IFTTT e Raspberry Pi Come automatizzare la porta del garage con IFTTT e Raspberry Pi In questo tutorial, ti mostreremo come automatizzare il tuo porta del garage utilizzando nient'altro che un Raspberry Pi e IFTTT. Per saperne di più, puoi programmare un Raspberry Pi per accendere e spegnere un circuito di illuminazione a orari prestabiliti. L'aggiunta di un sensore di luminosità al mix significa che Pi può rilevare il livello di luce ambientale e scegliere di accendere le luci solo quando sono realmente necessarie.
Poiché un Pi è un piccolo computer che può essere collegato a una rete, è possibile configurarlo per essere controllato anche su Internet. Le tue luci intelligenti avranno tre ingressi per determinare quando si accendono:
- Un programma programmato.
- Il livello di luce ambientale.
- Un segnale di override inviato sulla rete.
Passaggio 1: collegare Raspberry Pi al relè
Se non conosci il GPIO, inizia leggendo tutto quello che devi sapere sui pin GPIO di Raspberry Pi.
Innanzitutto, controlla se la tua scheda relè ha un ponticello che collega i pin VCC e JD-VCC insieme. Se lo ha, rimuoverlo.
Con tutto spento, collega la scheda relè al tuo Pi come segue:
- Pi Pin 2 (5v) a JD-VCC sulla scheda relè.
- Pi Pin 6 (GND) a GND sulla scheda relè.
- Pi Pin 15 (GPIO 22) su IN1 sulla scheda relè
- Pi Pin 17 (3.3v) a VCC sulla scheda relè.
Passaggio 2: collegare il sensore di luminosità
TSL2561 è un sensore di luce in grado di rilevare la luce infrarossa, a spettro completo e visibile dall'uomo. Può inviare una lettura digitale molto precisa al Raspberry Pi. Il sensore riporta il livello di luce su una scala da 0, 1 (nessuna luce) a 40.000 (sole splendente).
La scheda TSL2561 comunica con Raspberry Pi utilizzando il protocollo i2c. I2C necessita solo di due connessioni, una per un orologio per mantenere sincronizzati i due dispositivi e una per i dati trasferiti. Naturalmente, anche il sensore lux ha bisogno di un po 'di energia, quindi ci sono quattro connessioni da effettuare del tutto:
- Collega Pi Pin 1 (3.3v) a Vin (o VCC) sul sensore lux
- Collegare Pi Pin 3 (SDA) a SDA sul sensore lux
- Collegare Pi Pin 5 (SCL) a SCL sul sensore lux
- Collegare Pi Pin 9 (GND) a GND sul sensore lux
Passaggio 3: configurare e installare le dipendenze
Prima di proseguire, dovrai verificare che I2C sia abilitato su Raspberry Pi (è disabilitato per impostazione predefinita). Digitare quanto segue nel terminale:
sudo raspi-config
Seleziona Opzioni di interfaccia> P5 I2C, quindi scegli Sì .
Premi Invio, quindi seleziona Fine per uscire dalla schermata di configurazione. Riavvia il Pi per rendere effettive le modifiche:
sudo reboot
Alcune dipendenze sono necessarie affinché il Pi sia in grado di comunicare con la scheda sensore. Digita i seguenti comandi:
sudo apt-get update sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools
Puoi verificare che tutto funzioni digitando:
sudo i2cdetect -y 1
Se le tue dipendenze sono installate e il tuo sensore lux è collegato correttamente, vedrai una risposta come questa:
Qui l'utilità sta segnalando di aver trovato un dispositivo I2C (il sensore lux) all'indirizzo I2C 39.
Non hai ancora finito con le dipendenze. Avrai bisogno anche di alcune librerie. Innanzitutto, crea una cartella per conservare tutto ciò che riguarda questo progetto in:
mkdir ~/lighting cd ~/lighting
Successivamente, scarica la bottiglia, un framework leggero che creerà un semplice server Web sul tuo Pi. Lo userai per controllare le tue luci dal web.
wget https://bottlepy.org/bottle.py
Le altre librerie di cui hai bisogno sono su Github, quindi se Raspberry Pi non ha già installato Git, aggiungilo ora:
sudo apt-get install git
Ora clona due librerie, in questo modo:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
Infine, crea uno script di prova creando un nuovo file:
nano test.py
Incolla in questo codice (per gentile concessione di 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())
Premi Ctrl + X per salvare, seguendo le istruzioni sullo schermo per uscire.
Al termine, esegui lo script di test:
python test.py
Se tutto è installato e funzionante, riceverai un numero. Quel numero è una lettura lux dal sensore. Prova a bloccare il sensore o a spostarlo in modo da ottenere più o meno luce. Quindi eseguire nuovamente lo script di test e vedere come cambia il numero.
Passaggio 4: creare gli script di automazione
Il Raspberry Pi accende le luci quando fa buio, ma le spegne anche in determinati momenti. Ad esempio, potresti voler accendere le luci quando fa buio la sera, quindi spegnersi verso mezzanotte per risparmiare elettricità. Potrebbero riaccendersi al mattino presto, quindi spegnersi quando c'è luce.
Per gestire una pianificazione con più fasce orarie come questa, esistono due diversi script. Uno ( onzone.py ) verrà eseguito ogni minuto nei momenti in cui si desidera che le luci siano accese se è buio. L'altro ( offzone.py ) verrà eseguito ogni minuto durante i periodi in cui si desidera che le luci siano spente indipendentemente dal livello di luce.
Gli script verranno programmati per essere eseguiti utilizzando cron job. Come pianificare attività in Linux con Cron e Crontab Come pianificare attività in Linux con Cron e Crontab La capacità di automatizzare le attività è una di quelle tecnologie futuristiche che è già qui. Ogni utente Linux può beneficiare della pianificazione del sistema e delle attività dell'utente, grazie a cron, un servizio in background di facile utilizzo. Leggi di più . Scegliendo le ore del giorno e della notte in cui viene eseguito ogni script, sarà facile impostare le ore in cui le luci possono accendersi automaticamente. Puoi impostare tutti i periodi di accensione e spegnimento che desideri.
Oltre agli script per il controllo automatico delle luci, esiste un terzo script per gestire le situazioni di override. Ciò ti consentirà di accendere le luci in remoto indipendentemente dal livello di luce ambientale.
Script 1: The ON Zone
Questo script Python verrà eseguito ogni minuto del giorno in cui si desidera che le luci si accendano se è buio. Scarica lo script copiando e incollando questo comando nel terminale:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Ogni volta che onzone.py viene eseguito, otterrà un valore lux dal sensore per vedere se è buio. In tal caso, controllerà quindi se le luci sono accese o spente. Se sono spenti, li accenderà. Se non è buio, la sceneggiatura vedrà se le luci sono accese. Se lo sono, li spegne a meno che non siano stati sostituiti.
Lo script usa una variabile chiamata lowlux per decidere a che punto è abbastanza buio per accendere le luci. Puoi cambiarlo in qualcosa adatto alla tua installazione modificando il valore in questa riga vicino alla parte superiore di onzone.py:
lowlux = 50
Script 2: The OFF Zone
Questo script verrà eseguito ogni minuto del giorno in cui si desidera che le luci rimangano spente, a meno che non siano state sostituite. Scarica lo script:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
A questo script non importa quanto sia chiaro o scuro. Il suo compito è semplicemente quello di spegnere le luci se sono accese (a meno che non siano state sostituite).
Script 3: il server di sostituzione
Questo script crea un semplice servizio Web in grado di accettare comandi per eseguire le seguenti azioni:
- Accendi le luci per un certo numero di minuti indipendentemente dal livello di luce ambientale.
- Spegni le luci.
- Scopri se le luci sono attualmente accese o spente.
- Scopri per quanto tempo le luci devono rimanere accese quando sono state sostituite.
Scarica lo script:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Prima di passare al passaggio successivo, esegui lo script offzone.py in questo modo:
python offzone.py
Ciò creerà i file di controllo utilizzati dagli script per tenere traccia di tutto.
Passaggio 5: pianificare gli script
Il tuo Raspberry Pi può eseguire gli script di automazione con cron. Imposta il programma in questo modo:
sudo crontab -e
Incolla queste due righe nell'editor di testo:
* 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: se il nome utente con cui hai effettuato l'accesso a Raspberry Pi non era il pi predefinito, modifica il percorso di conseguenza.
Elenca tutte le ore in cui vuoi che le luci si accendano quando è buio nella prima riga. Tutte le ore in cui si desidera spegnere le luci vanno nella seconda riga.
Ora imposta lo script di override per l'esecuzione automatica all'avvio del Pi:
sudo nano /etc/rc.local
Incolla questa riga nella parte inferiore del file, quindi salva ed esci:
nohup python /home/pi/lighting/lightserver.py &
Infine, riavvia Raspberry Pi in modo da poter verificare che lo script del server si stia caricando come dovrebbe
sudo reboot
Passaggio 6: testare il relè
Prima di collegare le luci, verifica che tutto funzioni utilizzando la funzione di esclusione. Digita quanto segue in un browser Web sulla stessa rete del tuo Pi, sostituendo l'indirizzo IP con l'indirizzo del tuo Raspberry Pi:
11.22.33.44:1234/overrideon/3
Se tutto va bene, sentirai il clic del relè e il browser risponderà che le luci sono state accese per tre minuti.
Mentre il relè è chiuso, è possibile testare le altre funzioni di override. Questo ti dirà per quanti altri minuti le luci rimarranno accese a causa della sostituzione:
11.22.33.44:1234/getoverrideremaining
Questo dovrebbe dirti che le luci sono accese:
11.22.33.44:1234/lightstatus
Infine, puoi disattivarli di nuovo con:
11.22.33.44:1234/overrideoff
Il relè farà clic quando si apre.
Passaggio 7: collega le luci
Spegni e scollega Raspberry Pi prima di collegare le luci al relè. Utilizzare i connettori normalmente aperti (NO) sulla scheda relè al posto di un normale interruttore, in questo modo:
Infine, puoi installare il tuo sensore lux in un luogo in cui catturerà il livello di luce ambientale. Si noti che il TSL2561 segnalerà di essere saturo se incontra luce solare diretta, quindi è meglio tenerlo all'ombra, se possibile.
Altri progetti Raspberry Pi da provare
L'override remoto della nuova configurazione dell'illuminazione intelligente digitando i comandi in un browser Web è piuttosto ingombrante. Un modo migliore è collegare qualcosa come Amazon Echo per semplificare le cose. La combinazione del servizio Alexa e del servizio Webhooks su IFTTT è un modo semplice per aggiungere il controllo vocale.
Consulta la nostra guida all'uso di IFTTT per aiutarti a iniziare.
Un'altra opzione è quella di utilizzare le scorciatoie Siri. Una singola scorciatoia con menu può interrogare lo stato delle luci e utilizzare le funzioni di sostituzione per accenderle e spegnerle.
Se ti è piaciuto questo progetto, assicurati di dare un'occhiata a questi strani progetti di Raspberry Pi 10 progetti di Raspberry Pi più strani 10 progetti di Raspberry Pi più strani C'è uno scienziato pazzo dentro ognuno di noi e il Raspberry Pi fa uscire il tuo loon interiore e giocare. A volte le cose si fanno strane. Molto strano. Maggiori informazioni per ulteriori idee.
Scopri di più su: IFTTT, Raspberry Pi, Smart Lighting.