Indholdsfortegnelse:

ESP32 Scraper-parser-mailer og Live Mapper: 4 trin (med billeder)
ESP32 Scraper-parser-mailer og Live Mapper: 4 trin (med billeder)

Video: ESP32 Scraper-parser-mailer og Live Mapper: 4 trin (med billeder)

Video: ESP32 Scraper-parser-mailer og Live Mapper: 4 trin (med billeder)
Video: MicroPython: a journey from Kickstarter to Space 2024, December
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

Hej Verden! Dette er min første instruerbare! Jeg er Marco fra Grosseto Italien, jeg er ikke udvikler, jeg er ikke en elektronisk ingeniør, men jeg er en miljøguide i vores lokale naturpark (Maremma naturpark).

I mit kooperativ arbejder vi meget med kanoture, naturalistiske og rolige ture på Ombrone -floden til fugletitting og lidt fornuftig afslapning.

Men Ombrone-floden er også berømt for sin karakteristiske strømning: fra sommer "nul" til efterår-vinter strømning af flere tusinde kubikmeter vand i timen.

Af denne grund overvåges Ombrone -floden konstant af den fremragende regionale hydrometriske service (SIR) med et fantastisk sted, der gør de indsamlede data tilgængelige.

Nu venter vi på slutningen af sæsonen og på de første efterårsoversvømmelser for at fjerne kajen og kanoerne …

Men når vi begynder at tale om at skrabe parsing esp32ing osv.? et øjeblik mere

Under den italienske lockdown har jeg lavet den første arduino blink -lektion, sejt … og jeg har fortsat med at lege med sensorer og arduino C. Så hvis du finder min kode rå eller fuld af nonsens logiske huller, skal du overveje dette!

Jeg gjorde mange ting bare for at spilde tid, men med denne konstante risiko for oversvømmelse besluttede jeg mig for at gøre noget fedt: takket være en ESP32 med en arduino formfaktor (Wemos d1 r32), som jeg holdt indpakket i flere måneder, fordi jeg tænkte "vanskelig", Jeg havde virkelig mange tilfredsheder:

Jeg har lavet en skraber, der bringer og analyserer data fra en SIR-webside og viser variablerne opnået på en billig i2c LCD, og som lysstyrke-frekvens blinker på nogle lysdioder på et realistisk kort.

så hvis der kommer en oversvømmelse fra bjergsiden, vil jeg blive advaret om den stigende lysstyrke (niveauændring) og den stigende frekvens (niveauændring på en time) af lysdioderne på kortet … men ESP32 kan også sende e -mails! Så hvorfor ikke gøre en funktion til dette?

lad os nu se koden herunder!

Forbrugsvarer

  • ESP32 -baseret kort: Jeg har brugt Wemos d1 r32 årsag til at have hunstifter, og det er lettere at håndtere
  • lysdioder, rød er mere "opmærksom som"
  • I2C 16x2 LCD er kun en blå, men den grønne er mere stilfuld
  • billigt korkbræt
  • nat (valgfrit)

Trin 1: Koden

Koden
Koden
Koden
Koden

online har jeg kun fundet dampende tutorials, der bruger eksterne websteder til at analysere data, så jeg forsøgte at teste kraften i esp32 -kernerne, der analyserede dataene direkte på kortet … uden problemer!

så hvis du ser SIR -siden, kan kilden forstå, hvordan den fungerer: heldigvis bruger de en "komma adskilt lignende" -værdi til at vise deres data, så med denne kode søger jeg efter en hydrografisk station (kode TOSnumber) og tæller antallet af kommaer (som separator), der indeholder den værdi, jeg ønsker (og gemmer den som variabel), og derefter omdanner den til LED -lysstyrke og tid i millis for "variationsniveau" blinker

Kernen i denne skraber er på fanen

ind = nyttelast.indexOf ("TOSstation_nummer"); // få positionen (ind), hvorfra man begynder at tælle kommaer

String my_var = getValue_ind (nyttelast, ',', 8); // hvor 8 er den ottende celle defineret af kommaer (separator)

"nyttelast" er, hvad jeg får fra nettet, der tidligere er renset fra "tilbud" og "& nbsp";

og getValue_ind -funktionen, der er i hovedfanen

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

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

tilpasset fra

koden beder om siden hvert 15. minut, det handler om 44Kb, jeg tror ikke, det er en stor belastning for serverne og for ESP32.. For at undgå for meget rulning har jeg delt programmet i forskellige funktioner, læs kommentarerne

her er kodeindsætningen virkelig et rod … jeg satte.ino -filerne direkte

Jeg har brugt fanerne i arduino IDE, så jeg har forskellige.ino -filer

dette er den nyeste version af koden (?), der er en stor indsats, så jeg vil sætte pris på ethvert forslag!

- til udretning af LED -lysstyrken for lave værdier, - til "kort" -funktionen for floating point -variabler - til brug af den anden kerne på ESP32, - for at forstå, hvordan man udskriver en html -mail fra en streng med sprintfI have brugt meget sand "nørdetid", så læs om kommentarerne til.ino -filerne eller på github!

som upload -indstillinger har jeg brugt Værktøjer: Partition Scheme: NO OTA til at have mere plads til denne enorme kode

hav det sjovt

klik her for koden på github

Trin 2: Kortet

Kortet
Kortet
Kortet
Kortet
Kortet
Kortet

denne tut er incentred på ESP32 -koden, så jeg kan kun give dig nogle søgeord, links og værktøjer, der bruges:

den fremragende service til ekstrakt af vektorområder fra openstreetmap

  • de "ostiske" QG'er til at fordøje dem
  • søg efter attributtabel for at forenkle dit kort
  • oprette et printlayout og eksportere kortet i svg -format på A3 -papirformat
  • have det sjovt med den "glattere" illustrator
  • udskrive det

Trin 3: The Hot Lim Party

The Hot Lim Party
The Hot Lim Party
Hot Lim -festen
Hot Lim -festen
Hot Lim -festen
Hot Lim -festen
The Hot Lim Party
The Hot Lim Party

så jeg kan foreslå at dø-skære hullerne til LED'en og displayet på papiret, før du fixer det på korkbrættet

ledningerne er virkelig enkle og og dårligt udført af mig: P

Mit lodningsniveau: Due

som du kan se fra koden, går lysdioderne til IO -pins

#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øg efter ESP32 pinout for at forstå

Trin 4: Det færdige produkt

Det færdige produkt
Det færdige produkt

så dette foto er ikke det bedste, men da vi fik en flodflod, lægger jeg en dejlig video!

Anbefalede: