Sådan bygges en lysfølsom smart switch med Raspberry Pi og IFTTT

  • Michael Fisher
  • 0
  • 3873
  • 1034
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 Raspberry Pi og IFTTT. , kan du programmere en Raspberry Pi til at tænde og slukke et belysningskredsløb til faste tidspunkter. At tilføje en lysføler 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.

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

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-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 ~ / 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 (høflighed af 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 ) print (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.

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. . 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, der kaldes lowlux 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:

  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 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 /hjem/pi/lighting/offzone.py> NULL

Bemærk: Hvis det brugernavn, du logger 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 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

start igen

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. for flere ideer.




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.