- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Εγκατάσταση MQTT Cloud Libraries στο Raspberry Pi
- Επεξήγηση κωδικοποίησης για τον έλεγχο του Raspberry Pi GPIO με MQTT
Σε προηγούμενο σεμινάριο έχουμε συζητήσει για το MQTT Protocol και εγκαταστήσαμε τον τοπικό διακομιστή MQTT στο Raspberry Pi για τον έλεγχο του GPIO τοπικά. Αλλά το μειονέκτημα του τοπικού διακομιστή MQTT είναι ότι δεν μπορούμε να ελέγξουμε τα GPIO από οπουδήποτε στον κόσμο, παρέχει μόνο υπηρεσίες τοπικά. Αλλά αν αυτός ο διακομιστής MQTT φιλοξενείται σε κάποιο cloud, τότε όλες οι συσκευές που είναι συνδεδεμένες στο Raspberry Pi μπορούν να ελεγχθούν παγκοσμίως.
Εδώ, σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το Adafruit IO ως μεσίτη MQTT για τον έλεγχο μιας συσκευής AC που είναι συνδεδεμένη στο Raspberry Pi GPIO. Ελέγξτε επίσης άλλα μαθήματα οικιακού αυτοματισμού που ελέγχονται από το IoT:
- Οικιακός αυτοματισμός που βασίζεται σε IOT με χρήση ESP8266 και Android App
- Έλεγχος έξυπνου τηλεφώνου οικιακού αυτοματισμού με χρήση του Arduino
- Οικιακός αυτοματισμός ελεγχόμενος μέσω διαδικτύου με χρήση ΙΟΤ χρησιμοποιώντας PIC Microcontroller και Adafruit IO
- Αυτοματισμός οικιακού ελέγχου με βάση το IoT χρησιμοποιώντας Raspberry Pi
- Οικιακός αυτοματισμός με φωνητικό έλεγχο με βάση τον Βοηθό Google χρησιμοποιώντας το DIY Arduino Wi-Fi Shield
Απαιτούμενα στοιχεία
- Raspberry Pi με Raspbian Stretch εγκατεστημένο σε αυτό.
- Μονάδα ρελέ
- Βολβός
- Καλώδια αλτών
Εδώ, θα χρησιμοποιήσουμε το SSH για πρόσβαση στο Raspberry Pi στον φορητό υπολογιστή. Μπορείτε να χρησιμοποιήσετε σύνδεση VNC ή απομακρυσμένης επιφάνειας εργασίας στον φορητό υπολογιστή ή να συνδέσετε το Raspberry pi με οθόνη. Μάθετε περισσότερα σχετικά με τη ρύθμιση του Raspberry Pi χωρίς ακρόαση εδώ χωρίς οθόνη.
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για αυτές τις ελεγχόμενες οικιακές συσκευές IoT με cloud MQTT και Raspberry Pi είναι απλό, απλώς συνδέστε έναν λαμπτήρα με μονάδα ρελέ στον ακροδέκτη GPIO 35 του raspberry Pi.
Εγκατάσταση MQTT Cloud Libraries στο Raspberry Pi
Εδώ η πλατφόρμα Adafruit IO χρησιμοποιείται με το Raspberry Pi ως μεσίτη MQTT. Δεδομένου ότι έχουμε χρησιμοποιήσει την πλατφόρμα Adafruit IO πολλές φορές στα προηγούμενα μαθήματά μας, ομοίως μπορούμε να το χρησιμοποιήσουμε στο Raspberry Pi.
Απλώς δημιουργήστε έναν λογαριασμό στην πλατφόρμα Adafruit IO και δημιουργήστε μια ροή, εάν δεν ξέρετε πώς να κάνετε τροφοδοσία και να προσαρμόσετε τον πίνακα ελέγχου Adafruit, ακολουθήστε τον σύνδεσμο.
Αφού δημιουργήσετε το ταμπλό, εγκαταστήστε λίγες βιβλιοθήκες στο Raspberry Pi για να ξεκινήσετε με το MQTT.
1. Πρώτα, ενημερώστε το Pi και το Python εκδίδοντας τις ακόλουθες εντολές
sudo apt-get update sudo apt-get upgrade sudo pip3 install - αναβάθμιση setuptools
2. Τώρα, εγκαταστήστε τις βιβλιοθήκες αναλαμπής Rpi.gpio και Adafruit χρησιμοποιώντας τις παρακάτω εντολές
sudo pip3 εγκατάσταση RPI.GPIO sudo pip3 εγκατάσταση adafruit-blinka
3. Εγκαταστήστε τη βιβλιοθήκη Adafruit IO χρησιμοποιώντας την παρακάτω εντολή
sudo pip3 εγκατάσταση adafruit-io
4. Κλωνοποιήστε τα παραδείγματα adafruit από το github χρησιμοποιώντας την παρακάτω εντολή
git clone https://github.com/adafruit/Adafruit_IO_Python.git
5. Στη συνέχεια, μεταβείτε στο φάκελο παραδειγμάτων εισάγοντας την ακόλουθη εντολή στο τερματικό:
cd Adafruit_IO_Python / παραδείγματα / βασικά
Εάν δεν είστε βέβαιοι σε ποιον κατάλογο βρίσκεστε, μπορείτε να το ελέγξετε εκτελώντας το pwd.
6. Για όλα τα παραδείγματα σε αυτόν τον φάκελο, θα πρέπει να ορίσετε τα ADAFRUIT_IO_KEY και ADAFRUIT_IO_USERNAME, τα οποία μπορείτε να βρείτε από τον πίνακα ελέγχου Adafruit. Οπως φαίνεται παρακάτω
Εναλλαγή του κουμπιού στον πίνακα ελέγχου Adafruit IO και θα πρέπει να δείτε τα παρακάτω στο τερματικό του Pi σας.
7. Τώρα, ανοίξτε το αρχείο subscribe.py χρησιμοποιώντας το πρόγραμμα επεξεργασίας nano . Πληκτρολογήστε την ακόλουθη εντολή για να την ανοίξετε
sudo nano subscribe.py
Πρέπει να τροποποιήσουμε αυτό το πρόγραμμα για να ελέγξουμε οποιοδήποτε GPIO από το ταμπλό.
Επεξήγηση κωδικοποίησης για τον έλεγχο του Raspberry Pi GPIO με MQTT
Αρχικά, εισαγάγετε όλες τις απαιτούμενες βιβλιοθήκες για να χρησιμοποιήσετε καρφίτσες GPIO και Adafruit MQTT client
εισαγωγή RPi.GPIO ως GPIO εισαγωγή sys από Adafruit_IO εισαγωγή MQTTClient
Τώρα, ορίστε τη λειτουργία GPIO και ορίστε τον αριθμό pin LED και ορίστε ως έξοδο.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Στη συνέχεια, πρέπει να ορίσουμε το κλειδί AIO και το όνομα χρήστη που έχουμε βρει κατά τη δημιουργία του πίνακα ελέγχου.
ADAFRUIT_IO_KEY = "YOUR_AIO_KEY" ADAFRUIT_IO_USERNAME = "YOUR_AIO_USERNAME"
Εισαγάγετε το όνομα ροής που έχετε δώσει για να ανάψετε και να σβήσετε το φως. Εδώ, είναι «φως».
FEED_ID = "φως"
Τώρα, ορίστε μια συνάρτηση που θα κληθεί όταν θα συμβεί ένα συμβάν. Έτσι, θα εγγράψουμε τη ροή χρησιμοποιώντας το client.subscribe (FEED_ID)
def connect (client): client.subscribe (FEED_ID) print ('Αναμονή δεδομένων ροής…')
Μετά την εγγραφή της ροής, πρέπει να ελέγξουμε τη νέα τιμή και να την αποθηκεύσουμε σε μεταβλητή ωφέλιμου φορτίου . Γι 'αυτό καλείται η λειτουργία μηνύματος. Έτσι, όποτε υπάρχει "1" στη μεταβλητή ωφέλιμου φορτίου, κάντε τον ακροδέκτη LED υψηλό και για το "0" κάντε το χαμηλό.
def message (client, feed_id, payload): print ('Feed {0} έλαβε νέα τιμή: {1}'. format (feed_id, payload)) εάν payload == 1: GPIO.output (ledPin, GPIO.HIGH) άλλο: GPIO.output (ledPin, GPIO.LOW)
Τώρα, δημιουργήστε έναν πελάτη MQTT για να συνδεθείτε με την πλατφόρμα Adafruit IO και να στείλετε τα μηνύματα από και πίσω.
client = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = συνδεδεμένος client.on_disconnect = αποσυνδεδεμένος
Επίσης, προσέξτε τη σωστή εσοχή στον κώδικα αλλιώς θα εμφανίσει σφάλμα. Ο πλήρης κώδικας python δίνεται στο τέλος του σεμιναρίου.
Τέλος, αποθηκεύστε το πρόγραμμα χρησιμοποιώντας το ctrl + x και πατήστε το enter. Τώρα, πρέπει να εκτελέσουμε το σενάριο για να εγγραφούμε στα μηνύματα. Έτσι, στο τερματικό πληκτρολογήστε python subscribe.py και πατήστε το enter.
python subscribe.py
Θα δείτε ένα μήνυμα Αναμονή δεδομένων ροής … όπως φαίνεται παρακάτω.
Τώρα, βεβαιωθείτε ότι η μονάδα ρελέ είναι συνδεδεμένη με τον ακροδέκτη GPIO του Raspberry Pi και, στη συνέχεια, μεταβείτε στον πίνακα εργαλείων Adafruit IO και αλλάξτε τη φωτεινή τροφοδοσία. Ο λαμπτήρας πρέπει να ανάβει όταν λαμβάνεται το "1" και να σβήνει όταν λαμβάνεται το "0" όπως φαίνεται παρακάτω.
Με αυτόν τον τρόπο μπορούμε να ελέγξουμε οποιαδήποτε συσκευή από οπουδήποτε στον κόσμο, χρησιμοποιώντας το Raspberry Pi και το MQTT cloud