Een lichtgevoelige slimme schakelaar bouwen met Raspberry Pi en IFTTT
Advertentie
Schemering tot het ochtendgloren en tijdschakelaars zijn beide handige manieren om uw lichten te automatiseren. Zou het niet geweldig zijn als je de twee zou kunnen combineren, of ze zelfs op internet zou kunnen aansluiten 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 verlichtingsirvana te bereiken op een shoestring.
Wat je nodig hebt
Componenten voor uw lichtgevoelige slimme schakelaar zijn gemakkelijk te vinden. Je zal nodig hebben:
- Elk model Raspberry Pi met Raspbian.
- Een relaisbord, gemakkelijk te vinden op Amazon.
- Een Adafruit TSL2561 lichtsterktesensor.
- Jumper draden.
- Enkele lichten om te automatiseren!
Hoe een lichtgevoelige slimme schakelaar werkt
Door een relais te gebruiken op dezelfde manier als ons automatische garagedeuropenerproject Uw garagedeur automatiseren met IFTTT en Raspberry Pi Uw garagedeur automatiseren met IFTTT en Raspberry Pi In deze tutorial laten we u zien hoe u uw garagedeur met niets meer dan een Raspberry Pi en IFTTT. Lees meer, 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 niveau van het omgevingslicht 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 hem ook via internet instellen. Uw slimme lampen hebben drie ingangen om te bepalen wanneer ze gaan branden:
- Een geprogrammeerd schema.
- Het omgevingslichtniveau.
- Een overbruggingssignaal verzonden via het netwerk.
Stap 1: Verbind de Raspberry Pi met het relais
Als je de GPIO nog niet kent, lees dan eerst alles wat je moet weten over Raspberry Pi GPIO-pins.
Controleer eerst of uw relaisbord een jumper heeft die de VCC- en JD-VCC-pinnen met elkaar verbindt. Als dit het geval is, verwijdert u deze.
Met alles uitgeschakeld, sluit je het relaisbord als volgt aan op je Pi:
- Pi Pin 2 (5v) naar de JD-VCC op het relaisbord.
- Pi Pin 6 (GND) to GND op het relaisbord.
- Pi Pin 15 (GPIO 22) tot IN1 op het relaisbord
- Pi Pin 17 (3.3v) naar VCC op het relaisbord.
Stap 2: Sluit de helderheidssensor aan
De TSL2561 is een lichtsensor die infrarood, volledig spectrum en zichtbaar menselijk licht kan detecteren. Het kan een zeer nauwkeurige digitale lezing naar de Raspberry Pi verzenden. De sensor meldt het lichtniveau op een schaal van 0, 1 (geen licht) tot 40.000 (felle zon).
Het TSL2561-bord praat met de Raspberry Pi via het i2c-protocol. I2C heeft slechts twee verbindingen nodig, een voor een klok om de twee apparaten gesynchroniseerd te houden en een voor de gegevens die worden overgedragen. Natuurlijk heeft de lux-sensor ook wat vermogen nodig, dus er zijn vier verbindingen om helemaal te maken:
- Sluit Pi Pin 1 (3.3v) aan op Vin (of VCC) op de luxsensor
- Sluit Pi Pin 3 (SDA) aan op SDA op de luxsensor
- Verbind Pi Pin 5 (SCL) met SCL op de luxsensor
- Verbind Pi Pin 9 (GND) met GND op de luxsensor
Stap 3: Configureer en installeer afhankelijkheden
Voordat je verder gaat, moet je controleren of I2C is ingeschakeld op je Raspberry Pi (standaard uitgeschakeld). Typ het volgende in de terminal:
sudo raspi-config
Selecteer Interface-opties> P5 I2C en kies vervolgens Ja .
Druk op Enter en selecteer Voltooien om het configuratiescherm te verlaten. Start je Pi opnieuw op om de wijziging door te voeren:
sudo reboot
Sommige afhankelijkheden zijn nodig om de Pi te laten communiceren met de sensorkaart. Typ de volgende opdrachten:
sudo apt-get update sudo apt-get install -y python-smbus sudo apt-get install -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 reactie als deze:
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 hebt ook een paar bibliotheken nodig. Maak eerst een map om alles met betrekking tot dit project te bewaren in:
mkdir ~/lighting cd ~/lighting
Download vervolgens de fles, een lichtgewicht raamwerk dat een eenvoudige webserver op uw Pi maakt. Je gebruikt het om je lampen vanaf internet te bedienen.
wget https://bottlepy.org/bottle.py
De andere bibliotheken die je nodig hebt, staan op Github, dus als Git nog niet op Git is geïnstalleerd, voeg je deze nu toe:
sudo apt-get install git
Kloon nu twee bibliotheken, zoals deze:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
En tot slot, maak een testscript door een nieuw bestand te maken:
nano test.py
Plak 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) print(tsl.lux())
Druk op Ctrl + X om op te slaan en volg de instructies op het scherm om af te sluiten.
Als u klaar bent, voert u het testscript uit:
python test.py
Als alles is geïnstalleerd en werkt, krijg je een nummer terug. Dat nummer is een luxwaarde van de sensor. Probeer de sensor te blokkeren of te verplaatsen zodat deze meer of minder licht krijgt. Voer vervolgens het testscript opnieuw uit en kijk hoe het nummer verandert.
Stap 4: Maak de automatiseringsscripts
De Raspberry Pi schakelt het licht in als het donker wordt, maar schakelt ze ook op bepaalde tijden uit. U wilt bijvoorbeeld dat uw lichten aangaan als het 's avonds donker wordt en dan rond middernacht uitgaan om elektriciteit te besparen. Ze kunnen vroeg in de ochtend weer aankomen en zichzelf uitschakelen als het licht wordt.
Om een schema met meerdere timingzones zoals deze te beheren, zijn er twee verschillende scripts. Eén ( onzone.py ) draait elke minuut op de momenten dat u wilt dat uw lichten aan zijn als het donker is. De andere ( offzone.py ) zal elke minuut draaien op momenten dat u wilt dat de lichten uit zijn, ongeacht het lichtniveau.
De scripts worden gepland om te worden uitgevoerd met behulp van 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 zijn. Elke Linux-gebruiker kan profiteren van planningssystemen en gebruikerstaken, dankzij cron, een eenvoudig te gebruiken achtergrondservice. Lees verder . Door te kiezen welke uren van de dag en nacht elk script wordt uitgevoerd, kunt u eenvoudig de uren instellen waarop uw lichten automatisch kunnen aangaan. U kunt zoveel aan en uit periodes instellen als u wilt.
Naast scripts voor het automatisch regelen van de lichten, is er een derde script om override-situaties te beheren. Hiermee kunt u de lichten op afstand inschakelen, ongeacht het omgevingslichtniveau.
Script 1: De ON Zone
Dit Python-script wordt elke minuut van de dag uitgevoerd wanneer u wilt dat de lichten aangaan als het donker is. Download het script door deze opdracht te kopiëren en in de terminal te plakken:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Elke keer dat onzone.py wordt uitgevoerd, krijgt het een luxwaarde van de sensor om te zien of het donker is. Als dit het geval is, wordt er gecontroleerd of de lichten aan of uit zijn. Als ze zijn uitgeschakeld, worden ze ingeschakeld. Als het niet donker is, zal het script zien of de lichten aan zijn. Als ze dat zijn, worden ze uitgeschakeld, tenzij ze worden opgeheven.
Het script gebruikt een variabele met de naam lowlux om te beslissen op welk punt het donker genoeg is om de lichten in te schakelen. Je kunt het wijzigen in iets dat geschikt is voor je eigen installatie door de waarde in deze regel aan de bovenkant van onzone.py te wijzigen:
lowlux = 50
Script 2: De UIT-zone
Dit script wordt elke minuut van de dag uitgevoerd als u wilt dat de lichten uit blijven, tenzij ze zijn overschreven. 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. Het is gewoon zijn taak om de lichten uit te schakelen als ze aan zijn (tenzij ze zijn opgeheven).
Script 3: de vervangende server
Dit script maakt een eenvoudige webservice die opdrachten kan accepteren om de volgende acties uit te voeren:
- Schakel de lichten een aantal minuten in, ongeacht het omgevingslichtniveau.
- Schakel de lichten uit.
- Ontdek of de lichten momenteel aan of uit zijn.
- Ontdek hoe lang de lichten blijven branden als ze zijn opgeheven.
Download het script:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Voer voordat u doorgaat naar de volgende stap 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
Je 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 standaard pi was, wijzigt u het pad dienovereenkomstig.
Maak een lijst van alle uren waarop u de lichten wilt laten branden wanneer het donker is in de eerste regel. Alle uren waarop je de lichten uit wilt gaan op de tweede regel.
Stel nu het vervangingsscript 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 &
Start ten slotte de Raspberry Pi opnieuw op, zodat u kunt controleren of het serverscript wordt geladen zoals het hoort
sudo reboot
Stap 6: Test het relais
Voordat u uw lichten aansluit, test u of alles werkt door de opheffingsfunctie te gebruiken. Typ het volgende in een webbrowser op hetzelfde netwerk als uw Pi, waarbij u het IP-adres vervangt door het adres van uw eigen Raspberry Pi:
11.22.33.44:1234/overrideon/3
Als alles goed is, hoort u de relaisklik en reageert de browser dat de lichten drie minuten lang zijn ingeschakeld.
Terwijl het relais gesloten is, kunt u de andere overridefuncties testen. Dit zal u vertellen voor hoeveel minuten het licht aan blijft 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
Ten slotte kunt u ze weer uitschakelen met:
11.22.33.44:1234/overrideoff
Het relais klikt wanneer het wordt geopend.
Stap 7: Verbind uw lichten
Schakel uw Raspberry Pi uit en koppel deze los voordat u uw lichten op het relais aansluit. Gebruik de normaal open (NO) connectoren op de relaiskaart in plaats van een normale schakelaar, zoals deze:
Ten slotte kunt u uw lux-sensor installeren op een plaats waar deze het omgevingslichtniveau vastlegt. Merk op dat de TSL2561 zal rapporteren als verzadigd als het direct fel zonlicht tegenkomt, dus het is het beste om het indien mogelijk in de schaduw te houden.
Meer Raspberry Pi-projecten om uit te proberen
Het op afstand overschrijven van uw nieuwe slimme verlichtingsconfiguratie door opdrachten in een webbrowser te typen is vrij omslachtig. Een betere manier is om zoiets als een Amazon Echo aan te sluiten om dingen gemakkelijker te maken. Het combineren 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 op weg te helpen.
Een andere optie is om Siri Shortcuts te gebruiken. Een enkele snelkoppeling met menu's kan de status van de lichten opvragen en de opheffingsfuncties gebruiken om ze in en uit te schakelen.
Als je dit project leuk vond, bekijk dan deze rare Raspberry Pi-projecten 10 Raarste Raspberry Pi-projecten 10 Raarste Raspberry Pi-projecten Er is een gekke wetenschapper in ons allemaal, en de Raspberry Pi laat je innerlijke loon 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.