cs171062
fc7079b964
|
4 years ago | |
---|---|---|
LICENSE | 4 years ago | |
README.md | 4 years ago | |
Screenshot_1.png | 4 years ago | |
atmos-device.py | 4 years ago | |
atmos-server.py | 4 years ago | |
gmail_credentials.txt | 4 years ago | |
logo.png | 4 years ago | |
webapp.html | 4 years ago |
README.md
Εργασία εξαμήνου για το εργαστήριο Iot
Το project αποτελεί προσομοίωση ενός mini μετεωρολογικού σταθμού.
Λειτουργία
Ο σταθμός αποτελείται από την συσκευή, η οποία παράγει δεδομένα, έναν κεντρικό server που τα επεργάζεται, μια βάση δεδομένων που τα αποθηκεύει και ένα απλό website για την γραφική απεικόνιση τους προς τον χρήστη.
Συσκευή
Η συσκευή ανά 30 δευτερόλεπτα παράγει τυχαία δεδομένα (περιορισμένα σε ένα ρεαλιστικό εύρος) των παρακάτω καιρικών συνθηκών:
- θερμοκρασία
- ταχύτητα ανέμου
- υγρασία αέρα
- υγρασία εδάφους
,τα οποία ελέγχονται τοπικά για τυχόν μεταβολές. Στη περίπτωση που παρατηρηθεί μια μεταβολή του +-10% σε κάποιο καιρικό στοιχείο (σε σχέση με την ακριβώς προηγούμενη μέτρηση) τότε οι τρέχουσες συνθήκες αποστέλλονται στον server για περαιτέρω μελέτη. Επίσης σε περίπτωση που δεν έχει αποσταλλεί κάποια μέτρηση στο χρονικό διάστημα των 5 λεπτών τότε αποστέλλονται οι τρέχουσες συνθήκες.
Server
Ο server του project είναι υπεύθυνος για την συλλογή δεδομένων από τις συσκευές καθώς και για την real-time επεξεργασία τους βάσει ενός πρωτοκόλλου. Συγκεκριμένα, αν κατά την επεξεργασία διαπιστωθεί ότι η θερμοκρασία περιβάλλοντος αυξηθεί κατά 40% και η υγρασία αέρα μειωθεί κατά 50% τα τελευταία πέντε λεπτά τότε θα πρέπει να αποστέλλει ένα mail στον χρήστη και να τον ειδοποιεί για την αλλαγή αυτή.
Υλοποίηση
Η υλοποίηση μου για την εργασία έγινε αποκλειστικά σε software και όχι σε κάποια πλατφόρμα Raspberry PI όπως αρχικά ήταν σχεδιασμένο από τον υπεύθυνο καθηγητή.
Τo project ονομάστηκε ATMOS και ο κώδικας είναι αρκετά απλός.
before you continue, συγχωρέστε τον κώδικα καθώς και τις περιορισμένες γνώσεις μου σε front end. Ευχαριστώ.
Technologies
Η υλοποίηση έγινε με τα εξής:
- Python 3
- yagmail (python librayry για την αποστολή mail)
- InfluxDB (βάση δεδομένων)
- Grafana (γραφική απεικόνιση των δεδομένων)
Η αρχιτεκτονική του project απεικονίζεται παρακάτω: