Πίνακας περιεχομένων:
- Βήμα 1: Αρχική ρύθμιση
- Βήμα 2: Ρύθμιση του Ngrok
- Βήμα 3: Python Script for Light Switch Control
- Βήμα 4: Python Script για Fan Control
- Βήμα 5: Εγκατάσταση και διαμόρφωση του πακέτου LIRC
- Βήμα 6: Python Script for TV Control
- Βήμα 7: Συνδεθείτε στο λογαριασμό AWS
- Βήμα 8: Ρύθμιση δεξιοτήτων TV Alexa
- Βήμα 9: Lights Alexa Skill Setup
- Βήμα 10: Ρύθμιση δεξιοτήτων Fan Alexa
- Βήμα 11: Φτιάξτε το Ciruit
- Βήμα 12: Εντολές Alexa
Βίντεο: Σαλόνι ελέγχου με Alexa και Raspberry Pi: 12 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:31
Ελέγξτε την τηλεόραση, τα φώτα και τον ανεμιστήρα του σαλονιού σας με την Alexa (Amazon Echo ή Dot) και το Raspberry Pi GPIO.
Βήμα 1: Αρχική ρύθμιση
Χρησιμοποίησα ένα Raspberry Pi 2 και μια Raspbian Jessie εικόνα που κατεβάσατε από τη διεύθυνση
Μόλις συνδεθείτε, εισαγάγετε τις ακόλουθες εντολές για να εγκαταστήσετε τα απαιτούμενα πακέτα και βιβλιοθήκες python:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc
Βήμα 2: Ρύθμιση του Ngrok
Επισκεφτείτε τη διεύθυνση https://ngrok.com/download και λάβετε την πιο πρόσφατη έκδοση Linux ARM ως zip και αποσυμπιέστε μέσα στον αρχικό κατάλογο:
αποσυμπιέστε /home/pi/ngrok-stable-linux-arm.zip
Ανοίξτε ένα νέο τερματικό και εισαγάγετε την ακόλουθη εντολή:
sudo./ngrok http 4000
Ανοίξτε ένα άλλο νέο τερματικό και εισαγάγετε την ακόλουθη εντολή:
sudo./ngrok http 4500
Ανοίξτε το τρίτο νέο τερματικό και εισαγάγετε την ακόλουθη εντολή:
sudo./ngrok http 5000
Βήμα 3: Python Script for Light Switch Control
Ανοίξτε μια νέα περίοδο λειτουργίας τερματικού και δημιουργήστε ένα νέο αρχείο python με όνομα light_control.py:
nano light_control.py
Αντιγράψτε/επικολλήστε τον ακόλουθο κώδικα στο νέο αρχείο:
από την εισαγωγή φιάλης Φιάλη από την εισαγωγή flask_ask Ζητήστε, δήλωση, convert_errors εισαγωγή RPi. GPIO ως εισαγωγή καταγραφής εισαγωγής GPIO GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27 εκτός Εξαίρεση ως e: δήλωση επιστροφής ('Ο αριθμός καρφιτσών δεν είναι έγκυρος.') GPIO.setup (pinNum, GPIO. OUT) εάν η κατάσταση είναι σε ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) εάν η κατάσταση είναι σε ['off', ' low ']: GPIO.output (pinNum, GPIO. HIGH) statement return (' Turning {} the Living Room Lights'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', θύρα = θύρα)
Αποθηκεύστε και κλείστε το αρχείο.
Εκκινήστε το διακομιστή φιάλης με:
sudo python light_control.py
Αφήστε το ngrok και το light_control.py σε λειτουργία
Βήμα 4: Python Script για Fan Control
Ανοίξτε μια νέα περίοδο λειτουργίας τερματικού και δημιουργήστε ένα νέο αρχείο python με όνομα fan_control.py:
nano fan_control.py
Αντιγράψτε/επικολλήστε τον ακόλουθο κώδικα στο νέο αρχείο:
από φιάλη εισαγωγής Φιάλη
από flask_ask import Ρωτήστε, δήλωση, convert_errors εισαγωγή RPi. GPIO ως GPIO εισαγωγή καταγραφής εισαγωγής os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 εκτός από την εξαίρεση ως e: statement statement ('Pin number δεν είναι έγκυρο. ') GPIO.setup (pinNum, GPIO. OUT) εάν η κατάσταση στα [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) εάν η κατάσταση σε [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) statement return ('Turning {} the Living Room Lights'.format (status)) if _name_ ==' _main_ ': port = 4500 app.run (host =' 0.0.0.0 ', port = port)
Αποθηκεύστε και κλείστε το αρχείο.
Εκκινήστε το διακομιστή φιάλης με:
sudo python fan_control.py
Αφήστε να λειτουργούν τόσο το ngrok, το light_control.py και το fan_control.py
Βήμα 5: Εγκατάσταση και διαμόρφωση του πακέτου LIRC
Για να ελέγξετε την τηλεόραση, πρέπει να διαμορφώσετε μια καρφίτσα στο Raspberry Pi ώστε να παράγει σήματα υπέρυθρων (IR) για τη συγκεκριμένη τηλεόρασή σας. Ανοίξτε το τερματικό και εισαγάγετε την ακόλουθη εντολή για να εγκαταστήσετε ένα πακέτο LIRC που προσομοιώνει τα υπέρυθρα σήματα πολλών τηλεχειριστηρίων.
sudo apt-get install lirc
Στη συνέχεια, πρέπει να ενεργοποιήσετε και να διαμορφώσετε τη μονάδα πυρήνα lirc_rpi. Για να το κάνετε αυτό, ανοίξτε ενότητες στον επεξεργαστή Nano
sudo nano /etc /modules
Προσθέστε τις παρακάτω γραμμές στο αρχείο (Βεβαιωθείτε ότι η παράμετρος gpio_out_pin δείχνει στην ακίδα που ελέγχει το LED LED):
lirc_devlirc_rpi gpio_out_pin = 17
Στη συνέχεια, ανοίξτε το αρχείο hardware.conf στο Nano όπως πριν με το sudo:
sudo nano /etc/lirc/hardware.conf
Προσθέστε την ακόλουθη διαμόρφωση στο αρχείο:
LIRCD_ARGS = "-uinput" LOAD_MODULES = true
ΟΔΗΓΟΣ = "προεπιλογή"
ΣΥΣΚΕΥΗ = "/dev/lirc0"
MODULES = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
Τώρα, επανεκκινήστε το Raspberry Pi:
sudo επανεκκίνηση
Βήμα 6: Python Script for TV Control
Ανοίξτε μια νέα περίοδο λειτουργίας τερματικού και δημιουργήστε ένα νέο αρχείο python με όνομα ir_control.py:
nano ir_control.py
Μεταβείτε στη διεύθυνση
Βρείτε ένα τηλεχειριστήριο που είναι συμβατό με την τηλεόρασή σας. Στην περίπτωσή μου, έχω μια τηλεόραση Sanyo που λειτουργεί με το αρχείο ρυθμίσεων sanyo-tv01. Μόλις βρείτε ένα αρχείο που υποστηρίζει την τηλεόρασή σας, ανοίξτε το και αναζητήστε τις επιλογές εντολών.
Αντιγράψτε/επικολλήστε τον ακόλουθο κώδικα στο νέο αρχείο και αντικαταστήστε το sanyo-tv01 με το όνομα αρχείου που λειτουργεί με την τηλεόρασή σας. Επίσης, βεβαιωθείτε ότι οι εντολές τηλεόρασης υποστηρίζονται από το αρχείο διαμόρφωσης των τηλεοράσεών σας. Σως χρειαστεί να τροποποιήσετε τις εντολές KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN και KEY_MUTE για να λειτουργήσει σωστά με το αρχείο ρυθμίσεων της τηλεόρασής σας:
από την εισαγωγή φιάλης Φιάλη από την εισαγωγή flask_ask Ζητήστε, δήλωση, convert_errors εισαγωγή RPi. GPIO ως εισαγωγή καταγραφής εισαγωγής GPIO GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): if status in ['turn on']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") statement return ('Turning the TV') elif status in ['turn off']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") δήλωση επιστροφής (" Απενεργοποίηση της τηλεόρασης ") elif κατάσταση στο ['αλλαγή εισαγωγής']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return δήλωση ('Αλλαγή εισόδου στην τηλεόραση') elif κατάσταση στο ['αύξηση έντασης']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") δήλωση επιστροφής ('Αύξηση έντασης στην τηλεόραση') elif κατάσταση σε ['μείωση έντασης']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMED os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWY" ") δήλωση επιστροφής (" Μείωση έντασης στην τηλεόραση ") elif κατάσταση στο ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") statement return ('Muting the TV') elif status in ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") statement return (' Unmuting the TV ') else: statement return (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (host = '0.0.0.0', port = port)
Αποθηκεύστε και κλείστε το αρχείο.
Εκκινήστε το διακομιστή φιάλης με:
sudo python ir_control.py
Αφήστε να λειτουργούν και τα τρία τερματικά παράθυρα ngrok, light_control.py, fan_control.py και ir_control.py
Βήμα 7: Συνδεθείτε στο λογαριασμό AWS
Πρώτα δημιουργήστε ή συνδεθείτε στον λογαριασμό προγραμματιστή σας AWS και ανοίξτε τη λίστα με τις δεξιότητες Alexa.
Βήμα 8: Ρύθμιση δεξιοτήτων TV Alexa
Επιλέξτε "Προσθήκη νέας δεξιότητας".
Ορίστε το Skill Name σε 'Trigger TV' και το Invocation Name στις λέξεις που θέλετε να χρησιμοποιήσετε για να ενεργοποιήσετε την ικανότητα.
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε.
Αντιγράψτε/επικολλήστε τα παρακάτω στο πλαίσιο "Σχέδιο πρόθεσης":
"slots": [{"name": "status", "type": "TV_Function"}, {"name": "ποσό", "type": "AMAZON. NUMBER"}], "πρόθεση": "GPIOControlIntent "}]}
Στη συνέχεια, κάντε κλικ στην επιλογή "Προσθήκη τύπου υποδοχής"
Πληκτρολογήστε TV_Function στο πεδίο "Enter Type".
Εισαγάγετε τις ακόλουθες τιμές στο πεδίο "Εισαγωγή τιμών":
ανάβω
απενεργοποίηση αλλαγής εισόδου αύξηση έντασης μείωση έντασης σίγαση σίγαση
Στη συνέχεια, αντιγράψτε/επικολλήστε τα ακόλουθα στο πλαίσιο "Sample Utterances":
GPIOControlIntent {status}
GPIOControlIntent {status} κατά {ποσό}
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε.
Επιλέξτε "HTTPS" ως Τύπος τελικού σημείου υπηρεσίας και επιλέξτε μια περιοχή. Εισαγάγετε τη διεύθυνση URL θερμότητας από το βήμα 2 και κάντε κλικ στο "Επόμενο". Η διεύθυνση URL πρέπει να είναι κάτι σαν:
ed6ea04d.ngrok.io
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε και πατήστε «Αποθήκευση».
Βήμα 9: Lights Alexa Skill Setup
Κλείστε την ανοιχτή δεξιότητα και επιλέξτε "Προσθήκη νέας δεξιότητας".
Ορίστε το όνομα δεξιοτήτων σε "Έλεγχος φώτων" και το όνομα επίκλησης στις λέξεις (ες) που θέλετε να χρησιμοποιήσετε για να ενεργοποιήσετε την ικανότητα.
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε. Αντιγράψτε/επικολλήστε τα παρακάτω στο πλαίσιο "Σχέδιο πρόθεσης":
{
"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "πρόθεση": "LightsControlIntent"}]}
Στη συνέχεια, κάντε κλικ στην επιλογή "Προσθήκη τύπου υποδοχής".
Εισαγάγετε "LIGHTS_CONTROL" στο πεδίο "Enter Type".
Εισαγάγετε τις ακόλουθες τιμές στο πεδίο "Εισαγωγή τιμών":
επί
μακριά από
Στη συνέχεια, αντιγράψτε/επικολλήστε τα ακόλουθα στο πλαίσιο "Sample Utterances":
LightsControlIntent στροφή {status}
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε. Επιλέξτε "HTTPS" ως Τύπος τελικού σημείου υπηρεσίας και επιλέξτε μια περιοχή. Εισαγάγετε τη διεύθυνση URL του ngrok από το βήμα 2 και κάντε κλικ στο «Επόμενο». Η διεύθυνση URL πρέπει να είναι κάτι σαν:
ed6ea04d.ngrok.io
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε και πατήστε «Αποθήκευση».
Βήμα 10: Ρύθμιση δεξιοτήτων Fan Alexa
Κλείστε την ανοιχτή δεξιότητα και επιλέξτε "Προσθήκη νέας δεξιότητας".
Ορίστε το Όνομα δεξιοτήτων σε 'Έλεγχος θαυμαστών' και το Όνομα πρόσκλησης στις λέξεις (ες) που θέλετε να χρησιμοποιήσετε για να ενεργοποιήσετε την ικανότητα.
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε.
Αντιγράψτε/επικολλήστε τα παρακάτω στο πλαίσιο "Σχέδιο πρόθεσης":
{
"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "πρόθεση": "FANControlIntent"}]}
Στη συνέχεια, κάντε κλικ στην επιλογή "Προσθήκη τύπου υποδοχής".
Εισαγάγετε "FAN_CONTROL" στο πεδίο "Enter Type".
Εισαγάγετε τις ακόλουθες τιμές στο πεδίο "Εισαγωγή τιμών":
επί
μακριά από
Στη συνέχεια, αντιγράψτε/επικολλήστε τα ακόλουθα στο πλαίσιο "Sample Utterances":
FANControlIntent στροφή {status}
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε. Επιλέξτε «HTTPS» ως Τύπος τελικού σημείου υπηρεσίας και επιλέξτε μια περιοχή. Εισαγάγετε τη διεύθυνση URL του ngrok από το βήμα 2 και κάντε κλικ στο «Επόμενο». Η διεύθυνση URL πρέπει να είναι κάτι σαν:
ed6ea04d.ngrok.io
Κάντε κλικ στο «Επόμενο» για να συνεχίσετε και πατήστε «Αποθήκευση».
Βήμα 11: Φτιάξτε το Ciruit
Συνδέστε το κύκλωμα όπως φαίνεται στο διάγραμμα. Χρησιμοποίησα ένα JBtek 8 Channel DC 5V Relay Module για να συνδεθώ στη γραμμή και τη γείωση AC 120v του σπιτιού μου.
Βήμα 12: Εντολές Alexa
Τώρα μπορείτε να μιλήσετε στην Alexa τις ακόλουθες εντολές για να ελέγξετε το σαλόνι σας.
Συνιστάται:
Σύστημα παρακολούθησης και ελέγχου εσωτερικού κλίματος Raspberry Pi: 6 βήματα
Σύστημα παρακολούθησης και ελέγχου εσωτερικού κλίματος Raspberry Pi: Οι άνθρωποι θέλουν να είναι άνετα μέσα στο σπίτι τους. Καθώς το κλίμα στην περιοχή μας μπορεί να μην ταιριάζει στον εαυτό μας, χρησιμοποιούμε πολλές συσκευές για να διατηρήσουμε ένα υγιές εσωτερικό περιβάλλον: θερμαντήρας, ψύκτης αέρα, υγραντήρας, αφυγραντήρας, καθαριστής κλπ. Σήμερα, είναι κοινόχρηστο
Σαλόνι για ταινία με Shelly: 4 βήματα
Living Room for Movie With Shelly: Project Executive summary Πώς να δημιουργήσετε έναν πολύ απλό αυτοματισμό χρησιμοποιώντας τις ρουτίνες του Google στο σπίτι για να κάνετε το σαλόνι του δωματίου μου άνετο για να παρακολουθείτε μια ταινία
Σαλόνι Captain Lee De Martian: 6 βήματα
Captain Lee De Martian's Parlor: Captain Lee is unil out free li droits pour créer des jeux vidéos à offer de donjonsListe des matériauxFeuillesFeutrescrayons Liste des outils OrdinateursScannersSite internet: Captainlee.org
ΕΝΑΛΛΑΚΤΙΚΟ ΕΛΕΓΧΟΥ ΣΗΜΑΤΟΣ ΓΕΝΝΗΤΡΙΑΣ ΕΛΕΓΧΟΥ ΓΙΑ ΕΛΕΓΧΟ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΧΥΤΗΤΑΣ (ESC): 7 Βήματα
ΕΝΑΛΛΑΚΤΙΚΟ ΕΛΕΓΧΟΥ ΕΓΧΕΙΡΙΔΙΟΥ ΣΗΜΑΤΟΣ ΓΕΝΙΚΟΥ ΓΙΑ ΤΗΝ ΗΛΕΚΤΡΟΝΙΚΗ ΤΑΧΥΤΗΤΑ (ESC): Πριν από λίγο καιρό δημοσίευσα ένα βίντεο (https://www.youtube.com/watch?v=-4sblF1GY1E) στο κανάλι μου στο YouTube όπου έδειξα πώς να φτιάχνω ανεμογεννήτρια από κινητήρα DC χωρίς ψήκτρες. Έκανα το βίντεο στα Ισπανικά και εξηγούσε ότι αυτός ο κινητήρας είχε δοθεί σε
ΦΩΤΙΣΤΙΚΟ ΦΩΤΙΣΜΟΥ LED ΣΤΟ ΣΑΛΟΝΙ ΜΟΥ !!!: 6 βήματα
ΛΑΜΠΑ LED ΦΩΤΙΣΜΟΥ ΣΤΟ ΣΑΛΟΝΙ ΜΟΥ !!!: Λαμπτήρας 18 LED για " επιπλέον " φωτεινότητα