Sommario:

ESP32 Scraper-parser-mailer e Live Mapper: 4 passaggi (con immagini)
ESP32 Scraper-parser-mailer e Live Mapper: 4 passaggi (con immagini)

Video: ESP32 Scraper-parser-mailer e Live Mapper: 4 passaggi (con immagini)

Video: ESP32 Scraper-parser-mailer e Live Mapper: 4 passaggi (con immagini)
Video: Leveraging OpenAI ChatGPT to Scrape Millions of Email Addresses 2024, Dicembre
Anonim
ESP32 Scraper-parser-mailer e Live Mapper
ESP32 Scraper-parser-mailer e Live Mapper
ESP32 Scraper-parser-mailer e Live Mapper
ESP32 Scraper-parser-mailer e Live Mapper
ESP32 Scraper-parser-mailer e Live Mapper
ESP32 Scraper-parser-mailer e Live Mapper

Ciao mondo! Questo è il mio primo Instructable! Sono Marco di Grosseto Italia, non sono uno sviluppatore, non sono un ingegnere elettronico ma sono una guida ambientale nel nostro parco naturale locale (parco naturale della Maremma).

Nella mia cooperativa lavoriamo molto con tour in canoa, tour naturalistici e tranquilli sul fiume Ombrone per il birdwatching e un po' di senso di relax.

Ma il fiume Ombrone è famoso anche per il suo caratteristico tipo di portata: da "zero" estivo a quello autunno-invernale di diverse migliaia di metri cubi d'acqua all'ora.

Per questo motivo il fiume Ombrone è costantemente monitorato dall'ottimo servizio idrometrico regionale (SIR), con un fantastico sito che rende disponibili i dati raccolti.

Adesso aspettiamo la fine della stagione e le prime alluvioni autunnali per togliere la banchina e le canoe…

Ma quando iniziamo a parlare di scraping parsing esp32ing ecc? un momento in più

Durante il lockdown italiano ho fatto la prima lezione di arduino blink, figo… e ho continuato a giocare con i sensori e arduino C. Quindi se trovi il mio codice grezzo o pieno di lacune logiche senza senso considera questo!

Ho fatto tante cose solo per perdere tempo ma con questo costante rischio di allagamento ho deciso di fare qualcosa di figo: grazie a un ESP32 con fattore di forma arduino (Wemos d1 r32) che ho tenuto avvolto per mesi perché pensavo "difficile", ho avuto davvero tante soddisfazioni:

Ho fatto uno scraper che porta e analizza i dati da una pagina Web SIR e visualizza le variabili ottenute su un LCD i2c economico e come lampeggiamento della frequenza di luminosità su alcuni led su una mappa realistica.

quindi se un'alluvione arriva dal versante della montagna verrò avvisato dall'aumento della luminosità (cambio di livello) e dalla frequenza crescente (cambio di livello in un'ora) dei led sulla mappa… ma l'ESP32 può anche inviare email! Allora perché non fare una funzione per questo?

andiamo subito a vedere il codice qui sotto!

Forniture

  • Scheda basata su ESP32: ho usato Wemos d1 r32 perché ha pin femmina ed è più facile da maneggiare
  • led, il rosso è più "avviso come"
  • I2C 16x2 LCD ne ho solo uno blu ma il verde è più elegante
  • tavola di sughero a buon mercato
  • notte (opzionale)

Passaggio 1: il codice

Il codice
Il codice
Il codice
Il codice

online ho trovato solo tutorial vaporosi che utilizzano siti esterni per analizzare i dati, quindi ho provato a testare la potenza dei core esp32 analizzando i dati direttamente sulla scheda… senza problemi!

quindi se visualizzi il sorgente della pagina SIR puoi capire come funziona: fortunatamente usano un valore "virgola separato come" per visualizzare i loro dati, quindi con questo codice cerco una stazione idrografica (codice TOSnumber) e conto il numero di virgole (come separatore) che contengono il valore che voglio (e lo memorizzo come variabile), quindi rimappalo come luminosità del led e tempo in millis per il "livello di variazione" lampeggiante

Il nucleo di questo raschietto è nella scheda

ind = payload.indexOf("TOSstation_number"); // ottieni la posizione (ind) da dove inizia a contare le virgole

String my_var = getValue_ind(payload, ', ', 8); //dove 8 è l'ottava cella definita da virgole (separatore)

"payload" è quello che ottengo dal web precedentemente pulito da "citazioni" e "&nbsp";

e la funzione getValue_ind che si trova nella scheda principale

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

int trovato = 0; int strIndex = {0, -1}; int maxIndex = data.length() - 1; for (int i = ind; i <= maxIndex && found <= index; i++) { //dalla posizione ind if (data.charAt(i) == separator || i == maxIndex) { found++; strIndex[0] = strIndex[1] + 1; strIndex[1] = (i == maxIndex) ? io + 1: io; } } ritorno trovato> indice ? data.substring(strIndex[0], strIndex[1]): ""; }

adattato da

il codice chiede la pagina ogni 15min, sono circa 44Kb, non credo sia un grosso carico per i server e per l'ESP32.. Per evitare troppo scroll ho diviso il programma in diverse funzioni, leggi i commenti

qui l'incollaggio del codice è davvero un disastro… ho messo i file.ino direttamente

ho usato la funzione schede dell'IDE arduino quindi ho diversi file.ino

questa è l'ultima versione del codice (?), ci sono molti sforzi, quindi apprezzerò qualsiasi suggerimento!

- per il raddrizzamento della luminosità del led per valori bassi, - per la funzione "map" per variabili in virgola mobile - per l'utilizzo del secondo core su ESP32, - per capire come stampare una mail html da una stringa con sprintfHo passato un sacco di vero "tempo da nerding", quindi leggi i commenti sui file.ino o su github!

come impostazioni di caricamento ho usato Strumenti: Schema di partizione: NO OTA per avere più spazio per questo enorme codice

divertiti

clicca qui per il codice su github

Passaggio 2: la mappa

La mappa
La mappa
La mappa
La mappa
La mappa
La mappa

questo tutorial è incentrato sul codice ESP32, quindi posso darti solo alcune parole chiave, collegamenti e strumenti utilizzati:

l'ottimo servizio per estrarre aree vettoriali da openstreetmap

  • i QGi "ostici" per digerirli
  • cerca la tabella degli attributi per semplificare la tua mappa
  • creare un layout di stampa ed esportare la mappa in formato svg su carta formato A3
  • divertiti con l'illustratore più "liscio"
  • stampalo

Passaggio 3: la festa della colla a caldo

La festa della colla a caldo
La festa della colla a caldo
La festa della colla a caldo
La festa della colla a caldo
La festa della colla a caldo
La festa della colla a caldo
La festa della colla a caldo
La festa della colla a caldo

quindi posso suggerire di fustellare i fori per il led e il display sulla carta prima di fissarlo sulla bacheca di sughero

il cablaggio è davvero semplice e fatto male da me:P

Il mio livello di saldatura: Pigeon

come puoi vedere dal codice i led vanno ai pin 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

cerca il pinout ESP32 per capire

Passaggio 4: il prodotto finito

Il prodotto finito
Il prodotto finito

quindi questa foto non è delle migliori, ma quando avremo un po' di piena del fiume metterò un bel video!

Consigliato: