Cum se construiește un comutator inteligent cu lumină cu zmeură Pi și IFTTT
Întreruperile cu întreruperi de zăpadă și comutatoarele cu temporizator sunt ambele modalități utile de a vă automatiza luminile. Nu ar fi minunat dacă ați putea combina cele două sau chiar le puteți conecta la internet pentru un sistem de iluminare cu adevărat inteligent?
O zmeură Pi, un releu, un senzor de lumină și o linie de cod sunt tot ceea ce aveți nevoie pentru a obține acest nirvana de iluminare automată pe un șut.
Ce ai nevoie
Componentele pentru comutatorul inteligent de detectare a luminii sunt ușor de sursă. O să ai nevoie:
- Orice model Raspberry Pi ruleaza Raspbian.
- O placă de releu, ușor de găsit pe Amazon.
- Un senzor de luminozitate Adafruit TSL2561.
- Jumper fire.
- Unele lumini pentru automatizare!
SunFounder 2 canale Modul releu DC 5V cu optocuplor Low Level Trigger Panou de expansiune pentru Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Zmeura Pi SunFounder 2 canale Modul releu DC 5V cu optocuplor Low Level Trigger Panou de expansiune pentru Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Zmeură Pi Cumpara acum la Amazon $ 6.79
Cum funcționează un comutator inteligent de lumină
Folosind un releu în același mod ca și proiectul nostru automat de deschidere a ușii de garaj Cum să vă automatizați ușa garajului cu IFTTT și zmeura Pi Cum să vă automatizați ușa garajului cu IFTTT și Raspberry Pi În acest tutorial vă vom arăta cum să vă automatizați ușa de garaj nu folosește nimic altceva decât un Raspberry Pi și IFTTT. Citiți mai multe, puteți programa un Raspberry Pi pentru a porni și opri un circuit de iluminare în momente fixe. Adăugarea unui senzor de luminozitate la mix înseamnă că Pi poate detecta nivelul luminii ambientale și alege să aprindă luminile numai când sunt într-adevăr necesare.
Deoarece un Pi este un computer mic care poate fi conectat la o rețea, îl puteți seta pentru a fi controlat și pe internet. Luminile dvs. inteligente vor avea trei intrări pentru a determina momentul în care acestea vor apărea:
- Un program programat.
- Nivelul luminii ambientale.
- Un semnal de override trimis prin rețea.
Pasul 1: Conectați Raspberry Pi la releu
Dacă sunteți nou la utilizarea GPIO-ului, începeți să citiți tot ce trebuie să știți despre zmeura Pi GPIO Pins.
Mai întâi, verificați dacă placa de releu are un jumper care leagă pinii VCC și JD-VCC împreună. Dacă are, eliminați-o.
Cu totul deconectat, conectați placa releu la Pi după cum urmează:
- Pi Pin 2 (5V) la JD-VCC pe panoul releului.
- Pin Pin 6 (GND) la GND pe panoul releului.
- Pi Pin 15 (GPIO 22) la IN1 pe panoul releului
- Pi Pin 17 (3.3v) la VCC pe panoul releului.
Pasul 2: Conectați senzorul de luminozitate
TSL2561 este un senzor de lumină care poate detecta lumină infraroșie, spectru complet și lumină vizibilă de om. Poate trimite o lectură digitală foarte precisă la Raspberry Pi. Senzorul raportează nivelul luminii pe o scară de 0,1 (fără lumină) până la 40,000 (soare luminos).
Panoul TSL2561 vorbește cu Raspberry Pi utilizând protocolul i2c. I2C are nevoie doar de două conexiuni, una pentru un ceas pentru a păstra cele două dispozitive sincronizate, iar una pentru transferul datelor. Desigur, senzorul de lux are, de asemenea, nevoie de o putere, deci există patru conexiuni pentru a face cu totul:
- Conectați Pin Pin 1 (3.3v) la Vin (sau VCC) pe senzorul lux
- Conectați Pin Pin 3 (SDA) la SDA pe senzorul lux
- Conectați Pin Pin 5 (SCL) la SCL pe senzorul lux
- Conectați Pin Pin 9 (GND) la GND la senzorul lux
Pasul 3: Configurarea și instalarea dependențelor
Înainte de a merge mai departe, va trebui să verificați dacă I2C este activat pe Raspberry Pi (este dezactivat în mod implicit). Introduceți următoarele în terminal:
sudo raspi-config
Selectați Opțiuni de interfață> P5 I2C, atunci alege da.
Lovit introduce apoi selectați finalizarea pentru a ieși din ecranul Config. Reportați Pi pentru ca schimbarea să aibă efect:
sudo reboot
Unele dependențe sunt necesare pentru ca Pi să poată comunica cu placa de senzori. Tastați următoarele comenzi:
sudo apt-get actualizare sudo apt-get instalare -y python-smbus sudo apt-get instalați-i i2c-tools
Puteți verifica dacă totul funcționează prin tastarea:
sudo i2cdetect -y 1
Dacă dependențele dvs. sunt instalate și senzorul dvs. de lux este conectat corect, veți vedea un răspuns ca acesta:
Aici utilitarul raportează că a găsit un dispozitiv I2C (senzorul de lux) la adresa I2C 39.
Încă nu ai terminat cu dependențele. Veți avea nevoie și de câteva biblioteci. Mai întâi, faceți un dosar care să păstreze tot ce este legat de acest proiect în:
mkdir ~ / iluminare cd ~ / iluminare
Apoi, descarca sticla, un cadru usor care va crea un server web simplu pe Pi. O veți folosi pentru a vă controla lumina de pe web.
wget https://bottlepy.org/bottle.py
Celelalte biblioteci de care aveți nevoie sunt pe Github, deci dacă Raspberry Pi nu are deja instalat Git, adăugați-l acum:
sudo apt-get instalați git
Acum, clona două biblioteci, după cum urmează:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git clona git https://github.com/adafruit/Adafruit_Python_PureIO.git
În fine, creați un script de testare creând un fișier nou:
nano test.py
Inserați acest cod (prin amabilitatea Adafruit):
#! / usr / bin / env python # - * - codificare: utf-8 - * - de la __future__ import_import absolut_import, divizie, print_function, unicode_literals de la tsl2561 import TSL2561 dacă __name__ == "__main__": tsl = TSL2561 ) print (tsl.lux ())
presa Ctrl + X pentru a salva, urmând instrucțiunile de pe ecran pentru a ieși.
Când ați terminat, executați scriptul de testare:
Python test.py
Dacă totul este instalat și funcționează, veți primi un număr înapoi. Acest număr este o citire lux de la senzor. Încercați să blocați senzorul sau să mutați-l astfel încât acesta să devină mai mult sau mai puțin lumină. Apoi rulați din nou testul de testare și vedeți cum se schimbă numărul.
Pasul 4: Creați scripturi de automatizare
Zmeura Pi va aprinde luminile când se va întuneca, dar și le va opri în anumite momente. De exemplu, ați putea dori ca luminile să se aprindă când se întunecă seara, apoi să se oprească la miezul nopții pentru a economisi energie electrică. Ar putea să vină din nou dimineața devreme, apoi să se oprească atunci când devine lumină.
Pentru a gestiona un program cu mai multe zone de sincronizare, există două scenarii diferite. Unu (onzone.py) va rula la fiecare minut în timpul în care doriți ca luminile să fie aprinse dacă este întunecată. Celălalt (offzone.py) va rula la fiecare minut în timpul când doriți ca luminile să fie dezactivate indiferent de nivelul luminii.
Scripturile vor fi programate să ruleze folosind joburi cron Cum să programați sarcini în Linux cu Cron și Crontab Cum să programați sarcini în Linux cu Cron și Crontab Abilitatea de a automatiza sarcinile este una dintre acele tehnologii futuriste care este deja aici. Fiecare utilizator Linux poate beneficia de sarcini de sistem și de utilizare a programelor, grație cron, un serviciu de fundal ușor de utilizat. Citeste mai mult . Prin alegerea orelor de zi și de noapte ale fiecărui scenariu, va fi ușor să setați orele în care luminile se pot aprinde automat. Puteți seta câte perioade de activare și de oprire doriți.
Pe lângă scripturile pentru controlul automat al luminilor, există un al treilea script pentru a gestiona situațiile de depășire. Acest lucru vă va permite să activați luminile de la distanță, indiferent de nivelul luminii ambientale.
Script 1: Zona ON
Acest script Python va fi rulat la fiecare minut al zilei în care doriți ca luminile să se aprindă dacă este întunecată. Descărcați scriptul copiind și inserați această comandă în terminal:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
De fiecare dată când se execută onzone.py, se va obține o valoare lux de la senzor pentru a vedea dacă este întunecată. Dacă este cazul, va verifica dacă luminile sunt aprinse sau dezactivate. Dacă sunt oprite, le va porni. Dacă nu este întunecată, scriptul va vedea dacă luminile sunt aprinse. Dacă sunt, le va dezactiva dacă nu au fost suprascrise.
Scriptul utilizează o variabilă numită lowlux pentru a decide în ce punct este suficient de întunecat pentru a porni luminile. Puteți să-l schimbați la ceva potrivit pentru propria dvs. instalare prin modificarea valorii din această linie lângă partea de sus a onzone.py:
lowlux = 50
Script 2: Zona OFF
Acest script va fi rulat în fiecare minut al zilei în care doriți să se stingă luminile, cu excepția cazului în care au fost suprascrise. Descărcați scriptul:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
Acest script nu-i pasă de cât de deschisă sau de întunecată este. Lucrarea lui este de a opri luminile dacă sunt aprinse (dacă nu au fost suprascrise).
Script 3: serverul de suprascriere
Acest script creează un serviciu web simplu care acceptă comenzi pentru a face următoarele acțiuni:
- Porniți lumina pentru câteva minute, indiferent de nivelul luminii ambientale.
- Opriți luminile.
- Aflați dacă luminile sunt în prezent pornite sau oprite.
- Aflați cât mai mult timp luminile trebuie să rămână aprinse atunci când au fost suprasolicitate.
Descărcați scriptul:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Înainte de a trece la pasul următor, executați scriptul offzone.py astfel:
python offzone.py
Acest lucru va crea fișierele de control pe care scripturile le utilizează pentru a urmări totul.
Pasul 5: Programați scripturile
Raspberry Pi poate rula scripturile de automatizare cu cron. Configurați programul astfel:
sudo crontab -e
Inserați aceste două linii în editorul de text:
* 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
Notă: dacă numele de utilizator pe care l-ați conectat la adresa dvs. de Raspberry Pi nu a fost implicit pi, schimbați calea în consecință.
Afișează toate orele în care doriți ca luminile să se aprindă când este întunecată în prima linie. Toate orele în care doriți ca luminile oprite să meargă pe a doua linie.
Acum, setați scriptul de suprascriere pentru a se executa automat la pornirea lui Pi:
sudo nano /etc/rc.local
Inserați această linie în partea de jos a fișierului, apoi salvați și ieșiți:
nohup python /home/pi/lighting/lightserver.py &
În cele din urmă, reporniți Raspberry Pi astfel încât să puteți verifica dacă scriptul de server se încarcă așa cum ar trebui
sudo reboot
Pasul 6: Testați releul
Înainte de a conecta luminile, verificați dacă totul funcționează utilizând funcția de suprascriere. Introduceți următoarele într-un browser web din aceeași rețea ca Pi, înlocuind adresa IP cu adresa propriului dvs. Raspberry Pi:
11.22.33.44:1234/overrideon/3
Dacă totul este bine, veți auzi clicul releului și browserul va răspunde că luminile au fost aprinse timp de trei minute.
În timp ce releul este închis, puteți testa celelalte funcții de suprareglare. Acest lucru vă va spune pentru cât mai multe minute luminile vor rămâne pe datorită suprasarcinii:
11.22.33.44:1234/getoverrideremaining
Acest lucru ar trebui să vă spun că luminile sunt aprinse:
11.22.33.44:1234/lightstatus
În cele din urmă, le puteți închide din nou cu:
11.22.33.44:1234/overrideoff
Releul va face clic pe când se deschide.
Pasul 7: Conectați-vă lumina
Opriți-vă și deconectați-l de la Raspberry Pi înainte de conectarea luminilor la releu. Utilizați conectorii deschisi (NO) de pe panoul releului în locul unui comutator regulat, cum ar fi:
În sfârșit, puteți instala senzorul dvs. lux într-un loc în care va capta nivelul luminii ambientale. Rețineți că TSL2561 va raporta ca fiind saturat dacă întâlnește lumina directă a soarelui, deci este mai bine să o păstrați la umbră, dacă este posibil.
Mai multe proiecte de zmeură Pi pentru a încerca
Depășirea de la distanță a noii setări inteligente de iluminare prin tastarea comenzilor într-un browser web este destul de greoaie. O modalitate mai bună este să conectați ceva de genul unui Echo Amazon pentru a ușura lucrurile. Combinând serviciul Alexa și serviciul Webhooks pe IFTTT este o modalitate simplă de a adăuga control vocal.
Consultați ghidul nostru pentru utilizarea IFTTT pentru a vă ajuta să începeți.
O altă opțiune este folosirea comenzilor rapide Siri. O singură comandă rapidă cu meniuri poate interoga starea luminilor și poate utiliza funcțiile de suprascriere pentru a le activa sau dezactiva.
Dacă vă bucurați de acest proiect, asigurați-vă că ați verificat aceste proiecte ciudate de Raspberry Pi 10 Proiectele cele mai ciudate de zmeură Pi 10 Cele mai ciudate proiecte de zmeură Pi Există un om de știință nebun în fiecare dintre noi, iar Raspberry Pi vă permite să ieșiți și să vă jucați. Uneori, lucrurile devin ciudate. Foarte ciudat. Citiți mai multe pentru mai multe idei.
Explorați mai multe despre: IFTTT, Raspberry Pi, Smart Lighting.