Sadržaj:

Brisanje podataka pomoću ESP8266/ESP32: 7 koraka
Brisanje podataka pomoću ESP8266/ESP32: 7 koraka

Video: Brisanje podataka pomoću ESP8266/ESP32: 7 koraka

Video: Brisanje podataka pomoću ESP8266/ESP32: 7 koraka
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Srpanj
Anonim
Brisanje podataka pomoću ESP8266/ESP32
Brisanje podataka pomoću ESP8266/ESP32
Brisanje podataka pomoću ESP8266/ESP32
Brisanje podataka pomoću ESP8266/ESP32

Jeste li ikada htjeli dobiti podatke za svoje Arduino projekte, ali za to ne postoji javni API? Ili u slučajevima kao što je Instagram API gdje postupak postavljanja nije baš zgodan?

U ovom Instructableu ćemo pogledati 2 različite opcije za brisanje podataka s web stranice za vaše projekte ESP8266 ili ESP32.

Korak 1: Pogledajte video

Image
Image

Napravio sam video koji pokriva isto što i ovo uputstvo, pa ako ste zainteresirani, provjerite ga!

Korak 2: Prije nego počnemo

Prije nego počnemo
Prije nego počnemo
Prije nego počnemo
Prije nego počnemo

Samo želim zaključiti da su podaci o kojima ću govoriti o struganju javni podaci i ne zahtijevaju nikakvu autentifikaciju. Recimo, na primjer, moj točan broj pretplatnika na YouTube dostupan mi je samo u studiju za kreatore, pa bi uređaj morao poslati zahtjev koji je potvrdio autentičnost mene da ga učitam. Ova vrsta zahtjeva neće biti dostupna ovom videozapisu. Brzi test za provjeru je li pokriven jest pokušaj učitavanja stranice u anonimnom prozoru jer vas to neće automatski prijaviti na bilo koju web lokaciju.

Za tehnike obuhvaćene ovim Instructable morat ćemo koristiti neke od razvojnih alata koji su dostupni u preglednicima. Pokazat ću ih s Firefoxom, ali sigurno znam da Chrome ima slične alate i siguran sam da ih imaju i drugi preglednici.

Korak 3: Nejavni API -ji (Spoiler: Instructables Has One!)

Prvi način na koji ćemo pogledati je korištenje nejavnog API-ja. Ovo neće uvijek biti dostupno, ali ako je to definitivno metoda koju trebate koristiti. Ono što ja nazivam "nejavni API" u osnovi je mjesto gdje web mjesto iza svoje scene koristi neprijavljeni API na svojoj web stranici za dohvaćanje podataka koje želimo dobiti.

Postoji nekoliko razloga zašto bi ovo bila preferirana opcija za korištenje.

  1. Najveća prednost je ta što se vjerojatno neće mijenjati tako često kao web stranica, ako izbrišete podatke izravno s HTML -a web stranice, svaki put kada naprave promjenu na web mjestu, vaše raščlanjivanje bi se moglo slomiti.
  2. Obično je podatkovno učinkovitiji. Kada stružete web stranicu, u osnovi preuzimate cijelu HTML stranicu kako biste iz nje izvukli podatke, API -ji će vratiti samo podatkovne točke pa bi obično bili mnogo manji zahtjevi.
  3. Obično je lakše raščlaniti. Obično API -ji vraćaju podatke u JSON formatu koji je jednostavan za raščlanjivanje, što je osobito istinito ako ekstrahirate više komada podataka.

Prvo moramo saznati koristi li web stranica ovakve postavke. Najveći je trag ako web mjesto ažurira vrijednost u stvarnom vremenu kao na Kickstarteru, ali čak i ako se to ne dogodi, postoji nada da bi moglo koristiti ovu postavku. Instructables koristi nejavni API za dohvaćanje nekih podataka za svoju web lokaciju iako se ne osvježava u stvarnom vremenu.

Da biste provjerili koristi li web mjesto ovu postavku, uđite u način rada za razvojne programere svog preglednika. Najlakši način za to je da desnom tipkom miša kliknete stranicu i odaberete "pregledaj element".

Zatim ćete htjeti otići na karticu mreža, koja će prikazati zahtjeve koje web stranica postavlja u pozadini. Imajte na umu da ćete možda morati ponovno učitati stranicu nakon otvaranja ove kartice jer će od sada prikazivati samo zahtjeve.

Obično želite potražiti one s tipom "json". Ovdje može biti puno zahtjeva pa bi moglo pomoći sortiranje po vrsti. Na stranici kickstarter kampanje možete vidjeti da je vrlo očito da koristi ovu postavku jer možete vidjeti stalne zahtjeve upućene krajnjoj točki "stats.json". Na stranici autora Instructables (npr. Moja je "https://www.instructables.com/member/witnessmenow/") oni ne postavljaju stalne zahtjeve, ali možete vidjeti skriven među ostalima zahtjev za "showAuthorStats" krajnju točku.

Da biste saznali više informacija o ovom zahtjevu, kliknite na njega. Odavde biste trebali moći dobiti sve potrebne podatke kako biste ponovili zahtjev. No, prije nego što to učinite, prvo morate dvaput provjeriti ima li željene podatke. Kliknite na karticu odgovora i provjerite postoje li podaci.

Ako sadrži potrebne podatke, spremni ste! Zatim možete koristiti iste pristupe o povezivanju na API -je o mom prethodnom videu. Kratka verzija toga je da se prvo uvjerite da zahtjev radi na očekivan način na alatu poput Poštara, a zatim pomoću ovog primjera projekta provjerite radi li na vašem uređaju.

Za raščlanjivanje JSON podataka preporučio bih korištenje ArudinoJSON -a u većini scenarija, ako je ovo nešto o čemu biste željeli poučiti, samo mi javite!

Korak 4: Izravno brisanje podataka

Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka

Zatim ćemo pogledati brisanje podataka izravno s web stranice, to je zahtijevanje potpune web stranice na uređaju i raščlanjivanje podataka koje želimo ukloniti. Već sam spomenuo prednosti API-ja koji nije javan u odnosu na ovu metodu, ali ponekad mora!

Ovdje je važno napomenuti jednu stvar, ako ste upoznati s web razvojem, mogli biste se naviknuti na korištenje značajke elementa inspect kako biste saznali informacije o određenom elementu i kako je on strukturiran. Ovo bi se trebalo izbjeći za ovaj pristup, jer se moderne web stranice obično dinamički mijenjaju pomoću Javascripta, što se neće dogoditi na vašem uređaju. HTML kôd koji je dostupan na vašem uređaju bit će samo izvorna web stranica koja se preuzima. Dobar primjer za to je stranica TeamTrees, trenutni broj donacija počinje kao 0 i kasnije se učitava na stranicu s ovom animacijom, ali za razliku od dva primjera koja smo već vidjeli, ne učitava podatke u pozadini, pa točni podaci moraju biti negdje drugdje.

Za prikaz izvornog koda web stranice možete desnom tipkom miša kliknuti stranicu i odabrati "Prikaži izvor". Zatim želite tražiti određene podatke koje želite, pa u primjeru TeamTrees-a, kada tražimo trenutni broj donacija, možemo vidjeti da je stvarni broj pohranjen u svojstvu broja podataka elementa count, tu trebamo izvadite podatke iz.

Morate pronaći niz za pretraživanje koji vas vodi do vaših podataka. Mnogo je lakše to shvatiti prije kodiranja za uređaj. Za ovaj primjer, pretraživanje "data-count \" "dovodi me do željenih podataka, što je savršeno. Ne moramo se brinuti da se podudara i na drugim mjestima na stranici, jer će prvo pogoditi prvo mjesto. Ako ste ipak trebali pogoditi treću, jednostavno biste je mogli programirati da zanemari prve dvije koje pogodite.

Ako pogledamo primjer TeamTrees -a, kao i prije, preskočili smo zaglavlja odgovora i sada gledamo tijelo odgovora (a to je web stranica). Ono što se vraća od klijenta je tok podataka. Ne zanima nas ništa do našeg upita za pretraživanje, pa radimo klijenta.nađite. Ako ipak pronađe upit za pretraživanje, vratit će se true i premjestit će stream na kraj upita. Sljedeća stvar koja je dostupna iz streama bit će podaci koje tražimo, ali u ovom slučaju nismo sigurni koliko će podaci trajati, ali znamo da su to sve informacije između našeg trenutnog mjesta u streamu i sljedeće obrnute zareze. To možemo postići korištenjem “client.readBytesUntil” koji radi ono što kaže, čita bajtove u međuspremnik sve dok ne pogodi navedeni upit. Samo provjerite je li međuspremnik u koji čitate dovoljno velik da sadrži sve podatke. Mislim da smo ovdje prilično sigurni s 32!

Ako imate sve potrebne podatke, ne morate više čitati podatke. Ovdje nisam prekinuo vezu jer izgleda da nije uzrokovao problem na ESP8266, činilo se da uzrokuje probleme s ESP32, pa sam dodao client.stop (). Da budem potpuno iskren, nisam siguran zašto sam to stavio na vrh metode, mislio bih da bi imalo više smisla zatvoriti ga kad budete imali željene podatke.

Korak 5: Brisanje podataka pomoću vanjskog poslužitelja:

Brisanje podataka pomoću vanjskog poslužitelja
Brisanje podataka pomoću vanjskog poslužitelja
Brisanje podataka pomoću vanjskog poslužitelja
Brisanje podataka pomoću vanjskog poslužitelja

Još samo jedna tema za dotaknuti, postoje mnogo bolji alati za raščlanjivanje u uobičajenim računalnim okruženjima kao što je NodeJS nego na mikro kontroleru, pa ponekad može imati smisla napraviti uslugu koja dohvaća podatke s web stranice i pruža jednostavnije krajnja točka za vaš ESP8266 ili ESP32. Jedan primjer za to bilo je brisanje stranice CrowdSupply kako biste uživo vidjeli koliko je TinyPICO prodano. Možda je to bilo moguće postići izravno na ESP8266 ili ESP32, ali kako je raščlanjivao više različitih podatkovnih točaka na nekoliko različitih elemenata, bilo bi komplicirano.

Na kraju sam stvorio NodeJS projekt i raščlanio podatke pomoću knjižnice pod nazivom cheerio i to je jako dobro funkcioniralo. Domaćin sam ovaj projekt na poslužitelju u oblaku koji sam već imao, ali mogli biste pokrenuti ovu vrstu projekta na pi ako nemate nešto slično.

Korak 6: Ograničenja korištenja

Ograničenja korištenja
Ograničenja korištenja

Jedna stvar koja bi potencijalno mogla utjecati na sve ove pristupe je postizanje ograničenja upotrebe web lokacija. U običnim API -ima obično je prilično dobro dokumentirano koliko zahtjeva možete postaviti po minuti ili dnevno, a na temelju toga možete ograničiti zahtjeve za projekte. Kad stružete, ne znate koja su to ograničenja pa riskirate da ih udarite i potencijalno blokirate. Ne mogu vam dati nikakav točan savjet o tome da to ograničite, pa ostanite u njihovim dobrim knjigama, ali mislio bih da bi bilo što ispod svake minute bilo prečesto, osim možda slučajeva poput kickstartera gdje se čini da sami podnose zahtjeve svakih nekoliko sekundi.

Korak 7: Hvala vam na čitanju

Nadamo se da je ovaj videozapis pomogao ako ste zainteresirani za raščlanjivanje podataka izravno s web stranica na vašem ESP8266 ili ESP32. Imate li još pitanja na tu temu koja nisam obrađivao? Javite mi u komentarima ispod ili se pridružite meni i hrpi drugih proizvođača na mom poslužitelju Discord, gdje možemo razgovarati o ovoj temi ili o bilo kojoj drugoj temi vezanoj za proizvođača, ljudi su tu od velike pomoći, pa je to odlično mjesto za objesiti van

Također bih želio izraziti veliku zahvalnost svojim Github sponzorima koji mi podržavaju ono što radim, zaista to cijenim. Ako ne znate, Github se podudara sa sponzorstvima prve godine, pa ako napravite sponzorstvo, oni će mu odgovarati 100% sljedećih nekoliko mjeseci.

Hvala na čitanju!

Preporučeni: