Πίνακας περιεχομένων:

Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi: 7 βήματα (με εικόνες)
Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi: 7 βήματα (με εικόνες)

Βίντεο: Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi: 7 βήματα (με εικόνες)

Βίντεο: Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi: 7 βήματα (με εικόνες)
Βίντεο: 3000+ Common English Words with British Pronunciation 2024, Ιούλιος
Anonim
Image
Image
Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi
Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi
Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi
Σύστημα ασφαλείας αναγνώρισης προσώπου για ψυγείο με Raspberry Pi

Περιηγούμενοι στο διαδίκτυο ανακάλυψα ότι οι τιμές των συστημάτων ασφαλείας κυμαίνονται από 150 $ έως 600 $ και άνω, αλλά δεν μπορούν όλες οι λύσεις (ακόμη και οι πολύ ακριβές) να ενσωματωθούν με άλλα έξυπνα εργαλεία στο σπίτι σας! Για παράδειγμα, δεν μπορείτε να ρυθμίσετε μια κάμερα ασφαλείας στην μπροστινή πόρτα σας, ώστε να ανοίγει αυτόματα την πόρτα για εσάς ή τους φίλους σας!

Αποφάσισα να κάνω μια απλή, φθηνή και ισχυρή λύση, που μπορείτε να χρησιμοποιήσετε οπουδήποτε! Υπάρχουν πολλά εγχειρίδια για τον τρόπο δημιουργίας φθηνών και σπιτικών συστημάτων ασφαλείας, ωστόσο θέλω να δείξω πραγματικά μη ασήμαντη εφαρμογή αυτών - σύστημα ασφαλείας για ψυγείο με αναγνώριση προσώπου!

Πώς λειτουργεί; Η κάμερα IP τοποθετημένη στο πάνω μέρος του ψυγείου, οι αισθητήρες (δύο κουμπιά) εντοπίζουν πότε ένα άτομο ανοίγει την πόρτα του ψυγείου, μετά από αυτό το Raspberry Pi βγάζει μια φωτογραφία αυτού του ατόμου (με κάμερα IP) και στη συνέχεια την στέλνει στο Microsoft Face API να αναλύσει την εικόνα και να λάβει το όνομα του ατόμου. Με αυτές τις πληροφορίες το Raspberry Pi σαρώνει τη "λίστα πρόσβασης": εάν το άτομο δεν έχει άδεια πρόσβασης στο ψυγείο, το Raspberry ειδοποιεί τον ιδιοκτήτη μέσω email, μηνύματος κειμένου και twitter! (Δείτε τις εικόνες παραπάνω)

Γιατί; Το σύστημα σάς επιτρέπει να ελέγχετε τα μέλη της οικογένειάς σας, ειδικά όταν βρίσκονται σε δίαιτα ή αγωνίζονται να μην φάνε μετά τα μεσάνυχτα! Or χρησιμοποιήστε το μόνο για διασκέδαση!

Επιπλέον, μπορείτε πραγματικά να ρυθμίσετε την κάμερα στην μπροστινή σας πόρτα και να διαμορφώσετε το σύστημα για να ανοίγει την πόρτα όταν πλησιάζετε εσείς, τα μέλη της οικογένειάς σας ή οι φίλοι σας. Και αυτό δεν είναι το τέλος! Οι δυνατότητες της εφαρμογής είναι άπειρες!

Ας ξεκινήσουμε!

Βήμα 1: Προετοιμασία

Παρασκευή
Παρασκευή

Θα χρειαστείτε:

  • Raspberry Pi 3 (μπορείτε να χρησιμοποιήσετε παλαιότερες εκδόσεις, αλλά η τρίτη γενιά διαθέτει Wi-Fi, οπότε είναι πολύ βολικό)
  • Κουμπιά
  • Καλώδια
  • Παλιά κάμερα Smartphone ή Raspberry Pi

Το πρώτο πράγμα που πρέπει να κάνετε είναι να διαμορφώσετε το Raspberry Pi. Λεπτομερείς οδηγίες για το πώς μπορείτε να το βρείτε εδώ και εδώ, αλλά θα καλύψουμε τα πιο σημαντικά βήματα σε αυτό το εγχειρίδιο.

  1. Λήψη του Win32 DiskImager από εδώ (εάν χρησιμοποιείτε Windows)
  2. Κατεβάστε το Format SD από εδώ
  3. Τοποθετήστε την κάρτα SD στον υπολογιστή σας και μορφοποιήστε την με Μορφοποιητή SD
  4. Κατεβάστε την εικόνα Raspbian από εδώ (Επιλέξτε "Raspbian Jessie with pixel")
  5. Εκτελέστε το Win32 DiskImager, επιλέξτε την κάρτα SD σας, καθορίστε τη διαδρομή προς την εικόνα Raspbian, κάντε κλικ στο "Γράψτε"
  6. Εισάγετε κάρτα SD στο Raspberry Pi και ενεργοποιήστε την τροφοδοσία!

