Taula de continguts:

ESP32 Scraper-parser-mailer i Live Mapper: 4 passos (amb imatges)
ESP32 Scraper-parser-mailer i Live Mapper: 4 passos (amb imatges)

Vídeo: ESP32 Scraper-parser-mailer i Live Mapper: 4 passos (amb imatges)

Vídeo: ESP32 Scraper-parser-mailer i Live Mapper: 4 passos (amb imatges)
Vídeo: Leveraging OpenAI ChatGPT to Scrape Millions of Email Addresses 2024, Desembre
Anonim
ESP32 Scraper-parser-mailer i Live Mapper
ESP32 Scraper-parser-mailer i Live Mapper
ESP32 Scraper-parser-mailer i Live Mapper
ESP32 Scraper-parser-mailer i Live Mapper
ESP32 Scraper-parser-mailer i Live Mapper
ESP32 Scraper-parser-mailer i Live Mapper

Hola món! Aquest és el meu primer instructible! Sóc Marco de Grosseto, Itàlia, no sóc desenvolupador, no sóc enginyer electrònic, però sóc guia ambiental al nostre parc natural local (parc natural de la Maremma).

A la meva cooperativa treballem molt amb excursions en canoa, excursions naturalistes i tranquil·les al riu Ombrone per observar ocells i relaxar-vos.

Però el riu Ombrone també és famós pel seu característic tipus de cabal: des del "zero" d'estiu fins al cabal tardor-hivern de diversos milers de metres cúbics d'aigua per hora.

Per aquest motiu, el riu Ombrone està constantment controlat per l’excel·lent servei hidromètric regional (SIR), amb un lloc fantàstic que posa a disposició les dades recollides.

Ara esperem el final de la temporada i les primeres inundacions de tardor per eliminar el moll i les canoes …

Però quan comencem a parlar de raspar analitzant esp32ing, etc.? un moment més

Durant el tancament italià, he fet la primera lliçó de parpelleig d’arduino, genial … i he continuat jugant amb sensors i arduino C. Així que si trobeu el meu codi brut o ple de buits lògics sense sentit, tingueu en compte això!

Vaig fer moltes coses només per perdre el temps, però amb aquest risc constant d’inundacions vaig decidir fer alguna cosa divertida: gràcies a un ESP32 amb un factor de forma arduino (Wemos d1 r32) que vaig mantenir embolicat durant mesos perquè em semblava "difícil", Realment vaig tenir moltes satisfaccions:

He fet un rascador que porta i analitza les dades d'una pàgina web SIR i mostra les variables obtingudes en una pantalla LCD i2c barata, i que la freqüència de brillantor parpelleja en alguns leds d'un mapa realista.

així que si una inundació prové del costat de la muntanya, se m'advertirà per la brillantor creixent (canvi de nivell) i per la freqüència creixent (canvi de nivell en una hora) dels leds del mapa … però l'ESP32 també pot enviar correus electrònics. Llavors, per què no fer una funció per això?

anem a veure el codi següent ara!

Subministraments

  • Taula basada en ESP32: he utilitzat Wemos d1 r32 perquè tenen pins femenins i és més fàcil de manejar
  • leds, el vermell és més "alerta com"
  • I2C 16x2 LCD només és blau, però el verd és més elegant
  • tauler de suro barat
  • nit (opcional)

Pas 1: el codi

El codi
El codi
El codi
El codi

en línia, només he trobat tutorials feixucs que utilitzen llocs externs per analitzar dades, així que he intentat provar la potència dels nuclis esp32 analitzant les dades directament al tauler … sense problemes.

per tant, si veieu el codi font de la pàgina SIR, podeu entendre el seu funcionament: per sort, utilitzen valors "separats per comes" per mostrar les seves dades, de manera que amb aquest codi busco una estació hidrogràfica (codi TOSnumber) i compto el nombre de comes (com a separador) que contenen el valor que desitjo (i emmagatzemar-lo com a variable) i, a continuació, torneu a mapar-lo com a brillantor i temps del led en mil·lis per a parpellejar el "nivell de variació"

El nucli d’aquest rascador es troba a la pestanya

ind = payload.indexOf ("TOSstation_number"); // obtenir la posició (ind) des d’on començar a comptar comes

Cadena my_var = getValue_ind (càrrega útil, ',', 8); // on 8 és la vuitena cel·la definida per comes (separador)

"càrrega útil" és el que obtinc del web netejat prèviament de "pressupostos" i "& nbsp";

i la funció getValue_ind que es troba a la pestanya principal

String getValue_ind (dades de cadena, separador de caràcters, índex int) {

int trobat = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1; for (int i = ind; i <= maxIndex && found <= index; i ++) {// from ind position if (data.charAt (i) == separator || i == maxIndex) {found ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} retorn trobat> índex? data.substring (strIndex [0], strIndex [1]): ""; }

adaptat de

el codi demana la pàgina cada 15 minuts, és d'uns 44 KB, no crec que sigui una càrrega gran per als servidors i per a l'ESP32.. Per evitar massa desplaçaments he dividit el programa en diferents funcions, llegiu els comentaris

aquí el codi enganxat és realment un desastre … He posat directament els fitxers.ino

He utilitzat la característica de pestanyes de l'IDE arduino, de manera que tinc diferents fitxers.ino

aquesta és l'última versió del codi (?), hi ha molts esforços, així que agrairé qualsevol suggeriment.

- per redreçar la brillantor del led per a valors baixos, - per a la funció "mapa" per a variables de coma flotant - per a l'ús del segon nucli a l'ESP32, - per entendre com imprimir un correu html des d'una cadena amb sprintf Vaig passar molt de "veritable temps", així que llegiu els comentaris als fitxers.ino o a github.

com a configuració de càrrega he utilitzat Eines: Esquema de particions: NO OTA per tenir més espai per a aquest enorme codi

diverteix-te

feu clic aquí per obtenir el codi a github

Pas 2: el mapa

El mapa
El mapa
El mapa
El mapa
El mapa
El mapa

aquest tutorial s’incrementa amb el codi ESP32, de manera que només us puc donar algunes paraules clau, enllaços i eines:

l'excel·lent servei per extreure àrees vectorials de openstreetmap

  • els QGis "òstics" per digerir-los
  • cerqueu una taula d'atributs per simplificar el vostre mapa
  • creeu un disseny d'impressió i exporteu el mapa en format svg en format de paper A3
  • Diverteix-te amb l’il·lustrador “més suau”
  • imprimeix-lo

Pas 3: la festa de la cola calenta

La festa de la cola calenta
La festa de la cola calenta
La festa de la cola calenta
La festa de la cola calenta
La festa de la cola calenta
La festa de la cola calenta
La festa de la cola calenta
La festa de la cola calenta

per tant, puc suggerir de tallar els forats del led i de la pantalla del paper abans de fixar-lo al tauler de suro

el cablejat és realment senzill i mal fet per mi: P

El meu nivell de soldadura: colom

com podeu veure al codi, els leds van als pins IO

#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

cerqueu el pinout ESP32 per comprendre

Pas 4: el producte acabat

El producte acabat
El producte acabat

així que aquesta foto no és la millor, però quan tinguem una riuada, posaré un bon vídeo!

Recomanat: