Πώς να οικοδομήσουμε έναν έξυπνο διακόπτη αισθητήρα φωτός με το Raspberry Pi και το IFTTT
Διαφήμιση
Οι διακόπτες και οι διακόπτες χρονοδιακόπτη είναι χρήσιμοι τρόποι για να αυτοματοποιήσετε τα φώτα σας. Δεν θα ήταν υπέροχο αν μπορούσατε να συνδυάσετε τα δύο, ή ακόμα και να τα συνδέσετε στο διαδίκτυο για ένα πραγματικά έξυπνο σύστημα φωτισμού;
Ένα Raspberry Pi, ένα ρελέ, ένας αισθητήρας φωτός και μια παύλα κώδικα είναι όλα όσα χρειάζεστε για να επιτύχετε αυτό το αυτόματο φωτισμό nirvana σε ένα shoestring.
Τι χρειάζεστε
Τα στοιχεία για τον έξυπνο διακόπτη ανίχνευσης φωτός είναι εύκολο να παραχθούν. Θα χρειαστείς:
- Οποιοδήποτε μοντέλο Raspberry Pi τρέχει Raspbian.
- Ένα ρελέ σκάφους, που βρίσκεται εύκολα στο Amazon.
- Ένας αισθητήρας φωτεινότητας του Adafruit TSL2561.
- Συρμάτινα καλώδια.
- Μερικά φώτα για αυτοματοποίηση!
Πώς λειτουργεί ένας έξυπνος διακόπτης αισθητήρα φωτός
Χρησιμοποιώντας ένα ρελέ με τον ίδιο τρόπο όπως το πρόγραμμα αυτόματου ανοίγματος πόρτας γκαράζ Πώς να αυτοματοποιήσετε την πόρτα του γκαράζ σας με το IFTTT και το Raspberry Pi Πώς να αυτοματοποιήσετε την πόρτα του γκαράζ σας με το IFTTT και το Raspberry Pi Σε αυτό το σεμινάριο θα σας δείξουμε πώς να αυτοματοποιήσετε πόρτα γκαράζ δεν χρησιμοποιεί τίποτα περισσότερο από ένα Raspberry Pi και IFTTT. Διαβάστε περισσότερα, μπορείτε να προγραμματίσετε ένα Raspberry Pi για να ενεργοποιήσετε και να απενεργοποιήσετε ένα κύκλωμα φωτισμού σε καθορισμένους χρόνους. Η προσθήκη ενός αισθητήρα φωτεινότητας στο μείγμα σημαίνει ότι το Pi μπορεί να ανιχνεύσει το επίπεδο φωτισμού περιβάλλοντος και να επιλέξει να ανάψει τα φώτα μόνο όταν είναι πραγματικά αναγκαία.
Επειδή ένας Pi είναι ένας μικροσκοπικός υπολογιστής που μπορεί να συνδεθεί σε ένα δίκτυο, μπορείτε να τον ρυθμίσετε ώστε να ελέγχεται μέσω του διαδικτύου. Τα έξυπνα φώτα σας θα έχουν τρεις εισόδους για να καθορίσουν πότε θα έρθουν:
- Ένα προγραμματισμένο πρόγραμμα.
- Το επίπεδο φωτισμού περιβάλλοντος.
- Ένα σήμα παράκαμψης που αποστέλλεται μέσω του δικτύου.
Βήμα 1: Συνδέστε το Raspberry Pi στο ρελέ
Εάν είστε νέοι στη χρήση του GPIO, ξεκινήστε διαβάζοντας όλα όσα πρέπει να ξέρετε για Raspberry Pi GPIO Pins.
Πρώτον, ελέγξτε αν η πλακέτα ρελέ σας έχει έναν βραχυκυκλωτήρα που συνδέει τους ακροδέκτες VCC και JD-VCC μαζί. Εάν έχει, αφαιρέστε το.
Με τα πάντα ενεργοποιημένα, συνδέστε την πλακέτα ρελέ στο Pi σας ως εξής:
- Pi Pin 2 (5v) στο JD-VCC στην πλακέτα ρελέ.
- Pin Pin 6 (GND) στο GND στην πλακέτα ρελέ.
- Pin Pin 15 (GPIO 22) στο IN1 στην πλακέτα ρελέ
- Pin Pin 17 (3.3v) στο VCC στην πλακέτα ρελέ.
Βήμα 2: Συνδέστε τον αισθητήρα φωτεινότητας
Ο TSL2561 είναι ένας αισθητήρας φωτός που μπορεί να ανιχνεύσει υπέρυθρο, πλήρες φάσμα και ανθρώπινο ορατό φως. Μπορεί να στείλει μια πολύ ακριβή ψηφιακή ανάγνωση στο Raspberry Pi. Ο αισθητήρας αναφέρει το επίπεδο φωτισμού σε κλίμακα 0, 1 (χωρίς φωτισμό) έως 40, 000 (έντονος ήλιος).
Ο πίνακας TSL2561 μιλάει στο Raspberry Pi χρησιμοποιώντας το πρωτόκολλο i2c. Το I2C χρειάζεται μόνο δύο συνδέσεις, μία για ένα ρολόι για να κρατήσει τις δύο συσκευές σε συγχρονισμό και μία για τα δεδομένα που μεταφέρονται. Φυσικά, ο αισθητήρας lux χρειάζεται επίσης κάποια ισχύ, οπότε υπάρχουν τέσσερις συνδέσεις για να φτιάξετε:
- Συνδέστε την Pin Pin 1 (3.3v) σε Vin (ή VCC) στον αισθητήρα lux
- Συνδέστε την Pin Pin 3 (SDA) στο SDA στον αισθητήρα lux
- Συνδέστε τον Pin Pin 5 (SCL) στο SCL στον αισθητήρα lux
- Συνδέστε την Pin Pin 9 (GND) στο GND στον αισθητήρα lux
Βήμα 3: Διαμόρφωση και Εγκατάσταση εξαρτήσεων
Προτού προχωρήσετε περαιτέρω, θα πρέπει να ελέγξετε ότι το I2C είναι ενεργοποιημένο στο Raspberry Pi (είναι απενεργοποιημένο από προεπιλογή). Πληκτρολογήστε τα εξής στο τερματικό:
sudo raspi-config
Επιλέξτε Επιλογές διασύνδεσης> P5 I2C, στη συνέχεια επιλέξτε Ναι .
Πατήστε Enter και στη συνέχεια επιλέξτε Τέλος για να βγείτε από την οθόνη config. Επανεκκινήστε το Pi για να τεθεί σε ισχύ η αλλαγή:
sudo reboot
Ορισμένες εξαρτήσεις είναι απαραίτητες ώστε το Pi να μπορεί να επικοινωνήσει με την πλακέτα αισθητήρων. Πληκτρολογήστε τις ακόλουθες εντολές:
sudo apt-get update sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools
Μπορείτε να ελέγξετε ότι όλα λειτουργούν πληκτρολογώντας:
sudo i2cdetect -y 1
Εάν οι εξαρτήσεις σας είναι εγκατεστημένες και ο αισθητήρας lux είναι συνδεδεμένος σωστά, θα δείτε μια απάντηση όπως αυτή:
Εδώ το βοηθητικό πρόγραμμα αναφέρει ότι έχει βρει μια συσκευή I2C (τον αισθητήρα lux) στη διεύθυνση 39 του I2C.
Δεν είστε ακόμα τελειωμένος με τις εξαρτήσεις ακόμα. Θα χρειαστείτε και μερικές βιβλιοθήκες. Πρώτα, δημιουργήστε ένα φάκελο για να διατηρήσετε όλα τα σχετικά με αυτό το έργο:
mkdir ~/lighting cd ~/lighting
Στη συνέχεια, κατεβάστε το μπουκάλι, ένα ελαφρύ πλαίσιο που θα δημιουργήσει ένα απλό web server στο Pi σας. Θα το χρησιμοποιήσετε για τον έλεγχο των φώτων σας από τον ιστό.
wget https://bottlepy.org/bottle.py
Οι άλλες βιβλιοθήκες που χρειάζεστε είναι στο Github, οπότε αν το Raspberry Pi σας δεν έχει ήδη εγκαταστήσει το Git, προσθέστε το τώρα:
sudo apt-get install git
Τώρα κλωνοποιήστε δύο βιβλιοθήκες, όπως αυτό:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
Τέλος, δημιουργήστε ένα σενάριο δοκιμής δημιουργώντας ένα νέο αρχείο:
nano test.py
Επικολλήστε τον κώδικα (με την προσφορά του 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())
Πατήστε Ctrl + X για αποθήκευση, ακολουθώντας τις οδηγίες στην οθόνη για έξοδο.
Όταν τελειώσετε, εκτελέστε το σενάριο δοκιμής:
python test.py
Εάν όλα είναι εγκατεστημένα και λειτουργούν, θα πάρετε πίσω έναν αριθμό. Αυτός ο αριθμός είναι μια ένδειξη lux από τον αισθητήρα. Δοκιμάστε να μπλοκάρετε τον αισθητήρα ή να το μετακινήσετε, ώστε να πάρει περισσότερο ή λιγότερο φως. Στη συνέχεια, εκτελέστε ξανά το σενάριο δοκιμής και δείτε πώς αλλάζει ο αριθμός.
Βήμα 4: Δημιουργήστε τα Scripts αυτοματοποίησης
Το Raspberry Pi θα ανάψει τα φώτα όταν σκοτεινιάσει, αλλά και να τα απενεργοποιήσει σε συγκεκριμένες ώρες. Για παράδειγμα, μπορεί να θέλετε να ανάβουν τα φώτα όταν σκοτεινιάζει το βράδυ, μετά να πάει γύρω από τα μεσάνυχτα για εξοικονόμηση ηλεκτρικής ενέργειας. Θα μπορούσαν να ξαναγίνουν νωρίς το πρωί, και στη συνέχεια να σβήνουν όταν φως.
Για να διαχειριστείτε ένα χρονοδιάγραμμα με πολλαπλές ζώνες χρονισμού όπως αυτό, υπάρχουν δύο διαφορετικά σενάρια. Ένα ( onzone.py ) θα εκτελείται κάθε λεπτό κατά τη διάρκεια που θέλετε οι φωτεινές ενδείξεις να είναι ενεργοποιημένες εάν είναι σκοτεινό. Το άλλο ( offzone.py ) θα εκτελείται κάθε λεπτό κατά τη διάρκεια που θέλετε να σβήνουν τα φώτα ανεξάρτητα από το επίπεδο φωτισμού.
Τα σενάρια θα προγραμματιστούν να τρέχουν χρησιμοποιώντας τις εργασίες cron Πώς να προγραμματίσετε τις εργασίες στο Linux με Cron και Crontab Πώς να προγραμματίσετε τις εργασίες στο Linux με Cron και Crontab Η δυνατότητα αυτοματοποίησης εργασιών είναι μία από αυτές τις φουτουριστικές τεχνολογίες που είναι ήδη εδώ. Κάθε χρήστης του Linux μπορεί να επωφεληθεί από τον προγραμματισμό των εργασιών του συστήματος και των χρηστών, χάρη στην cron, μια εύχρηστη υπηρεσία φόντου. Διαβάστε περισσότερα . Επιλέγοντας ποιες ώρες της ημέρας και της νύχτας κάθε σενάριο τρέχει, θα είναι εύκολο να ορίσετε τις ώρες που τα φώτα σας μπορούν να ενεργοποιηθούν αυτόματα. Μπορείτε να ρυθμίσετε όσες φορές θέλετε και πότε θέλετε.
Εκτός από τις δέσμες ενεργειών για τον αυτόματο έλεγχο των φώτων, υπάρχει ένα τρίτο σενάριο για τη διαχείριση καταστάσεων κατάχρησης. Αυτό θα σας επιτρέψει να ανάψετε τα φώτα μακριά, ανεξάρτητα από το επίπεδο φωτισμού περιβάλλοντος.
Σενάριο 1: Η ζώνη ON
Αυτό το σενάριο Python θα εκτελείται κάθε λεπτό της ημέρας που θέλετε να ανάβουν τα φώτα αν είναι σκοτεινό. Κάντε λήψη του σεναρίου αντιγράφοντας και επικολλώντας αυτή την εντολή στο τερματικό:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Κάθε φορά που τρέχει onzone.py, θα πάρει μια αξία lux από τον αισθητήρα για να δει αν είναι σκοτεινή. Αν είναι, τότε θα ελέγξει εάν τα φωτάκια είναι ενεργοποιημένα ή απενεργοποιημένα. Εάν είναι απενεργοποιημένα, θα τα ενεργοποιήσει. Αν δεν είναι σκοτεινό, το σενάριο θα διαπιστώσει εάν οι φωτεινές ενδείξεις είναι αναμμένες. Αν είναι, θα τα απενεργοποιήσει αν δεν έχουν αντικατασταθεί.
Το σενάριο χρησιμοποιεί μια μεταβλητή που ονομάζεται lowlux για να αποφασίσει σε ποιο σημείο είναι αρκετά σκοτεινό για να ανάψει τα φώτα. Μπορείτε να το αλλάξετε σε κάτι κατάλληλο για τη δική σας εγκατάσταση, αλλάζοντας την τιμή σε αυτή τη γραμμή κοντά στην κορυφή του onzone.py:
lowlux = 50
Σενάριο 2: Η ζώνη OFF
Αυτό το σενάριο θα τρέξει κάθε λεπτό της ημέρας που θέλετε τα φώτα να σταματήσουν, εκτός και αν έχουν αντικατασταθεί. Κατεβάστε το σενάριο:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
Αυτό το σενάριο δεν ενδιαφέρει πόσο ελαφρύ ή σκοτεινό είναι. Η δουλειά του είναι απλώς να σβήσει τα φώτα αν είναι ενεργοποιημένα (εκτός αν έχουν αντικατασταθεί).
Σενάριο 3: Ο διακομιστής παράκαμψης
Αυτή η δέσμη ενεργειών δημιουργεί μια απλή υπηρεσία ιστού που μπορεί να δεχτεί εντολές για να κάνει τις ακόλουθες ενέργειες:
- Ανάβετε τα φώτα για αρκετά λεπτά ανεξάρτητα από το επίπεδο φωτισμού περιβάλλοντος.
- Απενεργοποιήστε τα φώτα.
- Μάθετε εάν οι φωτεινές ενδείξεις είναι ενεργοποιημένες ή απενεργοποιημένες.
- Μάθετε πόση ώρα πρέπει να παραμένουν τα φώτα όταν έχουν παραμεληθεί.
Κατεβάστε το σενάριο:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Πριν προχωρήσετε στο επόμενο βήμα, εκτελέστε το σενάριο offzone.py έτσι:
python offzone.py
Αυτό θα δημιουργήσει τα αρχεία ελέγχου που χρησιμοποιούν τα σενάρια για να παρακολουθούν τα πάντα.
Βήμα 5: Προγραμματίστε τα σενάρια
Το Raspberry Pi σας μπορεί να εκτελέσει τα σενάρια αυτοματισμού με το cron. Ρυθμίστε το πρόγραμμα ως εξής:
sudo crontab -e
Επικολλήστε αυτές τις δύο γραμμές στον επεξεργαστή κειμένου:
* 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
Σημείωση: Εάν το όνομα χρήστη που καταγράψατε στο Raspberry Pi σας δεν ήταν το προεπιλεγμένο pi, αλλάξτε τη διαδρομή ανάλογα.
Καταγράψτε όλες τις ώρες στις οποίες θέλετε να ανάβουν τα φώτα όταν είναι σκοτεινό στην πρώτη γραμμή. Όλες οι ώρες στις οποίες θέλετε να σβήσουν οι λυχνίες είναι στη δεύτερη γραμμή.
Τώρα ορίστε το script override να εκτελείται αυτόματα όταν ξεκινάει το Pi:
sudo nano /etc/rc.local
Επικολλήστε αυτή τη γραμμή στο κάτω μέρος του αρχείου, κατόπιν αποθηκεύστε και κλείστε:
nohup python /home/pi/lighting/lightserver.py &
Τέλος, επανεκκινήστε το Raspberry Pi έτσι ώστε να μπορείτε να ελέγξετε ότι το σενάριο διακομιστή φορτώνεται όπως πρέπει
sudo reboot
Βήμα 6: Ελέγξτε το ρελέ
Πριν συνδέσετε τα φώτα σας, ελέγξτε ότι όλα λειτουργούν χρησιμοποιώντας τη λειτουργία αντικατάστασης. Πληκτρολογήστε τα εξής σε ένα πρόγραμμα περιήγησης ιστού στο ίδιο δίκτυο με το Pi, αντικαθιστώντας τη διεύθυνση IP με τη διεύθυνση του δικού σας Raspberry Pi:
11.22.33.44:1234/overrideon/3
Εάν όλα είναι καλά, θα ακούσετε το κλικ του ρελέ και το πρόγραμμα περιήγησης θα απαντήσει ότι τα φώτα έχουν ενεργοποιηθεί για τρία λεπτά.
Ενώ το ρελέ είναι κλειστό, μπορείτε να δοκιμάσετε τις άλλες λειτουργίες αντικατάστασης. Αυτό θα σας πει για πόσα λεπτά θα παραμείνουν τα φώτα λόγω της υπέρβασης:
11.22.33.44:1234/getoverrideremaining
Αυτό θα πρέπει να σας ενημερώσει ότι τα φώτα είναι αναμμένα:
11.22.33.44:1234/lightstatus
Τέλος, μπορείτε να τα απενεργοποιήσετε ξανά με:
11.22.33.44:1234/overrideoff
Το ρελέ θα κάνει κλικ καθώς ανοίγει.
Βήμα 7: Συνδέστε τα φώτα σας
Απενεργοποιήστε και αποσυνδέστε το Raspberry Pi πριν συνδέσετε τα φώτα σας στο ρελέ. Χρησιμοποιήστε τους κανονικά ανοικτούς συνδέσμους (NO) στην πλακέτα ρελέ αντί για έναν κανονικό διακόπτη, όπως παρακάτω:
Τέλος, μπορείτε να εγκαταστήσετε τον αισθητήρα lux σε ένα σημείο όπου θα καταγράψει το επίπεδο φωτισμού περιβάλλοντος. Σημειώστε ότι το TSL2561 θα αναφέρεται ως κορεσμένο εάν συναντά άμεσο λαμπερό ηλιακό φως, οπότε είναι καλύτερο να το κρατάτε στη σκιά, αν είναι δυνατόν.
Περισσότερα έργα Raspberry Pi για να δοκιμάσετε
Η εξουδετέρωση της νέας σας έξυπνης εγκατάστασης φωτισμού από την εξειδικευμένη πληκτρολόγηση εντολών σε ένα πρόγραμμα περιήγησης ιστού είναι αρκετά δυσκίνητη. Ένας καλύτερος τρόπος είναι να συνδέσετε κάτι σαν μια Amazon Echo για να κάνετε τα πράγματα ευκολότερα. Ο συνδυασμός της υπηρεσίας Alexa και της υπηρεσίας Webhooks στο IFTTT είναι ένας απλός τρόπος για να προσθέσετε φωνητικό έλεγχο.
Δείτε τον οδηγό μας για τη χρήση του IFTTT για να ξεκινήσετε.
Μια άλλη επιλογή είναι να χρησιμοποιήσετε τις εντολές Siri Shortcuts. Μια απλή συντόμευση με μενού μπορεί να διερευνήσει την κατάσταση των φώτων και να χρησιμοποιήσει τις λειτουργίες αντικατάστασης για να τις ενεργοποιήσει ή να απενεργοποιήσει.
Αν σας άρεσε αυτό το έργο, βεβαιωθείτε ότι έχετε δει αυτά τα περίεργα σχέδια Raspberry Pi 10 πιο περίεργο Raspberry Pi Projects 10 Το πιο περίεργο Raspberry Pi Έργα Υπάρχει ένας τρελός επιστήμονας μέσα σε κάθε έναν από εμάς, και το Raspberry Pi σας αφήνει το εσωτερικό στέλεχος να βγει και να παίξει. Μερικές φορές, τα πράγματα γίνονται παράξενα. Πραγματικά περίεργο. Διαβάστε περισσότερα για περισσότερες ιδέες.
Εξερευνήστε περισσότερα σχετικά με: IFTTT, Raspberry Pi, Smart Lighting.