Επιπλέον, θα πρέπει να διαμορφώσετε το Raspberry Pi για να έχετε πρόσβαση στο σύστημα μέσω SSH. Υπάρχουν πολλές οδηγίες στο Διαδίκτυο, μπορείτε να το χρησιμοποιήσετε, για παράδειγμα, ή μπορείτε να επισυνάψετε οθόνη και πληκτρολόγιο.

Τώρα το Pi σας έχει διαμορφωθεί και είστε έτοιμοι να προχωρήσετε!

Βήμα 2: Δημιουργία αισθητήρα

Κάνοντας έναν αισθητήρα
Κάνοντας έναν αισθητήρα
Κάνοντας έναν αισθητήρα
Κάνοντας έναν αισθητήρα
Κάνοντας έναν αισθητήρα
Κάνοντας έναν αισθητήρα

Βήμα Περιγραφή: Σε αυτό το βήμα θα φτιάξουμε έναν αισθητήρα που ανιχνεύει πότε το άτομο ανοίγει την πόρτα ενός ψυγείου και ενεργοποιεί το Raspberry Pi.

Για να το ρυθμίσετε θα χρειαστείτε τα 2 κουμπιά που έχετε προετοιμάσει αρχικά. Το πρώτο κουμπί θα ανιχνεύεται όταν ανοίγει η πόρτα, το δεύτερο κουμπί θα ανιχνεύεται όταν ανοίγει η πόρτα στο σημείο όταν τραβάμε μια φωτογραφία ενός ατόμου.

  1. Συγκόλληση καλωδίων σε κουμπιά.
  2. Συνδέστε το πρώτο κουμπί στην πόρτα του ψυγείου έτσι ώστε να πιέζεται όταν η πόρτα είναι κλειστή (δείτε την εικόνα παραπάνω)
  3. Συνδέστε το δεύτερο κουμπί στην πόρτα του ψυγείου όπως φαίνεται στην παραπάνω φωτογραφία. Αυτό το κουμπί πρέπει να απελευθερώνεται ανά πάσα στιγμή, εκτός εάν η πόρτα φτάσει στο σημείο όταν το σύστημα τραβάει μια φωτογραφία. Για να το ρυθμίσετε πρέπει να συνδέσετε κάτι στο ψυγείο σας έτσι ώστε να πατηθεί αυτό το κουμπί όταν ανοίξει η πόρτα στον επιθυμητό βαθμό (δείτε τις φωτογραφίες παραπάνω).
  4. Συνδέστε καλώδια από τα κουμπιά στο Raspberry Pi: πρώτο κουμπί στο GPIO 23 και γείωση, δεύτερο κουμπί στο GPIO 24 και γείωση (Δείτε το διάγραμμα ψεκασμού).

Σημείωση: Χρησιμοποιώ BCM pinout (όχι Board), περισσότερα για τη διαφορά διαβάστε εδώ.

Μόλις συνδεθείτε στο Raspberry Pi μέσω SSH, για να εκτελέσετε το κέλυφος python, πληκτρολογήστε το τερματικό:

python3

Εάν συνδέετε οθόνη και πληκτρολόγιο στο Raspberry Pi, απλώς εκτελέστε το "Python 3 IDLE" από το μενού.

Το επόμενο βήμα είναι να κάνετε το Raspberry Pi να λειτουργεί με τα κουμπιά. Θα προσαρτήσουμε ειδικούς ακροατές στις καρφίτσες GPIO 23 και 24, οι οποίες θα ακούν για το συμβάν "ανερχόμενη άκρη" και ένα συμβάν "πτώσης άκρου" σε αυτές τις καρφίτσες. Σε περίπτωση εκδήλωσης, οι ακροατές θα καλέσουν τις λειτουργίες που έχουμε ορίσει. "Αύξηση άκρου" σημαίνει ότι το κουμπί πιέστηκε και τώρα απελευθερώθηκε (το πρώτο κουμπί - ανοίγει η πόρτα), "πέφτει η άκρη" σημαίνει ότι το κουμπί απελευθερώθηκε και τώρα πιέστηκε (το δεύτερο κουμπί - η πόρτα έχει φτάσει σε συγκεκριμένο σημείο). Περισσότερα για τη λειτουργικότητα των κουμπιών - εδώ.

Αρχικά, εισαγάγετε βιβλιοθήκη που μας δίνει πρόσβαση στις καρφίτσες:

εισαγωγή RPi. GPIO ως GPIO

Τώρα ορίστε ειδικές συναρτήσεις που θα καλούνται όταν ενεργοποιηθεί το συμβάν:

def sensor1 (κανάλι): εκτύπωση ("ενεργοποιήθηκε ο αισθητήρας 1") def sensor2 (κανάλι): εκτύπωση ("ενεργοποιήθηκε ο αισθητήρας 2)

Ορισμός τύπου pinout:

GPIO.setmode (GPIO. BCM)

Διαμόρφωση καρφιτσών:

GPIO.setup (23, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (24, GPIO. IN, pull_up_down = GPIO. PUD_UP)

Επισυνάψτε τους ακροατές:

GPIO.add_event_detect (23, GPIO. RISING, callback = sensor1, bouncetime = 300) GPIO.add_event_detect (24, GPIO. FALLING, callback = sensor2, bouncetime = 300)

Τώρα μπορείτε να το δοκιμάσετε! Εάν πατήσετε το κουμπί 1 θα δείτε ένα μήνυμα στον τερματικό "ενεργοποιήθηκε ο αισθητήρας 1", το κουμπί 2 σας δίνει ένα μήνυμα "ενεργοποιήθηκε ο αισθητήρας 2".

Σημείωση: Όταν τελειώσετε με τον πειραματισμό, μην ξεχάσετε να καλέσετε την ακόλουθη συνάρτηση: GPIO.cleanup ().

Ας δημιουργήσουμε μια ακόμη λειτουργία που καλείται όταν η πόρτα φτάσει στο σημείο που τραβάμε μια φωτογραφία! Μπορείτε να το κάνετε μόνοι σας ή να χρησιμοποιήσετε την εφαρμογή μου που έχω επισυνάψει εδώ (sensor.py)

Σημείωση: Το sensor.py χρησιμοποιείται μόνο για σκοπούς δοκιμής, τα αρχεία με πλήρη λειτουργικότητα που έχω επισυνάψει στο τελευταίο βήμα.

Βήμα 3: Διαμόρφωση κάμερας IP

Διαμόρφωση κάμερας IP
Διαμόρφωση κάμερας IP
Διαμόρφωση κάμερας IP
Διαμόρφωση κάμερας IP
Διαμόρφωση κάμερας IP
Διαμόρφωση κάμερας IP

Περιγραφή βήματος: Τώρα θα διαμορφώσουμε το παλιό smartphone ως κάμερα IP.

Η χρήση smartphone ως κάμερα IP γίνεται μέσω εφαρμογής. Υπάρχουν διαφορετικές εφαρμογές για Android, iOS, Windows Phone που μπορείτε να χρησιμοποιήσετε. Επέλεξα αυτό που ονομάζεται "IP Webcam" για Android. Αυτή είναι μια δωρεάν εφαρμογή και είναι εύκολο να διαμορφωθεί.

Εκτελέστε την εφαρμογή, μεταβείτε στις "Προτιμήσεις βίντεο" για να ρυθμίσετε την ανάλυση των φωτογραφιών που θα παρέχει η εφαρμογή. Στη συνέχεια, πατήστε "Έναρξη διακομιστή" (Πρώτη εικόνα παραπάνω). Στο κάτω μέρος της οθόνης πρέπει να δείτε τη διεύθυνση IP της κάμερας (Δείτε τη δεύτερη εικόνα παραπάνω). Στο πρόγραμμα περιήγησης μπορείτε να πληκτρολογήσετε https://cam_ip_address/photo-j.webp

Τέλος, συνδέστε την κάμερα στο ψυγείο (Τελευταία εικόνα παραπάνω).

Βήμα 4: API προσώπου

Face API
Face API

Βήμα Περιγραφή: Σε αυτό το βήμα θα μιλήσουμε για το Face API της Microsoft που κάνει αναγνώριση προσώπου και αναγνωρίζει άτομα.

Το Microsoft API Face είναι μια υπηρεσία αναγνώρισης προσώπου, μέσω της οποίας μπορούμε να αναλύσουμε φωτογραφίες και να αναγνωρίσουμε άτομα σε αυτές.

Αρχικά, χρειάζεστε τον λογαριασμό Microsoft Azure. Εάν δεν έχετε, μπορείτε να το δημιουργήσετε δωρεάν εδώ.

Δεύτερον, μεταβείτε στη διεύθυνση https://portal.azure.com, κάντε κλικ στο "Νέο" στην αριστερή πλευρά, πληκτρολογήστε τη φόρμα "APIs γνωστικών υπηρεσιών", επιλέξτε το και κάντε κλικ στο "Δημιουργία". Or μπορείτε να ανοίξετε αυτόν τον σύνδεσμο. Τώρα πρέπει να εισαγάγετε το όνομα της υπηρεσίας σας, να επιλέξετε τύπο συνδρομής, τύπο API που χρειάζεστε (στην περίπτωσή μας είναι το API προσώπου), τοποθεσία, επίπεδο τιμών, ομάδα πόρων και να συμφωνήσετε με τους νομικούς όρους (δείτε το στιγμιότυπο οθόνης που προστέθηκε σε αυτό το βήμα).

Τρίτον, κάντε κλικ στην επιλογή "Όλοι οι πόροι", επιλέξτε την υπηρεσία Face API και δείτε τα στατιστικά στοιχεία χρήσης, διαπιστευτήρια κ.λπ.

Μπορείτε να βρείτε λεπτομέρειες API προσώπου εδώ, παρέχονται παραδείγματα σε διαφορετικές γλώσσες προγραμματισμού. Για αυτό το έργο χρησιμοποιούμε python. Μπορείτε να διαβάσετε την τεκμηρίωση και να δημιουργήσετε το δικό σας σύνολο λειτουργιών ή μπορείτε να χρησιμοποιήσετε αυτό που παρέχεται εδώ (αυτό δεν είναι το πλήρες σύνολο λειτουργιών που παρέχει η Microsoft, μόνο τα σημεία που απαιτούνται για αυτό το έργο). Τα αρχεία μου python επισυνάπτονται σε αυτό το βήμα.

Ας περάσουμε στη δομή της εργασίας με το Face API. Για να χρησιμοποιήσουμε τη λειτουργία "Ταυτοποίηση" πρέπει να δημιουργήσουμε μια βιβλιοθήκη ατόμων που χρησιμοποιούν την υπηρεσία Face API που αναγνωρίζει τις φωτογραφίες που τραβάει η εφαρμογή. Για να το ρυθμίσετε, ακολουθήστε τα βήματα:

  1. Δημιουργία ομάδας
  2. Προσθέστε άτομα σε αυτήν την ομάδα
  3. Προσθέστε πρόσωπα σε αυτά τα άτομα
  4. Ομάδα τρένου
  5. Υποβολή φωτογραφίας με άτομο που θέλετε να ταυτοποιήσετε (πρέπει να δώσετε φωτογραφία και αναγνωριστικό ομάδας στην οποία η υπηρεσία θα αναζητήσει υποψηφίους)
  6. Αποτέλεσμα: Σε απάντηση θα λάβετε μια λίστα υποψηφίων που μπορούν να βρίσκονται στη φωτογραφία που υποβάλατε.

Έχω δημιουργήσει τρία αρχεία με συγκεκριμένη λειτουργικότητα που επιτρέπει την εργασία με ομάδες, μεμονωμένα άτομα και μεμονωμένες φωτογραφίες:

  • PersonGroup.py - περιέχει δυνατότητες που επιτρέπουν: δημιουργία ομάδας, λήψη πληροφοριών σχετικά με την ομάδα, λήψη λίστας όλων των ομάδων σας, προπόνηση ομάδας και λήψη κατάρτισης
  • Person.py - περιέχει δυνατότητες που επιτρέπουν: δημιουργία ατόμου, λήψη πληροφοριών ατόμου, λίστα όλων των ατόμων σε καθορισμένη ομάδα, προσθήκη προσώπων σε καθορισμένο άτομο
  • Face.py - περιέχει δυνατότητες που επιτρέπουν: ανίχνευση προσώπου στην εικόνα, αναγνώριση προσώπου, λήψη ονόματος αναγνωρισμένου προσώπου

Στο αρχείο που ονομάζεται "αναγνώριση.πυ" παρέχω λειτουργίες που σας επιτρέπουν να ελέγχετε εάν η εικόνα περιέχει πρόσωπο και να προσθέτετε πρόσωπα σε καθορισμένο άτομο (προσθέτει αυτόματα πρόσωπο από πολλές εικόνες από καθορισμένο φάκελο).

Κατεβάστε το αρχείο που επισυνάπτεται σε αυτό το βήμα, αποσυσκευάστε το, αλλάξτε την καθολική μεταβλητή "KEY" στα τρία αυτά αρχεία: PersonGroup.py, Person.py και Face.py στο δικό σας κλειδί που μπορείτε να βρείτε: portal.azure.com> όλοι οι πόροι > υπηρεσία προσώπου api (ή πώς το ονομάσατε)> καρτέλα κλειδιών. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε από τα δύο πλήκτρα.

Σημείωση: εδώ πρόκειται να εκπαιδεύσουμε την υπηρεσία Face API για την αναγνώριση ατόμων, οπότε οι ακόλουθες ενέργειες μπορούν να γίνουν από οποιονδήποτε υπολογιστή (το Raspberry Pi δεν απαιτείται για αυτό) - οι αλλαγές αποθηκεύονται στον διακομιστή της Microsoft.

Αφού αλλάξετε το KEY, εκτελέστε την αναγνώριση.py και εισαγάγετε την ακόλουθη εντολή στο κέλυφος python:

PersonGroup.create ("οικογένεια", "fff-fff")) // μπορείτε να χρησιμοποιήσετε το δικό σας όνομα και αναγνωριστικό για

ομάδα printResJson (PersonGroup.getPersonGroup ('fff-fff'))

Πρέπει να δείτε δεδομένα σχετικά με την ομάδα που μόλις δημιουργήσατε. Τώρα εισάγετε:

printResJson (Person.createPerson ('fff-fff', 'name of person'))

Τώρα αποκτάτε ταυτότητα ατόμου. Δημιουργήστε φάκελο με εικόνες αυτού του ατόμου, έτσι ώστε όλες οι εικόνες να περιέχουν το πρόσωπο αυτού του ατόμου. Μπορείτε να χρησιμοποιήσετε τη λειτουργία deteFaceOnImages στην αναγνώριση.py που σας δείχνει σε ποιες φωτογραφίες εντοπίζεται το πρόσωπο. Τώρα, εκτελέστε την εντολή:

addFacesToPerson («φάκελος με εικόνες», «αναγνωριστικό ατόμου που πήρατε μετά από προηγούμενη εντολή», «fff-fff»)

Στη συνέχεια, πρέπει να εκπαιδεύσουμε την υπηρεσία μας εισάγοντας τα ακόλουθα:

PersonGroup.trainPersonGroup ('fff-fff') printResJson (PersonGroup.getPersonGroupTrainingStatus ('fff-fff'))

Τώρα η ομάδα μας είναι εκπαιδευμένη και είναι έτοιμη να αναγνωρίσει ένα άτομο.

Για να ελέγξετε το άτομο στην εικόνα, μπορείτε:

Face.checkPerson (εικόνα, 'fff-fff')

Σε απάντηση θα λάβετε μια λίστα υποψηφίων και πιθανότητα ποιος είναι στη φωτογραφία.

Σημείωση: κάθε φορά που προσθέτετε πρόσωπα σε ένα άτομο ή άτομο σε μια ομάδα πρέπει να εκπαιδεύετε την ομάδα!

Βήμα 5: Διαμόρφωση Κόμβου-Κόκκινου

Διαμόρφωση Κόμβου-Κόκκινου
Διαμόρφωση Κόμβου-Κόκκινου

Βήμα Περιγραφή: Σε αυτό το βήμα, θα δημιουργήσουμε ροή Node-Red που θα σας ειδοποιεί για την παραβίαση της πρόσβασης στο ψυγείο σας =)

Εάν το Raspberry Pi τρέχει σε Raspbian Jessie Νοεμβρίου 2015 ή νεότερη έκδοση, δεν χρειάζεται να εγκαταστήσετε το Node-Red, επειδή είναι ήδη προεγκατεστημένο. Απλά πρέπει να το ενημερώσετε. Χρησιμοποιήστε το εγχειρίδιο εδώ.

Τώρα, πρέπει να εγκαταστήσουμε τον κόμβο Twilio στο Node-Red, ώστε να μπορέσουμε να ενεργοποιήσουμε ένα μήνυμα κειμένου. Ανοίξτε τερματικό και πληκτρολογήστε:

cd ~/.node-rednpm install node-red-node-twilio

Περισσότερα για τον κόμβο Twilio εδώ. Μετά από αυτό, εκτελέστε το Node-Red πληκτρολογώντας το τερματικό:

κόμβος-κόκκινος

Στη συνέχεια, μεταβείτε στη διεύθυνση: https://127.0.0.1:1880/ - εάν ανοίξετε το πρόγραμμα περιήγησης στο Raspberry Pihttps:// {raspberry_pi_ip}: 1880/ - εάν θέλετε να ανοίξετε τον επεξεργαστή Node -Red από άλλο υπολογιστή

Για να γνωρίζετε τη διεύθυνση IP του raspberry pi χρησιμοποιήστε αυτήν την οδηγία.

Τώρα πρέπει να βρείτε τον κόμβο Twilio στη λίστα κόμβων στον επεξεργαστή Node-Red (συνήθως εμφανίζεται μετά την ομάδα «κοινωνικής»).

Ρθε η ώρα να δημιουργήσετε τη ροή!

Σημείωση: μπορείτε να χρησιμοποιήσετε τη ροή μου που επισυνάπτεται σε αυτό το βήμα, αλλά μην ξεχάσετε να διαμορφώσετε τους κόμβους: email, twitter και twilio. Διαβάστε σχετικά αργότερα.

Η ροή μας ξεκινά με τον κόμβο "ειδοποίηση" που δέχεται αίτημα POST από το κύριο πρόγραμμα μας με ορισμένα δεδομένα σχετικά με παραβίαση πρόσβασης (παράδειγμα των δεδομένων μπορείτε να βρείτε στον κόμβο σχολίων "σχετικά με τη λήψη αντικειμένων"). Αυτός ο κόμβος απαντά αμέσως με το μήνυμα "Ok", οπότε το κύριο πρόγραμμα γνωρίζει ότι τα δεδομένα έχουν ληφθεί (Ροή: /ειδοποίηση> απάντηση με Ok> απάντηση). Ο πράσινος κόμβος στο κάτω μέρος με το μήνυμα msg.payload είναι εκεί για σκοπούς εντοπισμού σφαλμάτων: εάν κάτι δεν λειτουργεί μπορείτε να το χρησιμοποιήσετε.

Από τον πρώτο κόμβο (/ειδοποίηση) τα δεδομένα διαδίδονται σε "Θέμα δεδομένων" και "Θέμα εικόνας" όπου τα θέματα "δεδομένα" και "εικόνα" προστίθενται αντίστοιχα.

Στον κόμβο "μεταγλώττισης" λαμβάνουμε δεδομένα (τα οποία λαμβάνουμε κατά το πρώτο βήμα) με το θέμα "δεδομένα" και μια εικόνα με το θέμα "εικόνα" (η εικόνα έχει ληφθεί από /home/pi/image.jpg). Αυτά τα δύο μηνύματα πρέπει να συγκεντρωθούν σε ένα αντικείμενο, αλλά τα δύο αντικείμενα λαμβάνονται σε διαφορετικό χρόνο! Για να το χειριστούμε αυτό, θα χρησιμοποιήσουμε τη λειτουργία "περιβάλλοντος" που μας επιτρέπει να αποθηκεύσουμε δεδομένα μεταξύ κλήσεων λειτουργιών.

Το επόμενο βήμα είναι να ελέγξουμε εάν το άτομο από τη λίστα πρόσβασης είναι άγνωστο (κόμβος checkConditions). Υπάρχει ένα πεδίο "trustedPerson" στα δεδομένα που λαμβάνουμε: "true" σημαίνει ότι γνωρίζουμε αυτό το άτομο, αλλά παραβίασε την άδεια πρόσβασης, το "false" σημαίνει ότι το άτομο είναι ξένο.

Όταν το αποτέλεσμα είναι "αληθινό" στέλνουμε ειδοποίηση στο twitter, twilio και email. όταν το αποτέλεσμα είναι "ψευδές" - μόνο email και twilio. Δημιουργούμε ένα αντικείμενο για email με ένα μήνυμα, συνημμένη εικόνα και θέμα email, ένα αντικείμενο για twilio με ένα μήνυμα. Για το twitter προσθέτουμε δεδομένα σε ένα αντικείμενο εάν το "trustedPerson" είναι αληθές. Στη συνέχεια, στείλτε αυτά τα τρία αντικείμενα σε τρεις διαφορετικούς κόμβους.

Σημείωση: Εάν ο ακόλουθος κόμβος δεν πρέπει να λάβει μήνυμα, απλώς του στέλνουμε "null".

It'sρθε η ώρα να διαμορφώσετε κόμβους για ειδοποίηση!

Twitter Προσθέστε κόμβο "twitter" στη ροή. Ανοίξτε το με διπλό κλικ. Κάντε κλικ στο μολύβι δίπλα στο "Twitter ID". Στη συνέχεια, κάντε κλικ στο "Κάντε κλικ εδώ για έλεγχο ταυτότητας με Twitter". Μπείτε στον λογαριασμό σας στο twitter και δώστε στο Node-Red τα απαραίτητα δικαιώματα.

Email Προσθέστε κόμβο "email" στη ροή. Εάν δεν χρησιμοποιείτε το Gmail, θα πρέπει να αλλάξετε δεδομένα στα ακόλουθα πεδία - "Διακομιστής" και "Θύρα" (μπορείτε να βρείτε ποιον διακομιστή και ποια θύρα πρέπει να χρησιμοποιήσετε στις σελίδες βοήθειας του πράκτορα email σας) διαφορετικά μην τα αλλάξετε πεδία.

  • Για> διεύθυνση email στην οποία θα αποσταλούν μηνύματα
  • Userid> σύνδεση από το email σας (ίσως το ίδιο με το πεδίο "Προς")
  • Κωδικός πρόσβασης> κωδικός πρόσβασης από τον λογαριασμό email σας
  • Όνομα> όνομα για αυτόν τον κόμβο

Twilio Μεταβείτε στη διεύθυνση https://www.twilio.com/try-twilio και κάντε εγγραφή λογαριασμού. Επαληθεύστε το. Μεταβείτε στη διεύθυνση https://www.twilio.com/console. Κάντε κλικ στο "Τηλέφωνα" (μεγάλο # εικονίδιο) και δημιουργήστε δωρεάν αριθμό. Εάν βρίσκεστε εκτός των ΗΠΑ, πρέπει να προσθέσετε δικαιώματα GEO, μεταβείτε στη διεύθυνση https://www.twilio.com/console/sms/settings/geo-pe… και προσθέστε τη χώρα σας.

Τώρα, μεταβείτε στον επεξεργαστή Node-Red, προσθέστε τον κόμβο Twilio, κάντε διπλό κλικ σε αυτόν για να διαμορφώσετε και να συμπληρώσετε όλα τα πεδία:

  • Διαπιστευτήρια> Χρήση τοπικών διαπιστευτηρίων
  • Twilio> επεξεργασία

    • SID λογαριασμού> πάρτε από εδώ
    • Από> πληκτρολογήστε τον εικονικό αριθμό που δημιουργήσατε
    • Token> πάρτε από εδώ
    • Όνομα> Twilio
  • Έξοδος> SMS
  • Για> τον αριθμό τηλεφώνου σας
  • Όνομα> όνομα για αυτόν τον κόμβο.

Κάντε κλικ στην επιλογή Ανάπτυξη

Τώρα η ροή σας είναι έτοιμη! Μπορείτε να το δοκιμάσετε στέλνοντας αίτημα POST με καθορισμένο αντικείμενο!

Βήμα 6: Συγκέντρωση ολόκληρου του έργου

Συγκέντρωση ολόκληρου του έργου
Συγκέντρωση ολόκληρου του έργου
Συγκέντρωση ολόκληρου του έργου
Συγκέντρωση ολόκληρου του έργου

Βήμα Περιγραφή: Σε αυτό το βήμα θα βάλουμε όλα τα μέρη μαζί και θα τα κάνουμε να λειτουργήσουν ως ξεχωριστό σύστημα.

Σε αυτό το βήμα πρέπει:

  1. Διαμορφώστε το παλιό smartphone ως κάμερα ip
  2. Έχετε αισθητήρες εργασίας
  3. Εκπαιδεύτηκε το API της Microsoft για το πρόσωπο
  4. Διαμορφωμένη ροή κόμβου-κόκκινου

Τώρα πρέπει να βελτιώσουμε τον κώδικα που γράψαμε στο βήμα 2. Πιο συγκεκριμένα η διαδικασία λειτουργίας () που καλείται όταν ανοίγει την πόρτα το άτομο. Σε αυτή τη συνάρτηση θα κάνουμε τα εξής:

  1. Λάβετε εικόνα από την κάμερα ip και αποθηκεύστε την στο "/home/pi/" με όνομα "image.jpg" (λειτουργία "fromIpCam" στο αρχείο "getImage")
  2. Λάβετε το όνομα του ατόμου σε αυτήν την εικόνα (συνάρτηση "checkPerson" στο αρχείο "αναγνώριση")
  3. Ελέγξτε την άδεια πρόσβασης για αυτό το άτομο (λειτουργία "έλεγχος" στο αρχείο "πρόσβαση")
  4. Βάσει του αποτελέσματος της λειτουργίας "ελέγχου" σύνταξη μηνύματος
  5. Αποστολή σύνθετου μηνύματος στο Node-Red (λειτουργία "toNodeRed" στο αρχείο "sendData")

Σημείωση: για να δείτε τον πλήρη κώδικα των αναφερόμενων λειτουργιών, κάντε λήψη του αρχείου zip που επισυνάπτεται σε αυτό το βήμα.

Σχετικά με τη λειτουργία "fromIpCam". Αυτή η λειτουργία κάνει το αίτημα GET στην κάμερα ip σας, λάβετε εστιασμένη εικόνα ως απάντηση και αποθηκεύστε τη στη διαδρομή που καθορίσατε. Πρέπει να δώσετε τη διεύθυνση IP της κάμερας σε αυτήν τη λειτουργία.

Σχετικά με τη λειτουργία "checkPerson". Η συνάρτηση παίρνει τη διαδρομή προς την εικόνα και την ομάδα στην οποία θέλετε να αναζητήσετε άτομο από τη φωτογραφία ως παραμέτρους. Πρώτον, ανιχνεύει ένα πρόσωπο στην παρεχόμενη εικόνα (αρχείο Face.py, λειτουργία "ανίχνευση"). Σε απόκριση παίρνει το αναγνωριστικό εάν εντοπίστηκε πρόσωπο. Στη συνέχεια, καλεί τη λειτουργία "ταυτοποίηση" (αρχείο Face.py) που βρίσκει παρόμοια άτομα σε καθορισμένη ομάδα. Σε απάντηση παίρνει ένα αναγνωριστικό προσώπου αν βρεθεί άτομο. Στη συνέχεια, καλέστε τη συνάρτηση "πρόσωπο" (αρχείο Person.py) με παράμετρο το αναγνωριστικό προσώπου, η συνάρτηση "πρόσωπο" επιστρέφει άτομο με καθορισμένο αναγνωριστικό, παίρνουμε όνομα προσώπου και το επιστρέφουμε.

Σχετικά με τη λειτουργία "έλεγχος". Αυτή η συνάρτηση τοποθετείται στο αρχείο "access" όπου τοποθετεί επίσης τη "λίστα πρόσβασης" ως καθολική μεταβλητή (μπορείτε να την τροποποιήσετε όπως θέλετε). Λαμβάνοντας το όνομα του ατόμου από την προηγούμενη συνάρτηση, συνάρτηση "έλεγχος" συγκρίνετε αυτό το άτομο με τη λίστα πρόσβασης και επιστρέψτε το αποτέλεσμα.

Σημείωση: το πλήρες έργο επισυνάπτεται στο επόμενο βήμα.

Βήμα 7: Συμπέρασμα

Σε αυτό το βήμα επισυνάπτω ολόκληρο το έργο που πρέπει να αποσυμπιέσετε και να τοποθετήσετε στο Raspberry Pi σας.

Για να λειτουργήσει αυτό το έργο εκτελέστε το αρχείο "main.py".

Εάν ελέγχετε το Raspberry Pi μέσω SSH, πρέπει να εκτελέσετε δύο προγράμματα από ένα κέλυφος: πρόγραμμα python και Node-Red. Πληκτρολογήστε το τερματικό τα ακόλουθα:

κόμβος-κόκκινος

Πιέστε "Ctrl + Z" και πληκτρολογήστε:

θέσεις εργασίας

Έχετε δει τη διαδικασία Node-Red. Δείτε το αναγνωριστικό της διαδικασίας και τον τύπο:

βγ

Τώρα το Node-Red πρέπει να ξεκινήσει να λειτουργεί στο παρασκήνιο. Στη συνέχεια, μεταβείτε στον κατάλογο με το έργο σας και εκτελέστε το κύριο πρόγραμμα:

python3 main.py

Σημείωση: μην ξεχάσετε να αλλάξετε το KEY σε αρχεία python (βήμα 4) και διαπιστευτήρια στο Node-Red flow (βήμα 5)

Εγινε! Το ψυγείο σας είναι ασφαλές!

Ελπίζω να σας άρεσε αυτό το δυσεπίλυτο! Μη διστάσετε να αφήσετε το μυαλό σας στα σχόλια.

Θα εκτιμούσα αν ψηφίζατε για το έργο μου =)

Σας ευχαριστώ!

Συνιστάται: