Sisällysluettelo:
- Vaihe 1: Katso video
- Vaihe 2: Ennen kuin aloitamme
- Vaihe 3: Ei -julkiset sovellusliittymät (Spoiler: Instructables sisältää yhden!)
- Vaihe 4: Tietojen kaapiminen suoraan
- Vaihe 5: Tietojen kaapiminen ulkoisen palvelimen avulla:
- Vaihe 6: Käyttörajat
- Vaihe 7: Kiitos, että luit
Video: Tietojen kaapiminen ESP8266/ESP32: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Oletko koskaan halunnut saada tietoja Arduino -projekteistasi, mutta sille ei ole julkista sovellusliittymää? Tai esimerkiksi Instagram -sovellusliittymän kaltaisissa tapauksissa, joissa asennusprosessi ei ole kovin kätevä?
Tässä Instructable -ohjelmassa tarkastelemme kahta eri vaihtoehtoa tietojen kaapimiseksi verkkosivustolta ESP8266- tai ESP32 -projekteillesi.
Vaihe 1: Katso video
Olen tehnyt videon, joka kattaa saman asian kuin tämä ohje, joten jos olet kiinnostunut, katso se!
Vaihe 2: Ennen kuin aloitamme
Huomaa vain, että tiedot, joista puhun, ovat julkisia tietoja eivätkä vaadi todennusta. Sano esimerkiksi, että tarkka YouTube -tilaajamääräni on käytettävissä vain sisällöntuottajan studiossa, joten laitteen on lähetettävä pyyntö, joka todentaa minut todentamaan sen. Tämäntyyppiset pyynnöt eivät kuulu tämän videon piiriin. Pikatesti sen tarkistamiseksi, kuuluuko se siihen, on yrittää ladata sivu incognito -ikkunaan, koska se ei kirjaa sinua automaattisesti millekään sivustolle.
Tässä ohjekirjassa kuvatuissa tekniikoissa meidän on käytettävä joitain selaimissa käytettävissä olevia kehittäjätyökaluja. Esittelen niitä Firefoxilla, mutta tiedän, että joillakin Chromella on samankaltaisia työkaluja, ja olen varma, että muillakin selaimilla on niitä.
Vaihe 3: Ei -julkiset sovellusliittymät (Spoiler: Instructables sisältää yhden!)
Ensimmäinen tapa tarkastella on ei-julkisen sovellusliittymän käyttö. Tämä ei ole aina saatavilla, mutta jos se on tämä, se on ehdottomasti menetelmä, jota sinun pitäisi käyttää. Kutsun "ei-julkiseksi sovellusliittymäksi" lähinnä sitä, että sivusto käyttää kulissien takana verkkosivustollaan mainostamatonta sovellusliittymää hakemaan etsimänsä tiedot.
On olemassa muutamia syitä, miksi tämä olisi paras vaihtoehto.
- Suurin etu on, että se ei todennäköisesti muutu yhtä usein kuin verkkosivu. Jos kaavitset tietoja suoraan verkkosivun HTML -koodista, jäsennys saattaa rikkoutua aina, kun he tekevät muutoksia sivustoon.
- Se on yleensä tehokkaampi data. Kun kaavitset verkkosivua, lataat pohjimmiltaan koko HTML -sivun ja poistat siitä tietoja, sovellusliittymät palauttavat vain datapisteitä, joten ne olisivat yleensä paljon pienempiä pyyntöjä.
- Se on yleensä helpompi jäsentää. Normaalisti sovellusliittymät palauttavat tietoja JSON -muodossa, joka on yksinkertainen jäsentää, tämä pätee erityisesti, jos otat useita tietoja.
Meidän on ensin selvitettävä, käyttääkö verkkosivu tällaista asetusta. Suurin vihje on, jos sivusto päivittää arvon reaaliajassa kuten Kickstarterissa, mutta vaikka ei, on silti toivoa, että se voi käyttää tätä asetusta. Instructables käyttää ei-julkista sovellusliittymää hakemaan joitain tietoja sivustolleen, vaikka se ei päivity reaaliajassa.
Jos haluat tarkistaa, käyttääkö sivusto tätä asetusta, siirry selaimesi kehittäjätilaan. Mielestäni helpoin tapa tehdä tämä on napsauttaa sivua hiiren kakkospainikkeella ja valita "tarkista elementti".
Haluat sitten siirtyä Verkko -välilehteen, jolloin verkkosivun tekemät pyynnöt näkyvät taustalla. Huomaa, että sinun on ehkä ladattava sivu uudelleen tämän välilehden avaamisen jälkeen, koska se näyttää vain tästä lähtien tehdyt pyynnöt.
Yleensä haluat etsiä niitä, joiden tyyppi on "json". Täällä voi olla paljon pyyntöjä, joten lajittelusta voi olla apua. Näet, että kickstarter -kampanjasivulla on hyvin ilmeistä, että se käyttää tätä asetusta, koska näet jatkuvasti pyyntöjä "stats.json" -päätepisteeseen. Instructables -tekijöiden sivulla (esim. Minun on "https://www.instructables.com/member/witnessmenow/"), he eivät tee jatkuvia pyyntöjä, mutta voit nähdä piilotettuna muiden joukossa pyynnön "showAuthorStats" -päätepisteelle.
Saat lisätietoja tästä pyynnöstä napsauttamalla sitä. Sinun pitäisi pystyä hankkimaan kaikki tarvittavat tiedot täältä pyynnön toistamiseksi. Mutta ennen kuin teet sen, haluat ensin tarkistaa, että sillä on haluamasi tiedot. Napsauta vastausvälilehteä ja katso, onko tietoja olemassa.
Jos se sisältää tarvitsemasi tiedot, olet valmis! Voit sitten käyttää samoja lähestymistapoja, joista keskustelin edellisessä videossani sovellusliittymiin yhdistämisestä. Lyhyt versio siitä on varmistaa, että pyyntö toimii odotetulla tavalla Postmanin kaltaisella työkalulla ja testata sitten tämän esimerkkiprojektin avulla, että se toimii laitteellasi.
JSON -tietojen jäsentämiseksi suosittelen ArudinoJSONin käyttämistä useimmissa tilanteissa, jos haluat opastavaa, kerro siitä minulle!
Vaihe 4: Tietojen kaapiminen suoraan
Seuraavaksi tarkastelemme tietojen kaapimista suoraan verkkosivulta, tämä pyytää koko verkkosivun laitteessa ja jäsentää haluamamme tiedot. Mainitsin jo ei-julkisen sovellusliittymän edut tähän menetelmään verrattuna, mutta joskus täytyy!
Yksi asia, joka on tärkeää huomata tässä, jos olet perehtynyt verkkokehitykseen, saatat olla tottunut käyttämään tarkastuselementtitoimintoa saadaksesi tietoja tietystä elementistä ja sen rakenteesta. Tätä lähestymistapaa tulisi välttää, koska nykyaikaiset verkkosivut muutetaan yleensä dynaamisesti Javascriptin avulla, mikä ei tapahdu laitteellasi. Laitteellasi käytettävissä oleva HTML -koodi on vain alkuperäinen verkkosivu, joka on ladattu. Hyvä esimerkki tästä on TeamTrees -sivu, nykyinen lahjoitusten määrä alkaa nollasta ja latautuu sivulle myöhemmin tällä animaatiolla, mutta toisin kuin kaksi esimerkkiä, jotka olemme nähneet aiemmin, se ei lataa tietoja taustalla, joten oikeiden tietojen on oltava muualla.
Voit tarkastella alkuperäistä verkkosivun koodia napsauttamalla sivua hiiren kakkospainikkeella ja valitsemalla Näytä lähde. Haluat sitten etsiä haluamiasi tietoja, joten TeamTrees-esimerkissä, kun etsimme nykyistä lahjoitusmäärää, voimme nähdä, että todellinen määrä on tallennettu laskentaelementin data-count -ominaisuuteen, tässä meidän on poista tiedot.
Sinun on löydettävä hakusana, joka johtaa sinut tietoihisi. On paljon helpompaa selvittää tämä ennen laitteen koodausta. Tässä esimerkissä "data-count \" -haun hakeminen vie minut haluamiimme tietoihin, mikä on täydellistä. Meidän ei tarvitse huolehtia siitä, että se sopii myös muille sivun paikoille, koska se osuu ensin ylimpään. Jos joudut osumaan kolmanteen, voit ohjelmoida sen jättämään huomiotta kaksi ensimmäistä osumaasi.
Jos katsomme TeamTrees -esimerkkiä, kuten aiemmin, olemme ohittaneet vastausotsikot ja katsomme nyt vastauksen sisältöä (joka on verkkosivu). Asiakas palauttaa datavirran. Emme välitä mistään hakukyselystämme asti, joten teemme asiakas.find. Jos se löytää hakulausekkeen, se palauttaa arvon tosi ja siirtää virran kyselyn loppuun. Seuraava streamista saatavana oleva asia on etsimämme data, mutta tässä tapauksessa emme ole varmoja, kuinka kauan dataa tulee olemaan, mutta tiedämme, että se on kaikki tiedot nykyisen sijaintimme streamissa ja seuraavan käänteisen pilkun välillä. Voimme saavuttaa tämän käyttämällä "client.readBytesUntil" -ohjelmaa, joka tekee sen, mitä se sanoo, se lukee tavut puskuriksi, kunnes se osuu määritettyyn kyselyyn. Varmista vain, että puskuri, johon luet, on riittävän suuri säilyttämään kaikki tiedot, mielestäni olemme täällä melko turvassa 32: n kanssa!
Jos sinulla on kaikki tarvitsemasi tiedot, sinun ei tarvitse enää lukea tietoja. En sulkenut yhteyttä täällä, koska se ei näyttänyt aiheuttavan ongelmia ESP8266: ssa, se näytti aiheuttavan ongelmia ESP32: n kanssa, joten lisäsin client.stop (). Ollakseni täysin rehellinen, en ole varma, miksi laitoin sen menetelmän kärkeen, mielestäni olisi järkevämpää sulkea se, kun sinulla on haluamasi tiedot.
Vaihe 5: Tietojen kaapiminen ulkoisen palvelimen avulla:
Vain yksi aihe, jota on koskettava, tavallisissa tietokonepohjaisissa ympäristöissä, kuten NodeJS, jäsentämiseen on paljon parempia työkaluja kuin mikro -ohjaimessa, joten joskus saattaa olla järkevää tehdä palvelu, joka hakee tiedot verkkosivulta ja tarjoaa yksinkertaisemman päätepiste ESP8266: lle tai ESP32: lle. Yksi esimerkki tästä oli CrowdSupply -sivun kaapiminen saadaksesi reaaliaikaisen laskelman siitä, kuinka monta TinyPICO: ta myytiin. Se oli ehkä mahdollista saavuttaa suoraan ESP8266- tai ESP32 -laitteella, mutta koska se jäsensi useita eri datapisteitä useille eri elementeille, niin se olisi ollut monimutkaista.
Päätin luoda NodeJS -projektin ja jäsensin tiedot cheerio -nimisen kirjaston avulla, ja se toimi erittäin hyvin. Isännöin tätä projektia pilvipalvelimella, joka minulla jo oli, mutta voit suorittaa tällaisen projektin pi: llä, jos sinulla ei ollut jotain tällaista asetusta.
Vaihe 6: Käyttörajat
Yksi asia, joka voi mahdollisesti vaikuttaa kaikkiin näihin lähestymistapoihin, on sivustojen käyttörajojen saavuttaminen. Tavallisissa sovellusliittymissä on yleensä melko hyvin dokumentoitu, kuinka monta pyyntöä voit tehdä minuutissa tai päivässä, ja voit rajoittaa projektipyyntöjäsi tämän perusteella. Kun raapit, et tiedä, mitä nämä rajat ovat, joten olet vaarassa osua niihin ja mahdollisesti estää. En voi antaa tarkkoja neuvoja sen rajoittamiseksi, jotta pysyt heidän hyvissä kirjoissaan, mutta luulisin, että kaikki alle minuutin välein tapahtuisi liian usein, lukuun ottamatta tapauksia, kuten kickstarter, joissa he näyttävät tekevän pyyntöjä muutaman sekunnin välein.
Vaihe 7: Kiitos, että luit
Toivottavasti tämä video auttoi, jos olet kiinnostunut jäsentämään tietoja suoraan ESP8266- tai ESP32 -laitteesi verkkosivuilta. Onko sinulla muita aiheeseen liittyviä kysymyksiä, joita en käsitellyt? Kerro minulle alla olevissa kommenteissa tai liity minuun ja joukkoon muita tekijöitä Discord -palvelimellani, jossa voimme keskustella tästä aiheesta tai mistä tahansa muusta valmistajaan liittyvästä aiheesta, ihmiset ovat todella avuliaita siellä, joten se on hyvä paikka ripustaa ulos
Haluan myös kiittää suuresti Github -sponsoreitani, jotka auttavat tukemaan tekemääni, arvostan sitä todella. Jos et tiedä, Github vastaa sponsorointeja ensimmäisen vuoden ajan, joten jos teet sponsoroinnin, he vastaavat sitä 100% seuraavien kuukausien aikana.
Kiitos lukemisesta!
Suositeltava:
Tietojen visualisointi Magicbitista AWS: ssä: 5 vaihetta
Tietojen visualisointi Magicbitista AWS: ssä: Magicbitiin kytketyistä antureista kerätyt tiedot julkaistaan AWS IOT -ydelle MQTT: n kautta, jotta ne voidaan visualisoida graafisesti reaaliajassa. Käytämme magicbitia kehityskorttina tässä projektissa, joka perustuu ESP32: een. Siksi mikä tahansa ESP32 d
Tietojen lähettäminen M5Stack StickC: stä Delphiin: 6 vaihetta
Tietojen lähettäminen M5Stack StickC: stä Delphiin: Tässä videossa opimme lähettämään arvoja StickC -kortilta Delphi VCL -sovellukseen Visuinoa käyttämällä
DHT -tietojen lukeminen nestekidenäytöllä Raspberry Pi -laitteella: 6 vaihetta
DHT -tietojen lukeminen nestekidenäytöllä Raspberry Pi: n avulla: Lämpötila ja suhteellinen kosteus ovat tärkeitä säätietoja ympäristössä. Nämä kaksi voivat olla tietoja, joita minisääasema toimittaa. Lämpötilan ja suhteellisen kosteuden lukeminen Raspberry Pi: n avulla voidaan saavuttaa erilaisilla
Smart Watchz koronan oireiden havaitsemisella ja tietojen kirjaamisella: 10 vaihetta
Smart Watchz koronan oireiden havaitsemisella ja tiedon kirjaamisella: Tämä on älykello, jossa on koronaoireiden tunnistus LM35: n ja kiihtyvyysmittarin avulla ja tiedonkeruu palvelimella. Rtc -näppäintä käytetään näyttämään aikaa ja synkronoimaan puhelimen kanssa ja käyttämään sitä tietojen kirjaamiseen. Esp32: ta käytetään aivoina aivokuoren ohjaimella, jossa on sininen
Tietojen lähettäminen Arduinosta Exceliin (ja piirtäminen): 3 vaihetta (kuvien kanssa)
Tietojen lähettäminen Arduinosta Exceliin (ja piirtäminen): Olen etsinyt laajasti tapaa, jolla voisin piirtää Arduino -anturini lukeman reaaliajassa. Ei vain piirtää, vaan myös näyttää ja tallentaa tiedot myöhempää kokeilua ja korjauksia varten. Yksinkertaisin ratkaisu, jonka olen löytänyt, oli käyttää exceliä, mutta