Αποθηκεύστε δεδομένα σε διακομιστή ιστού IoT χρησιμοποιώντας αιτήματα HTTP POST

Αποθηκεύστε δεδομένα σε διακομιστή ιστού IoT χρησιμοποιώντας αιτήματα HTTP POST

Αποθηκεύστε δεδομένα σε διακομιστή ιστού IoT χρησιμοποιώντας αιτήματα HTTP POST

Διακομιστής Ιστού IoTΔιακομιστής Ιστού HTTP POST IoTΒάση δεδομένων MySQL. Διακομιστής Ιστού IoTΔιακομιστής Ιστού IoT Γλώσσας PHP

Όπως εξηγείται στο πρώτο άρθρο της σειράς αποθήκευση δεδομένων που λαμβάνονται από συσκευές Internet of Things, αν και τα δεδομένα που αποθηκεύονται καταλήγουν σε διακομιστή MySQL o MariaDB και χρησιμοποιείται γλώσσα PHP για τον χειρισμό τους στην είσοδο και την έξοδο, η ροή πληροφοριών μεταξύ του ηλεκτρονικού εξοπλισμού και της βάσης δεδομένων πραγματοποιείται χρησιμοποιώντας α web εξυπηρετητή με τους οποίους επικοινωνείτε σύμφωνα με το Πρωτόκολλο HTTP.

Στην αρχή του ορισμού του Πρωτόκολλο HTTP Υπήρχαν χρήσεις συγκρίσιμες με αυτήν που περιγράφηκε, αλλά το γεγονός είναι ότι τελικά δεν αξιοποιήθηκε πλήρως για διάφορους λόγους, εν μέρει για την ασφάλεια και εν μέρει επειδή ποτέ δεν σημειώθηκε πρόοδος στον καθορισμό ενός πιο συγκεκριμένου ή πιο αποτελεσματικού πρωτοκόλλου, έτσι στις μέρες μας, ειδικά στους δημόσιους διακομιστές, το πιο συνηθισμένο πράγμα είναι να χρησιμοποιείτε μια σύνδεση HTTP τι κάνει α Αίτημα POST στον διακομιστή για αποθήκευση των πληροφοριών ή α ΠΑΡΤΕ για να το ανακτήσετε, συνήθως για να εμφανίσετε μια ιστοσελίδα που την παρουσιάζει και ακόμη και στην οποία μπορείτε να αλληλεπιδράσετε.

Το πιο βασικό κείμενο που αποστέλλεται στον διακομιστή σε ένα αίτημα HTTP ΜΕΤΑ περιλαμβάνει μια γραμμή με τον τύπο του αιτήματος (ΜΕΤΑ) τη διαδρομή προς την ιστοσελίδα που θα αποθηκεύσει τις πληροφορίες και την έκδοση του Πρωτόκολλο HTTP; μια άλλη γραμμή με το όνομα κεντρικού υπολογιστή (που επιτρέπει εικονικούς διακομιστές στον ίδιο διακομιστή ή/και στην ίδια διεύθυνση IP) και τέλος μια άλλη που περιέχει τα δεδομένα που καταγράφονται, χωρισμένα μεταξύ τους με το σύμβολο & και από τις προηγούμενες γραμμές κατά μία κενό.

Στο παραπάνω παράδειγμα, ένας διακομιστής που ονομάζεται polaridad.es θα περιέχει μια σελίδα στο /iot/grabar_temperatura για τη διαχείριση των πληροφοριών χρησιμοποιώντας την έκδοση 1.1 του Πρωτόκολλο HTTP

Μπορεί να φανεί ότι χρησιμοποιούνται τα σημάδια δύο & που δείχνουν ότι είναι αποθηκευμένα τρία πεδία. Το όνομα των πεδίων βρίσκεται στα αριστερά του ίσου και μόνο δύο γράμματα έχουν χρησιμοποιηθεί για τον ορισμό τους. Ως όνομα των πεδίων (ή μεταβλητών, αν προτιμάτε) του αιτήματος HTTP Δεν σχετίζονται με αυτά της βάσης δεδομένων, δεν είναι ιδιαίτερα σημαντικό να χρησιμοποιείτε περιγραφικά κείμενα και συνήθως επιλέγονται σύντομα ονόματα (ακόμα και αριθμημένα πεδία) για αποθήκευση κειμένου σε επικοινωνία με τον διακομιστή και επιτάχυνση της διαδικασίας αποστολής δεδομένων.

Τα δεδομένα που συνήθως στέλνει μια συσκευή IoT στον διακομιστή είναι αριθμητικού τύπου, κυρίως ακέραιοι και απλοί δεκαδικοί. Όταν οι τιμές αποστέλλονται σε μορφή κειμένου, όπως συμβαίνει με τη μεταβλητή "ne" στο παράδειγμα, ενδέχεται να προκύψουν δυσμενείς περιστάσεις που μπορούν να επιλυθούν, ανάλογα με την περίπτωση, με περισσότερη ή λιγότερη επιτυχία και ευκολία. Σε αυτήν την περίπτωση, τα σύμβολα συν (+) χρησιμοποιούνται για τον διαχωρισμό λέξεων, αντικαθιστώντας κενά που διαφορετικά θα άλλαζαν το Αίτημα POST. Ένας γενικός τρόπος αποστολής δεδομένων που επιλύει τις περισσότερες περιπτώσεις είναι υποδεικνύοντας τον δεκαεξαδικό κωδικό των χαρακτήρων, πριν από το σύμβολο ποσοστού (%) Λογικά, δεν συνιστάται η χρήση αυτού του πόρου, εκτός εάν αυτό που είναι κωδικοποιημένο είναι προβληματικό, καθώς το μήκος του αποστέλλεται αυξάνεται, κάτι που γενικά απαιτεί περισσότερους πόρους, αν και είναι σίγουρα πολύ μικρό σε μέγεθος.

Αν και είναι δυνατό να λειτουργήσει α web εξυπηρετητή Για το Internet of Things μόνο με τις πληροφορίες από το προηγούμενο παράδειγμα, πολλοί διακομιστές, ειδικά δημόσιοι, προσθέτουν άλλα δεδομένα στο ερώτημα POST (δυστυχώς δεν περιορίζεται πάντα στο πρωτόκολλο). Το παρακάτω παράδειγμα αντιστοιχεί στο αίτημα ανάρτησης που ζητήθηκε από το πηγαδάκι -γνωστός διακομιστής. κοινό για το διαδίκτυο των πραγμάτων Ομιλία.

Εκτός από ορισμένα προσωπικά δεδομένα, όπως π.χ X-THINGSPEAKAPIKEY (και που αντιστοιχεί στο αναγνωριστικό κάθε πελάτη) στο προηγούμενο παράδειγμα μπορείτε να δείτε ότι υπάρχουν άλλες κεφαλίδες που προσθέτουν περισσότερες πληροφορίες στο αίτημα.

Πώς να χρησιμοποιήσετε μια κεφαλίδα σε ένα Αίτημα POST Απλώς αποτελείται από την εγγραφή του ονόματός του, ένα σύμβολο άνω και κάτω τελείας (:), ένα κενό διάστημα και την τιμή που θέλετε να του εκχωρήσετε.

Για να ελέγξετε τα αιτήματα POST στον διακομιστή web πριν ολοκληρώσετε τη διαμόρφωση των άλλων στοιχείων, μπορεί να πραγματοποιηθεί μια σύνδεση με τον διακομιστή και να σταλούν τα δεδομένα μη αυτόματα. Για παράδειγμα, σε έναν υπολογιστή Linux θα ήταν αρκετό να το χρησιμοποιήσετε telnet polaridad.es 80 όπου polaridad.es είναι το όνομα του διακομιστή και 80 είναι ο αριθμός θύρας στην οποία απαντά η υπηρεσία. HTTP.

Συνδεθείτε στον διακομιστή web polaridad.es χρησιμοποιώντας telnet για αποθήκευση δεδομένων IoT

