Χρησιμοποιεί το WhatsApp MQTT
Χρησιμοποιεί το WhatsApp MQTT
Πίσω από τις σκηνές των εφαρμογών συνομιλίας
Υπάρχουν πολλές εφαρμογές συνομιλίας που χρησιμοποιούνται, αλλά μόνο μερικοί από αυτούς ξεχωρίζουν λόγω των ιδιοτήτων που φέρουν, που προσελκύουν χρήστες. Δύο από τις καλύτερες εφαρμογές συνομιλίας θεωρούνται ως Facebook Messenger και WhatsApp. Παρόλο που αυτές οι εταιρείες είναι διακριτικές για την αρχιτεκτονική των εφαρμογών τους, κατάφερα να βρω κομμάτια πληροφοριών από άρθρα και φόρουμ ιστολογίου. Αυτή είναι μια σύνθεση αυτών και αυτά τα γεγονότα μπορούν να είναι ξεπερασμένα, αφού όλες αυτές οι εφαρμογές τείνουν να ενημερώνονται συχνά.
1. Messenger Facebook
Το Messenger του Facebook είναι μία από τις πιο δημοφιλείς εφαρμογές συνομιλίας. Αρκετά χρόνια πίσω, ο Messenger δεν ήταν στην καλύτερη μορφή του. Η απόδοση και η χρήση του χώρου άρχισαν να καθυστερούν. Ο αγγελιοφόρος χρησιμοποίησε ένα μοντέλο με βάση την έλξη. Κάθε φορά που η εφαρμογή αναγνωρίστηκε με μια ελαφριά ειδοποίηση ώθησης σχετικά με τη διαθεσιμότητα νέων μηνυμάτων και στη συνέχεια η εφαρμογή θα τραβήξει και θα λάβει μια βαριά απάντηση JSON που περιέχει την προβολή συνομιλίας. Αλλά αργότερα, ο Messenger ενημερώθηκε για να χρησιμοποιήσει ένα μοντέλο Snapshot + Delta με βάση το Push.
Βασικά σημεία:
- Το Messenger είχε προβλήματα απόδοσης και χρήσης χώρου.
- Αρχικά χρησιμοποίησε ένα μοντέλο βασισμένο σε έλξη για ανάκτηση μηνυμάτων.
- Αργότερα, μετατράπηκε σε μοντέλο Snapshot + Delta βάσει ώθησης.
Ερωτήσεις:
- Ποια ήταν τα προβλήματα με το Messenger αρχικά?
- Σε ποιο μοντέλο έκανε το Messenger Switch για ανάκτηση μηνυμάτων?
Απαντήσεις:
- Το Messenger είχε θέματα απόδοσης και χρήσης χώρου.
- Το Messenger άλλαξε από ένα μοντέλο βάσει έλξης σε μοντέλο Snapshot + Delta με βάση το Push.
2. Whatsapp
Το Whatsapp βασίζεται στη στοίβα Lyme/Lyce.
Μέσα στα σκηνικά του Whatsapp, ένα από τα πιο συναρπαστικά και σημαντικά πράγματα είναι το backend γραμμένο στο Erlang. Το Erlang έχει τεράστια συμβολή στη δημιουργία του WhatsApp μία από τις καλύτερες εφαρμογές συνομιλίας στον κόσμο.
“Γιατί Erlang?«
Το Erlang είναι μια γενική, ταυτόχρονη, λειτουργική γλώσσα προγραμματισμού. Οι περιοχές όπου το Erlang είναι γνωστό ότι είναι χρήσιμο, χειρίζονται πολλές συνδέσεις και μηνύματα δρομολόγησης που δίνουν ορισμένες πτυχές του μηνύματος. Δεδομένου ότι το Erlang παρουσιάζει εξαιρετικές επιδόσεις σε αυτά τα σενάρια, οι περισσότερες εφαρμογές που σχετίζονται με την τηλεπικοινωνία χρησιμοποιούν το Erlang στις υλοποιήσεις τους.
Η αρχική εφαρμογή του διακομιστή WhatsApp έγινε χρησιμοποιώντας το Ejabberd, το οποίο είναι ένας διακομιστής μηνυμάτων anstant messaging jabber/xmpp γραμμένο στο erlang. Το πρωτόκολλο ανταλλαγής μηνυμάτων που χρησιμοποιείται για την εφαρμογή είναι το XMPP (πρωτόκολλο επεκτάσεως μηνυμάτων και παρουσίας).
Μια άλλη σημαντική πτυχή μιας εφαρμογής συνομιλίας είναι η βάση δεδομένων. Τις περισσότερες φορές, η βάση δεδομένων μπορεί να γίνει μια συμφόρηση απόδοσης σε εφαρμογές μηνυμάτων σε πραγματικό χρόνο. Το WhatsApp χρησιμοποιεί τη Mnesia, η οποία είναι γνωστό ότι είναι ένα διανεμημένο DBMS σε πραγματικό χρόνο. Μία από τις σημαντικές πτυχές της Μνησίας είναι ότι μπορεί να αναδιαμορφωθεί κατά το χρόνο εκτέλεσης.
Παρόλο που το WhatsApp θεωρείται αρκετά απλό σε σύγκριση με τις υπηρεσίες αγγελιοφόρων όπως το Facebook Messenger, ο σχεδιασμός του δεν είναι απλός. Το ακόλουθο διάγραμμα δείχνει μια πολύ αφηρημένη άποψη της αρχιτεκτονικής WhatsApp.
Automation Home Automation με βάση το WhatsApp: Πρωτόκολλο γεφύρωση με MQTT
Σε αυτό το άρθρο, θα ελέγξουμε συσκευές που δεν υποστηρίζουν το WhatsApp, αλλά υποστηρίζουν άλλα πρωτόκολλα επικοινωνίας όπως MQTT, TCP, IMAP κ.λπ. Εάν ένα σπίτι είναι εγκατεστημένο με συσκευές αυτοματισμού στο σπίτι που δεν υποστηρίζουν το WhatsApp, θα επικοινωνήσουμε με αυτές τις συσκευές (ελεγκτές) χρησιμοποιώντας πρωτόκολλα που υποστηρίζονται από αυτές τις συσκευές. Έτσι, θα μπορέσουμε να ελέγξουμε τις οικιακές συσκευές που συνδέονται με αυτές τις συσκευές.
Απαιτούνται εξαρτήματα:
- API WhatsApp που βασίζεται στο Python – Yowsup
- Βιβλιοθήκη MQTT – Paho
- ID Python
- Arduino Ide
Τεχνικές γνώσεις:
Η γεφύρωση πρωτοκόλλου μπορεί επίσης να ελέγχει συσκευές που δεν υποστηρίζουν το API WhatsApp. Αυτό σημαίνει ότι θα στείλουμε απλά τα δεδομένα από ένα πρωτόκολλο στο άλλο. Αυτό το άρθρο θα επιδείξει τη γέφυρα MQTT και WhatsApp για τον έλεγχο των συσκευών.
Διάγραμμα μπλοκ:
Όλη η επικοινωνία θα γίνει μέσω ενός σεναρίου Python, το οποίο είναι εγκατεστημένο σε σύστημα με βάση το Linux. Το σενάριο Python θα έχει το WhatsApp API και τη βιβλιοθήκη MQTT για να επικοινωνήσει με τα δύο πρωτόκολλα. Το σενάριο μπορεί να στείλει και να λάβει μηνύματα στο WhatsApp και στο MQTT.
Ερωτήσεις:
- Ποια είναι τα απαιτούμενα στοιχεία για την αυτοματοποίηση σπιτιού με το WhatsApp με το MQTT?
- Ποιος είναι ο σκοπός της γεφύρωσης του πρωτοκόλλου στην αυτοματοποίηση του σπιτιού?
Απαντήσεις:
- Τα απαιτούμενα στοιχεία για την αυτοματοποίηση του WhatsApp με το MQTT είναι το API WhatsApp που βασίζεται στο Python (YowsUp), η βιβλιοθήκη MQTT (PAHO), η Python ID και η Arduino IDE.
- Η γεφύρωση πρωτοκόλλου επιτρέπει την επικοινωνία και τον έλεγχο των συσκευών που δεν υποστηρίζουν το API WhatsApp στέλνοντας δεδομένα από ένα πρωτόκολλο (e.σολ., Mqtt) σε άλλο.
Χρησιμοποιεί το WhatsApp MQTT
Αφού η σύνδεση είναι επιτυχής, μπορούμε να στείλουμε μηνύματα χρησιμοποιώντας αυτό
δημοσιεύω.single (θέμα, message_data, hostname =”μεσίτης.hivemq.com”·
Πίσω από τις σκηνές των εφαρμογών συνομιλίας
Υπάρχουν πολλές εφαρμογές συνομιλίας. Αλλά μόνο λίγοι από αυτούς ξεχωρίζουν λόγω των ιδιοτήτων που φέρουν που προσελκύουν τους χρήστες. Δύο από αυτές τις καλύτερες εφαρμογές συνομιλίας θεωρούνται ως Facebook Messenger και WhatsApp. Παρόλο που αυτές οι εταιρείες είναι διακριτές σχετικά με την αρχιτεκτονική των εφαρμογών τους, κατάφερα να βρω κομμάτια και πληροφορίες από άρθρα και φόρουμ ιστολογίου. Αυτή είναι μια σύνθεση αυτών και αυτά τα γεγονότα μπορούν να είναι ξεπερασμένα, καθώς όλες αυτές οι εφαρμογές τείνουν να ενημερώνονται συχνά.
1. Messenger Facebook
Facebook’Το M Messenger είναι μία από τις πιο δημοφιλείς εφαρμογές συνομιλίας. Αρκετά χρόνια πίσω, ο Messenger Wasn’t σε αυτό’το καλύτερο σχήμα. Το’Η απόδοση και η χρήση του χώρου άρχισαν να καθυστερούν. Ο αγγελιοφόρος χρησιμοποίησε ένα μοντέλο με βάση την έλξη. Κάθε φορά, η εφαρμογή αναγνωρίστηκε με μια ελαφριά ειδοποίηση ώθησης σχετικά με τη διαθεσιμότητα νέων μηνυμάτων και στη συνέχεια η εφαρμογή θα τραβήξει και θα λάβει μια βαριά απάντηση JSON που περιέχει την προβολή συνομιλίας. Αλλά αργότερα ο Messenger ενημερώθηκε για να χρησιμοποιήσει ένα μοντέλο Snapshot + Delta με βάση το Push.
Το MQTT είναι ένα πρωτόκολλο συνδεσιμότητας μηχανής προς μηχανή (M2M). Σχεδιάστηκε ως εξαιρετικά ελαφριά μεταφορά μηνυμάτων δημοσίευσης/εγγραφής – MQTT.org
Μια άλλη ενδιαφέρουσα αλλαγή που έχει γίνει στην Messenger Infrastructure μεταβαίνει από το JSON σε Λιτότης. Αυτή η σημαντική αλλαγή έχει προκαλέσει μείωση του μεγέθους του ωφέλιμου φορτίου κατά 50%.
Έχουν πραγματοποιηθεί σημαντικές βελτιώσεις και στην πλευρά του Sever. Νωρίτερα κάθε μήνυμα γράφτηκε σε μια παραδοσιακή βαθμίδα αποθήκευσης πριν στείλετε το Messenger μια σκανδάλη για να διαβάσετε το μήνυμα από το επίπεδο αποθήκευσης που έκανε την κλιμάκωση προβληματική. Αλλά η διαδικασία αντικαταστάθηκε πλήρως χρησιμοποιώντας μια παραγγελθείσα εφαρμογή ουράς που δημιουργήθηκε από το ίδιο το Facebook που ονομάζεται “Ίρις”. Ένα από τα ενδιαφέροντα χαρακτηριστικά της ίριδας είναι η χρήση των δεικτών που διευκολύνει τη συγχρονισμό μηνυμάτων μεταξύ του Messenger και της βαθμίδας αποθήκευσης. Η ακόλουθη εικόνα δείχνει σαφώς πώς συμβαίνει ο συγχρονισμός μηνυμάτων στο Messenger
Η παραπάνω περιγραφόμενη διαδικασία ήταν σε θέση να καταργήσει την εξάρτηση της παράδοσης μηνυμάτων στη διαθεσιμότητα και την ταχύτητα γραφής του βαθμού αποθήκευσης που χρησιμοποιείται. Η Ίρις αποθηκεύει προσωρινά τα μηνύματα σε αυτό’S Horking Storage μέχρι να συγχρονιστούν όλα τα μηνύματα.
Ένα άλλο ενδιαφέρον γεγονός είναι ότι η αποθήκευση υποστήριξης της ίριδας έχει κατασκευαστεί χρησιμοποιώντας MySQL και Flash.
2. Whatsapp
Το Whatsapp βασίζεται στη στοίβα Lyme/Lyce.
Μέσα στις σκηνές του Whatsapp, ένα από τα πιο συναρπαστικά και τα σημαντικά πράγματα είναι το backend γραμμένο στο Erlang. Το Erlang έχει τεράστια συμβολή στη δημιουργία του WhatsApp μία από τις καλύτερες εφαρμογές συνομιλίας στον κόσμο.
Γιατί ο Erlang ?
Το Erlang είναι μια γενική, ταυτόχρονη, λειτουργική γλώσσα προγραμματισμού. Περιοχές όπου είναι γνωστό ότι είναι χρήσιμες
> Χειρισμός πολλών συνδέσεων
> μηνύματα δρομολόγησης που δίνουν ορισμένες πτυχές του μηνύματος
Δεδομένου ότι το Erlang παρουσιάζει μια εξαιρετική απόδοση στα δεδομένα σενάρια, τα περισσότερα από τις εφαρμογές που σχετίζονται με την τηλεπικοινωνία χρησιμοποιούν το Erlang στις υλοποιήσεις τους.
Η αρχική εφαρμογή του διακομιστή WhatsApp έγινε χρησιμοποιώντας το Ejabberd. Που είναι ένας διακομιστής μηνυμάτων ανοιχτού κώδικα jabber/xmpp που γράφτηκε στο erlang. Το πρωτόκολλο ανταλλαγής μηνυμάτων που χρησιμοποιείται για την εφαρμογή είναι το XMPP (πρωτόκολλο επεκτάσεως μηνυμάτων και παρουσίας).
Μια άλλη σημαντική πτυχή μιας εφαρμογής συνομιλίας είναι η βάση δεδομένων. Τις περισσότερες φορές, η βάση δεδομένων μπορεί να γίνει συμφόρηση απόδοσης σε εφαρμογές μηνυμάτων σε πραγματικό χρόνο. Το WhatsApp χρησιμοποιεί τη Mnesia που είναι γνωστό ότι είναι ένα DBMS που διανέμεται σε πραγματικό χρόνο. Μία από τις σημαντικές πτυχές της Μνησίας είναι ότι μπορεί να αναδιαμορφωθεί στο χρόνο εκτέλεσης.
Αν και το WhatsApp θεωρείται αρκετά απλό σε σύγκριση με τις υπηρεσίες Messenger όπως το Facebook Messenger, αυτό’ΣΧΕΔΙΑΣΜΟΣ ISN’ένα απλό. Το ακόλουθο διάγραμμα δείχνει μια πολύ αφηρημένη άποψη της αρχιτεκτονικής WhatsApp,
Automation Home Automation με βάση το WhatsApp: Πρωτόκολλο γεφύρωση με MQTT
Σε αυτό το άρθρο, θα ελέγξουμε συσκευές που δεν υποστηρίζουν το WhatsApp, αλλά υποστηρίζουν άλλα πρωτόκολλα επικοινωνίας όπως MQTT, TCP, IMAP κ.λπ. Εάν ένα σπίτι είναι εγκατεστημένο με συσκευές αυτοματισμού στο σπίτι που δεν υποστηρίζουν το WhatsApp, θα επικοινωνήσουμε με αυτές τις συσκευές (ελεγκτές) χρησιμοποιώντας πρωτόκολλα που υποστηρίζονται από αυτές τις συσκευές.
Έτσι, θα μπορέσουμε να ελέγξουμε τις οικιακές συσκευές που συνδέονται με αυτές τις συσκευές.
Απαιτούνται εξαρτήματα
Απαιτούνται εργαλεία/ βιβλιοθήκες που απαιτούνται
API WhatsApp που βασίζεται στο Python-Yowsup
Βιβλιοθήκη MQTT – Paho
ID Python
Arduino Ide
Τεχνικές γνώσεις
Η γεφύρωση πρωτοκόλλου μπορεί επίσης να ελέγχει συσκευές που δεν υποστηρίζουν το API WhatsApp. Αυτό σημαίνει ότι θα στείλουμε απλά τα δεδομένα από ένα πρωτόκολλο στο άλλο. Αυτό το άρθρο θα επιδείξει τη γέφυρα MQTT και WhatsApp για τον έλεγχο των συσκευών.
Διάγραμμα μπλοκ
Εικόνα 1 γεφύρωση πρωτοκόλλου WhatsApp και MQTT
Όλη η επικοινωνία θα γίνει μέσω ενός σεναρίου Python, το οποίο είναι εγκατεστημένο στο σύστημα που βασίζεται στο Linux. Το σενάριο Python θα έχει API WhatsApp και MQTT βιβλιοθήκη για να επικοινωνήσει με τα δύο πρωτόκολλα.
Το σενάριο μπορεί να στείλει και να λάβει μηνύματα στο WhatsApp και στο MQTT.
Ένας μικροελεγκτής (Atmega 328P) συνδέεται με τις συσκευές στο σπίτι μέσω κυκλωμάτων αναμετάδοσης. Για σκοπούς επικοινωνίας, το ESP είναι συνδεδεμένο με τον μικροελεγκτή.
Το ESP είναι εγκατεστημένο με κωδικό που λαμβάνει μηνύματα σε ένα συγκεκριμένο θέμα και στέλνει εντολές στον μικροελεγκτή μέσω σειριακού UART.
Έτσι, τώρα που οποιοσδήποτε χρήστης στέλνει μηνύματα στο WhatsApp, πηγαίνει στον μικροελεγκτή μέσω του σεναρίου Python.
Διάγραμμα κυκλώματος
Αυτή η πλακέτα συνδέεται με διακόπτη φωτός με κύκλωμα αναμετάδοσης. Μπορούμε επίσης να πάρουμε το σκάφος Arduino UNO αντί του προσαρμοσμένου πίνακα 328.
Πώς λειτουργεί το σύστημα
Όταν ένας χρήστης στέλνει ένα μήνυμα στο σύστημα Linux στο WhatsApp, το σενάριο διαβάζει το μήνυμα. Η συσκευή IoT, η οποία υποστηρίζει το πρωτόκολλο MQTT, ακούει τα μηνύματα σε ένα συγκεκριμένο θέμα. Αυτά τα μηνύματα εντοπίζουν τη συσκευή για να ενεργοποιήσουν και να απενεργοποιηθούν η συσκευή.
Έτσι, τώρα τα μηνύματα που διαβάζονται από το σενάριο Python έχουν σαρωθεί για εντολές εάν βρεθούν. Οι συγκεκριμένες εντολές αποστέλλονται στη συσκευή στο πρωτόκολλο MQTT. Όταν η συσκευή διαβάζει αυτές τις εντολές, ενεργεί επάνω τους, γυρίζοντας τις καρφίτσες υψηλής (ON), χαμηλό (off)
Κατανόηση του πηγαίου κώδικα
Έχουμε δύο τύπους πηγαίου κώδικα, έναν για το Arduino + ESP και ένα άλλο για το σενάριο Python που είναι εγκατεστημένο στο Linux.
Κωδικός για Arduino
Το Arduino είναι εγκατεστημένο με έναν κωδικό που λαμβάνει δεδομένα για τη σειρά. Όταν ληφθεί συγκεκριμένη δέσμευση όπως “ΕΠΙ” Θα ενεργοποιήσει τον ακροδέκτη αναμετάδοσης (υψηλό) και τη λήψη “ΜΑΚΡΙΑ ΑΠΟ” απενεργοποιεί το ρελέ.
αν (rec == “ΕΠΙ”·
DigitalWrite (ρελέ, υψηλό);
Κατα συρροη.Τυπώνω(“Το ρελέ είναι ενεργοποιημένο”)
rec = “”;
>
αν (rec == “ΜΑΚΡΙΑ ΑΠΟ”·
DigitalWrite (ρελέ, χαμηλό);
Κατα συρροη.Τυπώνω(“Το ρελέ είναι απενεργοποιημένο”)
rec = “”;
>
Κωδικός για ESP
Το ESP συνδέεται με το Arduino σε μια σειριακή θύρα και έχει επίσης εγγραφεί σε ένα θέμα MQTT για λήψη δεδομένων από αυτό. Βασικά, στέλνει τα δεδομένα που ελήφθησαν στο θέμα MQTT στη σειριακή θύρα και τα δεδομένα από το σειριακό στο θέμα MQTT.
Για να μάθετε περισσότερα για το ESP και το MQTT, ανατρέξτε στα προηγούμενα άρθρα μας.
Κωδικός για σενάριο Python
Το σενάριο Python είναι εγκατεστημένο με “Φουσκωτό” Whatsapp API για να διαβάσετε και να στείλετε μηνύματα από το WhatsApp. Υπάρχουν δύο αρχεία σε αυτό το σενάριο τρέξιμο.ΡΥ και στρώμα.ΡΥ.
Κατανόηση της εκτέλεσης αρχείων.ΡΥ
Θα καλέσουμε τις βιβλιοθήκες μας στην κορυφή του αρχείου
από το yowsup.στοίβες εισαγωγής yowstackbuilder
από το yowsup.στρώμα.auth import autherror
από το yowsup.Τα στρώματα εισάγουν yowlayerevent
από το yowsup.στρώμα.Εισαγωγή δικτύου yownetworklayer
από το yowsup.env εισαγωγή yowsupenv
Θα επισυνάψουμε επίσης το αρχείο στρώματος στην κορυφή επειδή η κύρια τάξη “Ηχρώτης” υπάρχει μέσα σε αυτό το αρχείο.
από την εισαγωγή στρώματος echolayer
Μπορούμε να ονομάσουμε το αρχείο Layer οτιδήποτε, αλλά πρέπει να βάλουμε το ίδιο όνομα εδώ.
μεσα στην ΡΥ, Θα δηλώσουμε την κύρια μεταβλητή μας για τον κωδικό πρόσβασης και τα συμβάντα που θέλουμε να συμβεί.
διαπιστευτήρια = (“91xxxxxxxxxxx”, “HKHWVW5/WNR493HXK8NKL/HTPNO =”·
Τώρα τα μεταφέρουμε στο στρώμα και χτίζουμε τη στοίβα. Επίσης, ο βρόχος που θα κρατήσει τη σύνδεση ζωντανά ονομάζεται.
σωρός.SetCredentials (διαπιστευτήρια)
σωρός.BroadcastEvent (YowlayEredvent (YownetWorkLayer.Event_state_connect))
σωρός.loop () #Αυτό είναι το πρόγραμμα mainloop
Κατανόηση του επιπέδου αρχείων.ΡΥ
Αυτό το αρχείο περιέχει τη βιβλιοθήκη πρωτοκόλλου για MQTT και είναι σε θέση να λαμβάνει μηνύματα από το WhatsApp.
Υποτιμώντας τον τρόπο λήψης μηνυμάτων από το WhatsApp
Αυτό το αρχείο περιέχει την κλάση που θα λάβει τυχόν μηνύματα που εισέρχονται σε αυτόν τον αριθμό και αυτό θα είναι μια οντότητα επανάκλησης, ώστε οποιοσδήποτε άλλος βρόχος μπορεί να εκτελεστεί μέσα στο αρχείο.
@ProtocolentityCallback (“μήνυμα”·
def onmessage (self, messageProtocolentity):
Εαν αληθεύει:
Δεδομένα μηνυμάτων και αριθμός αριθμού από την οποία ήρθε το μήνυμα μπορεί να ληφθεί παρακάτω.
incomming_message_data = messageProtocolentity.getBody ()
Αυτό θα λάβει το σώμα του μηνύματος που είναι το πραγματικό μήνυμα. Θα αποθηκεύσει σε μεταβλητή συμβολοσειράς “incomming_message_data”
incomming_message_sender = messageProtocolentity.getFrom ()
Αυτή η γραμμή θα αποθηκεύσει τον εισερχόμενο αριθμό επικοινωνίας μηνυμάτων στη μεταβλητή συμβολοσειράς “incomming_message_sender”
Κατανόηση των στρωμάτων MQTT για αποστολή και λήψη
Πρώτα απ ‘όλα, θα εισαγάγουμε βιβλιοθήκες που είναι απαραίτητες για το MQTT.
Εισαγωγή Paho.MQTT.πελάτης ως MQTT
Εισαγωγή Paho.MQTT.Δημοσίευση ως δημοσίευση
Τώρα θα δηλώσουμε μια μεταβλητή που ονομάζεται πελάτης με τον πελάτη MQTT.
πελάτης = MQTT.Πελάτης()
Τώρα θα κάνουμε δύο επανάκλησης λειτουργιών 1. Για τη λήψη μηνυμάτων, 2. Κάνοντας κάτι στη σύνδεση επιτυχής.
πελάτης.on_connect = on_connect
πελάτης.on_message = on_message
Τέλος, θα συνδεθούμε με τον μεσίτη MQTT σε ένα λιμάνι και θα ξεκινήσουμε τον πελάτη μέσα σε ένα βρόχο που δεν μπλοκάρει
πελάτης.συνδέω-συωδεομαι(“μεσίτης.hivemq.com”, 1883, 60)
πελάτης.loop_start ()
Αφού η σύνδεση είναι επιτυχής, μπορούμε να στείλουμε μηνύματα χρησιμοποιώντας αυτό
δημοσιεύω.single (θέμα, message_data, hostname =”μεσίτης.hivemq.com”·
Όταν λαμβάνεται κάποιο μήνυμα στο WhatsApp, αποθηκεύεται σε μια συμβολοσειρά και στη συνέχεια αυτή η συμβολοσειρά σαρώνεται για ορισμένες λέξεις -κλειδιά που ορίζουν αυτό το μήνυμα ως εντολή για να ενεργοποιήσετε/απενεργοποιήσετε το φως.
Elif (“αναμμένα φώτα” In incomming_msg): #Κάντε κάτι στον αγώνα
Εάν η κατάσταση ταιριάζει, στέλνουμε την εντολή ελέγχου στον μεσίτη MQTT.
δημοσιεύω.μονόκλινο(“TS/LIGHT”, “ΕΠΙ”, Όνομα κεντρικού υπολογιστή =”μεσίτης.hivemq.com”·
Όταν έχει ληφθεί οποιοδήποτε μη αναγνωρισμένο μήνυμα, το μήνυμα στο WhatsApp απαντά ότι αυτό δεν είναι άκυρο.
Και έτσι μπορούμε να χρησιμοποιήσουμε το πρωτόκολλο γεφύρωση για να ελέγξουμε τις συσκευές με το WhatsApp.
xanecs/axiom
Αυτή η δέσμευση δεν ανήκει σε κανένα υποκατάστημα σε αυτό το αποθετήριο και μπορεί να ανήκει σε ένα πιρούνι έξω από το αποθετήριο.
Διακόπτες/ετικέτες
Ετικέτες υποκαταστημάτων
Δεν μπορούσα να φορτώσω κλάδους
Τίποτα για εμφάνιση
Δεν μπορούσα να φορτώσω ετικέτες
Τίποτα για εμφάνιση
Όνομα ήδη χρησιμοποιείται
Υπάρχει ήδη μια ετικέτα με το παρεχόμενο όνομα κλάδου. Πολλές εντολές GIT δέχονται τόσο ονόματα ετικετών όσο και ονόματα υποκαταστημάτων, οπότε η δημιουργία αυτού του κλάδου μπορεί να προκαλέσει απροσδόκητη συμπεριφορά. Είστε βέβαιοι ότι θέλετε να δημιουργήσετε αυτό το υποκατάστημα?
Ακύρωση Δημιουργία
- Τοπικός
- Κωδικοποιητικοί χώροι
Https github cli
Χρησιμοποιήστε το git ή το checkout με το SVN χρησιμοποιώντας τη διεύθυνση URL Web.
Εργαστείτε γρήγορα με το επίσημο CLI μας. Μάθετε περισσότερα για το CLI.
Απαιτείται
Συνδεθείτε για να χρησιμοποιήσετε χώρους κωδικοποίησης.
Εκκίνηση της επιφάνειας εργασίας GitHub
Εάν δεν συμβεί τίποτα, κατεβάστε το GitHub Desktop και δοκιμάστε ξανά.
Εκκίνηση της επιφάνειας εργασίας GitHub
Εάν δεν συμβεί τίποτα, κατεβάστε το GitHub Desktop και δοκιμάστε ξανά.
Εκκίνηση Xcode
Εάν δεν συμβεί τίποτα, κατεβάστε το xcode και δοκιμάστε ξανά.
Εκκίνηση του κώδικα Visual Studio
Ο κωδικός σας θα ανοίξει μόλις έτοιμο.
Υπήρχε ένα πρόβλημα προετοιμασίας του κωδικοποιητικού χώρου σας, δοκιμάστε ξανά.
Τελευταία δέσμευση
Στατιστικά στοιχεία
Αρχεία
Αποτυχία φόρτωσης τελευταίων πληροφοριών δέσμευσης.
Τελευταίο μήνυμα δέσμευσης
Δεσμευμένος
Ανάγνωση.MD
Το Axiom είναι ένα πρόγραμμα Python που συνδέεται με έναν διακομιστή MQTT και παρέχει μια διεπαφή στην υπηρεσία μηνυμάτων WhatsApp.
- Κλωνοποιήστε αυτό το repo.
- Εγκαταστήστε τις εξαρτήσεις
PIP Εγκατάσταση yowsup2 paho-mqtt
- Επεξεργασία waserver/config.ΡΥ . Τα διαπιστευτήρια μπορεί να απαιτηθούν από το Yowsup2 CLI. Δες εδώ.
- Τρέξιμο
Python Waserver/Waserver.ΡΥ
- Δημιουργήστε ένα waserver/config-prod.ΡΥ
- Η δημιουργία της εικόνας με το παρεχόμενο dockerfile . Τα ξεχωριστά αρχεία ρυθμίσεων επιτρέπουν διαφορετικές διαμορφώσεις dev/παραγωγής.
Για να λάβετε μηνύματα εγγραφείτε στο WhatsApp/εισερχόμενο . Ένα μήνυμα θα μοιάζει με αυτό:
< "τηλέφωνο": «4915112345678«, "μήνυμα": «Γεια σας από έναν άνθρωπο!« >
Ο αριθμός τηλεφώνου σε αυτό το παράδειγμα θα γράφεται κανονικά +49 151 12345678 . Για τα μηνύματα ομάδας, ο αριθμός τηλεφώνου βρίσκεται στο έντυπο 4915112345678-1400000000 (αριθμός τηλεφώνου του δημιουργού ομάδας και του unix timestamp της δημιουργίας).
Για να στείλετε μηνύματα, δημοσιεύστε στο WhatsApp/Outoing:
< "τηλέφωνο": «4915112345678«, "μήνυμα": «Γεια σας από ένα bot!« >
Αυτήν τη στιγμή υπάρχει μόνο στην εντολή που εφαρμόζεται
Για να λάβετε πληροφορίες ομάδας (μέλη, τίτλος), δημοσιεύστε στο WhatsApp/CMD
< "CMD": «group_info«, "τηλέφωνο": «4915112345678-1400000000«, "επανάκληση": «any_string_here« >
Η επανάκληση θα χρησιμοποιηθεί για τον εντοπισμό της απάντησης σε αυτήν την εντολή. Συνιστάται να χρησιμοποιήσετε ένα UUID για αυτό. Η απάντηση θα δημοσιευθεί στο θέμα WhatsApp/IQ:
< "CMD": «group_info«, "επανάκληση": «any_string_here«, "Groupid": «4915112345678-1400000000«, "Συμμετέχοντες": < "4915112345678": «διαχειριστής«, "4915187654321": μηδενικό, >, "θέμα": «Παράδειγμα ομάδας« >
Σχετικά με
MQTT-Interface για την υπηρεσία μηνυμάτων WhatsApp
Πώς το WhatsApp ουρά τα μηνύματά σας?
Ελάο εκεί, σύντροφος! Το’θα είναι σχεδόν δύο χρόνια της πανδημίας σε λίγους μήνες, και ο τρόπος που έχουμε προσαρμόσει τον τρόπο ζωής μας, ω αγόρι! Όλοι μείναμε συνδεδεμένοι και ακόμη και πήραμε τη δουλειά μας χρησιμοποιώντας διάφορες πλατφόρμες μηνυμάτων. Η χρήση πολλαπλών πλατφορμών, όπως το WhatsApp, το Instagram και το Facebook, αυξήθηκαν σημαντικά. Το Whatsapp ήταν αυτό με την υψηλότερη χρήση και με την Ινδία να είναι Whatsapp’η μεγαλύτερη αγορά φέτος! Αλλά γνωρίζατε ότι το WhatsApp χρησιμοποιεί μία από τις πολύ βασικές δομές δεδομένων, ουρά, η οποία χρησιμοποιείται από αυτήν την πλατφόρμα ανταλλαγής μηνυμάτων για την επιτυχή παράδοση των μηνυμάτων σας?
Τι είναι η ουρά?
Μια ουρά, όπως υποδεικνύει το όνομα, είναι ακριβώς όπως αυτή στην πραγματική ζωή. Μια ουρά έχει δύο άκρα, ένα κεφάλι και μια ουρά, και τα αντικείμενα προστίθενται μόνο στο άκρο της ουράς και αφαιρούνται από το άκρο του κεφαλιού. Φανταστείτε μια ομάδα ανθρώπων που περιμένουν σε μια ουρά για να πάρετε πίτσα και το πρώτο άτομο που έφτασε εκεί, εγώ.μι., Το πρώτο στη γραμμή, θα δοθεί προτίμηση και θα ήταν αυτός που θα λάβει την πίτσα ή “διωγμένος.” Αυτή η ιδέα είναι τεχνικά γνωστή ως FIFO ή πρώτα στο First Out.
Τι είναι μια ουρά μηνυμάτων?
Ως ενδεικτικό του τίτλου, μια ουρά μηνυμάτων είναι μια ουρά γεμάτη μηνύματα. Αυτή η ασύγχρονη υπηρεσία χρησιμοποιείται για τη μεταφορά μηνυμάτων ή δεδομένων μεταξύ δύο ατόμων ή μιας ομάδας ανθρώπων. Το άτομο που στέλνει το μήνυμα στην ουρά είναι ο παραγωγός και αυτός που λαμβάνει το μήνυμα είναι ο καταναλωτής. Από την ουρά’Spointing S, ένα μήνυμα είναι απλώς μια συλλογή από bytes και μπορεί να είναι οτιδήποτε από ένα κανονικό μήνυμα κειμένου ή ένα μήνυμα που περιέχει έναν πελάτη’S Παραγγελία ή ακόμα και ένα μήνυμα σφάλματος.
- Σε ένα σύστημα ουράς μηνυμάτων, υπάρχουν πολλοί διακομιστές γνωστοί ως μεσίτες. Αυτοί οι μεσίτες είναι εξαιρετικά αξιόπιστοι και κλιμακωτές και σχηματίζουν ένα σύμπλεγμα. Μόλις παραχθεί ένα μήνυμα από την πλευρά του παραγωγού, το μήνυμα αποθηκεύεται στην ουρά μηνυμάτων έως ότου ο καταναλωτής είναι διαθέσιμος για να λάβει τα μηνύματα.
- Μόλις ο καταναλωτής ή ο παραλήπτης είναι διαθέσιμος για να λάβει το μήνυμα, η ουρά ωθεί το μήνυμα στον καταναλωτή και περιμένει τον καταναλωτή να επεξεργαστεί το μήνυμα εξ ολοκλήρου.
- Αφού επεξεργαστεί ο καταναλωτής το μήνυμα, διαγράφεται εξ ολοκλήρου από την ουρά.
Λύσεις ουράς μηνυμάτων
Υπάρχουν πολλαπλές ανοιχτές πηγές και ελεύθερο λογισμικό που χρησιμοποιείται για ουρά μηνυμάτων.
Καφκά: Apache Kafka’Το σύστημα ανταλλαγής μηνυμάτων είναι ένα καλά σχεδιασμένο σύστημα δημοσίευσης και ένα σύστημα αναμονής που μπορεί να χειριστεί πολύ υψηλούς όγκους δεδομένων. Το Kafka είναι ανθεκτικό σε σφάλματα και συνεχώς παρακολουθεί τους κόμβους μέσω διαφόρων υπηρεσιών, καθιστώντας την αποτελεσματική συνεργασία με.
Κουνέλι MQ: Το RabbitMQ είναι ένα από τα πιο χρησιμοποιούμενα συστήματα διαμεσολάβησης ανοιχτής προέλευσης που εφαρμόζουν αρχικά το πρωτόκολλο Advanced Message Queing (AMQP). Οι ουρές είναι ένα μόνο νήμα σε αυτό το σύστημα και μια ουρά μπορεί να χειριστεί έως και 50.000 μηνύματα.
Amazon SQS: Η υπηρεσία απλής ουράς Amazon είναι ένα σύστημα κατανεμημένου μηνύματος που χρησιμοποιείται για την αποσύνδεση διαφόρων μικροεπιχειρήσεων και εφαρμογών χωρίς να τους απαιτεί να διατηρούν τις ουρές μηνυμάτων τους. Το Amazon SQS παρέχει επίσης ένα API υπηρεσίας ιστού που οι χρήστες μπορούν να έχουν πρόσβαση χρησιμοποιώντας κοινές γλώσσες προγραμματισμού.
ActiveMq: Το ActiveMq είναι ένα άλλο σύστημα μεσίτη μηνυμάτων που γράφτηκε στο Java και διαθέτει ένα πλήρες πελάτη υπηρεσίας μηνυμάτων Java. Έχει ενσωματωμένη υποστήριξη AJAX και REST και υποστηρίζει διάφορα πρωτόκολλα όπως AMQP, MQTT, Stomp κ.λπ.
Πώς παραδίδει το WhatsApp τα μηνύματά σας?
Πριν φτάσουμε στο πώς τα μηνύματα βρίσκονται στην ουρά στο WhatsApp, ας’να καταλάβετε την ίδια την εφαρμογή. Κωδικοποιημένος χρησιμοποιώντας τη γλώσσα προγραμματισμού Erlang, το WhatsApp είναι το πιο χρησιμοποιούμενο με σχεδόν 2 δισεκατομμύρια μηνιαίους χρήστες. Το Whatsapp χρησιμοποιεί το πρωτόκολλο Extensible Extensible Messaging και Presence (XMPP) για να διευκολύνει τα άμεσα μηνύματα μεταξύ δύο μερών. Αρχικά, το WhatsApp ξεκίνησε χρησιμοποιώντας τον διακομιστή Ejabbered. Με τόσο μεγάλο αριθμό χρηστών καθημερινά, είναι σημαντικό οι διακομιστές να χειρίζονται αποτελεσματικά το φορτίο και το σύστημα είναι αξιόπιστο. Στα χρόνια, ο κώδικας αναδιαρθρώθηκε, αλλάζοντας από το XMPP σε ένα εσωτερικά σχεδιασμένο πρωτόκολλο και τροποποιώντας ορισμένα βασικά εξαρτήματα για να βελτιωθεί και να επιτευχθεί η βέλτιστη απόδοση του διακομιστή.
Όπως και όταν στέλνετε ένα μήνυμα, βρίσκεται στην ουρά στο διακομιστή έως ότου ο δέκτης επανασυνδεθεί για να ανακτήσει αυτά τα μηνύματα. Έτσι, όταν στέλνετε μήνυμα στον φίλο σας και αν’t έχουν πρόσβαση στο διαδίκτυο για να λαμβάνετε τα μηνύματα, αυτά τα μηνύματα είναι ουρές στους διακομιστές WhatsApp και αυτή η διαδικασία είναι γνωστή ως το “αποθήκευση και προώθηση” μηχανισμός. Μόνο όταν ο δέκτης αποδέχεται τα μηνύματα, σκουπίζονται από το διακομιστή και διαγράφονται από την ουρά. Αργότερα, όταν ο δέκτης έχει σύνδεση στο Διαδίκτυο, αυτά τα μηνύματα παραδίδονται σε αυτά ή ανακτώνται από τον δέκτη. Όταν ο δέκτης αναγνωρίσει τελικά ότι έχει ληφθεί το μήνυμα, η επιτυχής ανάκτηση του μηνύματος αποστέλλεται πίσω στον διακομιστή WhatsApp και αυτό είναι όταν βλέπετε το διπλό σημάδι δίπλα στα μηνύματά σας.
Αυτές οι δομές δεδομένων προχωρούν πολύ, και η καλή κατανόηση αυτού θα σας οδηγήσει σε μεγάλο βαθμό. Έτσι, την επόμενη φορά που ο δάσκαλός σας αρχίσει να συζητάει τις δομές δεδομένων, δώστε καλή προσοχή εκεί. ναι? εντάξει?
Λοιπόν, θα τα πούμε την επόμενη φορά!