Innholdsfortegnelse:

ESP32 Scraper-parser-mailer og Live Mapper: 4 trinn (med bilder)
ESP32 Scraper-parser-mailer og Live Mapper: 4 trinn (med bilder)

Video: ESP32 Scraper-parser-mailer og Live Mapper: 4 trinn (med bilder)

Video: ESP32 Scraper-parser-mailer og Live Mapper: 4 trinn (med bilder)
Video: Leveraging OpenAI ChatGPT to Scrape Millions of Email Addresses 2024, November
Anonim
ESP32 Scraper-parser-mailer og Live Mapper
ESP32 Scraper-parser-mailer og Live Mapper
ESP32 Scraper-parser-mailer og Live Mapper
ESP32 Scraper-parser-mailer og Live Mapper
ESP32 Scraper-parser-mailer og Live Mapper
ESP32 Scraper-parser-mailer og Live Mapper

Hei Verden! Dette er min første instruks! Jeg er Marco fra Grosseto Italia, jeg er ikke en utvikler, jeg er ikke en elektronisk ingeniør, men jeg er en miljøguide i vår lokale naturpark (Maremma naturpark).

I mitt kooperativ jobber vi mye med kanoturer, naturalistiske og rolige turer på Ombrone -elven for fugletitting og litt fornuftig avslapping.

Men Ombrone-elven er også kjent for sin karakteristiske flyt: fra sommer "null" til høst-vinter strøm på flere tusen kubikkmeter vann i timen.

Av denne grunn blir Ombrone -elven konstant overvåket av den utmerkede regionale hydrometriske tjenesten (SIR), med et fantastisk nettsted som gjør de innsamlede dataene tilgjengelige.

Nå venter vi på slutten av sesongen og på de første høstflommene for å fjerne kaien og kanoene …

Men når vi begynner å snakke om skraping av parsing esp32ing osv? et øyeblikk til

Under den italienske lockdown har jeg gjort den første arduino blink -leksjonen, kult … og jeg har fortsatt å leke med sensorer og arduino C. Så hvis du finner koden min rå eller full av tull logiske hull, bør du vurdere dette!

Jeg gjorde mange ting bare for å kaste bort tid, men med denne konstante risikoen for flom bestemte jeg meg for å gjøre noe kult: takket være en ESP32 med en arduino formfaktor (Wemos d1 r32) som jeg holdt innpakket i flere måneder fordi jeg syntes "vanskelig", Jeg hadde virkelig mange tilfredsstillelser:

Jeg har gjort en skraper som bringer og analyserer data fra en SIR-webside og viser variablene som er oppnådd på en billig i2c LCD, og som lysstyrke-frekvens som blinker på noen lysdioder på et realistisk kart.

så hvis det kommer en flom fra fjellsiden, vil jeg bli advart av økende lysstyrke (nivåendring) og økende frekvens (nivåendring på en time) på lysdiodene på kartet … men ESP32 kan også sende e -post! Så hvorfor ikke gjøre en funksjon for dette?

la oss gå for å se koden nedenfor nå!

Rekvisita

  • ESP32 -basert brett: Jeg har brukt Wemos d1 r32 årsaken har hunnpinner og det er lettere å håndtere
  • lysdioder, rødt er mer "varslende"
  • I2C 16x2 LCD er bare en blå, men den grønne er mer stilig
  • billig korkbrett
  • nattetid (valgfritt)

Trinn 1: Koden

Koden
Koden
Koden
Koden

på nettet har jeg bare funnet dampende opplæringsprogrammer som bruker eksterne nettsteder for å analysere data, så jeg prøvde å teste kraften til esp32 -kjernene som analyserte dataene direkte på brettet … uten problemer!

så hvis du ser på SIR -siden, kan kilden forstå hvordan den fungerer: heldigvis bruker de en "kommaadskilt" -verdi for å vise dataene sine, så med denne koden søker jeg etter en hydrografisk stasjon (kode TOSnumber) og teller antall komma (som separator) som inneholder verdien jeg vil ha (og lagre den som variabel), og deretter omforme den til LED -lysstyrke og tid i millis for at "variasjonsnivå" blinker

Kjernen i denne skrapen er i http -fanen:

ind = nyttelast.indexOf ("TOSstation_number"); // få posisjonen (ind) fra hvor du begynner å telle komma

String my_var = getValue_ind (nyttelast, ',', 8); // hvor 8 er den åttende cellen definert av kommaer (separator)

"nyttelast" er det jeg får fra nettet som tidligere er renset fra "sitater" og "& nbsp";

og getValue_ind -funksjonen som er i hovedfanen

String getValue_ind (String data, char separator, int index) {

int funnet = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1; for (int i = ind; i <= maxIndex && funnet <= index; i ++) {// fra ind -posisjon hvis (data.charAt (i) == separator || i == maxIndex) {funnet ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} retur funnet> indeks? data.substring (strIndex [0], strIndex [1]): ""; }

tilpasset fra

koden ber om siden hvert 15. minutt, det handler om 44Kb, jeg tror ikke det er en stor belastning for serverne og for ESP32.. For å unngå for mye rulling har jeg delt programmet i forskjellige funksjoner, les kommentarene

her er kodeklistringen virkelig et rot … jeg legger.ino -filene direkte

Jeg har brukt fanene i arduino IDE, så jeg har forskjellige.ino -filer

dette er den siste versjonen av koden (?), det er mye arbeid, så jeg vil sette pris på ethvert forslag!

- for rettelse av LED -lysstyrken for lave verdier, - for "kart" -funksjonen for flytende punktvariabler - for bruk av den andre kjernen på ESP32, - for å forstå hvordan du skriver ut en html -post fra en streng med sprintfI har brukte mye sann "nerding tid", så les på kommentarene til.ino -filene eller på github!

som opplastingsinnstillinger har jeg brukt Tools: Partition Scheme: NO OTA for å ha mer plass til denne enorme koden

ha det gøy

klikk her for koden på github

Trinn 2: Kartet

Kartet
Kartet
Kartet
Kartet
Kartet
Kartet

denne tut er incentred på ESP32 -koden, så jeg kan gi deg bare noen søkeord, lenker og verktøy som brukes:

den utmerkede servicen for ekstrakt av vektorområder fra openstreetmap

  • de "ostiske" QGiene for å fordøye dem
  • Søk etter attributtabell for å forenkle kartet ditt
  • lage et utskriftsoppsett og eksportere kartet i svg -format på A3 -papirformat
  • ha det gøy med den "jevnere" illustratøren
  • skrive den ut

Trinn 3: The Hot Glue Party

The Hot Lim Party
The Hot Lim Party
The Hot Lim Party
The Hot Lim Party
The Hot Lim Party
The Hot Lim Party
The Hot Lim Party
The Hot Lim Party

så jeg kan foreslå å dø-kutte hullene for lysdioden og displayet på papiret før du fikser det på korkbrettet

ledningen er veldig enkel og dårlig gjort av meg: P

Mitt loddingnivå: Due

som du kan se fra koden, går lysdiodene til IO -pinner

#define LED_PIN0 14 // si #define LED_PIN1 27 // buon #define LED_PIN2 16 // sass #define LED_PIN3 17 // tur #define LED_PIN4 25 // ist #define LED_PIN5 26 // berr

Søk etter ESP32 pinout for å forstå

Trinn 4: Det ferdige produktet

Det ferdige produktet
Det ferdige produktet

så dette bildet er ikke det beste, men når vi fikk en flomflod, legger jeg en fin video!

Anbefalt: