Hvordan bygge en lysfølsom Smart Switch med Raspberry Pi og IFTTT
Dusk-til-grytebrytere og tidsbrytere er begge praktiske måter å automatisere lysene på. Ville det ikke vært bra hvis du kunne kombinere de to, eller til og med koble dem opp til internett for et virkelig smart belysningssystem?
En Raspberry Pi, et relé, en lyssensor og et strekk kode er alt du trenger for å oppnå denne automatiske belysning nirvana på en shoestring.
Hva du trenger
Komponenter for lysføler smart bryteren er enkle å kilde. Du vil trenge:
- Enhver modell Raspberry Pi som kjører Raspbian.
- Et relékort, enkelt funnet på Amazon.
- En Adafruit TSL2561 lysstyrke sensor.
- Jumper ledninger.
- Noen lys for å automatisere!
SunFounder 2-kanals DC 5V-relémodul med Optocoupler Lavnivå Utløserkort for Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi SunFounder 2-kanals DC 5V-relémodul med optokoppler Lavnivå utløserutvidelseskort for Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi Kjøp nå På Amazon $ 6,79
Hvordan en lysfølsom smart bryter fungerer
Ved å bruke et relé på samme måte som vår automatiske garasjeportåpnerprosjekt Slik automatiserer du garasjeporten med IFTTT og Raspberry Pi Slik automatiserer du garasjeporten med IFTTT og Raspberry Pi I denne veiledningen viser vi deg hvordan du automatiserer din Garasjedør med ingenting mer enn en Raspberry Pi og IFTTT. Les mer, du kan programmere en Raspberry Pi for å slå en lyskrets på og av ved faste tider. Ved å legge til en lysfølsomhet til blandingen betyr at Pi kan detektere det omgivende lysnivået og velge å slå på lysene bare når de virkelig trengs.
Fordi en Pi er en liten datamaskin som kan kobles til et nettverk, kan du sette det opp for å bli styrt over internett også. De elegante lysene dine har tre innganger for å bestemme når de kommer på:
- En programmert tidsplan.
- Det omgivende lysnivået.
- Et overstyringssignal som sendes over nettverket.
Trinn 1: Koble Raspberry Pi til reléet
Hvis du er ny til å bruke GPIO, start med å lese alt du trenger å vite om Raspberry Pi GPIO Pins.
Først må du sjekke om relékortet ditt har en jumper som forbinder VCC og JD-VCC-pinnene sammen. Hvis den har, fjern den.
Når alt er slått av, kobler du relékortet til Pi på følgende måte:
- Pi Pin 2 (5v) til JD-VCC på relébrettet.
- Pi Pin 6 (GND) til GND på relébrettet.
- Pi Pin 15 (GPIO 22) til IN1 på relébrettet
- Pi Pin 17 (3.3v) til VCC på relébrettet.
Trinn 2: Koble luminositetssensoren
TSL2561 er en lyssensor som kan oppdage infrarødt, fullt spektrum og menneskelig synlig lys. Det kan sende en svært presis digital lesning til Raspberry Pi. Sensoren rapporterer lysnivået på en skala fra 0,1 (ingen lys) til 40.000 (lys sol).
TSL2561-bordet snakker til Raspberry Pi ved hjelp av i2c-protokollen. I2C trenger bare to tilkoblinger, en for en klokke for å holde de to enhetene synkronisert, og en for dataene som overføres. Selvfølgelig trenger lux-sensoren litt strøm, så det er fire tilkoblinger for å gjøre alt:
- Koble Pi Pin 1 (3.3v) til Vin (eller VCC) på lux sensoren
- Koble Pi Pin 3 (SDA) til SDA på lux sensoren
- Koble Pi Pin 5 (SCL) til SCL på lux sensoren
- Koble Pi Pin 9 (GND) til GND på lux sensoren
Trinn 3: Konfigurer og installer avhengigheter
Før du går videre, må du sjekke at I2C er aktivert på Raspberry Pi (det er deaktivert som standard). Skriv inn følgende i terminalen:
sudo raspi-config
Å velge Grensesnittalternativer> P5 I2C, velg deretter Ja.
Truffet Tast inn velg deretter Bli ferdig for å gå ut av konfigurasjonsskjermbildet. Start din Pi igjen for at endringen skal tre i kraft:
sudo reboot
Noen avhengigheter er nødvendige for at Pi skal kunne kommunisere med sensorkortet. Skriv inn følgende kommandoer:
sudo apt-get oppdatering sudo apt-get install -y python-smbus sudo apt-install -y i2c-verktøy
Du kan sjekke alt som fungerer ved å skrive:
sudo i2cdetect -y 1
Hvis avhengighetene dine er installert og lux-sensoren er koblet til riktig, ser du et svar som dette:
Her rapporterer verktøyet at det har funnet en I2C-enhet (lux-sensoren) ved I2C-adressen 39.
Du er ikke helt ferdig med avhengighetene ennå. Du trenger også noen få biblioteker. Først må du lage en mappe for å holde alt relatert til dette prosjektet i:
mkdir ~ / belysning cd ~ / belysning
Deretter, last ned flaske, et lett rammeverk som vil skape en enkel webserver på Pi. Du bruker den til å kontrollere lysene dine fra nettet.
wget https://bottlepy.org/bottle.py
De andre bibliotekene du trenger er på Github, så hvis din Raspberry Pi ikke allerede har Git installert, legg det til:
sudo apt-get install git
Klon nå to biblioteker, slik:
git klone https://github.com/adafruit/Adafruit_Python_GPIO.git git klone https://github.com/adafruit/Adafruit_Python_PureIO.git
Og til slutt, opprett et testskript ved å opprette en ny fil:
nano test.py
Lim inn i denne koden (takk til Adafruit):
#! / usr / bin / env python # - * - koding: utf-8 - * - fra __future__ import absolute_import, divisjon, print_function, unicode_literals fra tsl2561 import TSL2561 hvis __name__ == "__main__": tsl = TSL2561 (debug = True ) print (tsl.lux ())
trykk Ctrl + X for å lagre, følger du instruksjonene på skjermen for å avslutte.
Når du er ferdig, kjør testskriptet:
python test.py
Hvis alt er installert og fungerer, får du tilbake et nummer. Det nummeret er en lux lesing fra sensoren. Prøv å blokkere sensoren, eller flytte den slik at den blir mer eller mindre lys. Kjør deretter testskriptet igjen og se hvordan tallet endres.
Trinn 4: Opprett automatiseringsskriptene
Raspberry Pi vil slå på lysene når det blir mørkt, men også slå dem av på bestemte tider. For eksempel vil du kanskje at lysene dine kommer opp når det blir mørkt om kvelden, og deretter gå av rundt midnatt for å spare strøm. De kunne komme igjen tidlig om morgenen, og skru seg av når det blir lys.
For å administrere en tidsplan med flere timing soner som dette, er det to forskjellige skript. En (onzone.py) vil løpe hvert minutt i løpet av tiden du vil at lysene skal være på hvis det er mørkt. Den andre (offzone.py) vil løpe hvert minutt i tider du vil at lysene skal være av, uavhengig av lysnivået.
Skriptene skal planlegges å kjøre ved hjelp av cron-jobber. Slik planlegger du oppgaver i Linux med Cron og Crontab. Slik planlegger du oppgaver i Linux med Cron og Crontab. Evnen til å automatisere oppgaver er en av de futuristiske teknologiene som allerede er her. Hver Linux-bruker kan dra nytte av planleggingssystemet og brukeroppgaver, takket være cron, en brukervennlig bakgrunnstjeneste. Les mer . Ved å velge hvilke timer på dagen og natten hvert skript kjøres, blir det enkelt å angi de timene som lysene dine kan komme på automatisk. Du kan sette opp så mange på og av perioder som du vil.
I tillegg til skript for automatisk styring av lysene, er det et tredje skript for å håndtere overstyringssituasjoner. Dette lar deg slå lysene på eksternt, uavhengig av omgivelseslysnivået.
Skript 1: ON-sonen
Dette Python-skriptet vil bli kjørt hvert minutt av dagen du vil at lysene skal komme på hvis det er mørkt. Last ned skriptet ved å kopiere og lime inn denne kommandoen til terminalen:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Hver gang onzone.py kjøres, vil det få en lux-verdi fra sensoren for å se om den er mørk. Hvis det er, vil det da sjekke om lampene er på eller av. Hvis de er slått av, vil den slå dem på. Hvis det ikke er mørkt, vil skriptet se om lysene er på. Hvis de er, vil den slå dem av med mindre de er overstyrt.
Skriptet bruker en variabel som heter lowlux å bestemme på hvilket tidspunkt det er mørkt nok til å slå på lysene. Du kan endre den til noe som passer for din egen installasjon ved å endre verdien i denne linjen nær toppen av onzone.py:
lowlux = 50
Skript 2: AV-sonen
Dette skriptet vil bli kjørt hvert minutt av dagen du vil at lysene skal holde seg av, med mindre de er blitt overstyrt. Last ned skriptet:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
Dette skriptet bryr seg ikke om hvor lett eller mørkt det er. Dens jobb er ganske enkelt å slå av lysene hvis de er på (med mindre de er blitt overstyrt).
Skript 3: Overstyringsserveren
Dette skriptet oppretter en enkel webtjeneste som kan godta kommandoer for å gjøre følgende handlinger:
- Slå på lysene i noen minutter, uavhengig av omgivelseslysnivået.
- Slå av lysene.
- Finn ut om lysene er for øyeblikket på eller av.
- Finn ut hvor mye lengre lysene skyldes å forbli når de er blitt overstyrt.
Last ned skriptet:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Før du går videre til neste trinn, kjør du offzone.py-skriptet slik:
python offzone.py
Dette vil skape kontrollfiler som skriptene bruker for å holde oversikt over alt.
Trinn 5: Planlegg skriptene
Din Raspberry Pi kan kjøre automatiseringsskriptene med cron. Sett opp timeplanen slik:
sudo crontab -e
Lim inn disse to linjene 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
Merk: Hvis brukernavnet du logget inn på Raspberry Pi med, var ikke standard pi, endre banen tilsvarende.
Oppgi alle timene hvor du vil at lysene skal komme på når det er mørkt i første linje. Alle timene hvor du vil ha lysene, gå i den andre linjen.
Sett nå overstyringsskriptet for å kjøre automatisk når Pi starter opp:
sudo nano /etc/rc.local
Lim inn denne linjen nederst på filen, og lagre og avslutte:
nohup python /home/pi/lighting/lightserver.py &
Endelig, start opp Raspberry Pi, slik at du kan sjekke at server scriptet lastes som det skal
sudo reboot
Trinn 6: Test reléet
Før du kobler opp lysene dine, må du teste at alt fungerer ved å bruke overstyringsfunksjonen. Skriv inn følgende i en nettleser på samme nettverk som Pi, erstatter IP-adressen med adressen til din egen Raspberry Pi:
11.22.33.44:1234/overrideon/3
Hvis alt er bra, vil du høre reléet, og nettleseren vil svare at lysene er slått på i tre minutter.
Mens reléet er lukket, kan du teste de andre overstyringsfunksjonene. Dette vil fortelle deg i hvor mange minutter lysene vil forbli på grunn av overstyringen:
11.22.33.44:1234/getoverrideremaining
Dette burde fortelle deg at lysene er på:
11.22.33.44:1234/lightstatus
Til slutt kan du slå dem av igjen med:
11.22.33.44:1234/overrideoff
Reléet klikker når det åpnes.
Trinn 7: Koble til lysene dine
Slå av og trekk ut Raspberry Pi før du kobler lysene til reléet. Bruk de normalt åpne (NO) kontaktene på relébrettet i stedet for en vanlig bryter, slik:
Til slutt kan du installere lux-sensoren på et sted der den vil fange det omgivende lysnivået. Vær oppmerksom på at TSL2561 vil rapporteres som mettet hvis den møter direkte, sterkt sollys, så det er best å holde det i skyggen om mulig.
Mer Raspberry Pi Prosjekter for deg å prøve
Fjernstyring av ditt nye, smarte belysningsoppsett ved å skrive kommandoer til en nettleser er ganske tungvint. En bedre måte er å koble opp noe som et Amazon Echo for å gjøre det enklere. Kombinere Alexa-tjenesten og Webhooks-tjenesten på IFTTT er en enkel måte å legge til stemmekontroll.
Se vår guide til bruk av IFTTT for å hjelpe deg med å komme i gang.
Et annet alternativ er å bruke Siri Shortcuts. En enkelt snarvei med menyer kan spørre statusen til lysene og bruke overstyringsfunksjonene for å slå dem på og av.
Hvis du likte dette prosjektet, vær sikker på å sjekke ut disse rare Raspberry Pi-prosjektene. 10 Rarlig Hindbær Pi Prosjekter 10 Rarlig Hindbær Pi Prosjekter Det er en sint forsker i hver av oss, og Raspberry Pi lar din indre lønn komme ut og leke. Noen ganger blir ting merkelige. Virkelig rart. Les mer for flere ideer.
Utforsk mer om: IFTTT, Raspberry Pi, Smart Lighting.