Съдържание:

ESP32 Scraper-parser-mailer и Live Mapper: 4 стъпки (със снимки)
ESP32 Scraper-parser-mailer и Live Mapper: 4 стъпки (със снимки)

Видео: ESP32 Scraper-parser-mailer и Live Mapper: 4 стъпки (със снимки)

Видео: ESP32 Scraper-parser-mailer и Live Mapper: 4 стъпки (със снимки)
Видео: Leveraging OpenAI ChatGPT to Scrape Millions of Email Addresses 2024, Ноември
Anonim
ESP32 Scraper-parser-mailer и Live Mapper
ESP32 Scraper-parser-mailer и Live Mapper
ESP32 Scraper-parser-mailer и Live Mapper
ESP32 Scraper-parser-mailer и Live Mapper
ESP32 Scraper-parser-mailer и Live Mapper
ESP32 Scraper-parser-mailer и Live Mapper

Здравей свят! Това е първият ми Instructable! Аз съм Марко от Гросето Италия, не съм разработчик, не съм електронен инженер, но съм екологичен водач в нашия местен природен парк (природен парк Маремма).

В моята кооперация работим много с обиколки с кану, натуралистични и спокойни обиколки по река Омброне за наблюдение на птици и малко смисъл за релаксация.

Но река Омброне е известна и с характерния си вид поток: от лятното „нулево“до есенно-зимния поток от няколко хиляди кубически метра вода на час.

Поради тази причина река Ombrone се наблюдава постоянно от отличната регионална хидрометрична услуга (SIR), с фантастичен сайт, който прави събраните данни достъпни.

Сега чакаме края на сезона и първите есенни наводнения за премахване на дока и канутата …

Но когато започнем да говорим за остъргване на синтактичния анализ на esp32ing и т.н.? още един момент

По време на италианското блокиране направих първия arduino мигащ урок, готино … и продължих да си играя със сензори и arduino C. Така че, ако намерите моя код груб или пълен с безсмислени логически пропуски, помислете за това!

Направих много неща само за да губя време, но с този постоянен риск от наводнение реших да направя нещо готино: благодарение на ESP32 с ардуино форм -фактор (Wemos d1 r32), който държах опакован в продължение на месеци, защото мислех, че е „трудно“, Наистина имах много удовлетворения:

Направих скрепер, който пренася и анализира данни от SIR уеб страница и показва променливите, получени на евтин i2c LCD, и като мигаща честота на яркост на някои светодиоди на реалистична карта.

така че ако наводнение дойде от планинската страна, ще бъда предупреден от нарастващата яркост (промяна на нивото) и от нарастващата честота (промяна на нивото за един час) на светодиодите на картата … но ESP32 може също да изпраща имейли! Така че защо да не направите функция за това?

нека да видим кода по -долу сега!

Консумативи

  • База, базирана на ESP32: Използвал съм Wemos d1 r32, защото има женски щифтове и е по -лесно за работа
  • светодиоди, червеното е по -скоро "нащрек като"
  • I2C 16x2 LCD е само син, но зеленият е по -стилен
  • евтина коркова дъска
  • нощно време (по избор)

Стъпка 1: Кодът

Кодът
Кодът
Кодът
Кодът

онлайн намерих само изпарени уроци, които използват външни сайтове за анализиране на данни, затова се опитах да тествам силата на ядрата esp32, които анализират данните директно на дъската … без проблеми!

така че, ако видите страницата SIR, източникът може да разбере как работи: за щастие те използват стойности, разделени със запетая, като за показване на техните данни, така че с този код търся хидрографска станция (код TOSnumber) и преброявам броя на запетаите (като разделител), които съдържат желаната от мен стойност (и я съхраняват като променлива), след което я пренареждат като яркост на светодиода и време в милис за мигане на „ниво на вариация“

Ядрото на този скрепер е в раздел

ind = payload.indexOf ("TOSstation_number"); // получаваме позицията (ind) откъдето започваме да броим запетаи

Низ my_var = getValue_ind (полезен товар, ',', 8); // където 8 е осмата клетка, дефинирана със запетаи (разделител)

"полезен товар" е това, което получавам от мрежата, предварително почистена от "цитати" и "& nbsp";

и функцията getValue_ind, която е в главния раздел

Низ getValue_ind (Данни за низ, разделител на символи, int индекс) {

int намерено = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1; for (int i = ind; i <= maxIndex && found <= index; i ++) {// от ind позиция if (data.charAt (i) == разделител || i == maxIndex) {намерен ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} връщане намерено> индекс? data.substring (strIndex [0], strIndex [1]): ""; }

адаптирано от

кодът иска страницата на всеки 15 минути, това е около 44Kb, не мисля, че е голямо натоварване за сървърите и за ESP32.. За да избегна твърде много превъртане, разделих програмата на различни функции, прочетете коментарите

тук поставянето на код е наистина бъркотия … поставих директно.ino файловете

Използвах функцията tabs на arduino IDE, така че имам различни.ino файлове

това е последната версия на кода (?), има много усилия, така че ще оценя всяко предложение!

- за изправяне на яркостта на светодиода за ниски стойности, - за функцията "map" за променливи с плаваща запетая - за използването на второ ядро на ESP32, - за разбиране как да отпечатате html поща от низ с sprintf прекарахте много истинско "време за нерви", така че прочетете коментарите към.ino файловете или в github!

като настройки за качване използвах Инструменти: Схема на дяловете: НЯМА OTA, за да има повече място за този огромен код

забавлявай се

щракнете тук за кода на github

Стъпка 2: Картата

Картата
Картата
Картата
Картата
Картата
Картата

този урок е фокусиран върху кода ESP32, така че мога да ви дам само някои ключови думи, връзки и използвани инструменти:

отличната услуга за извличане на векторни области от openstreetmap

  • "остичните" QGis за тяхното усвояване
  • потърсете таблица с атрибути за опростяване на картата
  • създайте оформление за печат и експортирайте картата във формат svg на хартиен формат А3
  • забавлявайте се с „по -гладкия“илюстратор
  • отпечатайте го

Стъпка 3: Партито с горещо лепило

Партито с горещо лепило
Партито с горещо лепило
Партито с горещо лепило
Партито с горещо лепило
Партито с горещо лепило
Партито с горещо лепило
Партито с горещо лепило
Партито с горещо лепило

така че мога да предложа да изрежете дупките за светодиода и дисплея на хартията, преди да ги фиксирате върху корковата дъска

окабеляването е наистина просто и лошо направено от мен: P

Моето ниво на запояване: Гълъб

както можете да видите от кода, светодиодите отиват към 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

потърсете разпечатване на ESP32 за разбиране

Стъпка 4: Готовият продукт

Готовият продукт
Готовият продукт

така че тази снимка не е най -добрата, но когато имаме речно наводнение, ще пусна хубаво видео!

Препоръчано: