Sådan bygges en lysfølsom smart switch med Raspberry Pi og IFTTT
Reklame
Dusk-til-dawn-afbrydere og timer-afbrydere er begge nyttige måder at automatisere dine lys på. Ville det ikke være dejligt, hvis du kunne kombinere de to eller endda tilslutte dem til internettet for et virkelig smart belysningssystem?
En Raspberry Pi, et relæ, en lyssensor og en strejf med kode er alt hvad du behøver for at opnå denne automatiske belysningsnirvana på en skobånd.
Hvad du har brug for
Komponenter til din lysfølsomme, intelligente switch er let at kilde til. Du har brug for:
- Enhver Raspberry Pi-model, der kører Raspbian.
- Et relæbræt, let fundet på Amazon.
- En Adafruit TSL2561 lysføler.
- Jumper ledninger.
- Nogle lys til at automatisere!
Sådan fungerer en lysfølsom smart switch
Ved at bruge et relæ på samme måde som vores automatiske garageportåbnerprojekt Sådan automatiseres din garageport med IFTTT og Raspberry Pi Sådan automatiseres din garageport med IFTTT og Raspberry Pi I denne selvstudie viser vi dig, hvordan du automatiserer din garageport garageport ved hjælp af intet andet end en Raspberry Pi og IFTTT. Læs mere, du kan programmere en Raspberry Pi til at tænde og slukke et belysningskredsløb på faste tidspunkter. At tilføje en lysstyrkesensor til blandingen betyder, at Pi kan registrere det omgivende lysniveau og vælge kun at tænde lysene, når de virkelig er nødvendige.
Fordi en Pi er en lille computer, der kan forbindes til et netværk, kan du også indstille den til at blive kontrolleret over internettet. Dine smarte lys har tre indgange til at bestemme, hvornår de tændes:
- En programmeret tidsplan.
- Det omgivende lysniveau.
- Et overstyringssignal sendt via netværket.
Trin 1: Tilslut Raspberry Pi til relæet
Hvis du er ude af at bruge GPIO, skal du starte med at læse alt, hvad du har brug for at vide om Raspberry Pi GPIO-pins.
Kontroller først, om dit relækort har en jumper, der forbinder VCC- og JD-VCC-stifterne sammen. Hvis det er tilfældet, skal du fjerne det.
Tilslut alt relækortet til din Pi med alt, der er slået fra:
- Pi Pin 2 (5v) til JD-VCC på relæpladen.
- Pi Pin 6 (GND) til GND på stafetten.
- Pi Pin 15 (GPIO 22) til IN1 på relæpladen
- Pi Pin 17 (3.3v) til VCC på relæpladen.
Trin 2: Tilslut lysstyrkesensoren
TSL2561 er en lyssensor, der kan registrere infrarødt lys, fuldspektrum og menneskesynligt lys. Det kan sende en meget præcis digital læsning til Raspberry Pi. Sensoren rapporterer lysniveauet i en skala fra 0, 1 (intet lys) til 40.000 (lys sol).
TSL2561-bestyrelsen taler med Raspberry Pi ved hjælp af i2c-protokollen. I2C har kun brug for to forbindelser, en for et ur for at holde de to enheder synkroniseret og en til de data, der overføres. Selvfølgelig har lux-sensoren også brug for en vis strøm, så der er fire forbindelser, der kan laves helt:
- Tilslut Pi Pin 1 (3.3v) til Vin (eller VCC) på lux sensoren
- Tilslut Pi Pin 3 (SDA) til SDA på lux-sensoren
- Tilslut Pi Pin 5 (SCL) til SCL på lux-sensoren
- Tilslut Pi Pin 9 (GND) til GND på lux sensoren
Trin 3: Konfigurer og installer afhængigheder
Før du går videre, skal du kontrollere, at I2C er aktiveret på din Raspberry Pi (den er deaktiveret som standard). Skriv følgende i terminalen:
sudo raspi-config
Vælg Interfaces-indstillinger> P5 I2C, og vælg derefter Ja .
Tryk på Enter, vælg derefter Finish for at afslutte konfigurationsskærmen. Genstart din Pi for ændringen at træde i kraft:
sudo reboot
Nogle afhængigheder er nødvendige for, at Pi kan kommunikere med sensorkortet. Skriv følgende kommandoer:
sudo apt-get update sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools
Du kan kontrollere, at alt fungerer ved at skrive:
sudo i2cdetect -y 1
Hvis dine afhængigheder er installeret, og din lux-sensor er tilsluttet korrekt, ser du et svar som dette:
Her rapporterer værktøjet, at det har fundet en I2C-enhed (lux-sensoren) på I2C-adresse 39.
Du er ikke helt færdig med afhængighederne endnu. Du har også brug for et par biblioteker. Lav først en mappe, der indeholder alt, der er relateret til dette projekt, i:
mkdir ~/lighting cd ~/lighting
Download derefter flaske, en letvægtsramme, der skaber en enkel webserver på din Pi. Du bruger det til at kontrollere dine lys fra internettet.
wget https://bottlepy.org/bottle.py
De andre biblioteker, du har brug for, er på Github, så hvis din Raspberry Pi ikke allerede har Git installeret, skal du tilføje det nu:
sudo apt-get install git
Klon nu to biblioteker som dette:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
Og til sidst oprette et testscript ved at oprette en ny fil:
nano test.py
Indsæt denne kode (høflighed af 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())
Tryk på Ctrl + X for at gemme, og følg instruktionerne på skærmen for at afslutte.
Når du er færdig, skal du køre testscript:
python test.py
Hvis alt er installeret og fungerer, får du et nummer tilbage. Dette nummer er en lux-aflæsning fra sensoren. Prøv at blokere sensoren, eller flyt den, så den får mere eller mindre lys. Kør derefter testskriptet igen og se, hvordan antallet ændres.
Trin 4: Opret automatiseringsskripts
Raspberry Pi tænder lysene, når det bliver mørkt, men slukker også dem på bestemte tidspunkter. For eksempel vil du måske have, at dine lys tændes, når det bliver mørkt om aftenen, og sluk derefter omkring midnat for at spare strøm. De kunne komme på igen tidligt om morgenen og derefter slukke for sig selv, når det bliver lys.
For at administrere en tidsplan med flere tidszoner som denne, er der to forskellige scripts. En ( onzone.py ) kører hvert minut i de tidspunkter, du vil have dine lys til at være tændt, hvis det er mørkt. Den anden ( offzone.py ) kører hvert minut i de tidspunkter, du ønsker, at lysene skal være slukket uanset lysniveauet.
Skripterne vil blive planlagt til at køre ved hjælp af cron-job Sådan planlægges opgaver i Linux med Cron og Crontab Sådan planlægges opgaver i Linux med Cron og Crontab Evnen til at automatisere opgaver er en af de futuristiske teknologier, der allerede er her. Hver Linux-bruger kan drage fordel af planlægningssystemer og brugeropgaver takket være cron, en let at bruge baggrundstjeneste. Læs mere . Ved at vælge, hvilke timer på dagen og natten hvert script køres, vil det være let at indstille de timer, som dine lys kan tændes automatisk. Du kan indstille så mange af og på perioder, som du vil.
Udover scripts til automatisk styring af lysene, er der et tredje script til at styre tilsidesættelsessituationer. Dette giver dig mulighed for at tænde lysene eksternt uanset det omgivende lysniveau.
Script 1: ON-zone
Dette Python-script køres hvert minut på dagen, hvor du ønsker, at lysene skal tændes, hvis det er mørkt. Download scriptet ved at kopiere og indsætte denne kommando i terminalen:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Hver gang onzone.py køres, får den en lux-værdi fra sensoren for at se, om det er mørkt. Hvis det er tilfældet, vil det derefter kontrollere, om lysene er tændt eller slukket. Hvis de er slukket, tænder det dem. Hvis det ikke er mørkt, vil scriptet se, om lysene er tændt. Hvis det er tilfældet, slukker det dem, medmindre de er tilsidesat.
Scriptet bruger en variabel kaldet lowlux til at beslutte, på hvilket tidspunkt det er mørkt nok til at tænde lysene. Du kan ændre det til noget, der er egnet til din egen installation ved at ændre værdien i denne linje nær toppen af onzone.py:
lowlux = 50
Script 2: OFF-zonen
Dette script køres hvert minut på dagen, hvor du ønsker, at lysene skal være slukket, medmindre de er tilsidesat. Download scriptet:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
Dette script er ligeglad med, hvor lyst eller mørkt det er. Dets job er simpelthen at slukke for lysene, hvis de er tændt (medmindre de er tilsidesat).
Script 3: Overstyr serveren
Dette script opretter en simpel webtjeneste, der kan acceptere kommandoer til at udføre følgende handlinger:
- Tænd for lysene i et antal minutter uanset det omgivende lysniveau.
- Sluk for lysene.
- Find ud af, om lysene i øjeblikket er tændt eller slukket.
- Find ud af, hvor meget længere lysene skal forblive tændt, når de er tilsidesat.
Download scriptet:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Før du går videre til det næste trin, skal du køre offzone.py-scriptet sådan:
python offzone.py
Dette skaber kontrolfilerne, som scripts bruger til at holde styr på alt.
Trin 5: Planlæg scripts
Din Raspberry Pi kan køre automatiseringsskriptene med cron. Opret planen sådan:
sudo crontab -e
Indsæt disse to linjer i teksteditoren:
* 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
Bemærk: Hvis det brugernavn, du loggede på din Raspberry Pi med ikke var standard- pi, skal du ændre stien i overensstemmelse hermed.
Liste over alle timer, hvor du ønsker, at lysene skal tændes, når det er mørkt i den første linje. Alle timer, hvor du vil have lysene slukket, går i anden linje.
Indstil nu det tilsidesatte script til at køre automatisk, når Pi starter:
sudo nano /etc/rc.local
Indsæt denne linje i bunden af filen, gem derefter og afslutt:
nohup python /home/pi/lighting/lightserver.py &
Endelig genstart Raspberry Pi, så du kan kontrollere, at serverscriptet indlæses som det skal
sudo reboot
Trin 6: Test relæet
Inden du tilslutter dine lys, skal du teste, at alt fungerer ved hjælp af funktionen for tilsidesættelse. Skriv følgende i en webbrowser på det samme netværk som din Pi, og erstatt IP-adressen med adressen på din egen Raspberry Pi:
11.22.33.44:1234/overrideon/3
Hvis alt går i orden, hører du relæ-klik, og browseren svarer, at lysene er tændt i tre minutter.
Mens relæet er lukket, kan du teste de andre overstyringsfunktioner. Dette fortæller dig, hvor mange minutter flere lysene vil være tændt på grund af tilsidesættelsen:
11.22.33.44:1234/getoverrideremaining
Dette skulle fortælle dig, at lysene er tændt:
11.22.33.44:1234/lightstatus
Endelig kan du slukke dem igen med:
11.22.33.44:1234/overrideoff
Relæet klikker, når det åbnes.
Trin 7: Tilslut dine lys
Sluk og tænd for Raspberry Pi, før du tilslutter dine lys til relæet. Brug de normalt åbne (NO) stik på relækortet i stedet for en almindelig switch, som denne:
Endelig kan du installere din lux-sensor på et sted, hvor den fanger det omgivende lysniveau. Bemærk, at TSL2561 rapporteres som mættet, hvis den støder på direkte skarpt sollys, så det er bedst at holde den i skyggen, hvis det er muligt.
Flere Raspberry Pi-projekter du kan prøve
Fjernbetjening af din nye smarte belysningsopsætning ved at skrive kommandoer i en webbrowser er temmelig besværligt. En bedre måde er at tilslutte noget som en Amazon Echo for at gøre tingene lettere. Kombination af Alexa-tjenesten og Webhooks-tjenesten på IFTTT er en enkel måde at tilføje stemmestyring på.
Se vores guide til at bruge IFTTT til at hjælpe dig med at komme i gang.
En anden mulighed er at bruge Siri-genveje. En enkelt genvej med menuer kan forespørge status for lysene og bruge overstyringsfunktionerne til at tænde og slukke dem.
Hvis du nød dette projekt, skal du sørge for at tjekke disse underlige Raspberry Pi-projekter 10 Mærkelige hindbær-Pi-projekter 10 Mærkelige hindbær-Pi-projekter Der er en gal videnskabsmand inden for hver af os, og Raspberry Pi lader din indre lune komme ud og lege. Undertiden bliver ting underligt. Virkelig underligt. Læs mere for flere ideer.
Udforsk mere om: IFTTT, Raspberry Pi, Smart Lighting.