Hur man bygger en ljuskänslig Smart Switch med Raspberry Pi och IFTTT

Hur man bygger en ljuskänslig Smart Switch med Raspberry Pi och IFTTT / DIY

Skymningsskyddsbrytare och timeromkopplare är båda praktiska sätt att automatisera dina ljus. Skulle det inte vara bra om du kan kombinera de två, eller till och med koppla dem till internet för ett verkligt smart belysningssystem?

En Raspberry Pi, ett relä, en ljussensor och ett streckkod är allt du behöver för att uppnå denna automatiska belysning nirvana på en shoestring.

Vad du behöver

Komponenter för din ljuskännande smart switch är lätta att källa till. Du kommer att behöva:

  • Alla modeller Raspberry Pi som kör Raspbian.
  • Ett reläkort, lätt att hitta på Amazon.
  • En Adafruit TSL2561 luminositets sensor.
  • Jumper trådar.
  • Några lampor att automatisera!

SunFounder 2-kanalig DC 5V-relämodul med optokopplare Lågnivåutlösareutvidgningskort för Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi SunFounder 2-kanalig DC 5V-relämodul med optokopplare Lågnivåutlösare Expansionskort för Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi Köp nu På Amazon $ 6,79

Hur en ljuskänslig Smart Switch fungerar

Genom att använda ett relä på samma sätt som vårt automatiska garageportöppnareprojekt Hur man automatiserar din garageport med IFTTT och Raspberry Pi Hur man automatiserar din garageport med IFTTT och Raspberry Pi I den här handledningen visar vi hur du automatiserar din garageport med ingenting mer än en Raspberry Pi och IFTTT. Läs mer, du kan programmera en Raspberry Pi för att koppla en belysningskrets på och av vid fasta tider. Genom att lägga till en luminositetssensor i mixen kan Pi detektera omgivande ljusnivå och välja att slå på lamporna först när de verkligen behövs.

Eftersom en Pi är en liten dator som kan anslutas till ett nätverk, kan du ställa in det för att styras över internet också. Dina smarta ljus har tre ingångar för att bestämma när de kommer på:

  1. Ett programmerat schema.
  2. Den omgivande ljusnivån.
  3. En överstyrningssignal som skickas över nätverket.

Steg 1: Anslut Raspberry Pi till reläet

Om du är ny för att använda GPIO, börja med att läsa allt du behöver veta om Raspberry Pi GPIO Pins.

Kontrollera först om ditt reläkort har en hoppare som förbinder VCC och JD-VCC-stiften tillsammans. Om det har, ta bort det.

När allt är avstängt, anslut reläkortet till din Pi enligt följande:

  • Pi Pin 2 (5v) till JD-VCC på reläkortet.
  • Pi Pin 6 (GND) till GND på reläkortet.
  • Pi Pin 15 (GPIO 22) till IN1 på reläkortet
  • Pi Pin 17 (3.3v) till VCC på reläkortet.

Steg 2: Anslut luminositetssensorn

TSL2561 är en ljussensor som kan detektera infrarött, fullt spektrum och mänskligt synligt ljus. Det kan skicka en mycket exakt digital läsning till Raspberry Pi. Sensorn rapporterar ljusnivån på en skala av 0,1 (ingen ljus) till 40 000 (ljus sol).

TSL2561-styrelsen pratar med Raspberry Pi med hjälp av i2c-protokollet. I2C behöver bara två anslutningar, en för en klocka för att hålla de två enheterna synkroniserade och en för de data som överförs. Naturligtvis behöver lux-sensorn också lite ström, så det finns fyra anslutningar för att helt och hållet göra:

  • Anslut Pi Pin 1 (3.3v) till Vin (eller VCC) på lux sensorn
  • Anslut Pi Pin 3 (SDA) till SDA på lux sensorn
  • Anslut Pi Pin 5 (SCL) till SCL på lux sensorn
  • Anslut Pi Pin 9 (GND) till GND på lux sensorn

Steg 3: Konfigurera och installera beroende

Innan du går vidare måste du kontrollera att I2C är aktiverat på din Raspberry Pi (den är vanligtvis avstängd). Skriv följande i terminalen:

sudo raspi-config

Välj Interfacealternativ> P5 I2C, sedan Välj Ja.

Träffa Stiga på välj sedan Avsluta för att lämna konfigurationsskärmen. Starta om din Pi för att ändringen ska träda i kraft:

sudo omstart

Vissa beroenden är nödvändiga för att Pi ska kunna kommunicera med sensorkortet. Skriv följande kommandon:

sudo apt-get uppdatering sudo apt-få installera -y python-smbus sudo apt-få installera -y i2c-verktyg

Du kan kontrollera allt som fungerar genom att skriva:

sudo i2cdetect -y 1

Om dina beroenden är installerade och din lux-sensor är korrekt ansluten ser du ett svar så här:

Här rapporterar verktyget att det har hittat en I2C-enhet (lux-sensorn) vid I2C-adress 39.

Du är inte helt klar med beroendet än. Du behöver också några bibliotek. Först gör du en mapp för att hålla allt relaterat till detta projekt i:

mkdir ~ / belysning cd ~ / belysning

Därefter, ladda ner flaska, en lätt ram som kommer att skapa en enkel webbserver på din Pi. Du använder den för att styra dina ljus från webben.

wget https://bottlepy.org/bottle.py

De andra bibliotek du behöver finns på Github, så om din Raspberry Pi inte redan har Git installerad, lägg till den nu:

sudo apt-get install git

Klonera nu två bibliotek, så här:

git klon https://github.com/adafruit/Adafruit_Python_GPIO.git git klon https://github.com/adafruit/Adafruit_Python_PureIO.git

Och slutligen skapa ett testskript genom att skapa en ny fil:

nano test.py

Klistra in i denna kod (med tillstånd av Adafruit):

#! / usr / bin / env python # - * - kodning: utf-8 - * - från __future__ importera absolute_import, division, print_function, unicode_literals från tsl2561 importera TSL2561 om __name__ == "__main__": tsl = TSL2561 (debug = True ) print (tsl.lux ())

Tryck Ctrl + X att spara, följ instruktionerna på skärmen för att avsluta.

När du är färdig, kör testskriptet:

python test.py

Om allt är installerat och fungerar, kommer du tillbaka ett nummer. Det numret är en lux läsning från sensorn. Prova att blockera sensorn eller flytta den så att den blir mer eller mindre ljus. Kör sedan testskriptet igen och se hur numret ändras.

Steg 4: Skapa automationsskript

Raspberry Pi kommer att tända lamporna när det blir mörkt, men släcker dem också vid vissa tillfällen. Till exempel kanske du vill att dina lampor ska komma på när det blir mörkt på kvällen och sedan gå av runt midnatt för att spara el. De kunde komma igen tidigt på morgonen och stänga av sig när det blir lätt.

För att hantera ett schema med flera tidszoner som detta, finns det två olika skript. Ett (onzone.py) kommer att springa varje minut under de tider du vill att dina lampor ska vara på om det är mörkt. Den andra (offzone.py) kommer att springa varje minut under tider du vill att lamporna ska vara av oavsett ljusnivå.

Skripten kommer att schemaläggas att köras med hjälp av cron-jobb. Hur man schemalägger uppdrag i Linux med Cron och Crontab. Hur man schemalägger uppdrag i Linux med Cron och Crontab. Möjligheten att automatisera uppgifter är en av de futuristiska tekniker som redan finns här. Varje Linux-användare kan dra nytta av schemaläggningssystem och användaruppgifter, tack vare cron, en lättanvänd bakgrundstjänst. Läs mer . Genom att välja vilka timmar på dagen och natten varje skript körs, blir det enkelt att ställa in timmarna som dina lampor kan komma på automatiskt. Du kan ställa in så många på och av perioder som du vill.

Förutom skript för automatisk styrning av lamporna finns det ett tredje skript för att hantera överstyrningssituationer. På så sätt kan du stänga av lamporna på distans oavsett omgivande ljusnivå.

Skript 1: ON-zonen

Detta Python-skript kommer att köras varje minut den dag du vill att lamporna ska komma om det är mörkt. Hämta skriptet genom att kopiera och klistra in det här kommandot i terminalen:

wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py

Varje gång onzone.py körs, kommer det att få ett luxvärde från sensorn för att se om det är mörkt. Om det är så kontrolleras det om lamporna är på eller av. Om de är avstängda, kommer den att sätta på dem. Om det inte är mörkt, kommer skriptet att se om lamporna lyser. Om de är, kommer den att stänga av dem om de inte har överträtts.

Skriptet använder en variabel som heter lowlux att bestämma vid vilken tidpunkt det är mörkt nog att tända lamporna. Du kan ändra den till något som passar din egen installation genom att ändra värdet i den här raden nära toppen av onzone.py:

lowlux = 50

Skript 2: AV-zonen

Detta skript kommer att köras varje minut den dag du vill att lamporna ska stanna, om inte de har överträtts. Hämta skriptet:

wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py

Det här skriptet bryr sig inte om hur lätt eller mörkt det är. Dess jobb är helt enkelt att stänga av lamporna om de är på (om de inte har överträtts).

Skript 3: Åsidosättaren

Detta skript skapar en enkel webbtjänst som kan acceptera kommandon för att göra följande åtgärder:

  1. Slå på lamporna i några minuter oavsett omgivande ljusnivå.
  2. Stäng av lamporna.
  3. Ta reda på om lamporna är på eller av.
  4. Ta reda på hur mycket längre lamporna beror på att stanna kvar när de har överträtts.

Hämta skriptet:

wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py

Innan du går vidare till nästa steg kör du offzone.py-skriptet så här:

python offzone.py

Detta skapar kontrollfilerna som skripten använder för att hålla reda på allt.

Steg 5: Planera skripten

Din Raspberry Pi kan köra automatiseringsskript med cron. Ställ in schemat så här:

sudo crontab -e

Klistra in dessa två rader i textredigeraren:

* 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

Obs! Om användarnamnet du loggade in i din Raspberry Pi med var inte standard pi, Ändra banan i enlighet därmed.

Ange alla timmar där du vill att lamporna ska komma på när det är mörkt i första raden. Alla timmar där du vill att lamporna ska gå går i andra raden.

Ställ nu överdrivningsskriptet automatiskt när Pi startar:

sudo nano /etc/rc.local

Klistra in den här raden längst ner på filen, spara sedan och avsluta:

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

Slutligen starta om Raspberry Pi så att du kan kontrollera att serverns skript laddas som det ska

sudo omstart

Steg 6: Testa reläet

Innan du ansluter dina lampor, testa att allt fungerar genom att använda överstyrningsfunktionen. Skriv följande i en webbläsare i samma nätverk som din Pi, ersätta IP-adressen med adressen till din egen Raspberry Pi:

11.22.33.44:1234/overrideon/3

Om allt är bra hörs reläet och webbläsaren svarar att lamporna är tända i tre minuter.

Medan reläet är stängt kan du testa de andra överstyrningsfunktionerna. Detta kommer att berätta för hur många minuter minuter lamporna ska stanna på på grund av överstyrningen:

11.22.33.44:1234/getoverrideremaining

Detta ska berätta att lamporna är på:

11.22.33.44:1234/lightstatus

Slutligen kan du stänga av dem igen med:

11.22.33.44:1234/overrideoff

Reläet kommer att klicka när det öppnas.

Steg 7: Anslut dina lampor

Stäng av och koppla ifrån din Raspberry Pi innan du kopplar upp dina lampor till reläet. Använd de normalt öppna (NO) kontakterna på reläkortet istället för en vanlig strömbrytare, så här:

Slutligen kan du installera din lux-sensor på en plats där den kommer att fånga omgivande ljusnivå. Observera att TSL2561 kommer att rapportera att den är mättad om den stöter på direkt starkt solljus, så det är bäst att hålla det i skuggan om möjligt.

Mer hallon Pi Projekt för dig att försöka

Att överlägsna din nya smarta belysningsinstallation genom att skriva kommandon i en webbläsare är ganska besvärlig. Ett bättre sätt är att koppla upp något som ett Amazon Echo för att göra det enklare. Att kombinera Alexa-tjänsten och Webhooks-tjänsten på IFTTT är ett enkelt sätt att lägga till röstkontroll.

Se vår guide till hur du använder IFTTT för att hjälpa dig att komma igång.

Ett annat alternativ är att använda Siri Genvägar. En enda genväg med menyer kan fråga ljusets status och använda överstyrningsfunktionerna för att slå på och av.

Om du haft det här projektet, var noga med att kolla in de här konstiga Raspberry Pi-projekten. 10 Skrittaste Raspberry Pi-Projekt 10 Skrittra Raspberry Pi-Projekt Det finns en arg Scientist inom var och en av oss, och Raspberry Pi låter din inre löne komma ut och spela. Ibland blir saker konstiga. Väldigt konstigt. Läs mer för fler idéer.

Utforska mer om: IFTTT, Raspberry Pi, Smart Lighting.