Hoe maak je een Light-Sensing Smart Switch met Raspberry Pi en IFTTT
Dusk-til-dawn-schakelaars en timer-schakelaars zijn beide handige manieren om uw verlichting te automatiseren. Zou het niet geweldig zijn als je de twee zou kunnen combineren, of zelfs aansluiten op het internet voor een echt slim verlichtingssysteem?
Een Raspberry Pi, een relais, een lichtsensor en een streepje code zijn alles wat je nodig hebt om dit automatische lichtnirvana op een klein beetje te bereiken.
Wat je nodig hebt
Onderdelen voor uw lichtdetecterende slimme schakelaar zijn eenvoudig te vinden. Je hebt nodig:
- Elk model Raspberry Pi met Raspbian.
- Een relaisbord, gemakkelijk te vinden op Amazon.
- Een Adafruit TSL2561 helderheidssensor.
- Verbindingsdraden.
- Enkele lampjes om te automatiseren!
SunFounder 2 Kanaals DC 5V Relaismodule met Optocoupler Lage niveauschakeling Uitbreidingskaart voor Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi SunFounder 2 Kanaals DC 5V Relaismodule met Optocoupler Lage niveaus trigger uitbreidingskaart voor Arduino UNO R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi Nu kopen bij Amazon $ 6,79
Hoe een lichtgevoelige slimme schakelaar werkt
Door een relais te gebruiken op dezelfde manier als ons automatische garagedeuropenerproject Hoe automatiseer je de garagedeur met IFTTT en Raspberry Pi Hoe automatiseer je de garagedeur met IFTTT en Raspberry Pi In deze tutorial laten we je zien hoe je je automatisering kunt automatiseren garagedeur met niets meer dan een Raspberry Pi en IFTTT. Meer lezen, u kunt een Raspberry Pi programmeren om een verlichtingscircuit op vaste tijden in en uit te schakelen. Door een helderheidssensor aan de mix toe te voegen, kan de Pi het omgevingslichtniveau detecteren en ervoor kiezen de lichten alleen in te schakelen wanneer ze echt nodig zijn.
Omdat een Pi een kleine computer is die op een netwerk kan worden aangesloten, kunt u deze ook instellen voor besturing via internet. Uw smart lights hebben drie ingangen om te bepalen wanneer ze worden ingeschakeld:
- Een geprogrammeerd schema.
- Het omgevingslichtniveau.
- Een overridesignaal verzonden via het netwerk.
Stap 1: Verbind de Raspberry Pi met de relais
Als je nog geen ervaring hebt met het gebruik van de GPIO, begin dan met het lezen van Alles wat je moet weten over Raspberry Pi GPIO-pinnen.
Controleer eerst of uw relaiskaart een jumper heeft die de VCC- en JD-VCC-pennen aan elkaar verbindt. Als dit het geval is, verwijdert u het.
Als alles is uitgeschakeld, verbindt u het relaisbord als volgt met uw Pi:
- Pi Pin 2 (5v) naar de JD-VCC op de relaiskaart.
- Pi Pin 6 (GND) naar GND op de relaiskaart.
- Pi Pin 15 (GPIO 22) naar IN1 op de relaiskaart
- Pi Pin 17 (3.3v) naar VCC op de relaiskaart.
Stap 2: sluit de helderheidssensor aan
De TSL2561 is een lichtsensor die infrarood, volledig spectrum en voor de mens zichtbaar licht kan detecteren. Het kan een zeer nauwkeurige digitale uitlezing naar de Raspberry Pi sturen. De sensor rapporteert het lichtniveau op een schaal van 0.1 (geen licht) tot 40.000 (felle zon).
De TSL2561-kaart praat met de Raspberry Pi via het i2c-protocol. I2C heeft slechts twee verbindingen nodig, één voor een klok om de twee apparaten synchroon te houden en één voor de gegevens die worden overgedragen. Natuurlijk heeft de lux-sensor ook wat kracht nodig, dus er zijn vier verbindingen om helemaal te maken:
- Sluit pincode 1 (3,3V) aan op Vin (of VCC) op de lux-sensor
- Verbind Pi Pin 3 (SDA) met SDA op de lux-sensor
- Verbind Pi Pin 5 (SCL) met SCL op de lux-sensor
- Verbind Pi Pin 9 (GND) met GND op de lux-sensor
Stap 3: afhankelijkheden configureren en installeren
Voordat je verder gaat, moet je controleren of I2C is ingeschakeld op je Raspberry Pi (standaard is dit uitgeschakeld). Typ het volgende in de terminal:
sudo raspi-config
kiezen Koppelingsopties> P5 I2C, kies dan Ja.
Raken invoeren selecteer vervolgens Af hebben om het configuratiescherm te verlaten. Start je Pi opnieuw op voordat de wijziging van kracht wordt:
herstart sudo
Sommige afhankelijkheden zijn nodig opdat de Pi kan communiceren met het sensorbord. Typ de volgende opdrachten:
sudo apt-get update sudo apt-get installeer -y python-smbus sudo apt-get installeer -y i2c-tools
Je kunt controleren of alles werkt door te typen:
sudo i2cdetect -y 1
Als uw afhankelijkheden zijn geïnstalleerd en uw lux-sensor correct is aangesloten, ziet u een antwoord als volgt:
Hier meldt het hulpprogramma dat het een I2C-apparaat (de lux-sensor) heeft gevonden op I2C-adres 39.
Je bent nog niet helemaal klaar met de afhankelijkheden. Je zult ook een paar bibliotheken nodig hebben. Maak eerst een map om alles met betrekking tot dit project in te bewaren:
mkdir ~ / verlichting cd ~ / verlichting
Download vervolgens de fles, een lichtgewicht raamwerk dat een eenvoudige webserver op je Pi zal maken. Je gebruikt het om je lichten vanaf internet te bedienen.
wget https://bottlepy.org/bottle.py
De andere bibliotheken die je nodig hebt staan op Github, dus als je Raspberry Pi Git nog niet heeft geïnstalleerd, voeg je het nu toe:
sudo apt-get install git
Kloneer nu twee bibliotheken, zoals dit:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
En ten slotte, maak een testscript door een nieuw bestand te maken:
nano test.py
Plak in deze code (met dank aan Adafruit):
#! / usr / bin / env python # - * - coding: utf-8 - * - from __future__ import absolute_import, division, print_function, unicode_literals from tsl2561 import TSL2561 if __name__ == "__main__": tsl = TSL2561 (debug = True ) afdrukken (tsl.lux ())
druk op Ctrl + X opslaan en volg de instructies op het scherm om af te sluiten.
Wanneer u klaar bent, voert u het testscript uit:
python test.py
Als alles is geïnstalleerd en werkt, krijg je een nummer terug. Dat aantal is een lux-waarde van de sensor. Probeer de sensor te blokkeren of verplaats deze zodat deze meer of minder licht wordt. Voer vervolgens het testscript opnieuw uit en zie hoe het nummer verandert.
Stap 4: Maak de automatiseringsscripts
De Raspberry Pi schakelt de lichten in wanneer het donker wordt, maar schakelt ze ook op bepaalde tijden uit. U wilt bijvoorbeeld dat uw lichten gaan branden als het 's avonds donker wordt en dan rond middernacht uitgaan om elektriciteit te besparen. Ze kunnen 's morgens vroeg weer opkomen en zichzelf uitschakelen wanneer het licht wordt.
Om een schema met meerdere timingzones zoals deze te beheren, zijn er twee verschillende scripts. Een (onzone.py) wordt elke minuut afgespeeld op de tijdstippen waarop u wilt dat uw lichten worden ingeschakeld als het donker is. De andere (offzone.py) wordt elke minuut afgespeeld in tijden dat u wilt dat de lichten uit zijn, ongeacht het lichtniveau.
De scripts zullen worden gepland voor gebruik met cron-taken Taken plannen in Linux met Cron en Crontab Taken plannen in Linux met Cron en Crontab De mogelijkheid om taken te automatiseren is een van die futuristische technologieën die er al is. Elke Linux-gebruiker kan profiteren van planningssysteem- en gebruikerstaken, dankzij cron, een gebruiksvriendelijke achtergrondservice. Lees verder . Door te kiezen op welke uren van de dag en de nacht elk script wordt uitgevoerd, is het eenvoudig om de uren in te stellen dat uw lampen automatisch kunnen worden ingeschakeld. U kunt zoveel aan en uit perioden instellen als u wilt.
Naast scripts voor het automatisch besturen van de lichten, is er een derde script om overridesituaties te beheren. Hiermee kunt u de verlichting op afstand inschakelen, ongeacht het omgevingslichtniveau.
Script 1: de AAN-zone
Dit Python-script wordt elke minuut van de dag weergegeven waarop je wilt dat de lichten gaan branden als het donker is. Download het script door deze opdracht naar de terminal te kopiëren en te plakken:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Telkens als onzone.py wordt uitgevoerd, krijgt het een lux-waarde van de sensor om te zien of het donker is. Als dit het geval is, controleert het apparaat of de lichten aan of uit zijn. Als ze uitgeschakeld zijn, worden ze ingeschakeld. Als het niet donker is, zal het script zien of de lichten aan zijn. Als dit het geval is, worden ze uitgeschakeld, tenzij ze zijn opgeheven.
Het script gebruikt een variabele genaamd lowlux om te beslissen op welk punt het donker genoeg is om de lichten aan te doen. U kunt dit wijzigen in iets dat geschikt is voor uw eigen installatie door de waarde in deze regel boven aan onzone.py te wijzigen:
lowlux = 50
Script 2: de UIT-zone
Dit script wordt elke minuut van de dag uitgevoerd waarvan u wilt dat de lampjes uit blijven, tenzij ze zijn genegeerd. Download het script:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
Dit script geeft niet om hoe licht of donker het is. Zijn taak is gewoon om de lichten uit te schakelen als ze aan staan (tenzij ze zijn opgeheven).
Script 3: De server negeren
Dit script maakt een eenvoudige webservice die opdrachten kan accepteren om de volgende acties uit te voeren:
- Schakel de verlichting een aantal minuten in, ongeacht het niveau van het omgevingslicht.
- Schakel de lichten uit.
- Ontdek of de lichten momenteel aan of uit zijn.
- Ontdek hoe lang de lichten blijven branden als ze zijn uitgeschakeld.
Download het script:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Voordat u doorgaat naar de volgende stap voert u het script offzone.py als volgt uit:
python offzone.py
Hiermee worden de besturingsbestanden gemaakt die de scripts gebruiken om alles bij te houden.
Stap 5: Plan de scripts
Uw Raspberry Pi kan de automatiseringsscripts uitvoeren met cron. Stel het schema als volgt in:
sudo crontab -e
Plak deze twee regels in de teksteditor:
* 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
Opmerking: als de gebruikersnaam waarmee u zich bij uw Raspberry Pi hebt aangemeld, niet de standaardnaam was pi, verander het pad dienovereenkomstig.
Maak een lijst van alle uren waar u wilt dat de lichten aangaan als het donker is op de eerste regel. Alle uren waar u de lichten uit wilt gaan in de tweede regel.
Stel nu het onderdrukkingsscript in om automatisch te worden uitgevoerd wanneer de Pi opstart:
sudo nano /etc/rc.local
Plak deze regel onderaan het bestand, sla op en sluit af:
nohup python /home/pi/lighting/lightserver.py &
Ten slotte start je de Raspberry Pi opnieuw op, zodat je kunt controleren of het serverscript naar behoren wordt geladen
herstart sudo
Stap 6: Test de relais
Controleer voordat je je verlichting aansluit of alles werkt door de override-functie te gebruiken. Typ het volgende in een webbrowser op hetzelfde netwerk als uw Pi en vervang het IP-adres door het adres van uw eigen Raspberry Pi:
11.22.33.44:1234/overrideon/3
Als alles goed is, hoort u het relais klikken en de browser zal antwoorden dat de lichten gedurende drie minuten zijn ingeschakeld.
Terwijl het relais gesloten is, kunt u de andere onderdrukkingsfuncties testen. Dit geeft aan voor hoeveel minuten het licht nog zal branden vanwege de opheffing:
11.22.33.44:1234/getoverrideremaining
Dit zou je moeten vertellen dat de lichten aan zijn:
11.22.33.44:1234/lightstatus
Tot slot kunt u ze weer uitschakelen met:
11.22.33.44:1234/overrideoff
Het relais klikt als het wordt geopend.
Stap 7: sluit uw lichten aan
Schakel uw Raspberry Pi uit en koppel hem los voordat u uw verlichting aansluit op het relais. Gebruik de normaal open (NO) connectoren op de relaiskaart in plaats van een gewone schakelaar, zoals deze:
Ten slotte kunt u uw lux-sensor op een plaats installeren waar deze het omgevingslichtniveau vastlegt. Merk op dat de TSL2561 als verzadigd zal rapporteren als hij direct fel zonlicht tegenkomt, dus het is het beste om hem indien mogelijk in de schaduw te houden.
Meer Raspberry Pi-projecten die u kunt proberen
Het op afstand overbruggen van uw nieuwe slimme verlichtingsinstellingen door commando's in een webbrowser in te voeren, is behoorlijk omslachtig. Een betere manier is om iets als een Amazon Echo aan te sluiten om dingen eenvoudiger te maken. De combinatie van de Alexa-service en Webhooks-service op IFTTT is een eenvoudige manier om stembesturing toe te voegen.
Raadpleeg onze gids voor het gebruik van IFTTT om u te helpen aan de slag te gaan.
Een andere optie is om Siri-snelkoppelingen te gebruiken. Een enkele snelkoppeling met menu's kan de status van de lampjes opvragen en de opheffingsfuncties gebruiken om ze in en uit te schakelen.
Als je van dit project genoten hebt, kijk dan eens naar deze rare Raspberry Pi-projecten. 10 Weirdest Raspberry Pi-projecten 10 Weirdest Raspberry Pi-projecten Er is een gekke wetenschapper in ieder van ons, en de Raspberry Pi laat je innerlijke klokkenluider naar buiten komen en spelen. Soms worden dingen raar. Echt raar. Lees meer voor meer ideeën.
Ontdek meer over: IFTTT, Raspberry Pi, Smart Lighting.