Annons
Dusk-til-gryning switchar och timer switchar är båda praktiska sätt att automatisera dina ljus. Skulle det inte vara bra om du kunde kombinera de två eller till och med ansluta dem till internet för ett riktigt smart belysningssystem?
En Raspberry Pi, ett relä, en ljussensor och en streck med kod är allt du behöver för att uppnå denna automatiska belysning nirvana på en shoestring.
Vad du behöver
Komponenter för din ljusavkännande smarta switch är lätta att källa. Du kommer att behöva:
- Alla modeller Raspberry Pi som kör Raspbian.
- EN reläbräda, lätt att hitta på Amazon.
- Ett Adafruit TSL2561 lyssensor.
- Jumpertrådar.
- Några ljus att automatisera!
Så fungerar en ljusavkännande smart switch
Genom att använda ett relä på samma sätt som vårt automatisk garageportöppnarprojekt Hur du automatiserar din garageport med IFTTT och Raspberry PiI den här tutorialen visar vi dig hur du automatiserar din garageport med ingenting annat än en Raspberry Pi och IFTTT. Läs mer , kan du programmera en Raspberry Pi för att slå på och stänga av en belysningskrets vid fasta tidpunkter. Om du lägger till en lyssensor till mixen kan Pi detektera den omgivande ljusnivån och välja att slå på lamporna endast när de verkligen behövs.
Eftersom en Pi är en liten dator som kan anslutas till ett nätverk kan du också ställa in den för att kontrolleras över internet. Dina smarta lampor har tre ingångar för att avgöra när de tänds:
- Ett programmerat schema.
- Den omgivande ljusnivån.
- En åsidosättningssignal skickad över nätverket.
Steg 1: Anslut Raspberry Pi till reläet
Om du är ny på att använda GPIO börjar du med att läsa Allt du behöver veta om Raspberry Pi GPIO-stift.
Kontrollera först om ditt reläkort har en bygel som ansluter VCC- och JD-VCC-stiften tillsammans. Om den har det, ta bort den.
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 Luminosity Sensor
TSL2561 är en ljussensor som kan upptäcka infrarött, fullspektrat och synligt ljus. Det kan skicka en mycket exakt digital läsning till Raspberry Pi. Sensorn rapporterar ljusnivån i en skala från 0,1 (inget ljus) till 40 000 (ljus sol).
TSL2561-styrelsen pratar med Hallon Pi med 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 data som överförs. Naturligtvis behöver lux-sensorn också lite ström, så det finns fyra anslutningar att göra helt:
- 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 beroenden
Innan du går längre måste du kontrollera att I2C är aktiverat på din Raspberry Pi (den är inaktiverad som standard). Skriv in följande i terminalen:
sudo raspi-config
Välj Gränssnittsalternativ> 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:
starta om
Vissa beroenden är nödvändiga för att Pi ska kunna kommunicera med sensorkortet. Skriv in följande kommandon:
sudo apt-get-uppdatering. sudo apt-get install -y python-smbus. sudo apt-get install -y i2c-tools
Du kan kontrollera att allt fungerar genom att skriva:
sudo i2cdetect -y 1
Om dina beroenden är installerade och din lux-sensor är korrekt ansluten ser du ett svar som detta:
Här rapporterar verktyget att den har hittat en I2C-enhet (lux-sensorn) på I2C-adress 39.
Du är inte riktigt klar med beroenden ännu. Du kommer också att behöva några bibliotek. Skapa först en mapp för att behålla allt som är relaterat till detta projekt i:
mkdir ~ / belysning. cd ~ / belysning
Ladda sedan ned flaska, ett lätt ramverk som skapar en enkel webbserver på din Pi. Du använder det för att kontrollera dina lampor från webben.
wget https://bottlepy.org/bottle.py
De andra biblioteken du behöver finns på Github, så om din Raspberry Pi inte redan har Git installerat, lägg till det nu:
sudo apt-get install git
Klona 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 den här koden (med tillstånd av Adafruit):
#! / usr / bin / env python. # - * - kodning: utf-8 - * - från __future__ import absolute_import, division, print_function, unicode_literals. från tsl2561 import TSL2561. om __name__ == "__main__": tsl = TSL2561 (debug = True) utskrift (tsl.lux ())
Tryck Ctrl + X för att spara, följ instruktionerna på skärmen för att avsluta.
När du är klar kör du testskriptet:
python test.py
Om allt är installerat och fungerar får du tillbaka ett nummer. Detta nummer är en lux-avläsning från sensorn. Försök 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 automatiseringsskript
Raspberry Pi slår på lamporna när det blir mörkt, men stänger också av dem vid vissa tider. Till exempel kanske du vill att dina lampor ska tända när det blir mörkt på kvällen och sedan släcka runt midnatt för att spara el. De kunde komma på igen tidigt på morgonen och sedan stänga av sig själva 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 köras varje minut under de tider du vill att dina lampor ska vara tända om det är mörkt. Den andra (offzone.py) körs varje minut under de tider du vill att lamporna ska vara släckta oavsett ljusnivå.
Skriptet kommer att planeras att köras använder cron jobb Hur man planerar uppgifter i Linux med Cron och CrontabFörmågan 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 kommer det att vara lätt att ställa in timmarna som dina lampor kan tändas automatiskt. Du kan ställa in så många av och på perioder du vill.
Förutom skript för att automatiskt kontrollera lamporna finns det ett tredje skript för att hantera åsidosättande situationer. Detta låter dig slå på lamporna på distans oavsett ljusnivå i omgivningen.
Skript 1: ON-zonen
Detta Python-skript körs varje minut på dagen som du vill att lamporna ska tända om det är mörkt. Ladda ner 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 får det ett lux-värde från sensorn för att se om det är mörkt. Om så är fallet kommer den att kontrollera om lamporna är på eller av. Om de är avstängda slår det på dem. Om det inte är mörkt kommer manuset att se om lamporna är på. Om de är det kommer det att stängas av om de inte har åsidosatts.
Skriptet använder en variabel som heter lowlux att bestämma vid vilken tidpunkt det är tillräckligt mörkt att slå på lamporna. Du kan ändra det till något som passar din egen installation genom att ändra värdet i den här raden nära toppen av onzone.py:
låglux = 50
Skript 2: OFF-zonen
Detta skript körs varje minut på dagen som du vill att lamporna ska stanna av, såvida de inte har åsidosatts. Ladda ner skriptet:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
Det här skriptet bryr sig inte om hur ljust eller mörkt det är. Det är bara att stänga av lamporna om de är på (om de inte har åsidosatts).
Skript 3: The Override Server
Detta skript skapar en enkel webbtjänst som kan acceptera kommandon för att göra följande åtgärder:
- Slå på lamporna i ett antal minuter oavsett ljusnivå i omgivningen.
- Stäng av lamporna.
- Ta reda på om lamporna för närvarande är på eller av.
- Ta reda på hur mycket längre lamporna ska stanna när de har åsidosatts.
Ladda ner 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 på din Raspberry Pi med inte var standard pi, ändra banan i enlighet därmed.
Lista alla timmar där du vill att lamporna ska tända när det är mörkt i den första raden. Alla timmar där du vill att lamporna ska vara av går i den andra raden.
Ställ nu det åsidosatta skriptet så att det körs automatiskt när Pi startar:
sudo nano /etc/rc.local
Klistra in den här raden längst ner i filen, spara och avsluta:
nohup python /home/pi/lighting/lightserver.py &
Slutligen, starta om Raspberry Pi så att du kan kontrollera att serverskriptet laddas som det ska
starta om
Steg 6: Testa reläet
Innan du kopplar ihop lamporna, testa att allt fungerar med hjälp av åsidosättningsfunktionen. Skriv följande i en webbläsare i samma nätverk som din Pi och ersätt IP-adressen med adressen till din egen Raspberry Pi:
11.22.33.44:1234/overrideon/3
Om allt är bra hör du reläklicket och webbläsaren svarar att lamporna har tändts i tre minuter.
Medan reläet är stängt kan du testa de andra åsidosättningsfunktionerna. Detta berättar hur många minuter lamporna kommer att tända på grund av åsidosättningen:
11.22.33.44:1234/getoverrideremaining
Detta skulle säga att lamporna är tända:
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 ljus
Stäng av och koppla ur Raspberry Pi innan du ansluter lamporna till reläet. Använd de normalt öppna (NO) -kontakterna på reläkortet istället för en vanlig omkopplare, så här:
Slutligen kan du installera din lux-sensor på en plats där den fångar den omgivande ljusnivån. Observera att TSL2561 kommer att rapporteras vara mättad om den möter direkt starkt solljus, så det är bäst att hålla den i skuggan om möjligt.
Fler Raspberry Pi-projekt som du kan prova
Att fjärrstyra din nya smarta belysningsinställning genom att skriva kommandon i en webbläsare är ganska besvärligt. Ett bättre sätt är att ansluta något som en Amazon Echo för att göra det lättare. Kombinera Alexa-tjänsten och Webhooks-tjänsten på IFTTT är ett enkelt sätt att lägga till röststyrning.
Se vår guide till att använda IFTTT för att hjälpa dig komma igång.
Ett annat alternativ är att använda Siri-genvägar. En enda genväg med menyer kan fråga status för lamporna och använda åsidosättningsfunktionerna för att slå på och stänga av dem.
Om du gillade det här projektet, se till att kolla in dessa konstiga Raspberry Pi-projekt 10 konstigaste hallon Pi-projektDet finns en galen forskare i var och en av oss, och Raspberry Pi låter din inre luna komma ut och spela. Ibland blir saker konstiga. Väldigt konstigt. Läs mer för fler idéer.
Hamish är frilansande författare, livslängd teknikälskare och bekräftad nörd. Han arbetade i IT-avdelningarna i ett antal multinationella företag innan han slutligen avskedade sin chef och gick den ensam.