Tallenna tiedot IoT-verkkopalvelimelle HTTP POST -pyyntöjen avulla

Tallenna tiedot IoT-verkkopalvelimelle HTTP POST -pyyntöjen avulla

Tallenna tiedot IoT-verkkopalvelimelle HTTP POST -pyyntöjen avulla

IoT-verkkopalvelinHTTP POST IoT -verkkopalvelinMySQL-tietokanta. IoT-verkkopalvelinPHP-kielinen IoT-verkkopalvelin

Kuten sarjan ensimmäisessä artikkelissa selitettiin tallentaa esineiden Internet-laitteilla saatuja tietoja, vaikka tallennetut tiedot päätyvät palvelimelle MySQL o MariaDB ja kieltä käytetään PHP niiden manipuloimiseksi syötössä ja lähdössä tiedonkulku elektronisten laitteiden ja tietokannan välillä tapahtuu käyttämällä a Web-palvelin joiden kanssa olet yhteydessä HTTP-protokolla.

Määritelmän alussa HTTP-protokolla Käyttökohteita oli verrattavissa kuvattuun, mutta tosiasia on, että loppujen lopuksi sitä ei ole hyödynnetty täysin eri syistä, osittain turvallisuudesta ja osittain siitä syystä, että tarkemman tai tehokkaamman protokollan määrittelyssä ei koskaan edistytty, joten nykyään varsinkin julkisilla palvelimilla yleisin asia on käyttää yhteyttä HTTP mikä tekee a POST-pyyntö palvelimelle tietojen tallentamiseksi tai a SAA palauttaaksesi sen, yleensä näyttääksesi verkkosivun, joka esittää sen ja jolla voit jopa olla vuorovaikutuksessa.

Palvelimelle pyynnössä lähetetty yksinkertaisin teksti HTTP POST sisältää rivin pyynnön tyypillä (POST) polku verkkosivulle, joka tallentaa tiedot ja version HTTP-protokolla; toinen rivi isäntänimellä (joka sallii virtuaalipalvelimet samalla palvelimella ja/tai samassa IP-osoitteessa) ja lopuksi toinen, joka sisältää tallennetut tiedot erotettuna toisistaan ​​&-merkillä ja edellisistä riveistä yhdellä tyhjä.

Yllä olevassa esimerkissä palvelin nimeltä polaridad.es sisältää sivun tiedostossa /iot/grabar_temperatura tietojen hallintaa varten versiolla 1.1. HTTP-protokolla

Voidaan nähdä, että käytetään kahta &-merkkiä, mikä osoittaa, että kolme kenttää on tallennettu. Kenttien nimet ovat yhtäläisyysmerkin vasemmalla puolella ja niiden määrittelyssä on käytetty vain kahta kirjainta. Pyynnön kenttien (tai halutessasi muuttujien) niminä HTTP Ne eivät liity tietokannassa oleviin, kuvailevien tekstien käyttö ei ole erityisen tärkeää ja lyhyitä nimiä valitaan yleensä (parilliset kentät) tekstin tallentamiseksi yhteydenpitoon palvelimen kanssa ja tiedon lähetysprosessin nopeuttamiseksi.

Tieto, jonka IoT-laite normaalisti lähettää palvelimelle, on numeerista tyyppiä, pääasiassa kokonaislukuja ja yksinkertaisia ​​desimaalilukuja. Kun arvot lähetetään tekstimuodossa, kuten esimerkin muuttujan "ne" tapauksessa, voi syntyä epäsuotuisia olosuhteita, jotka voidaan ratkaista tapauksesta riippuen enemmän tai vähemmän onnistuneesti ja helposti. Tässä tapauksessa plusmerkkejä (+) käytetään sanojen erottamiseen korvaamalla välilyönnit, jotka muutoin muuttaisivat sanaa POST-pyyntö. Yleinen tapa lähettää dataa, joka ratkaisee useimmat tapaukset, on ilmoittaa merkkien heksadesimaalikoodi, jota edeltää prosenttimerkki (%) Loogisesti ei ole suositeltavaa käyttää tätä resurssia paitsi silloin, kun koodattu on ongelmallista, koska sen pituus Lähetetyn määrän määrä kasvaa, mikä yleensä vaatii enemmän resursseja, vaikka se onkin kooltaan todella pieni.

Vaikka on mahdollista käyttää a Web-palvelin Esineiden Internetissä vain edellisen esimerkin tiedoilla monet palvelimet, erityisesti julkiset, lisäävät POST-kyselyyn muita tietoja (valitettavasti ei aina rajoitu protokollaan) Alla oleva esimerkki vastaa kaivon pyytämää lähetyspyyntöä - tunnettu palvelin. julkinen esineiden internetille AsiPuhu.

Joidenkin henkilötietojen lisäksi mm X-THINGSPEAKAPIKEY (ja joka vastaa kunkin asiakkaan tunnistetta) edellisessä esimerkissä voit nähdä, että on muita otsikoita, jotka lisäävät pyyntöön lisätietoja.

Otsikon käyttäminen a POST-pyyntö Se koostuu yksinkertaisesti sen nimen kirjoittamisesta, kaksoispistemerkistä (:), tyhjästä välilyönnistä ja arvosta, jonka haluat antaa sille.

POST-pyyntöjen testaamiseksi web-palvelimelle ennen muiden komponenttien määrittämistä voidaan muodostaa yhteys palvelimeen ja lähettää tiedot manuaalisesti. Esimerkiksi Linux-tietokoneessa se riittäisi käytettäväksi telnet polaridad.es 80 jossa polaridad.es on palvelimen nimi ja 80 on portin numero, johon palvelu vastaa. HTTP.

Muodosta yhteys polaridad.es-verkkopalvelimeen telnetin avulla IoT-tietojen tallentamiseen

Monialustaista työkalua voidaan käyttää Linuxissa, Windowsissa tai käyttöjärjestelmässä PuTTY, josta artikkelissa puhuttiin ohjata UART-sarjalaitteita tietokoneelta, muodostaaksesi yhteyden käyttämättä konsolia.

Muodosta yhteys polaridad.es-verkkopalvelimeen käyttämällä PuTTY:tä IoT-tietojen tallentamiseen

Seuraavassa HTTP-otsikoiden luettelo Useimmat niistä voivat olla hyödyllisiä a POST-pyyntö on a Web-palvelin esineiden Internetiin.

  • Accept Sitä käytetään ilmaisemaan tyyppi MIME joita pyyntö odottaa palvelimen käyttävän vastauksessa. Se ilmaistaan ​​muodossa tipo/subtipo joka voidaan yleistää käyttämällä tähtimerkkiä (*) jokerimerkkinä, esimerkiksi nimellä */* viitata mihin tahansa tai tipo/* viittaamaan kaikkiin alatyyppeihin tipo

    Yleisimmin käytettyjä ovat:

    • text/plain Vaikka se on yksinkertaisin, se on myös eniten käytetty. Se odottaa palvelimen palauttavan yksinkertaisen (pelkkä) tekstivastauksen, joka riittää ilmoittamaan, että tapahtuma on sujunut oikein, ja lisäävän korkeintaan lisätietoja, kuten tallennettujen tietojen tilausnumeron, vertailun tuloksen, tapahtuman päivämäärän. palvelin…

    • application/xml o text/xml Odota, että palvelin vastaa pyyntöön muodossa XML. Valinnan merkitys text sijaan application mahdollistaa helpomman "inhimillisen" lukemisen (verrattuna "automaattiseen"). Tämä kaksinaisuus tulee esiin muissa MIME-tyypit mutta standardin tulevaisuuden trendi on suosia application edessä text Muoto XML mahdollistaa paljon dataa sisältävän vastauksen strukturoinnin erittäin vankasti, haittapuolena on, että se lisää verkkodataan paljon taikuutta, mikä saa vastauksen viemään enemmän kuin on tarpeen, mikä vaatii enemmän kaistanleveyttä ja todennäköisesti enemmän IoT-laitteen muistia sen käsittelemiseksi.

    • text/html Käytetään, kun palvelimen vastaus on HTML koodattu pelkkäksi tekstiksi (plain text), joka yleensä muotoilee vastauksen. Koska kyse on tietojen tallentamisesta ja vastaus tavoittaisi pienen laitteen ilman paljon resursseja, tämän tyypin käyttö ei ole yleistä.

    • application/xhtml+xml Pohjimmiltaan se on versio XHTML (HTML kuten XML voimassa) edellisen osan tiedoista.

    • application/json Sitä käytetään eniten, kun palvelinvastaus sisältää useita tietoja, mukaan lukien enemmän tai vähemmän monimutkaisen rakenteen. Muoto JSON jaa muodossa XML vankka rakenne ja lisää sen etuna, että se on tiiviimpi rakenteen lisäämässä tekstissä.

  • Accept-Charset Määrittää tekstin koodauksen, jota pyydetään käytettäväksi vastauksessa. Jos haluat koodata latinalaisia ​​merkkejä, UTF-8, täydellisin, ISO-8859 15, joka sisältää euromerkin (€) ja ISO-8859 1, joka on alkeellisinta.

  • Accept-Encoding Ilmaisee muodon, jonka mukaan palvelimen vastaus voidaan koodata. Pohjimmiltaan se osoittaa puristustyypin. Jotkut yleisimmistä ovat gzip deflate (joka voidaan määritellä tarkemmin deflate-raw o deflate-http) Ei ole yleistä käyttää sitä pienissä esineiden Internetiin yhdistetyissä laitteissa, koska se vaatii tietyn resurssien kulutuksen (muistin ja käsittelyajan), joita tämän tyyppisissä laitteissa on yleensä vähän. Ei ole tarpeen ilmoittaa, että pakkausta ei käytetä Accept-Encoding: identity koska tällainen seikka otetaan oletuksena huomioon.

  • Accept-Language Ilmaisee kielen, jota voidaan käyttää vastauksessa. Esimerkiksi Espanjan espanja määritettäisiin muodossa es-ES tai Amerikan yhdysvaltojen englantia as en-US

  • Connection Sitä käytetään määrittämään, mitä tulee tehdä yhteydelle, joka on muodostettu asiakkaan (IoT-laitteen) ja Web-palvelin kun tiedot on vastaanotettu. Yleensä käytetään arvon kanssa close muodossa Connection: close ilmaisemaan, että yhteys tulee sulkea asiakkaalle vastaamisen jälkeen.

  • Content-Length Sen avulla voit ilmoittaa tiedot sisältävän pyynnön osan käyttämien tavujen määrän, joka on otsikoiden jälkeen ja erotettu tyhjällä rivillä. Se on erittäin hyödyllinen, koska sen avulla varmistetaan lähetettyjen tietojen eheys. Jos se ei mittaa ilmoitettua, sitä ei tallenneta, koska katsotaan, että se ei ole saapunut oikein. Useimmat julkiset IoT-palvelimet vaativat sitä yleensä.

  • Content-Type Se toimii osoittamaan MIME-tyyppi jolla palvelimelle lähetettävät tiedot koodataan. Tyyppejä käytetään yleensä text/html kun palvelimelle lähetetyt tiedot ilmaistaan ​​yksinkertaisena arvoluettelona (jotain kuten a=3.6&b=4.8) Ja application/jsonrequest (joka olisi vastaava tyyppi application/json josta puhutaan Accept), kun tarvitaan monimutkaisempi rakenne, mutta mikä tahansa seuraavista voidaan lähettää luettelo MIME-tyypeistä.

  • Cookie Sitä käytetään lisäämään istuntotunniste, jolla ylläpidetään siirtojen ketjua (kysely, vastaus, kysely...), joka on monimutkaisempi kuin yksittäinen pyyntö, jolla lähetetään tiettyjä liittyviä tietoja, mutta jotka on saatu eri aikoina.

  • Sisällysluettelo
    • Referer URL, josta POST-pyyntö on peräisin, esimerkiksi verkkosivu, jolta se lähetettiin. Jos sitä käytetään IoT:hen, se ei lisää oleellista tietoa, koska tiedot lähetetään suoraan, ilman edellistä sivua, joten niitä ei käytetä usein.

    • User-Agent Ilmoittaa pyynnön tehneen laitteen. Normaalissa verkkoliikenteessä esineiden internetissä käytettävä selain antaa palvelimelle mahdollisuuden ilmoittaa pyynnön tekevän elektronisen laitteen tyypin. Palvelimelle itsensä tunnistaminen mahdollistaa vastauksen muotoilemisen jokaisessa tapauksessa eri tavalla, esimerkiksi palauttamalla monimutkaisen verkkosivun selaimeen ja muutaman varoitusdatan pienelle IoT-laitteelle.

    On mahdollista määrittää pilkuilla eroteltu luettelo vaihtoehdoista yhden arvon sijasta otsikoissa osoittamaan, että useita eri arvoja tuetaan samanaikaisesti. Näillä arvoilla voi olla prioriteettijärjestys, joka ilmaistaan ​​kunkin laatukertoimen q mukaan. Laatukertoimet erotetaan puolipisteellä (;) ja tähtiä (*) voidaan myös käyttää viittaamaan mihin tahansa tyyppiin tai alatyyppiin.

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

    Edellisessä esimerkissä muodon prioriteetti JSON suurin (0.9) on pelkkää tekstiä ja muotoiltua tekstiä. XML, jotka täyttävät eritelmän text/*, on pienempi (0.8) ja yhtä suuri niiden välillä. Jos mahdollista, palvelimen tulee reagoida koodaamalla vastaus muodossa JSON.

    Seuraavassa täydellisemmän POST-pyynnön esimerkissä polaridad.es-nimisen palvelimen /iot/grabar_temperatura-sivua käytetään HTTP-protokollan versiolla 1.1. Asiakas, jonka nimi on Sensoreitor-2000, lähettää koodatut tiedot sisään JSON, odota vastausta pelkkänä tekstinä muodossa UTF-8 käyttämällä espanjaa Espanjasta ilman pakkausta, jota ei muuten tarvitse osoittaa. Palvelimelle lähetettävä data vie 65 tavua. Vastausta lähetettäessä yhteys asiakkaan ja palvelimen välillä suljetaan.

    Seuraava artikkeli selittää miten MySQL-tietokanta määritetään tallentamaan IoT-objektien lähettämiä tietoja

    Post Comment

    Olet ehkä missannut