Inhaltsverzeichnis:

ESP32 Scraper-Parser-Mailer und Live Mapper - Gunook
ESP32 Scraper-Parser-Mailer und Live Mapper - Gunook

Video: ESP32 Scraper-Parser-Mailer und Live Mapper - Gunook

Video: ESP32 Scraper-Parser-Mailer und Live Mapper - Gunook
Video: Leveraging OpenAI ChatGPT to Scrape Millions of Email Addresses 2024, November
Anonim
ESP32 Scraper-Parser-Mailer und Live Mapper
ESP32 Scraper-Parser-Mailer und Live Mapper
ESP32 Scraper-Parser-Mailer und Live Mapper
ESP32 Scraper-Parser-Mailer und Live Mapper
ESP32 Scraper-Parser-Mailer und Live Mapper
ESP32 Scraper-Parser-Mailer und Live Mapper

Hallo Welt! Dies ist mein erstes Instructable! Ich bin Marco aus Grosseto Italien, ich bin kein Entwickler, ich bin kein Elektroniker, aber ich bin ein Umweltführer in unserem lokalen Naturpark (Naturpark Maremma).

In meiner Genossenschaft arbeiten wir viel mit Kanutouren, naturalistischen und ruhigen Touren auf dem Ombrone-Fluss zur Vogelbeobachtung und ein bisschen Entspannung.

Der Fluss Ombrone ist aber auch für seine charakteristische Fließrichtung bekannt: vom Sommer "Null" bis zum Herbst-Winter fließt mehrere tausend Kubikmeter Wasser pro Stunde.

Aus diesem Grund wird der Fluss Ombrone ständig vom ausgezeichneten regionalen hydrometrischen Dienst (SIR) überwacht, mit einer fantastischen Website, die die gesammelten Daten zur Verfügung stellt.

Jetzt warten wir auf das Ende der Saison und auf die ersten Herbstfluten, um das Dock und die Kanus zu entfernen…

Aber wenn wir anfangen, über Scraping, Parsen, ESP32ing usw. zu sprechen? noch einen Moment

Während der italienischen Sperrung habe ich die erste Arduino-Blinkstunde gemacht, cool… und ich habe weiterhin mit Sensoren und Arduino C herumgespielt. Wenn Sie also meinen Code grob oder voller unsinniger logischer Lücken finden, denken Sie daran!

Ich habe viele Dinge getan, nur um Zeit zu verschwenden, aber mit diesem ständigen Überschwemmungsrisiko habe ich beschlossen, etwas Cooles zu tun: Dank eines ESP32 mit einem Arduino-Formfaktor (Wemos d1 r32), den ich monatelang verpackt hielt, weil ich dachte, "schwierig", ich hatte wirklich viele Befriedigungen:

Ich habe einen Scraper erstellt, der Daten von einer SIR-Webseite bringt und analysiert und die erhaltenen Variablen auf einem billigen i2c-LCD anzeigt und als Helligkeitsfrequenz auf einigen LEDs auf einer realistischen Karte blinkt.

Wenn also eine Flut von der Bergseite kommt, werde ich durch die zunehmende Helligkeit (Pegeländerung) und durch die zunehmende Häufigkeit (Pegeländerung in einer Stunde) der LEDs auf der Karte gewarnt… aber der ESP32 kann auch E-Mails senden! Warum also nicht eine Funktion dafür machen?

Lass uns jetzt den Code unten sehen!

Lieferungen

  • ESP32-basiertes Board: Ich habe Wemos d1 r32 verwendet, weil es weibliche Pins hat und es einfacher zu handhaben ist
  • LEDs, Rot ist eher "alarmartig"
  • I2C 16x2 LCD ist nur ein blaues, aber das Grün ist stilvoller
  • billiges korkbrett
  • Nachtzeit (optional)

Schritt 1: Der Code

Der Code
Der Code
Der Code
Der Code

online habe ich nur schwammige Tutorials gefunden, die externe Sites zum Parsen von Daten verwenden, also habe ich versucht, die Leistung der ESP32-Kerne zu testen, die die Daten direkt auf dem Board parsen … ohne Probleme!

Wenn Sie sich also die SIR-Seitenquelle ansehen, können Sie verstehen, wie sie funktioniert: Zum Glück verwenden sie "Komma-getrennte" Werte zur Anzeige ihrer Daten, also suche ich mit diesem Code nach einer hydrographischen Station (Code TOSnumber) und zähle die Anzahl der Kommas als Trennzeichen), die den gewünschten Wert enthalten (und als Variable speichern), dann als LED-Helligkeit und Zeit in Millis für das Blinken der "Variationsstufe" neu zuordnen

Der Kern dieses Scrapers befindet sich im

ind = payload.indexOf("TOSstation_number"); // Holen Sie sich die Position (ind), von der aus beginnen, um Kommas zu zählen

String my_var = getValue_ind(payload, ', ', 8); //wobei 8 die achte Zelle ist, die durch Kommas definiert ist (Trennzeichen)

"Nutzlast" ist das, was ich aus dem Web bekomme, das zuvor von "Zitaten" und "&nbsp";

und die Funktion getValue_ind, die sich auf der Hauptregisterkarte befindet

String getValue_ind(String-Daten, Zeichentrennzeichen, Int-Index) {

int gefunden = 0; int strIndex = {0, -1}; int maxIndex = data.length() - 1; for (int i = ind; i <= maxIndex && found <= index; i++) { //von ind Position if (data.charAt(i) == Separator || i == maxIndex) { found++; StrIndex[0] = StrIndex[1] + 1; strIndex[1] = (i == maxIndex) ? ich + 1: ich; } } Rückgabe gefunden> Index ? data.substring(strIndex[0], strIndex[1]): ""; }

angepasst von

der Code fragt alle 15min nach der Seite, er ist ca. 44Kb groß, ich denke nicht, dass dies eine große Last für die Server und für den ESP32 ist.. Um zu viel Scrollen zu vermeiden, habe ich das Programm in verschiedene Funktionen unterteilt, lies die Kommentare

hier ist das Einfügen des Codes wirklich ein Durcheinander … ich habe die.ino-Dateien direkt eingefügt

Ich habe die Tabs-Funktion der Arduino-IDE verwendet, also habe ich verschiedene.ino-Dateien

Dies ist die neueste Version des Codes (?), es gibt viele Bemühungen, also bin ich für jeden Vorschlag dankbar!

- zum Begradigen der LED-Helligkeit für niedrige Werte, - für die "map"-Funktion für Gleitkommavariablen - für die Verwendung des zweiten Kerns auf dem ESP32, - zum Verständnis, wie man mit sprintf eine HTML-Mail aus einem String ausdruckt verbrachte viel echte "Nerding-Zeit", also lesen Sie die Kommentare zu den.ino-Dateien oder auf github!

Als Upload-Einstellungen habe ich Tools: Partition Scheme: NO OTA verwendet, um mehr Platz für diesen riesigen Code zu haben

Spaß haben

klicke hier für den Code auf github

Schritt 2: Die Karte

Die Karte
Die Karte
Die Karte
Die Karte
Die Karte
Die Karte

Dieses Tut konzentriert sich auf den ESP32-Code, daher kann ich Ihnen nur einige Schlüsselwörter, Links und verwendete Tools geben:

der exzellente Service zum Auslesen von vektoriellen Bereichen aus openstreetmap

  • die "ostischen" QGis um sie zu verdauen
  • Suche nach Attributtabellen, um deine Karte zu vereinfachen
  • Erstellen Sie ein Drucklayout und exportieren Sie die Karte im SVG-Format auf A3-Papierformat
  • viel spaß mit dem "glatteren" illustrator
  • Druck es

Schritt 3: Die Heißklebeparty

Die Heißkleber-Party
Die Heißkleber-Party
Die Heißkleber-Party
Die Heißkleber-Party
Die Heißkleber-Party
Die Heißkleber-Party
Die Heißkleber-Party
Die Heißkleber-Party

Daher kann ich vorschlagen, die Löcher für die LED und das Display auf dem Papier zu stanzen, bevor Sie es auf der Korkplatte befestigen

die verkabelung ist echt simpel und von mir schlecht gemacht:P

Mein Lötlevel: Pigeon

Wie Sie dem Code entnehmen können, gehen die LEDs zu den 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

Suchen Sie nach der ESP32-Pinbelegung, um zu verstehen

Schritt 4: Das fertige Produkt

Das fertige Produkt
Das fertige Produkt

Also dieses Foto ist nicht das beste, aber wenn wir ein Flusshochwasser haben, werde ich ein schönes Video einstellen!

Empfohlen: