Turinys:
- 1 žingsnis: peržiūrėkite vaizdo įrašą
- 2 žingsnis: Prieš pradėdami
- 3 veiksmas: neviešos API (Spoileris: „Instructables“turi vieną!)
- 4 žingsnis: tiesioginis duomenų nuskaitymas
- 5 veiksmas: duomenų nuskaitymas naudojant išorinį serverį:
- 6 žingsnis: naudojimo apribojimai
- 7 žingsnis: ačiū, kad skaitote
Video: Duomenų nuskaitymas naudojant ESP8266/ESP32: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
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šą
Aš sukūriau vaizdo įrašą, kuris apima tą patį, ką ir šis nurodymas, todėl, jei jus domina, patikrinkite!
2 žingsnis: Prieš pradėdami
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.
- 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.
- 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.
- 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
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į:
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
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:
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę - DHT11 duomenų kaupiklio modeliavimas „Proteus“: 5 žingsniai
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę | DHT11 duomenų kaupiklio modeliavimas „Proteus“: Įvadas: Sveiki, tai „Liono Maker“, čia yra „YouTube“nuoroda. Mes kuriame kūrybinį projektą su „Arduino“ir dirbame prie įterptųjų sistemų
Dokumentų nuskaitymas: 9 žingsniai
Dokumentų nuskaitymas: fakso aparatai yra praeitis! Dokumentų skaitytuvai dabar leidžia mums paversti fizinį popierinį dokumentą į elektroninį popierinį dokumentą, kuris vėliau gali būti išsiųstas el. Paštu greičiau nei bet kada. Tai labai svarbu darbo aplinkoje
Duomenų rinkimo ir duomenų vizualizavimo sistema „MotoStudent“lenktyniniam dviračiui: 23 žingsniai
„MotoStudent“elektrinio lenktyninio dviračio duomenų rinkimo ir duomenų vizualizavimo sistema: Duomenų surinkimo sistema yra techninės ir programinės įrangos, veikiančios kartu, rinkinys, siekiant surinkti duomenis iš išorinių jutiklių, po to juos saugoti ir apdoroti, kad būtų galima vizualizuoti grafiškai ir analizuoti, leidžia inžinieriams padaryti
EAL-Industri4.0-RFID duomenų rinkimo duomenų bazė: 10 žingsnių (su nuotraukomis)
EAL-Industri4.0-RFID duomenų kopijavimas iki duomenų bazės: „Dette projekt omhandler opsamling af v æ gtdata“, registruojantis tapatybę. RFID, bauginantys duomenys ir „MySQL“duomenų bazė. „NOD-RED“, „fremvisning“ir „elgsena“naudojant duomenų rinkinius ir C# programą, kurią sudaro „Windows Form Application“
LEGO „Delta Robot“nuskaitymas ir piešimas: 7 žingsniai (su paveikslėliais)
„LEGO Delta Robot“nuskaitymas ir piešimas: naudojant „LEGO NXT“kuriant „Delta Robot“. Kombinuotas nuskaitymas ir piešimas