Spisu treści:

ESP32 Scraper-parser-mailer i Live Mapper: 4 kroki (ze zdjęciami)
ESP32 Scraper-parser-mailer i Live Mapper: 4 kroki (ze zdjęciami)

Wideo: ESP32 Scraper-parser-mailer i Live Mapper: 4 kroki (ze zdjęciami)

Wideo: ESP32 Scraper-parser-mailer i Live Mapper: 4 kroki (ze zdjęciami)
Wideo: The HARDEST part about programming 🤦‍♂️ #code #programming #technology #tech #software #developer 2024, Listopad
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

Witaj świecie! To mój pierwszy Instruktaż! Nazywam się Marco z Grosseto we Włoszech, nie jestem programistą, nie jestem inżynierem elektronikiem, ale jestem przewodnikiem środowiskowym w naszym lokalnym parku przyrodniczym (park przyrodniczy Maremma).

W mojej spółdzielni dużo pracujemy nad spływami kajakowymi, naturalistycznymi i spokojnymi wycieczkami po rzece Ombrone w celu obserwacji ptaków i odrobiny relaksu.

Ale rzeka Ombrone słynie również z charakterystycznego rodzaju przepływu: od letniego „zera” do jesienno-zimowego przepływu kilku tysięcy metrów sześciennych wody na godzinę.

Z tego powodu rzeka Ombrone jest stale monitorowana przez doskonałą regionalną usługę hydrometryczną (SIR), z fantastycznym miejscem, które udostępnia zebrane dane.

Teraz czekamy na koniec sezonu i pierwsze jesienne powodzie na usunięcie doku i kajaków…

Ale kiedy zaczniemy mówić o skrobaniu parsowaniu esp32ing itp.? jeszcze chwila

Podczas włoskiej blokady zrobiłem pierwszą lekcję migania arduino, fajnie… i nadal bawiłem się czujnikami i arduino C. Więc jeśli uważasz, że mój kod jest surowy lub pełen bezsensownych luk logicznych, rozważ to!

Zrobiłem wiele rzeczy tylko po to, by zmarnować czas, ale przy tym ciągłym ryzyku zalania postanowiłem zrobić coś fajnego: dzięki ESP32 z arduino form factor (Wemos d1 r32), który trzymałem opakowany przez miesiące, ponieważ myślałem, że "trudne", miałem naprawdę dużo satysfakcji:

Zrobiłem skrobak, który pobiera i parsuje dane ze strony internetowej SIR i wyświetla zmienne uzyskane na tanim i2c LCD, a jako jasność-częstotliwość miga na niektórych diodach na realistycznej mapie.

więc jeśli powódź nadejdzie ze zbocza góry, będę ostrzegany przez rosnącą jasność (zmiana poziomu) i rosnącą częstotliwość (zmiana poziomu w ciągu jednej godziny) diod na mapie… ale ESP32 może również wysyłać e-maile! Dlaczego więc nie zrobić dla tego funkcji?

chodźmy teraz zobaczyć poniższy kod!

Kieszonkowe dzieci

  • Płytka oparta na ESP32: użyłem Wemos d1 r32, ponieważ mają żeńskie piny i jest łatwiejszy w obsłudze
  • diody, czerwony jest bardziej „alarmowy”
  • I2C 16x2 LCD iv'e tylko niebieski, ale zielony jest bardziej stylowy
  • tania tablica korkowa
  • pora nocna (opcjonalnie)

Krok 1: Kodeks

Kod
Kod
Kod
Kod

w Internecie znalazłem tylko parsujące samouczki, które wykorzystują zewnętrzne strony do parsowania danych, więc spróbowałem przetestować moc rdzeni esp32 parsujących dane bezpośrednio na płycie… bez problemów!

więc jeśli przeglądasz źródło strony SIR, możesz zrozumieć, jak to działa: na szczęście używają wartości "oddzielonych przecinkami" do wyświetlania swoich danych, więc za pomocą tego kodu szukam stacji hydrograficznej (kod TOSnumber) i liczę liczbę przecinków (jako separator), które zawierają żądaną wartość (i zapisz ją jako zmienną), a następnie zmapuj ją jako jasność diody i czas w milisach dla migania "poziomu zmienności"

Rdzeń tego skrobaka znajduje się w zakładce

ind = payload.indexOf("Numer_stacji TOS"); //pobierz pozycję (ind) od której zacznij liczyć przecinki

String moja_zmienna = getValue_ind(payload, ', ', 8); //gdzie 8 to ósma komórka zdefiniowana przecinkami (separator)

„ładunek” jest tym, co otrzymuję z sieci wcześniej oczyszczonej z „cytatów” i „&nbsp”;

oraz funkcja getValue_ind znajdująca się w głównej zakładce

String getValue_ind(Dane ciągu, separator znaków, indeks int) {

znalezione int = 0; int strIndex = {0, -1}; int maxIndex = data.length() - 1; for (int i = ind; i <= maxIndex && found <= index; i++) { //od pozycji ind if (data.charAt(i) == separator || i == maxIndex) { found++; strIndex[0] = strIndex[1] + 1; strIndex[1] = (i == maxIndex) ? ja + 1: ja; } } return found> index ? data.substring(strIndex[0], strIndex[1]): ""; }

zaadaptowane z

kod pyta o stronę co 15min, chodzi o 44Kb, nie sądzę, że jest to duże obciążenie dla serwerów i dla ESP32.. Aby uniknąć zbytniego przewijania podzieliłem program na różne funkcje, przeczytaj komentarze

tutaj wklejanie kodu jest naprawdę bałaganem… bezpośrednio umieszczam pliki.ino

Użyłem funkcji zakładek w arduino IDE, więc mam różne pliki.ino

to jest najnowsza wersja kodu (?), jest dużo wysiłku, więc będę wdzięczny za każdą sugestię!

- za wyprostowanie jasności diody dla niskich wartości, - za funkcję "mapa" dla zmiennych zmiennoprzecinkowych - za użycie drugiego rdzenia na ESP32, - za zrozumienie jak wydrukować maila html z stringa z sprintfMam spędziłem dużo prawdziwego „nerdingowego czasu”, więc czytaj komentarze w plikach.ino lub na githubie!

jako ustawienia przesyłania użyłem Narzędzia: Schemat partycji: BRAK OTA, aby mieć więcej miejsca na ten ogromny kod

baw się dobrze

kliknij tutaj, aby uzyskać kod na github

Krok 2: Mapa

Mapa
Mapa
Mapa
Mapa
Mapa
Mapa

ta tut jest skoncentrowana na kodzie ESP32, więc mogę podać tylko niektóre słowa kluczowe, linki i używane narzędzia:

doskonała usługa do wyodrębniania obszarów wektorowych z openstreetmap

  • „ostic” QGs do ich trawienia
  • wyszukaj tabelę atrybutów, aby uprościć mapę
  • stwórz układ wydruku i wyeksportuj mapę w formacie svg na papierze formatu A3
  • baw się z "gładszym" ilustratorem
  • Wydrukuj to

Krok 3: Impreza z gorącym klejem

Impreza z gorącym klejem
Impreza z gorącym klejem
Impreza z gorącym klejem
Impreza z gorącym klejem
Impreza z gorącym klejem
Impreza z gorącym klejem
Impreza z gorącym klejem
Impreza z gorącym klejem

więc mogę zasugerować wycięcie otworów na diodę LED i wyświetlacz na papierze przed zamocowaniem go na tablicy korkowej

okablowanie jest naprawdę proste i źle wykonane przeze mnie:P

Mój poziom lutowania: Gołąb

jak widać po kodzie diody przechodzą do pinów 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

wyszukaj pinout ESP32, aby zrozumieć;

Krok 4: Gotowy produkt

Skończony produkt
Skończony produkt

więc to zdjęcie nie jest najlepsze, ale kiedy nadejdzie powódź w rzece, wrzucę fajny film!

Zalecana: