Reklame

Dusk-til-daggry-switcher og timer-switches 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 til 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.
  • EN relæ bord, 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 automatisk garageportåbnerprojekt Sådan automatiseres din garageport med IFTTT og Raspberry PiI denne selvstudie viser vi dig, hvordan du automatiserer din garageport ved hjælp af intet andet end en Raspberry Pi og IFTTT. Læs mere , kan du programmere en Raspberry Pi til at tænde og slukke et belysningskredsløb til 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 har brug for det.

instagram viewer

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:

  1. En programmeret tidsplan.
  2. Det omgivende lysniveau.
  3. Et overstyringssignal sendt via netværket.

Trin 1: Tilslut Raspberry Pi til relæet

Hvis du er ny til at bruge GPIO, skal du starte med at læse Alt hvad du behøver 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.

JD-VCC til VCC relækortjumper

Tilslut relækortet til din Pi med følgende, når alt 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.
Raspberry Pi Zero W tilsluttet et relækort

Trin 2: Tilslut lysstyrkesensoren

TSL2561 er en lyssensor, der kan detektere 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 til 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 del strøm, så der er fire forbindelser, der skal foretages 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
Raspberry Pi Zero W tilsluttet til TSL2561 lux sensor

Trin 3: Konfigurer og installer afhængigheder

Inden 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 Grænsefladeindstillinger> P5 I2C, vælg derefter Ja.

Grænsefladsindstillinger i raspi-konfigurationsværktøjet

Hit Gå ind vælg derefter Afslut for at forlade konfigurationsskærmen. Genstart din Pi for ændringen at træde i kraft:

start igen

Nogle afhængigheder er nødvendige for, at Pi kan kommunikere med sensorkortet. Skriv følgende kommandoer:

sudo apt-get-opdatering. sudo apt-get install -y python-smbus. sudo apt-get install -y i2c-værktøjer

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:

IC-Detect utility rapportering lux sensor adresse

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 ~ / belysning. cd ~ / belysning

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 klon https://github.com/adafruit/Adafruit_Python_GPIO.git. git klon 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 (med tilladelse fra Adafruit):

#! / usr / bin / env python. # - * - kodning: utf-8 - * - fra __future__ import absolute_import, division, print_function, unicode_literals. fra tsl2561 import TSL2561. hvis __name__ == "__main__": tsl = TSL2561 (debug = True) udskriv (tsl.lux ())

Trykke Ctrl + X at gemme ved at følge 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 testscriptet 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, hvor dine lys skal være tændt, hvis det er mørkt. Den anden (offzone.py) kører hvert minut i de tidspunkter, hvor du ønsker, at lysene skal være slukket, uanset lysniveauet.

Smart skript for lysbelysning

Scripterne vil blive planlagt til at køre ved hjælp af cron job Sådan planlægges opgaver i Linux med Cron og CrontabEvnen 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 at beslutte, på hvilket tidspunkt det er mørkt nok til at tænde lysene. Du kan ændre det til noget, der passer 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 lys eller mørk 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 enkel webtjeneste, der kan acceptere kommandoer til at udføre følgende handlinger:

  1. Tænd for lysene i et antal minutter uanset det omgivende lysniveau.
  2. Sluk for lysene.
  3. Find ud af, om lysene i øjeblikket er tændt eller slukket.
  4. 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 scriptet offzone.py 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, æ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 og luk derefter:

nohup python /home/pi/lighting/lightserver.py &

Endelig genstart Raspberry Pi, så du kan kontrollere, at serverscriptet indlæses som det skal

start igen

Trin 6: Test relæet

Før 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:

Indsæt relæet i belysningskredsløbet

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. Ved at kombinere Alexa-tjenesten og Webhooks-tjenesten IFTTT er en enkel måde at tilføje stemmestyring på.

Se vores vejledning til brug af IFTTT for at hjælpe dig i gang.

IFTTT Applet til at forbinde smarte lys til Alexa

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 huske at tjekke disse underlige Raspberry Pi-projekter 10 underlige hindbær-Pi-projekterDer er en gal videnskabsmand inden i 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.

Hamish er en freelance forfatter, livslang elsker af teknologi og bekræftet nørd. Han arbejdede i IT-afdelingerne i en række multinationale virksomheder inden han til sidst fyrede sin chef og gik alene.