Turinys:

Duomenų nuskaitymas naudojant ESP8266/ESP32: 7 žingsniai
Duomenų nuskaitymas naudojant ESP8266/ESP32: 7 žingsniai

Video: Duomenų nuskaitymas naudojant ESP8266/ESP32: 7 žingsniai

Video: Duomenų nuskaitymas naudojant ESP8266/ESP32: 7 žingsniai
Video: FLProg10: датчик температуры DS18B20 | ESP32 NodeMCU | Визуальное программирование для Arduino 2024, Liepa
Anonim
Duomenų nuskaitymas naudojant ESP8266/ESP32
Duomenų nuskaitymas naudojant ESP8266/ESP32
Duomenų nuskaitymas naudojant ESP8266/ESP32
Duomenų nuskaitymas naudojant ESP8266/ESP32

Ar kada nors norėjote gauti duomenų apie savo „Arduino“projektus, bet nėra tam viešos API? Arba tokiais atvejais kaip „Instagram“API, kai sąrankos procesas nėra labai patogus?

Šioje instrukcijoje mes apžvelgsime 2 skirtingas duomenų nuskaitymo iš svetainės galimybes jūsų ESP8266 arba ESP32 projektams.

1 žingsnis: peržiūrėkite vaizdo įrašą

Image
Image

Aš sukūriau vaizdo įrašą, kuris apima tą patį, ką ir šis nurodymas, todėl, jei jus domina, patikrinkite!

2 žingsnis: Prieš pradėdami

Prieš pradedant
Prieš pradedant
Prieš pradedant
Prieš pradedant

Tiesiog atkreipiu dėmesį, kad duomenys, apie kuriuos kalbėsiu, yra viešai prieinami duomenys ir jiems nereikia jokio autentifikavimo. Tarkime, pavyzdžiui, mano tikslus „YouTube“prenumeratorių skaičius pasiekiamas tik kūrėjų studijoje, todėl įrenginys turės pateikti užklausą, kurios autentifikavimas patvirtintas kaip aš. Šio tipo užklausos nebus taikomos šiam vaizdo įrašui. Greitas testas, skirtas patikrinti, ar tai bus padaryta, yra bandymas įkelti puslapį į inkognito langą, nes tai automatiškai neprisijungs prie jokių svetainių.

Naudodami metodus, aprašytus šioje instrukcijoje, turėsime naudoti kai kuriuos kūrėjų įrankius, kuriuos galima rasti naršyklėse. Aš demonstruosiu juos naudodami „Firefox“, tačiau žinau, kad tam tikrose „Chrome“programose yra panašių įrankių ir esu tikras, kad ir kitos naršyklės.

3 veiksmas: neviešos API (Spoileris: „Instructables“turi vieną!)

Pirmasis būdas, kurį pažvelgsime, yra neviešos API naudojimas. Tai ne visada bus prieinama, bet jei tai tikrai tai yra metodas, kurį turėtumėte naudoti. Tai, ką aš vadinu „nevieša API“, iš esmės yra ta, kad svetainė savo svetainėje naudoja nereklamuotą API, kad gautų duomenis, kuriuos norime gauti.

Yra keletas priežasčių, kodėl tai būtų geriausias pasirinkimas.

  1. Didžiausias pranašumas yra tas, kad vargu ar jis keisis taip dažnai, kaip tinklalapis, jei nuskaitysite duomenis tiesiai iš tinklalapio HTML, kiekvieną kartą, kai jie pakeis svetainę, jūsų analizė gali nutrūkti.
  2. Paprastai duomenys yra efektyvesni. Kai draskote tinklalapį, iš esmės atsisiunčiate visą HTML puslapį, kad iš jo išgautumėte informacijos, API grąžins tik duomenų taškus, todėl paprastai tai bus daug mažesnės užklausos.
  3. Paprastai lengviau išanalizuoti. Paprastai API grąžina duomenis JSON formatu, kurį paprasta išanalizuoti, tai ypač pasakytina, jei ištraukiate kelis duomenų elementus.

Pirmiausia turime išsiaiškinti, ar tinklalapyje naudojama tokia sąranka. Didžiausias raktas yra tai, ar svetainė atnaujina vertę realiuoju laiku, kaip tai daro „Kickstarter“, tačiau net jei to nepadaro, vis dar yra vilties, kad ji gali naudoti šią sąranką. „Instructables“naudoja neviešą API, kad gautų kai kuriuos savo svetainės duomenis, nors ji neatnaujinama realiuoju laiku.

Norėdami patikrinti, ar svetainė naudoja šią sąranką, įveskite savo naršyklės kūrėjo režimą. Manau, lengviausias būdas tai padaryti yra dešiniuoju pelės mygtuku spustelėkite puslapį ir pasirinkite „apžiūrėti elementą“.

Tada norėsite pereiti prie tinklo skirtuko; fone bus rodomos tinklalapio pateiktos užklausos. Atminkite, kad atidarius šį skirtuką gali tekti iš naujo įkelti puslapį, nes jame bus rodomos tik nuo šiol pateiktos užklausos.

Paprastai norite ieškoti tų, kurių tipas yra „json“. Čia gali būti daug užklausų, todėl gali būti naudinga rūšiuoti pagal tipą. „Kickstarter“kampanijos puslapyje galite aiškiai matyti, kad ji naudoja šią sąranką, nes galite matyti nuolatines užklausas dėl „stats.json“galinio taško. „Instructables“autorių puslapyje (pvz., Mano adresas yra „https://www.instructables.com/member/witnessmenow/“), jie nepateikia nuolatinių užklausų, tačiau tarp kitų galite matyti paslėptą užklausą „showAuthorStats“galiniam taškui.

Norėdami sužinoti daugiau informacijos apie šią užklausą, spustelėkite ją. Turėtumėte turėti galimybę čia gauti visą reikiamą informaciją, kad pakartotumėte užklausą. Tačiau prieš tai darydami pirmiausia turite dar kartą patikrinti, ar jame yra norimų duomenų. Spustelėkite atsakymo skirtuką ir pažiūrėkite, ar yra duomenų.

Jei jame yra reikiamų duomenų, viskas paruošta! Tada galite naudoti tuos pačius metodus, kurie buvo aptarti mano ankstesniame vaizdo įraše apie prisijungimą prie API. Trumpa versija yra įsitikinti, kad užklausa veikia taip, kaip tikėtasi, tokiame įrankyje kaip „Postman“, o tada naudokite šį pavyzdinį projektą, kad patikrintumėte, ar jis veikia jūsų įrenginyje.

Norėdami išanalizuoti JSON duomenis, daugeliu atvejų rekomenduočiau naudoti „ArudinoJSON“, jei tai yra kažkas, ko norėtumėte pamokyti, tiesiog praneškite man!

4 žingsnis: tiesioginis duomenų nuskaitymas

Tiesioginis duomenų nuskaitymas
Tiesioginis duomenų nuskaitymas
Tiesioginis duomenų nuskaitymas
Tiesioginis duomenų nuskaitymas
Tiesioginis duomenų nuskaitymas
Tiesioginis duomenų nuskaitymas

Toliau apžvelgsime duomenų nuskaitymą tiesiai iš tinklalapio, tai yra viso tinklalapio užklausa įrenginyje ir norimų duomenų analizavimas. Jau minėjau neviešos API pranašumus, palyginti su šiuo metodu, tačiau kartais reikia!

Čia svarbu atkreipti dėmesį į vieną dalyką: jei esate susipažinęs su žiniatinklio kūrimu, galite būti įpratę naudoti tikrinimo elemento funkciją, kad sužinotumėte informaciją apie tam tikrą elementą ir kaip jis sudarytas. Šio požiūrio reikėtų vengti, nes šiuolaikiniai tinklalapiai paprastai yra dinamiškai keičiami naudojant „Javascript“, o tai neįvyks jūsų įrenginyje. Jūsų prietaise pasiekiamas HTML kodas bus tik originalus tinklalapis, kuris bus atsisiųstas. Geras to pavyzdys yra „TeamTrees“puslapis, dabartinis aukų skaičius prasideda kaip 0 ir vėliau įkeliamas į puslapį naudojant šią animaciją, tačiau, skirtingai nei du anksčiau matyti pavyzdžiai, jis neįkelia duomenų fone, todėl teisingi duomenys turi būti kitur.

Norėdami peržiūrėti originalų tinklalapio kodą, dešiniuoju pelės mygtuku spustelėkite puslapį ir pasirinkite „View Source“. Tuomet norite ieškoti konkrečių norimų duomenų, todėl „TeamTrees“pavyzdyje, kai ieškome dabartinio aukų skaičiaus, matome, kad faktinis skaičius yra saugomas skaičiavimo elemento duomenų skaičiaus ypatybėje. ištraukite duomenis iš.

Turite rasti paieškos eilutę, kuri nukreipia jus į jūsų duomenis. Tai daug lengviau išsiaiškinti prieš koduojant įrenginį. Šiame pavyzdyje ieškant žodžio „data-count“pateksime į norimus duomenis, kurie yra tobuli. Mums nereikia nerimauti, kad jis taip pat sutampa ir kitose puslapio vietose, nes jis pirmiausia pataikys į viršų. Jei jums reikėjo pataikyti į trečiąjį, galite tiesiog užprogramuoti jį ignoruoti pirmuosius du pataikytus.

Jei pažvelgsime į „TeamTrees“pavyzdį, kaip ir anksčiau, praleidome atsakymo antraštes ir dabar žiūrime į atsakymo turinį (tai yra tinklalapis). Tai, kas grįžta iš kliento, yra duomenų srautas. Mums nerūpi niekas, išskyrus mūsų paieškos užklausą, todėl atliekame klientą.find. Jei ji suras paieškos užklausą, ji grįš tiesa ir perkelia srautą į užklausos pabaigą. Kitas dalykas, kurį galima gauti iš srauto, bus duomenys, kurių ieškome, tačiau šiuo atveju nesame tikri, kiek laiko duomenys bus, tačiau žinome, kad tai yra visa informacija tarp dabartinės vietos sraute ir kito apverstos kablelio. Tai galime pasiekti naudodami „client.readBytesUntil“, kuris daro tai, ką sako, skaito baitus į buferį, kol pasiekia nurodytą užklausą. Tiesiog įsitikinkite, kad buferis, į kurį skaitote, yra pakankamai didelis, kad jame būtų visi duomenys, manau, kad mes čia esame gana saugūs su 32!

Jei turite visus reikiamus duomenis, jums nebereikia skaityti duomenų. Čia neuždariau ryšio, nes atrodė, kad tai nesukelia ESP8266 problemų, atrodo, kad tai sukelia problemų su ESP32, todėl pridėjau klientą.stop (). Tiesą sakant, aš nesu tikras, kodėl tai pateikiau metodo viršuje, manau, kad būtų prasmingiau jį uždaryti, kai turėsite norimų duomenų.

5 veiksmas: duomenų nuskaitymas naudojant išorinį serverį:

Duomenų nuskaitymas naudojant išorinį serverį
Duomenų nuskaitymas naudojant išorinį serverį
Duomenų nuskaitymas naudojant išorinį serverį
Duomenų nuskaitymas naudojant išorinį serverį

Tik viena kita tema, kurią reikia paliesti, yra daug geresnių įrankių, skirtų analizuoti įprastoje kompiuterinėje aplinkoje, pvz., „NodeJS“, nei naudojant mikrovaldiklį, todėl kartais gali būti prasminga sukurti paslaugą, kuri paimtų duomenis iš tinklalapio ir pateiktų paprastesnę ESP8266 arba ESP32 galinis taškas. Vienas iš to pavyzdžių buvo „CrowdSupply“puslapio nuskaitymas, kad būtų galima tiesiogiai sužinoti, kiek „TinyPICO“buvo parduota. Galbūt tai buvo įmanoma pasiekti tiesiogiai naudojant ESP8266 arba ESP32, tačiau kadangi buvo analizuojami keli skirtingi duomenų taškai iš kelių skirtingų elementų, tai būtų buvę sudėtinga.

Galų gale sukūriau „NodeJS“projektą ir išanalizavau duomenis naudodamas biblioteką, pavadintą „cheerio“, ir tai pavyko labai gerai. Aš priglobiau šį projektą debesies serveryje, kurį jau turėjau, bet jūs galėtumėte paleisti tokio tipo projektą ant pi, jei neturėtumėte tokios sąrankos.

6 žingsnis: naudojimo apribojimai

Naudojimo apribojimai
Naudojimo apribojimai

Vienas dalykas, galintis paveikti visus šiuos metodus, yra svetainių naudojimo apribojimų viršijimas. Įprastose API paprastai gana gerai dokumentuojama, kiek užklausų galite pateikti per minutę ar per dieną, ir pagal tai galite apriboti projektų užklausas. Kai draskote, jūs nežinote, kokios yra šios ribos, todėl rizikuojate jas pataikyti ir galbūt užblokuoti. Negaliu tiksliai patarti, kaip apriboti, kad jūs liktumėte jų gerose knygose, bet manau, kad viskas, kas vyksta kiekvieną minutę, būtų per dažnai, išskyrus galimus atvejus, tokius kaip „kickstarter“, kai jie, atrodo, patys pateikia prašymus kas kelias sekundes.

7 žingsnis: ačiū, kad skaitote

Tikimės, kad šis vaizdo įrašas padėjo, jei jus domina duomenų analizė tiesiogiai iš jūsų ESP8266 arba ESP32 tinklalapių. Ar turite kitų klausimų šia tema, kurių neaptariau? Praneškite man toliau pateiktose pastabose arba prisijunkite prie manęs ir daugybės kitų kūrėjų mano „Discord“serveryje, kur galime aptarti šią ar bet kurią kitą su kūrėjais susijusią temą, žmonės ten tikrai padeda, todėl tai puiki vieta pakabinti išeiti

Taip pat norėčiau padėkoti savo „Github“rėmėjams, kurie padeda palaikyti tai, ką darau, aš tikrai tai vertinu. Jei nežinote, „Github“rėmimą suderina pirmuosius metus, taigi, jei atliksite rėmimą, jis ateinančius kelis mėnesius jį atitiks 100%.

Ačiū, kad skaitote!

Rekomenduojamas: