Δημιουργήστε ένα κουδούνι Wi-Fi με ένα Raspberry Pi Pico W
Ακολουθεί ένα απλό αλλά πρακτικό σεμινάριο που θα σας βοηθήσει να καταλάβετε πώς μπορείτε να ενεργοποιήσετε την αποστολή ενός email (ή την εμφάνιση μιας ειδοποίησης στο τηλέφωνό σας) όταν πατηθεί ένα κουμπί που είναι συνδεδεμένο στο Raspberry Pi Pico W. Έτσι, μπορείτε να χρησιμοποιήσετε το Pico W σας ως κουδούνι Wi-Fi!
Μέσω αυτού του έργου, θα μάθετε πώς να κάνετε αιτήσεις HTTP για να συνδεθείτε στα τελικά σημεία του IFTTT.
Βίντεο
Απαιτούμενα ανταλλακτικά
Raspberry Pi Pico W με επικεφαλίδες
Συναρμολόγηση του Raspberry Pi
Για να συνδέσετε το Raspberry Pi Pico W με το κουμπί:
- Συνδέστε τη μία πλευρά του κουμπιού σε ένα GPIO14
- Συνδέστε την άλλη πλευρά ενός κουμπιού σε μια ακίδα 3,3V
Σημειώστε ότι υπάρχουν κουμπιά με τέσσερις ακίδες και κουμπιά με δύο ακίδες.
Εάν έχετε ένα κουμπί με τέσσερα ακροδέκτες, μπορείτε να συνδέσετε τα καλώδια βραχυκυκλώματος διαγώνια για να διασφαλίσετε ότι βρίσκονται στις αντίθετες πλευρές.
Εάν έχετε ακίδα με δύο ακίδες, τότε απλώς συνδέστε τις αντίθετες ακίδες.
Ρύθμιση του IFTTT για την αποστολή ενός email
IFTTT σημαίνει ΕΆΝ Tτου, TΌρνιθα Tκαπέλο.
Αντί να γράφετε τον δικό σας κώδικα, θα χρησιμοποιήσουμε το IFTTT για να κάνουμε τα πάντα πιο εύκολα.
Κάντε κλικ εδώ για να μεταβείτε στο IFTTT.com και εγγραφείτε για λογαριασμό.
Μόλις εγγραφείτε, κάντε κλικ στο "Create" (Δημιουργία).
Στο τμήμα "Εάν αυτό", κάντε κλικ στο "Προσθήκη" για να δημιουργήσετε ένα συμβάν. Αυτό ορίζει τις συνθήκες που απαιτούνται για την ενεργοποίηση του μέρους "Then That", δηλαδή την αποστολή μιας ειδοποίησης.
Στην ακόλουθη οθόνη, "Choose a service", πληκτρολογήστε "Webhooks" και κάντε κλικ σε αυτήν.
Στη συνέχεια, κάντε κλικ στην επιλογή "Λήψη αιτήματος web".
Πληκτρολογήστε το όνομα της εκδήλωσης pico_w_request και μετακινηθείτε προς τα κάτω και επιλέξτε "Create Trigger".
Θα επιστρέψετε στην οθόνη "Αν αυτό, τότε εκείνο". Ήρθε η ώρα να ρυθμίσετε το μέρος "Then That", οπότε κάντε κλικ σε αυτό.
Αναζητήστε το Gmail και κάντε κλικ σε αυτό. Στη συνέχεια κάντε κλικ στο "Στείλτε στον εαυτό σας ένα email"
Επιλέξτε το email σας.
Στη συνέχεια, πληκτρολογήστε ένα θέμα. Εμείς γράψαμε "Κάποιος χτύπησε το κουδούνι!"
Στο σώμα, αντιγράψαμε λίγο πολύ το μήνυμα του θέματος, εκτός από το ότι, βάλαμε μέσα
{{OccurredAt}} για να δείξετε τι ώρα ενεργοποιήθηκε αυτό.
Κάντε κλικ "Δημιουργία δράσης". Στην επόμενη οθόνη, κάντε κλικ στο "Continue" (Συνέχεια).
Στη συνέχεια, πληκτρολογήστε ένα όνομα για το Applet. Εμείς χρησιμοποιήσαμε το "Pico W to Gmail".
Ωραία! Ήρθε η ώρα να κάνετε κλικ στο "Finish".
Ρύθμιση του IFTTT για την αποστολή ειδοποίησης στην εφαρμογή τηλεφώνου
Μπορείτε επίσης να βάλετε το IFTTT να στέλνει μια ειδοποίηση στην εφαρμογή κάθε φορά που κάποιος χτυπάει το κουδούνι.
Η διαδικασία είναι πολύ παρόμοια με τη διαδικασία ειδοποίησης μέσω ηλεκτρονικού ταχυδρομείου.
Για το τμήμα "Εάν αυτό", επιλέξτε "Webhooks" ως υπηρεσία και επιλέξτε "Λήψη αιτήματος web". Πληκτρολογήστε ένα όνομα για το συμβάν. Εμείς χρησιμοποιήσαμε το "door_bell_rang".
Όσον αφορά το μέρος "Τότε Αυτό", εδώ είναι που διαφέρει.
Αντ' αυτού θα επιλέξετε μια υπηρεσία "Ειδοποιήσεις" και στη συνέχεια "Αποστολή ειδοποίησης από την εφαρμογή IFTTT".
Όταν συμπληρωθούν και τα δύο "Αν αυτό" και "Τότε αυτό", κάντε κλικ στο "Συνέχεια". Πληκτρολογήστε έναν τίτλο applet και κάντε κλικ στο κουμπί Finish.
Εύρεση των διαπιστευτηρίων IFTTT
Τώρα που έχετε ρυθμίσει το applet If-Then, μπορείτε να προχωρήσετε στην εύρεση των διαπιστευτηρίων σας ώστε το Pico W να μπορεί να συνδεθεί στο IFTTT.
Για να γίνει αυτό:
- Κάντε κλικ στην εικόνα του προφίλ σας πάνω δεξιά
- Κάντε κλικ στο "Οι υπηρεσίες μου"
- Κάντε κλικ στο Webhooks
- Κάντε κλικ στο κουμπί Τεκμηρίωση.
Θα δείτε ορισμένες πληροφορίες σε αυτή τη σελίδα, συμπεριλαμβανομένου του μυστικού κλειδιού σας.
Σύνδεση του Raspberry Pi Pico W στο IFTTT
Όλα ο κώδικάς μας είναι τώρα στο Github repo μας, το οποίο μπορείτε να βρείτε εδώ.
Κατεβάστε τον κώδικα και αποσυμπιέστε τον. Αντιγράψτε τον κώδικα στο Raspberry Pi Pico W.
Θα χρειαστεί να τροποποιήσετε secrets.py.
Αντικαταστήστε το ssid με το SSID του δικτύου σας WiFi, και στη συνέχεια βάλτε τον κωδικό πρόσβασης στο pw πεδίο.
Χρησιμοποιήστε το κλειδί που πήρατε από την προηγούμενη ενότητα και επικολλήστε το στο πεδίο ifttt_key's value.
Κωδικός κουδουνιού πόρτας
Ο κωδικός του κουδουνιού βασίζεται στα προηγούμενα σεμινάρια. Εν ολίγοις, ο κώδικας έχει ως εξής:
- Εισάγει τα απαραίτητα πακέτα
- Ρυθμίζει το WiFi και συνδέεται στο δίκτυο
Εδώ είναι ο ειδικός κωδικός για το κουδούνι:
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
last_state = False
current_state = False
while True:
current_state = door_bell.value()
if last_state == False and current_state == True:
# Make a GET request to trigger webhook on IFTTT
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
request = requests.get(ifttt_url)
print(request.content)
request.close()
time.sleep(2)
last_state = current_state
Αν θυμάστε, συνδέσαμε το κουμπί στο GPIO14. Ως εκ τούτου, θέλουμε να δημιουργήσουμε ένα αντικείμενο που να διαβάζει την τιμή αυτού του GPIO.
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
Θέλουμε το IFTTT να στείλει μια ειδοποίηση μόνο αν η κατάσταση αλλάξει από Ψευδές στο Αλήθεια. Θέλουμε επίσης να αποφύγουμε την αποστολή πολλαπλών ειδοποιήσεων από το IFTTT αν το κουμπί έχει πατηθεί μία φορά.
Ως εκ τούτου, αυτές οι διασφαλίσεις:
last_state = False
current_state = False
while True:
current_state = door_bell.value()
if last_state == False and current_state == True:
# Make a GET request to trigger webhook on IFTTT
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
request = requests.get(ifttt_url)
print(request.content)
request.close()
time.sleep(2)
last_state = current_state
Το πρόβλημα εδώ είναι ότι όταν πατάτε το κουμπί, μπορεί να το κρατήσετε για λίγο χωρίς να το καταλάβετε. Μπορεί να σας φαίνεται σαν ένα πάτημα, αλλά για το Pico W μπορεί να είναι πέντε. Έτσι, θέλουμε να αποφύγουμε να λάβουμε πέντε ειδοποιήσεις.
Εδώ είναι που η last_state και current_state μεταβλητές.
Όταν πατάτε το κουμπί, current_state γίνεται Αλήθεια.
Αυτό ενεργοποιεί τον κώδικα που συνδέεται με το IFTTT.
Μόλις γίνει αυτό, υπάρχει μια παύση δύο δευτερολέπτων χάρη στην time.sleep(2).
Τότε, last_state γίνεται Αλήθεια επειδή παίρνει την τιμή current_state.
Συνεπώς, αυτό εμποδίζει κάθε περαιτέρω καταγεγραμμένο πάτημα να προκαλέσει περισσότερες ειδοποιήσεις, καθώς και οι δύο μεταβλητές είναι πλέον Αλήθεια, εξαιτίας αυτής της γραμμής:
if last_state == False and current_state == True:
Μόλις περάσουν οι επιπλέον πιέσεις, last_state επιστρέφει σε False και επομένως είναι έτοιμη να λάβει ένα Αλήθεια για να ενεργοποιήσετε ξανά τη σύνδεση με το IFTTT.
Επιλέξτε τη μέθοδο ειδοποίησης
Τώρα, εδώ είναι που επιλέγετε το μονοπάτι σας.
Εάν έχετε δημιουργήσει μια ειδοποίηση αποστολής email, μπορείτε να αποσυμβολίσετε αυτή τη γραμμή:
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
Αυτό προϋποθέτει ότι έχετε ονομάσει το συμβάν σας "pico_w_request". Αλλιώς, αλλάξτε αυτό το μέρος της διεύθυνσης URL με το όνομα που του δώσατε.
Αν θέλετε μια ειδοποίηση εφαρμογής, τότε θα πρέπει να χρησιμοποιήσετε την επόμενη γραμμή:
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
Πού θα πάτε από εδώ και πέρα;
Με αυτό το απλό έργο, μπορείτε να πάτε μακριά.
Ένα κουμπί μπορεί να χρησιμοποιηθεί για την ενεργοποίηση πολλών πραγμάτων μόλις εξοικειωθείτε με την αλληλεπίδραση με API.
Για παράδειγμα, μπορείτε να προγραμματίσετε το κουμπί ώστε να χτυπάει το API του Spotify για να σταματήσετε τη μουσική σας ή να παραλείψετε ένα κομμάτι.
Θέλετε να ενημερώνεστε για τα νέα και άλλα έργα Pico; Κάντε κλικ εδώ:
Πώς θα ρυθμίζατε αυτό το κουδούνι Pico Wi-Fi ώστε να ταιριάζει στις ανάγκες σας;
Χαιρετισμούς
Ήθελα να δοκιμάσω μερικά από τα έργα RPI Pico W, δηλαδή το IFTT send mail και το έργο webpage. Συνάντησα πρόβλημα, όταν έτρεξα το παράδειγμα IFTT, το πρόγραμμα micropython έψαχνε για μια ενότητα 'sockets'. Δεν μπόρεσα να βρω ένα sockets module για να μπορέσει το πρόγραμμα να λειτουργήσει σωστά. Μπορείτε να με συμβουλέψετε σχετικά με τη σωστή αντιμετώπιση του προβλήματος;
[...] 参考にしたサイト:Raspberry Pi Pico W Wi-Fi Doorbell tutorial (HTTP requests & IFTTT) [...]
[...] Ειδικότερα, αυτό το έργο δεν διαφέρει και πολύ από το Pico W Doorbell Tutorial που μοιραστήκαμε τον Ιούλιο του περασμένου έτους. [...]
[...] Θέλετε να κάνετε το σπίτι σας πιο έξυπνο; Ένα Raspberry Pi μπορεί να χρησιμεύσει τόσο ως κεντρική όσο και ως περιφερειακή συσκευή στην αυτοματοποίηση των πάντων. Για παράδειγμα, μπορείτε να το μετατρέψετε σε κάμερα παρακολούθησης ή σύστημα ασφαλείας, μπορείτε να το χρησιμοποιήσετε ως φωνητικό βοηθό, μπορείτε να δημιουργήσετε έναν έξυπνο καθρέφτη με αυτό ή μπορείτε να το χρησιμοποιήσετε για έξυπνο φωτισμό. Θα μπορούσατε ακόμη να το χρησιμοποιήσετε για το πότισμα των φυτών, την παρακολούθηση των πουλιών στην αυλή σας ή για ένα έξυπνο κουδούνι! [...]