8.3 KiB
Εργασία εξαμήνου για το εργαστήριο 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, για την δική σας γαλήνη μην δώσετε σημασία στον κακογραμμένο κώδικα. Ευχαριστώ.
Technologies
Η υλοποίηση έγινε με τα εξής εργαλεία:
- Python 3
- yagmail (python librayry για την αποστολή mail)
- InfluxDB (βάση δεδομένων)
- Grafana (γραφική απεικόνιση των δεδομένων)
Η αρχιτεκτονική του project απεικονίζεται παρακάτω:
Installation
Πρωτού τρέξετε οποιοδήποτε αρχείο, θα χρειαστείτε στο σύστημα σας τα εξής:
Python
για την εγκατάσταση της Python στο σύστημά σας, στο τερματικό τρέξτε τις παρακάτω εντολές:
$ sudo apt-get update
$ sudo apt-get install python3
Pip3
θα χρειαστούμε το εργαλείο pip3 για την εγκατάσταση του yagmail. Δίνουμε την εντολή:
$ sudo apt install python3-pip
Yagmail
στην συνέχεια για την εγκατάσταση του yagmail στο σύστημά σας, στο τερματικό τρέξτε την παρακάτω εντολή:
$ pip3 install yagmail
InfluxDB
Προσοχή!: οι παρακάτω εντολές είναι για συστήματα Ubuntu. Σε περίπτωση που έχετε Debian, ανατρέξτε [εδώ](sudo service influxdb start) και ακολουθήστε την παρόμοια διαδικασία.
στο τερματικό τρέξτε τις παρακάτω εντολές:
$ wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/lsb-release
$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
και τέλος
$ sudo apt-get update && sudo apt-get install influxdb $ pip3 install influxdb
και
$ sudo service influxdb start
, για να ξεκινήσει το service της βάσης
Grafana
αρχικά τρέξτε τις εντολές:
$ sudo apt-get install -y apt-transport-https
$ sudo apt-get install -y software-properties-common wget
$ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
$ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
εφόσον έγινε η προσθήκη των repositories τρέξτε τις παρακάτω εντολές για την εγκατάσταση του εργαλείου:
$ sudo apt-get update
$ sudo apt-get install grafana
και
$ sudo systemctl daemon-reload
$ sudo systemctl start grafana-server
$ sudo systemctl status grafana-server
με την τελευταία εντολή επιβεβαιώνετε ότι το service της Grafana είναι ενεργό και μπορείτε να προχωρήσετε στην παραμετροποίηση κάποιων απαραίτητων αρχείων
Configuration
Αρχικά το πρώτο πράγμα που πρέπει να κάνουμε είναι να φτιάξετε μια βάση δεδομένων. Ανοίξτε ένα τερματικό και τρέχετε τις εντολές:
$ influx -precision rfc3339
και έπειτα
create database atmos
και στη συνέχεια κλείνετε το παράθυρο
Επόμενο βήμα είναι το σετάρισμα της Grafana. Σε ένα browser μπείτε στη διεύθυνση http://localhost:3000/. Στα στοιχεία εισόδου συμπληρώστε admin για username και password και στη συνέχεια βάλτε έναν νέο κωδικό. Πρώτο μέλημα είναι η δημιουργία ενός data source.
κάνετε κλικ στο 'Add your first data source'
επιλέξτε την InfluxDb
στο Name συμπληρώστε:
AtmosDB
στο URL συμπληρώστε:
στο πεδιο Database της ενότητας InfluxDB Details συμπληρώστε:
atmos
και τέλος στο πεδίο Min Time Interval συμπληρώστε:
30
Δεύτερο μέλημα είναι η δημιουργία ενός dashboard. Στην αρχική του Grafana επιλέξτε το 'Create your first dashboard'
στη συνέχεια κάτω αριστερά επιλέξτε την βάση που μόλις δημιουργήσατε