Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Η ύπαρξη τυπικών αισθητήρων πλημμύρας είναι εξαιρετική για την αποφυγή μαζικών ζημιών στο σπίτι ή στο χώρο εργασίας σας.
Αλλά είναι δύσκολο να μην είστε στο σπίτι να παρακολουθήσετε τον συναγερμό.
Φυσικά θα μπορούσατε να τα αγοράσετε έξυπνα
Αυτό το σύστημα συναγερμού πλημμύρας ανιχνεύει οποιοδήποτε υγρό και ενεργοποιεί συναγερμό και ενημερώνει την ιστοσελίδα για πλημμύρα στην οποία μπορείτε να έχετε πρόσβαση οπουδήποτε στον κόσμο, είτε έχετε χαλαρωτικές διακοπές είτε απλώς στη δουλειά και θέλετε να μάθετε για την κατάσταση του σπιτιού σας.
Προμήθειες
Raspberry pi (χρησιμοποιώ μοντέλο 3 B+) που τρέχει raspbian
Σωματίδιο Αργόν
Αισθητήρας νερού Grove
Κάμερα Raspi
Βομβητής
Καλώδια βραχυκυκλωτήρων
Βήμα 1: Συνδέστε τον αισθητήρα νερού στο σωματίδιο
ο αισθητήρας νερού έχει 4 ακίδες, οι οποίες είναι GND, VCC, NC και SIG και πρόκειται να χρησιμοποιήσουμε μόνο τρεις από αυτές
Συνδέω τον πείρο SIG στο D2 στο Argon.
Τώρα, μπορείτε να εκκινήσετε το Particle Web IDE για να γράψετε τον κώδικα και να αναβοσβήνετε στο Argon
Έτσι, έχουμε καταχωρίσει υγρό συνάρτησης σωματιδίων και ορίσαμε μια μεταβλητή isFloodPresent, η οποία μπορεί να κληθεί από το Particle Console και να αποκτήσει τη boolean τιμή του isFloodPresent και επίσης να καλέσει τη λειτουργία υγρό για ψεύτικες δοκιμές που λαμβάνει την τιμή 1 ως είσοδο, πράγμα που σημαίνει ότι ισχύει για πλημμύρα (νερό) Το
βεβαιωθείτε ότι μπορείτε να δείτε αυτήν τη λειτουργία και τη μεταβλητή από την Κονσόλα σωματιδίων της Συσκευής Σωματιδίων σας.
Βήμα 2: Συνδέστε την πηγή συναγερμού στο Raspberry
Στο breadboard μπορείτε να συνδέσετε το Buzzer στην καρφίτσα GPIO του Raspberry
Έχω συνδέσει το μικρότερο άκρο του βομβητή στο GND (PIN 6) και το μεγαλύτερο άκρο στο pin 7 στο βατόμουρο.
Τώρα εκτελέστε τον κώδικα για να δείτε. Θα χρειαστεί αυτό το αρχείο python να εκτελείται συνεχώς, ώστε να μπορεί να λαμβάνει τις ενεργοποιήσεις από τον διακομιστή ιστού και να ανταποκρίνεται ανάλογα.
Εναλλακτικά, μπορείτε να εκτελέσετε αυτό το αρχείο κατά την εκκίνηση στο βατόμουρό σας, το οποίο μπορείτε να κάνετε με την επεξεργασία του /etc /systemd
και αυτό το αρχείο θα τοποθετηθεί στο φάκελο cgi του διακομιστή apache σας, Έχω δημιουργήσει νέο κατάλογο flood-cgi μέσα/var/www/html/και έχω τοποθετήσει αυτό το αρχείο.py το οποίο θα επικοινωνεί με το σενάριο cgi μου
Βήμα 3: Διαμόρφωση διακομιστή Apache
μπορείτε να εγκαταστήσετε διακομιστή apache πληκτρολογώντας sudo apt-get install apache2
όταν είναι εγκατεστημένο, μπορείτε να επαληθεύσετε πληκτρολογώντας το όνομα κεντρικού υπολογιστή -I
και θα λάβετε την τοπική σας διεύθυνση IP και μπορείτε να κατευθυνθείτε στο πρόγραμμα περιήγησής σας και θα πρέπει να δείτε τον διακομιστή να λειτουργεί
Βήμα 4: Ενεργοποιήστε το CGI στο Apache
μπορείτε να ενεργοποιήσετε το cgi πληκτρολογώντας sudo a2enmod cgi
Από προεπιλογή, το cgi_bin του apache βρίσκεται στο/usr/lib/cgi-bin
εδώ μπορείτε να βάλετε τα σενάρια cgi αφού ενεργοποιήσετε το cgi
για να επιτευχθεί το αποτέλεσμα, πρέπει να κάνετε επανεκκίνηση του διακομιστή apache
Iθελα προσαρμοσμένο κατάλογο για τα σενάρια μου cgi, έτσι δημιούργησα τον κατάλογο στο/var/www/html/που ονομάζεται flood-cgi
για να ενεργοποιήσω αυτόν τον κατάλογο έπρεπε να δημιουργήσω αρχείο conf πληκτρολογώντας
sudo nano /etc/apache2/conf-available/flood-cgi.conf
και προσθήκη εντολών όπως φαίνεται στο στιγμιότυπο οθόνης
στη συνέχεια, ενεργοποιήστε αυτόν τον κατάλογο πληκτρολογώντας
var/www/html $ sudo a2enconf flood-cgi
τώρα μπορείτε να κάνετε επανεκκίνηση του διακομιστή apache ξανά και όλα τα cgi από αυτόν τον φάκελο θα είναι ευανάγνωστα από το apache μετά την άδεια.
Βήμα 5: Ρύθμιση της ιστοσελίδας
Για αυτήν την απλή υπηρεσία ιστού, χρησιμοποιώ HTML, Javascript, CSS, jquery και ajax.
Έχω πέντε ετικέτες ελέγχου με δυνατότητα κλικ, Σε περίπτωση που γίνει κλικ στη λήψη φωτογραφιών από την ιστοσελίδα, θα ενεργοποιηθεί η λειτουργία κλικ του κουμπιού φωτογραφίας και αυτή η λειτουργία μοιάζει με αυτήν
$ ("#photobutton"). κλικ (λειτουργία () {var floodDate = νέα ημερομηνία ();
var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();
$.ajax ({
url: 'flood-cgi/flood_cgi.py', μέθοδος: «ανάρτηση», δεδομένα: {name_for_image: floodImageName}, επιτυχία: λειτουργία (δεδομένα) {
ειδοποίηση (δεδομένα, κατάσταση)
$ ("#Recentpic"). attr ("src", "flood-cgi/" + floodImageName + ".jpg");
}
})
});
Αυτό θα καλέσει το σενάριο flood_cgi.py για λήψη φωτογραφιών και αποθηκεύει την εικόνα με προσαρμοσμένο όνομα που δημιουργείται από την τρέχουσα ημερομηνία και ώρα και ο ajax φορτώνει μέχρι τη σελίδα.
σε περίπτωση Συναγερμού, μπορούμε να χρησιμοποιήσουμε αυτήν τη λειτουργία
συνάρτηση callAlarm (alarmType) {
$.ajax ({
url: 'flood-cgi/alarm.cgi', μέθοδος: «ανάρτηση», δεδομένα: {alarm_type: alarmType}, επιτυχία: λειτουργία (δεδομένα) {ειδοποίηση (δεδομένα)
}, error: function (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});
}
η λειτουργία callAlarm θα καλείται όταν κάνετε κλικ στην ετικέτα του βομβητή, $ ("#buzzer"). κλικ (λειτουργία () {callAlarm ("δοκιμή");
})
ο παρακάτω κώδικας είναι όταν θέλετε να κάνετε κλικ σε ψεύτικη πλημμύρα, δηλαδή να καλέσετε το API σωματιδίων και να καλέσετε τη συνάρτηση και να αλλάξετε την τιμή υγρού 1 και να ελέγξετε το σύστημα εάν το σύνολο λειτουργεί όπως αναμένεται, πραγματοποιώντας ένα ψεύτικο συμβάν πλημμύρας
$ ("#mockFlood"). κλικ (λειτουργία () {console.log ("ζητήθηκε ψεύτικη πλημμύρα");
var floodVal = 1;
$ ("#signal2"). css ("μέγεθος γραμματοσειράς", "μικρό");
var varName = "isFloodPresent";
var deviceID = "Το αναγνωριστικό της συσκευής σας";
var accessToken = "ΔΙΚΟ ΣΑΣ ΠΡΟΣΒΑΣΗ ΣΑΣ";
αν (floodVal) {
$.post ("https://api.particle.io/v1/devices/" + deviceID + "/liquid? access_token =" + accessToken, {liquid: floodVal}, λειτουργία (δεδομένα, κατάσταση) {
εάν (κατάσταση == "επιτυχία") {
ειδοποίηση ("Mock Flood has done !!!");
} αλλο {
ειδοποίηση ("Συγνώμη, υπήρχε πρόβλημα").
}
});
}
});
Αυτές είναι οι κύριες λειτουργίες που χρειάζεστε για να συνδεθείτε με το Particle Api και το βατόμουρό σας, ώστε να μπορεί να επικοινωνήσει η συσκευή βατόμουρου pi και σωματιδίων Argon.
Σημείωση: wantedθελα να ανεβάσω όλο τον κώδικα, αλλά δεν μου επιτρέπει να ανεβάσω.html αρχείο
Βήμα 6: Δημιουργία σεναρίου για κάμερα Raspi
δημιουργούμε απλό.py για να τραβήξουμε εικόνα και θα έχουμε σχολιασμό της τρέχουσας ημερομηνίας και ώρας σε αυτήν.
τότε θα δημιουργήσουμε cgi script flood_cgi.py έτσι θα κληθεί από τον ιστό και αυτό θα δώσει εντολή.py αρχείο για λήψη φωτογραφίας.
βεβαιωθείτε ότι έχετε ξεκινήσει το σενάριο cgi με #! /usr/bin/env python
και επίσης να δώσει άδεια apache για την εκτέλεση αυτών των αρχείων.
Ο διακομιστής apache τρέχει σε δεδομένα χρήστη www, οπότε μόλις δημιουργήσουμε το αρχείο.py ή.cgi, το apache πρέπει να είναι κάτοχος του αρχείου
sudo chown pi: www-data flood-cgi.py
και δώστε άδεια για εκτέλεση
sudo chmod a+x flood-cgi.py
θα πρέπει να το κάνετε αυτό για όλα τα αρχεία που πρέπει να εκτελούνται από διακομιστή apache.
ΣΗΜΕΙΩΣΗ: η έκθεση του βατόμουρού σας στο διαδίκτυο και η παροχή όλων αυτών των δικαιωμάτων καθιστά το βατόμουρό σας πολύ ευάλωτο για λόγους ασφαλείας, οπότε θα πρέπει να ακολουθούνται αυστηροί χρήστες και δικαιώματα και να εγκαταστήσετε τείχος προστασίας όπως το απλό τείχος προστασίας (ufw)