Satura rādītājs:
- 1. darbība: pārbaudiet videoklipu
- 2. solis: pirms mēs sākam
- 3. darbība: nepubliskas API (Spoileris: Instructables ir viens!)
- 4. darbība: tieša datu nokasīšana
- 5. darbība: datu nokasīšana, izmantojot ārēju serveri:
- 6. darbība: lietošanas ierobežojumi
- 7. darbība. Paldies, ka lasījāt
Video: Datu nokasīšana ar ESP8266/ESP32: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Vai esat kādreiz vēlējies iegūt datus par saviem Arduino projektiem, bet tam nav publiskas API? Vai tādos gadījumos kā Instagram API, kur iestatīšanas process nav ļoti ērts?
Šajā pamācībā mēs aplūkosim 2 dažādas iespējas datu nokasīšanai no vietnes jūsu ESP8266 vai ESP32 projektiem.
1. darbība: pārbaudiet videoklipu
Esmu izveidojis video, kas aptver to pašu, ko šis pamācības, tāpēc, ja jūs interesē, lūdzu, pārbaudiet to!
2. solis: pirms mēs sākam
Tikai jāatceras, ka dati, par kuriem es runāšu, ir publiski pieejami dati un tiem nav nepieciešama autentifikācija. Tā, piemēram, mans precīzais YouTube abonentu skaits ir pieejams tikai satura veidotāju studijā, tāpēc ierīcei ir jāiesniedz pieprasījums, lai tā ielāde tiktu autentificēta kā es. Šāda veida pieprasījumi nebūs pieejami šim videoklipam. Ātrs tests, lai pārbaudītu, vai tas ir iekļauts, ir mēģināt ielādēt lapu inkognito logā, jo tas automātiski nepierakstīsies nevienā vietnē.
Šajā instrukcijā aprakstītajām metodēm mums būs jāizmanto daži izstrādātāju rīki, kas pieejami pārlūkprogrammās. Es tos demonstrēšu, izmantojot Firefox, taču es zinu, ka dažiem pārlūkprogrammai Chrome ir līdzīgi rīki, un esmu pārliecināts, ka tie ir pieejami arī citās pārlūkprogrammās.
3. darbība: nepubliskas API (Spoileris: Instructables ir viens!)
Pirmais veids, kā mēs to aplūkosim, ir nepubliskas API izmantošana. Tas ne vienmēr būs pieejams, bet, ja tā, šī metode noteikti ir jāizmanto. Tas, ko es saucu par “nepublisku API”, būtībā ir tāda, ka vietne aizkulisēs savā vietnē izmanto nereklamētu API, lai iegūtu datus, kurus mēs vēlamies iegūt.
Ir daži iemesli, kādēļ šī būtu vēlamākā izmantošanas iespēja.
- Lielākā priekšrocība ir tā, ka maz ticams, ka tā mainīsies tik bieži kā tīmekļa lapa, ja jūs nokopējat datus tieši no tīmekļa lapas HTML, katru reizi, kad tiek veiktas izmaiņas vietnē, jūsu parsēšana var sabojāties.
- Tas parasti ir datu efektivitāte. Kad nokopējat tīmekļa lapu, jūs būtībā lejupielādējat visu HTML lapu, lai no tās izvilktu informāciju, API atgriezīs tikai datu punktus, tāpēc parasti tie būs daudz mazāki pieprasījumi.
- Parasti to ir vieglāk parsēt. Parasti API atgriež datus JSON formātā, kas ir vienkārši parsējams, tas jo īpaši attiecas uz gadījumiem, kad iegūstat vairākus datus.
Vispirms mums ir jānoskaidro, vai tīmekļa lapā tiek izmantota šāda iestatīšana. Lielākais pavediens ir tas, vai vietne reāllaikā atjaunina vērtību, piemēram, Kickstarter, bet pat ja tā nav, joprojām ir cerība, ka tā varētu izmantot šo iestatījumu. Instructables izmanto nepublisku API, lai izgūtu dažus datus savai vietnei, lai gan tas netiek atsvaidzināts reāllaikā.
Lai pārbaudītu, vai vietne izmanto šo iestatījumu, ievadiet pārlūkprogrammas izstrādātāja režīmu, manuprāt, vienkāršākais veids, kā to izdarīt, ir ar peles labo pogu noklikšķināt uz lapas un atlasīt “pārbaudīt elementu”.
Pēc tam jūs vēlaties doties uz cilni Tīkls, kas fonā parādīs tīmekļa lapas pieprasījumus. Ņemiet vērā, ka pēc šīs cilnes atvēršanas jums, iespējams, vajadzēs atkārtoti ielādēt lapu, jo tajā tiks rādīti tikai turpmāk iesniegtie pieprasījumi.
Parasti jūs vēlaties meklēt tos, kuru tips ir “json”. Šeit var būt daudz pieprasījumu, tāpēc var palīdzēt kārtot pēc veida. Kickstarter kampaņas lapā ir redzams, ka tā izmanto šo iestatījumu, jo jūs varat redzēt, ka pastāvīgi tiek pieprasīti parametri “stats.json”. Instructables autoru lapā (piemēram, mans ir “https://www.instructables.com/member/witnessmenow/”), viņi neizvirza pastāvīgus pieprasījumus, bet jūs varat redzēt, ka citu vidū ir paslēpts pieprasījums “showAuthorStats” galapunktam.
Lai uzzinātu vairāk par šo pieprasījumu, varat noklikšķināt uz tā. Jums vajadzētu būt iespējai iegūt visu nepieciešamo informāciju no šejienes, lai atkārtotu pieprasījumu. Bet pirms to vēlaties vispirms vēlreiz pārbaudīt, vai tajā ir vajadzīgie dati. Noklikšķiniet uz atbildes cilnes un pārbaudiet, vai dati ir tur.
Ja tas satur nepieciešamos datus, viss ir gatavs! Pēc tam varat izmantot tās pašas pieejas, kas tika apspriestas manā iepriekšējā videoklipā par savienojumu ar API. Īsā versija ir nodrošināt, lai pieprasījums vispirms darbotos, kā paredzēts, tādam rīkam kā Pastnieks un pēc tam izmantot šo projekta piemēru, lai pārbaudītu, vai tas darbojas jūsu ierīcē.
Lai analizētu JSON datus, es ieteiktu lielākajā daļā scenāriju izmantot ArudinoJSON, ja vēlaties uzzināt pamācību, vienkārši informējiet mani!
4. darbība: tieša datu nokasīšana
Tālāk mēs aplūkosim datu nokasīšanu tieši no tīmekļa lapas, tas ir, pieprasot pilnu tīmekļa lapu ierīcē un parsējot vajadzīgos datus. Es jau minēju priekšrocības, ko sniedz nepubliskā API, salīdzinot ar šo metodi, bet reizēm ir jābūt!
Šeit ir svarīgi atzīmēt vienu lietu - ja esat iepazinies ar tīmekļa izstrādi, iespējams, esat pieradis izmantot pārbaudes elementa funkciju, lai uzzinātu informāciju par konkrētu elementu un tā struktūru. Šai pieejai vajadzētu izvairīties, jo mūsdienu tīmekļa lapas parasti tiek dinamiski mainītas, izmantojot Javascript, kas nenotiks jūsu ierīcē. Jūsu ierīcē pieejamais HTML kods būs tikai sākotnējā lejupielādētā tīmekļa lapa. Labs piemērs tam ir lapa TeamTrees, pašreizējais ziedojumu skaits sākas ar 0 un tiek ielādēts lapā vēlāk ar šo animāciju, taču atšķirībā no diviem iepriekš redzētajiem piemēriem tas neielādē datus fonā, tāpēc pareiziem datiem jābūt kaut kur citur.
Lai apskatītu sākotnējo tīmekļa lapas kodu, ar peles labo pogu noklikšķiniet uz lapas un atlasiet “Skatīt avotu”. Pēc tam jūs vēlaties meklēt konkrētus datus, kurus vēlaties, tāpēc TeamTrees piemērā, kad mēs meklējam pašreizējo ziedojumu skaitu, mēs varam redzēt, ka faktiskais skaits tiek saglabāts skaitīšanas elementa rekvizītā data-count, un tas ir nepieciešams nokasīt datus no.
Jums jāatrod meklēšanas virkne, kas novirza jūs uz jūsu datiem. To ir daudz vieglāk noskaidrot pirms ierīces kodēšanas. Šajā piemērā, meklējot “data-count”, tiek sasniegti vajadzīgie dati, kas ir perfekti. Mums nav jāuztraucas, ka tas sakrīt arī citās lapas vietās, jo tas vispirms sasniegs augšējo. Ja jums vajadzēja trāpīt trešajā, varat to vienkārši ieprogrammēt, lai ignorētu pirmos divus, kurus trāpījāt.
Ja mēs apskatām TeamTrees piemēru, piemēram, iepriekš, mēs esam izlaiduši atbildes virsrakstus un tagad aplūkojam atbildes tekstu (kas ir tīmekļa lapa). No klienta atgriežas datu plūsma. Mums ir vienalga par mūsu meklēšanas vaicājumu, tāpēc mēs darām klientu.find. Ja tas atrod meklēšanas vaicājumu, tas atgriezīs patiesību un pārvietos straumi uz vaicājuma beigām. Nākamā lieta, kas pieejama no straumes, būs dati, kurus meklējam, taču šajā gadījumā mēs neesam pārliecināti, cik ilgi dati būs, bet mēs zinām, ka tā ir visa informācija starp mūsu pašreizējo vietu straumē un nākamo apgriezto komatu. Mēs to varam sasniegt, izmantojot “client.readBytesUntil”, kas dara to, ko saka, tas nolasa baitus buferī, līdz tiek sasniegts norādītais vaicājums. Vienkārši pārliecinieties, ka buferis, kurā lasāt, ir pietiekami liels, lai turētu visus datus, es domāju, ka mēs šeit esam diezgan droši ar 32!
Ja jums ir visi nepieciešamie dati, jums vairs nav jālasa dati. Es šeit neslēdzu savienojumu, jo tas, šķiet, neradīja problēmu ESP8266, šķiet, ka tas radīja problēmas ar ESP32, tāpēc es pievienoju klientu.stop (). Godīgi sakot, es neesmu pārliecināts, kāpēc es to ievietoju metodes augšgalā, es domāju, ka būtu saprātīgāk to aizvērt, tiklīdz jums būs vajadzīgie dati.
5. darbība: datu nokasīšana, izmantojot ārēju serveri:
Tikai viena cita tēma, kurai jāpieskaras, ir daudz labāki rīki parsēšanai parastā datorizētā vidē, piemēram, NodeJS, nekā mikrokontrollerī, tāpēc dažreiz varētu būt lietderīgi izveidot pakalpojumu, kas izgūst datus no tīmekļa lapas un nodrošina vienkāršāku ESP8266 vai ESP32 galapunkts. Viens piemērs tam bija lapas CrowdSupply nokasīšana, lai iegūtu tiešu uzskaiti par to, cik TinyPICO tika pārdots. Iespējams, to bija iespējams sasniegt tieši ar ESP8266 vai ESP32, taču, tā kā tika analizēti vairāki dažādi datu punkti par vairākiem dažādiem elementiem, tas būtu bijis sarežģīti.
Es beidzot izveidoju NodeJS projektu un parsēju datus, izmantojot bibliotēku ar nosaukumu cheerio, un tas izdevās ļoti labi. Es mitināju šo projektu mākoņa serverī, kas man jau bija, bet jūs varētu vadīt šāda veida projektu uz pi, ja jums nebūtu kaut kas līdzīgs šim iestatījumam.
6. darbība: lietošanas ierobežojumi
Viena lieta, kas potenciāli varētu ietekmēt visas šīs pieejas, ir vietņu izmantošanas ierobežojumu sasniegšana. Parastajās API parasti ir diezgan labi dokumentēts, cik daudz pieprasījumu varat veikt minūtē vai dienā, un, pamatojoties uz to, varat ierobežot projektu pieprasījumus. Kad jūs skrāpējat, jūs nezināt, kādi ir šie ierobežojumi, tāpēc jūs riskējat tos sasniegt un, iespējams, tikt bloķēti. Es nevaru sniegt precīzu padomu, kā to ierobežot, lai jūs paliktu viņu labajās grāmatās, bet es domāju, ka viss, kas ir zem katras minūtes, būtu pārāk bieži, izņemot gadījumus, piemēram, kickstarter, kur viņi, šķiet, paši pieprasa ik pēc dažām sekundēm.
7. darbība. Paldies, ka lasījāt
Cerams, ka šis video palīdzēja, ja jūs interesē datu parsēšana tieši no jūsu ESP8266 vai ESP32 tīmekļa lapām. Vai jums ir vēl kādi jautājumi par šo tēmu, ko es neaptvēru? Lūdzu, dariet man to zināmu zemāk esošajos komentāros vai pievienojieties man un daudziem citiem veidotājiem manā Discord serverī, kur mēs varam apspriest šo vai jebkuru citu ar jums saistītu tēmu, cilvēki tur patiešām palīdz, tāpēc tā ir lieliska vieta, kur pakārties ārā
Es arī vēlos pateikt lielu paldies saviem Github sponsoriem, kuri palīdz atbalstīt to, ko es daru, es patiešām to novērtēju. Ja jūs nezināt, Github sponsorēšanu saskaņo pirmo gadu, tādēļ, ja jūs veicat sponsorēšanu, nākamajos mēnešos tā tiks pilnībā saskaņota.
Paldies, ka izlasījāt!
Ieteicams:
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti - DHT11 datu reģistrētāja simulācija Proteus: 5 soļi
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti | DHT11 datu reģistrētāja simulācija Proteus: Ievads: čau, tas ir Liono Maker, šeit ir YouTube saite. Mēs veidojam radošu projektu ar Arduino un strādājam pie iegultām sistēmām. Datu reģistrētājs: Datu reģistrētājs (arī datu reģistrētājs vai datu ierakstītājs) ir elektroniska ierīce, kas laika gaitā reģistrē datus
ESP32 datu publicēšana ar NTP laika zīmogu IoT mākonī: 5 soļi
Kā publicēt ESP32 datus ar NTP laika zīmogu IoT mākonī: daudzās lietojumprogrammās lietotājiem ir jānosūta dati kopā ar vietējo laika zīmogu vērtībām, kas jānosūta kravā uz AskSensors IoT mākoni. Laika zīmoga formāts ir UNIX laikmeta laiks: milisekundes, kas pagājušas kopš janvāra
Datu iegūšanas un datu vizualizācijas sistēma elektriskajam motociklam MotoStudent: 23 soļi
Datu iegūšanas un datu vizualizācijas sistēma MotoStudent elektriskajam sacīkšu velosipēdam: Datu iegūšanas sistēma ir aparatūras un programmatūras kopums, kas darbojas kopā, lai apkopotu datus no ārējiem sensoriem, pēc tam tos uzglabātu un apstrādātu, lai tos varētu vizualizēt grafiski un analizēt, ļaujot inženieriem izgatavot
IoT datu zinātnes PiNet reāllaika viedā ekrāna datu vizualizācijai: 4 soļi
IoT datu zinātnes PiNet reāllaika viedā ekrāna datu vizam: Jūs varat viegli izveidot viedo displeju IoT tīklu datu vizualizācijai, lai papildinātu savus pētījumus datu zinātnē vai jebkurā kvantitatīvā jomā. Varat izsaukt " push " no jūsu zemes gabaliem klientiem tieši no jūsu
EAL-Industri4.0-RFID datu paraugu ņemšanas datu bāze: 10 soļi (ar attēliem)
EAL-Industri4.0-RFID datu paraugu ņemšana līdz datubāzei: Dette projekt omhandler opsamling af v æ gtdata, registreering af identiteter vha. RFID, satraucoši dati un lv MySQL datu bāze. mezgls RED, samt fremvisning og behandling af de opsamlede data i et C# program i form af en Windows Form Application