Το εργαλείο πολλαπλών πλατφορμών μπορεί να χρησιμοποιηθεί σε Linux, Windows ή OS PuTTY, για το οποίο έγινε λόγος στο άρθρο έλεγχος σειριακών συσκευών UART από υπολογιστή, για να πραγματοποιήσετε τη σύνδεση χωρίς να χρησιμοποιήσετε την κονσόλα.

Συνδεθείτε στον διακομιστή web polaridad.es χρησιμοποιώντας PuTTY για αποθήκευση δεδομένων IoT

Στο επόμενο Λίστα κεφαλίδων HTTP Υπάρχουν τα περισσότερα από αυτά που μπορούν να είναι χρήσιμα για α Αίτημα POST να web εξυπηρετητή για το Διαδίκτυο των πραγμάτων.

  • Accept Χρησιμοποιείται για την ένδειξη του τύπου ΜΊΜΟΣ ότι το αίτημα αναμένει να χρησιμοποιήσει ο διακομιστής στην απόκριση. Εκφράζεται ως tipo/subtipo που μπορεί να γενικευτεί χρησιμοποιώντας τον αστερίσκο (*) ως σύμβολο μπαλαντέρ, για παράδειγμα ως */* να αναφερθώ σε οποιοδήποτε ή tipo/* να αναφέρεται σε όλους τους υποτύπους του tipo

    Τα πιο συχνά χρησιμοποιούμενα είναι:

    • text/plain Αν και είναι το πιο βασικό, είναι και το πιο χρησιμοποιημένο. Αναμένει από τον διακομιστή να επιστρέψει μια απλή (απλή) απάντηση κειμένου που είναι επαρκής για να ειδοποιήσει ότι η συναλλαγή ήταν σωστή και το πολύ να προσθέσει πρόσθετες πληροφορίες, όπως τον αριθμό παραγγελίας των καταγεγραμμένων δεδομένων, το αποτέλεσμα μιας σύγκρισης, την ημερομηνία υπηρέτης…

    • application/xml o text/xml Περιμένετε να απαντήσει ο διακομιστής στο αίτημα σε μορφή XML. Το νόημα της επιλογής text αντί για application επιτρέπει την ευκολότερη «ανθρώπινη» (έναντι «αυτόματη») ανάγνωση. Αυτή η δυαδικότητα θα παρουσιαστεί σε άλλους Τύποι MIME αλλά η μελλοντική τάση του προτύπου είναι να προτιμάς application μπροστά από text Η μορφή XML επιτρέπει σε μια απάντηση που περιέχει πολλά δεδομένα να δομηθεί με πολύ σταθερό τρόπο, το μειονέκτημα είναι ότι προσθέτει πολλή τεχνογνωσία στα καθαρά δεδομένα, γεγονός που κάνει την απόκριση να καταλαμβάνει περισσότερο από το απαραίτητο, επομένως απαιτεί περισσότερο εύρος ζώνης και πιθανώς περισσότερο μνήμη στη συσκευή IoT για την επεξεργασία του.

    • text/html Χρησιμοποιείται όταν είναι η απόκριση διακομιστή HTML κωδικοποιημένο ως απλό κείμενο (απλό κείμενο) που συνήθως μορφοποιεί μια απάντηση. Δεδομένου ότι πρόκειται για αποθήκευση δεδομένων και η απόκριση θα φτάσει σε μια μικρή συσκευή χωρίς πολλούς πόρους, δεν είναι συνηθισμένο να χρησιμοποιείται αυτός ο τύπος.

    • application/xhtml+xml Βασικά είναι η έκδοση XHTML (HTML ως XML έγκυρη) των πληροφοριών της προηγούμενης ενότητας.

    • application/json Χρησιμοποιείται περισσότερο όταν η απόκριση διακομιστή περιέχει πολλά δεδομένα, συμπεριλαμβανομένης μιας περισσότερο ή λιγότερο περίπλοκης δομής. Η μορφή JSON κοινή χρήση με μορφή XML μια συμπαγή δομή και προσθέτει το πλεονέκτημα ότι είναι πιο συνοπτικό στο κείμενο που προσθέτει η δομή.

  • Accept-Charset Καθορίζει την κωδικοποίηση κειμένου που ζητείται να χρησιμοποιηθεί στην απάντηση. Για την κωδικοποίηση λατινικών χαρακτήρων, το UTF-8, το πιο πλήρες, ISO-8859 15, που περιλαμβάνει το σύμβολο του ευρώ (€) και το ISO-8859 1, που είναι και το πιο βασικό.

  • Accept-Encoding Υποδεικνύει τη μορφή σύμφωνα με την οποία μπορεί να κωδικοποιηθεί η απόκριση διακομιστή. Βασικά χρησιμεύει για να υποδείξει έναν τύπο συμπίεσης. Μερικά από τα πιο συχνά είναι gzip deflate (το οποίο μπορεί να διευκρινιστεί με περισσότερες λεπτομέρειες με deflate-raw o deflate-http) Δεν είναι σύνηθες να χρησιμοποιείται σε μικρές συσκευές που είναι συνδεδεμένες στο Internet of Things, καθώς απαιτεί μια ορισμένη κατανάλωση πόρων (μνήμης και χρόνος επεξεργασίας) που είναι συνήθως σπάνιοι σε αυτούς τους τύπους εξοπλισμού. Δεν είναι απαραίτητο να υποδεικνύεται ότι η συμπίεση δεν χρησιμοποιείται με Accept-Encoding: identity αφού μια τέτοια περίσταση θεωρείται εξ ορισμού.

  • Accept-Language Εκφράζει τη γλώσσα που μπορεί να χρησιμοποιηθεί στην απάντηση. Για παράδειγμα, τα Ισπανικά της Ισπανίας θα προσδιορίζονταν ως es-ES ή των Άγγλων των Ηνωμένων Πολιτειών της Αμερικής ως en-US

  • Connection Χρησιμοποιείται για να καθορίσει τι πρέπει να γίνει με τη σύνδεση που έχει δημιουργηθεί μεταξύ του πελάτη (η συσκευή IoT) και του web εξυπηρετητή μόλις ληφθούν τα δεδομένα. Συνήθως χρησιμοποιείται με την τιμή close στη μορφή Connection: close για να υποδείξετε ότι η σύνδεση πρέπει να κλείσει μετά την απάντηση στον πελάτη.

  • Content-Length Σας επιτρέπει να υποδείξετε τον αριθμό των byte που καταλαμβάνει το τμήμα του αιτήματος που περιέχει τα δεδομένα, το οποίο είναι αυτό μετά τις κεφαλίδες και χωρίζεται με μια κενή γραμμή. Είναι πολύ χρήσιμο αφού χρησιμεύει για την επαλήθευση της ακεραιότητας των πληροφοριών που αποστέλλονται. Αν δεν μετρήσει αυτό που έχει δηλωθεί, δεν αποθηκεύεται αφού θεωρείται ότι δεν έφτασε σωστά. Συνήθως απαιτείται από τους περισσότερους δημόσιους διακομιστές IoT.

  • Content-Type Χρησιμεύει για να υποδείξει το Τύπος MIME με το οποίο κωδικοποιούνται οι πληροφορίες που αποστέλλονται στον διακομιστή. Συνήθως χρησιμοποιούνται οι τύποι text/html όταν τα δεδομένα που αποστέλλονται στον διακομιστή εκφράζονται ως μια απλή λίστα τιμών (κάτι σαν a=3.6&b=4.8) Και application/jsonrequest (που θα ήταν το αντίστοιχο του τύπου application/json για το οποίο γίνεται λόγος στο Accept) όταν είναι απαραίτητη μια πιο περίπλοκη δομή, αλλά μπορεί να σταλεί οποιοδήποτε από τα παρακάτω λίστα τύπων MIME.

  • Cookie Χρησιμοποιείται για την προσθήκη ενός αναγνωριστικού περιόδου σύνδεσης με το οποίο θα διατηρείται μια αλυσίδα μεταφορών (ερώτημα, απάντηση, ερώτημα...) που είναι πιο περίπλοκη από ένα μεμονωμένο αίτημα με το οποίο στέλνονται ορισμένα σχετικά δεδομένα, αλλά λαμβάνονται σε διαφορετικούς χρόνους.

  • Πίνακας Περιεχομένων
    • Referer URL που προήλθε από το αίτημα POST, για παράδειγμα την ιστοσελίδα από την οποία στάλθηκε. Στην περίπτωση που χρησιμοποιείται για IoT, δεν προσθέτει σχετικές πληροφορίες αφού οι πληροφορίες αποστέλλονται απευθείας, χωρίς προηγούμενη σελίδα, επομένως δεν χρησιμοποιούνται συχνά.

    • User-Agent Αναφέρει τη συσκευή που υποβάλλει το αίτημα. Στην κανονική κυκλοφορία Ιστού, το πρόγραμμα περιήγησης που χρησιμοποιείται στο Διαδίκτυο των πραγμάτων επιτρέπει στον διακομιστή να υποδεικνύει τον τύπο της ηλεκτρονικής συσκευής που υποβάλλει το αίτημα. Η ταυτοποίηση του εαυτού του στον διακομιστή επιτρέπει την διαφορετική μορφοποίηση της απόκρισης σε κάθε περίπτωση, για παράδειγμα, την επιστροφή μιας σύνθετης ιστοσελίδας σε ένα πρόγραμμα περιήγησης και μερικών δεδομένων προειδοποίησης σε μια μικρή συσκευή IoT.

    Είναι δυνατό να ορίσετε μια λίστα επιλογών διαχωρισμένη με κόμματα αντί για μία μόνο τιμή στις κεφαλίδες για να υποδείξετε ότι υποστηρίζονται πολλές διαφορετικές τιμές ταυτόχρονα. Αυτές οι τιμές μπορούν να έχουν μια σειρά προτεραιότητας που εκφράζεται σύμφωνα με έναν συντελεστή ποιότητας q για κάθε μία. Οι συντελεστές ποιότητας διαχωρίζονται με ένα ερωτηματικό (;) και οι αστερίσκοι (*) μπορούν επίσης να χρησιμοποιηθούν για την αναφορά σε οποιονδήποτε τύπο ή υποτύπο.

    Accept: text/plain,text/xml,application/json;q=0.8,text/*;q=0.9,application/json

    Στο προηγούμενο παράδειγμα η προτεραιότητα της μορφής JSON το μεγαλύτερο (0.9) είναι αυτό του απλού κειμένου και αυτό του μορφοποιημένου κειμένου. XML, που πληρούν τις προδιαγραφές text/*, είναι μικρότερο (0.8) και ίσο μεταξύ τους. Εάν είναι δυνατόν, ο διακομιστής θα πρέπει να αντιδράσει κωδικοποιώντας την απάντηση ως JSON.

    Στο ακόλουθο παράδειγμα ενός πιο ολοκληρωμένου αιτήματος POST, η πρόσβαση στη σελίδα /iot/grabar_temperatura του διακομιστή που ονομάζεται polaridad.es γίνεται χρησιμοποιώντας την έκδοση 1.1 του πρωτοκόλλου HTTP. Ο πελάτης, που ονομάζεται Sensoreitor-2000, στέλνει τα κωδικοποιημένα δεδομένα JSON, αναμένετε την απάντηση ως απλό κείμενο σε μορφή UTF-8 χρήση ισπανικών από την Ισπανία χωρίς χρήση συμπίεσης, η οποία, παρεμπιπτόντως, δεν είναι απαραίτητο να υποδειχθεί. Τα δεδομένα που αποστέλλονται στον διακομιστή καταλαμβάνουν 65 byte. Κατά την αποστολή της απάντησης, η σύνδεση μεταξύ του πελάτη και του διακομιστή θα κλείσει.

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

    Δημοσίευση σχολίου

    Μπορεί να έχετε χάσει