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

Παρακολούθηση θερμοκρασίας δωματίου ελεγχόμενου Raspberry Pi με έξοδο εικόνας Gnuplot και δυνατότητα ειδοποίησης μέσω email: 7 βήματα
Παρακολούθηση θερμοκρασίας δωματίου ελεγχόμενου Raspberry Pi με έξοδο εικόνας Gnuplot και δυνατότητα ειδοποίησης μέσω email: 7 βήματα

Βίντεο: Παρακολούθηση θερμοκρασίας δωματίου ελεγχόμενου Raspberry Pi με έξοδο εικόνας Gnuplot και δυνατότητα ειδοποίησης μέσω email: 7 βήματα

Βίντεο: Παρακολούθηση θερμοκρασίας δωματίου ελεγχόμενου Raspberry Pi με έξοδο εικόνας Gnuplot και δυνατότητα ειδοποίησης μέσω email: 7 βήματα
Βίντεο: 40 χρήσιμα auto προϊόντα από το Aliexpress που είναι χρήσιμα για εσάς 2024, Ιούνιος
Anonim
Raspberry Pi ελεγχόμενη παρακολούθηση θερμοκρασίας δωματίου με δυνατότητα εξόδου εικόνας Gnuplot και δυνατότητα ειδοποίησης μέσω email
Raspberry Pi ελεγχόμενη παρακολούθηση θερμοκρασίας δωματίου με δυνατότητα εξόδου εικόνας Gnuplot και δυνατότητα ειδοποίησης μέσω email

Εκεί που εργάζομαι, υπάρχει ένα πολύ σημαντικό δωμάτιο που στεγάζει πολλούς υπολογιστές. Η θερμοκρασία περιβάλλοντος αυτού του δωματίου πρέπει να είναι πολύ δροσερή για να βελτιστοποιηθεί η απόδοση αυτών των συστημάτων. Μου ζητήθηκε να βρω ένα σύστημα παρακολούθησης που έχει τη δυνατότητα να στείλει κάποια μορφή ειδοποίησης σε λίγους ανθρώπους που θα τους ειδοποιήσουν ότι κάτι δεν πάει καλά με τον κλιματισμό σε εκείνο το δωμάτιο. Το υλικό για αυτήν την κατασκευή, χρησιμοποίησα το Raspberry pi και έναν αισθητήρα θερμοκρασίας και υγρασίας USB. Για παρακολούθηση, χρησιμοποίησα το Gnuplot για να σχεδιάσω τρία γραφήματα θερμοκρασίας και να δημιουργήσω εικόνα αυτών των γραφημάτων. Στη συνέχεια, δημιούργησα μια ειδική σελίδα HTML που θα φιλοξενηθεί στο Raspberry pi, ώστε οι τρέχουσες συνθήκες, αυτές οι εικόνες εξόδου gnuplot, να μπορούν να παρακολουθούνται από μια ιστοσελίδα στο δίκτυό μας. Για ειδοποίηση επέλεξα να πάω με το Gmail. Είχα βρει κάποιο παράδειγμα κώδικα σε ένα περιοδικό χρήστη Linux. (Φυσικά μπορείτε να χρησιμοποιήσετε οποιονδήποτε διακομιστή αλληλογραφίας μόλις γνωρίζετε τις απαραίτητες εκχωρήσεις θύρας.) Για αυτό δημιούργησα έναν αποκλειστικό λογαριασμό email Gmail για αυτές τις ειδοποιήσεις. Επίσης, ως πρόσθετο χαρακτηριστικό, όταν έχει ενεργοποιηθεί μια ειδοποίηση, επισυνάπτω ένα γράφημα στο μήνυμα ηλεκτρονικού ταχυδρομείου, ώστε το άτομο που λαμβάνει το μήνυμα να έχει μια ιδέα για το πόσο δραστική αύξηση ήταν αυτή που προκάλεσε την ειδοποίηση.

Βήμα 1: Η εγκατάσταση υλικού

Η εγκατάσταση υλικού
Η εγκατάσταση υλικού

Δεν υπάρχουν πολλά για τη ρύθμιση του υλικού. Το Raspberry pi τρέχει Raspian και ο αισθητήρας θερμοκρασίας USB απλώς συνδέεται απευθείας σε μία από τις θύρες USB. Η κατανάλωση ενέργειας αυτού του αισθητήρα είναι ελάχιστη και ως αποτέλεσμα τον τροφοδοτούσα απευθείας από το Raspberry pi. Ωστόσο, για συσκευές που τροφοδοτούνται με USB με λίγο περισσότερη κατανάλωση ενέργειας, θα συνιστούσα να τροφοδοτούνται μέσω ενός διανομέα USB που τροφοδοτείται και όχι απευθείας από τη θύρα USB του Raspberry pi. Μόλις τροφοδοτηθεί ο αισθητήρας θερμοκρασίας, παρέχει μια σειριακή σειρά που περιέχει τη θερμοκρασία και μετρήσεις υγρασίας των σημερινών συνθηκών. θερμοκρασία = 20,9 ° C υγρασία = 62,7% σημείο δρόσου = 13,0 ° CA σενάριο python αναλύει αυτήν τη συμβολοσειρά και αποθηκεύει τις τιμές θερμοκρασίας και υγρασίας σε τρία αρχεία κειμένου κάθε πέντε λεπτά. καθημερινά, αρχεία κειμένου 24 ωρών και 48 ωρών (Οι διαφορές θα συζητηθούν αργότερα στην ενότητα HTML). Από αυτά τα αρχεία, το Gnuplot θα δημιουργήσει τα γραφήματα και στη συνέχεια τις εικόνες των συνόλων δεδομένων σε κάθε αρχείο. Πριν συζητήσω το σενάριο python θα μιλήσω για την προετοιμασία του Raspberry pi. Δεδομένου ότι η παρακολούθηση πρέπει να γίνει διαδικτυακά, πρέπει να εγκατασταθεί ένας διακομιστής ιστού. Έχω δοκιμάσει μερικά από αυτά στον καιρό μου στο Raspberry pi αλλά αν και είναι λίγο μεγάλο προτιμώ το Apache. Για να εγκαταστήσετε το Apache στο Raspberry pi σας πληκτρολογείτε απλά: sudo apt-get install apache2 Θα σας δώσει μια προτροπή πριν την εγκατάσταση, πατήστε "y" για ναι και και το Apache θα εγκατασταθεί λίγα λεπτά ανάλογα με το Raspberry pi σας. Μόλις έχει τελειώσει, πρέπει να εγκαταστήσετε δύο πρόσθετα python: το python-serial και το βύσμα python-gnuplot. (Αν και έχω συνειδητοποιήσει ότι οι πρόσφατες κατασκευές του Raspian έχουν το τυπικό plug-in serial python, αλλά μόνο για να είναι ασφαλείς.) Για να εγκαταστήσετε αυτά που πληκτρολογείτε: -θα εγκατασταθούν Και με αυτό ολοκληρώθηκε η ρύθμιση υλικού.

Βήμα 2: Ρύθμιση λογισμικού - Ρύθμιση ηλεκτρονικού ταχυδρομείου και παραλήπτες

Δημιουργία διεύθυνσης ηλεκτρονικού ταχυδρομείουΠριν προχωρήσουμε πολύ στο λογισμικό τώρα, θα ήταν μια καλή στιγμή για να δημιουργήσετε έναν λογαριασμό Gmail για να στείλετε τις ειδοποιήσεις email σας. (Αυτό το παράδειγμα χρησιμοποιεί GMail, αλλά οποιοσδήποτε διακομιστής αλληλογραφίας μπορεί να χρησιμοποιηθεί μόλις μάθουμε τις ρυθμίσεις της θύρας smtp) Ο κώδικας python είναι αρκετά απλός, αλλά οι εισαγωγές που απαιτούνται είναι κρίσιμες. Χωρίς αυτά, τίποτα δεν θα λειτουργούσε. Από την εισαγωγή χρόνου Φυσικά πρέπει να προσθέσουμε τους παραλήπτες του email. Κάθε διεύθυνση ηλεκτρονικού ταχυδρομείου αποθηκεύεται σε μια μεταβλητή.

Βήμα 3: Εγκατάσταση λογισμικού - Σειριακή ρύθμιση και ανάλυση

Στη συνέχεια, εξετάζουμε τη σειριακή ρύθμιση. Είναι απλώς θέμα ρύθμισης παραμέτρων που ταιριάζουν με τη σειριακή έξοδο από τον αισθητήρα. Ο αισθητήρας εξάγει μια σειριακή συμβολοσειρά στο 9600 8 N 1 που είναι μια τυπική μορφή. Μετά τη λήψη της συμβολοσειράς, υπάρχουν διάφοροι τρόποι ανάλυσης αυτής της συμβολοσειράς σε python και πιθανότατα πιο αξιόπιστα. Ο τρόπος που το κάνω είναι να αναζητώ τους χαρακτήρες "temp" στη σειριακή συμβολοσειρά. Μόλις εντοπιστεί, είναι απλώς θέμα ανάγνωσης των επόμενων 46 σειριακών χαρακτήρων σε μια συμβολοσειρά. Η συλλεγμένη συμβολοσειρά μπορεί τώρα να αντιμετωπιστεί σαν στοιχεία σε έναν πίνακα. Τα επιθυμητά δεδομένα αναλύονται από τη συμβολοσειρά και αποθηκεύονται στα τρία αρχεία μαζί με την αντίστοιχη χρονική σφραγίδα.timestamp = strftime ("%d%b%Y%H:%M:%S", localtime ())

Βήμα 4: Ρύθμιση λογισμικού - Gnuplot

Ρύθμιση λογισμικού - Gnuplot
Ρύθμιση λογισμικού - Gnuplot
Ρύθμιση λογισμικού - Gnuplot
Ρύθμιση λογισμικού - Gnuplot
Ρύθμιση λογισμικού - Gnuplot
Ρύθμιση λογισμικού - Gnuplot

Το Gnuplot είναι ένα γραφικό εργαλείο γραμμής εντολών. Αφού καταλάβετε τα βασικά, μπορεί να είναι ένα αρκετά ισχυρό εργαλείο για τη γραφική εμφάνιση συνόλων δεδομένων. Το Gnuplot μπορεί να σχεδιάσει απευθείας από ένα μορφοποιημένο αρχείο κειμένου και τυχαίνει να έχουμε ένα από το βήμα ανάλυσης πριν. Μόλις υποδείξουμε στο gnuplot πού στο αρχείο βρίσκονται τα δεδομένα, μπορούμε να σχεδιάσουμε τις επιθυμητές τιμές. Θα χρησιμοποιήσω το χρόνο στον άξονα Χ και τη θερμοκρασία μας στον άξονα Υ. Η σχεδίαση χρόνου από την εμπειρία μου είναι η πιο δύσκολη καθώς πρέπει να λάβετε τη μορφή ώρας στο gnuplot ώστε να ταιριάζει με τη μορφή του αρχείου κειμένου. Αφού ολοκληρωθούν όλες οι επιλογές γραφικών παραστάσεων και κατά την προτίμησή σας, η Gnuplot μπορεί στη συνέχεια να δημιουργήσει μια εικόνα αυτού του γραφήματος. Αυτή θα είναι η εικόνα που θα χρησιμοποιήσουμε στην ιστοσελίδα μας αργότερα. Επέλεξα να πάω με μια εικόνα-p.webp

Βήμα 5: Ρύθμιση λογισμικού - Ρύθμιση κατωφλίου και αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου

Το όριο για την ειδοποίηση πρέπει να γίνει με δοκιμή και σφάλμα για τη ρύθμισή σας. το δωμάτιο που στεγάζει τα συστήματα δεν έχει παράθυρα, οπότε μόλις σταματήσει ο κλιματισμός μπορεί να ζεσταθεί πολύ γρήγορα. Αρχικά κοίταξα το σύνολο δεδομένων για μερικές ημέρες και παρακολούθησα τις διακυμάνσεις της θερμοκρασίας προτού αποφασίσω για την τιμή ειδοποίησης των 30 βαθμών C. Αυτό έχει οριστεί ως μεταβλητή εντός του πριθώνα. Αυτό μπορεί να μην φαίνεται πολύ υψηλό, αλλά μόλις ενεργοποιηθεί η ειδοποίηση, εξακολουθείτε να θέλετε να δώσετε στον εαυτό σας χρόνο για να διορθώσει το πρόβλημα πριν γίνει κρίσιμο.

Για λόγους απλότητας, στέλνω μεμονωμένα μηνύματα ηλεκτρονικού ταχυδρομείου στη λίστα αλληλογραφίας. Δεδομένου ότι η λίστα αλληλογραφίας είναι σύντομη, δεν ασχολήθηκα ποτέ με την αποστολή ενός μηνύματος ηλεκτρονικού ταχυδρομείου σε πολλούς παραλήπτες. Ένα πράγμα που πρέπει να σημειωθεί εδώ, Δεδομένου ότι τρέχω αυτό το σενάριο ως cron job κάθε 5 λεπτά, δεν θέλετε να στέλνετε μηνύματα ηλεκτρονικού ταχυδρομείου κάθε 5 λεπτά μόλις ενεργοποιηθεί το όριο. Για να το ξεπεράσω, γράφω την ημερομηνία και την ώρα της ειδοποίησης σε ένα αρχείο και ελέγχω αυτό το αρχείο πριν στείλω μηνύματα ηλεκτρονικού ταχυδρομείου για να διαπιστώσω εάν το σύστημα βρίσκεται ήδη σε κατάσταση ειδοποίησης. Μόλις βρίσκεται σε κατάσταση ειδοποίησης, θα αποστέλλει ξανά ένα μήνυμα ηλεκτρονικού ταχυδρομείου κάθε ώρα μετά την πρώτη ενεργοποίηση για όσο διάστημα το σύστημα είναι σε κατάσταση και ειδοποίησης. Με αυτόν τον τρόπο, το Gmail δεν εμποδίζει την αποστολή πολλών μηνυμάτων ηλεκτρονικού ταχυδρομείου σε σύντομο χρονικό διάστημα.

Βήμα 6: Ρύθμιση λογισμικού - HTML

Η παρακολούθηση ολόκληρου του συστήματος γίνεται μέσω ιστοσελίδας και για αυτό απαιτείται ένα πολύ βασικό σενάριο html. Οι εικόνες που δημιούργησε ο Gnuplot χρησιμοποιώ απλώς πίσω τις ίδιες διαστάσεις της εικόνας. Πιστεύω ότι πέρασα περίπου 3 μεγέθη για αυτές τις εικόνες που έδωσαν την καλύτερη εφαρμογή στην οθόνη μου. Πριν δημιουργήσουμε το σενάριο html, ας δημιουργήσουμε ένα φάκελο για αυτό. Από προεπιλογή, ο φάκελος φιλοξενίας ιστοσελίδων βρίσκεται στη διεύθυνση/var/www/. Αν και ο μοναδικός σκοπός αυτού του Raspberry pi είναι η παρακολούθηση αυτού του δωματίου και η έκδοση ειδοποιήσεων μέσω email, για καλή εξυπηρέτηση, δημιούργησα έναν ξεχωριστό φάκελο στο φάκελο/var/www/. Δεδομένου ότι αυτός ο φάκελος ανήκει στον βασικό χρήστη, πρέπει να χρησιμοποιήσετε το sudo για να δημιουργήσετε έναν φάκελο σε αυτήν τη θέση. sudo mkdir/var/www/temperatureΣε αυτό το παράδειγμα χρησιμοποίησα τη θερμοκρασία ως όνομα του φακέλου, αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα εδώ, αλλά να το θυμάστε, καθώς αυτό θα πρέπει να εισαχθεί στη γραμμή διευθύνσεων για να δείτε αυτήν τη σελίδα. Αυτή η διαδρομή αποθηκεύεται σε μια μεταβλητή μέσα στο σενάριο python. Ακόμη και αν η τοποθεσία φιλοξενίας πρέπει να αλλάξει ή το σενάριο πρέπει να τροποποιηθεί για άλλο σύστημα, μπορεί απλώς να αλλάξει από αυτήν τη μία θέση. Τώρα μπορούμε να δημιουργήσουμε το σενάριο html μας σε αυτόν τον φάκελο, θυμόμενοι να χρησιμοποιούμε το sudo μπροστά από κάθε εντολή θέλω να εκτελέσω εδώ. Θα σας συνιστούσα να ονομάσετε το σενάριο html "index.html" καθώς αυτό θα το απλοποιούσε όταν προσπαθείτε να βρείτε αυτήν τη σελίδα. Το κρίσιμο είναι να βεβαιωθείτε ότι το μέγεθος της εικόνας είναι το ίδιο με το μέγεθος της εικόνας από το Gnuplot. Για να δείτε αυτήν τη σελίδα, απλά πρέπει να εισαγάγετε τη διεύθυνση IP του Raspberry Pi ακολουθούμενη από /θερμοκρασία (ή ό, τι ονομάσατε ποτέ στον φάκελό σας) Έχω πολλά συστήματα που λειτουργούν και παρακολουθούν διαφορετικά πράγματα και όλα παράγουν κάποια γραφική έξοδο των αποτελεσμάτων τους. Έτσι δημιούργησα μια σελίδα που έχει συνδέσμους προς όλες αυτές τις σελίδες, ώστε να μην ανησυχώ για την εισαγωγή της διεύθυνσης κάθε φορά που θέλω να έχω πρόσβαση σε αυτές τις σελίδες.

Βήμα 7: Είμαι ζωντανός…

Το έχω χρησιμοποιήσει για να παρακολουθώ τη θερμοκρασία σε ένα δωμάτιο υπολογιστή, αλλά θα μπορούσαν να ήταν σχεδόν πολλά δεδομένα από οποιαδήποτε πηγή. Μόλις μπορεί να αποθηκευτεί σε ένα αρχείο κειμένου και γνωρίζετε ότι έχει τη μορφή, το Gnuplot μπορεί να κάνει τα υπόλοιπα. Ένα πράγμα που πρόσθεσα πρόσφατα σε αυτό το έργο είναι να στείλω ένα είδος email "καρδιακού παλμού". Δηλαδή την πρώτη του μήνα στις 9 το πρωί έχω ένα σενάριο που τρέχει και στέλνει email στη λίστα αλληλογραφίας για να τους ενημερώσω ότι το σύστημα λειτουργεί όπως πρέπει και όλα είναι καλά στο δωμάτιο.

Χρησιμοποιώντας τη λίστα cronjob ως:

Συνιστάται: