Pi Messenger

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

Η λειτουργικότητα του project απαιτούσε μια αμφίδρομη, αλλά συνάμα ταυτόχρονη επικοινωνία μεταξύ των συσκευών. Έτσι χρησιμοποιήθηκε μια TCP σύνδεση, μεταξύ του Server και του Client που εκτελείται παράλληλα σε διαφορετικά νήματα. Επιπλέον, χρησιμοποιήθηκε ένα πρόσθετο νήμα για τη δημιουργία μηνυμάτων, ο Creator. Η πρόσβαση των συναρτήσεων στους ίδιους πόρους - π.χ. αρχεία - οδήγησε στη χρήση μεταβλητών αμοιβαίου αποκλεισμού, έτσι ώστε ο κάθε πόρος να κλειδώνεται και να ξεκλειδώνεται από το ίδιο νήμα, και να χρησιμοποιείται από ένα και μόνο νήμα κάθε στιγμή.

Το νήμα του Server περιμένει, σε παθητική λειτουργία, τις συσκευές να συνδεθούν και να επεξεργαστεί τα μηνύματα που λαμβάνει. Επιπλέον, για να εξοικονομηθεί ενέργεια, το νήμα του Client δε στέλνει συνεχώς μηνύματα, αλλά σε τακτά χρονικά διαστήματα του 1 λεπτού. Όταν “ξυπνήσει”, ελέγχει ποιες συσκευές στη λίστα είναι ενεργές, στέλνει όλα τα μηνύματα που τις οφείλει, και στη συνέχεια μετακινείται στην επόμενη συσκευή. Τέλος, για τη δημιουργία των νέων μηνυμάτων, ρυθμίστηκε μια διακοπή και συνδέθηκε με το νήμα του Creator (για να μην επηρεάζει τον Client), με τον χρόνο διακοπής να επιλέγεται τυχαία τη στιγμή της δημιουργίας του Creator μεταξύ 1 και 5 λεπτών και έπειτα είναι σταθερό.

Γεώργιος Μπαλαούρας
Γεώργιος Μπαλαούρας
Data Scientist

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

Σχετικά