Table des matières:

ESP32 Scraper-parser-mailer et Live Mapper : 4 étapes (avec photos)
ESP32 Scraper-parser-mailer et Live Mapper : 4 étapes (avec photos)

Vidéo: ESP32 Scraper-parser-mailer et Live Mapper : 4 étapes (avec photos)

Vidéo: ESP32 Scraper-parser-mailer et Live Mapper : 4 étapes (avec photos)
Vidéo: The HARDEST part about programming 🤦‍♂️ #code #programming #technology #tech #software #developer 2024, Novembre
Anonim
ESP32 Scraper-parser-mailer et Live Mapper
ESP32 Scraper-parser-mailer et Live Mapper
ESP32 Scraper-parser-mailer et Live Mapper
ESP32 Scraper-parser-mailer et Live Mapper
ESP32 Scraper-parser-mailer et Live Mapper
ESP32 Scraper-parser-mailer et Live Mapper

Bonjour le monde! C'est mon premier Instructable ! Je suis Marco de Grosseto Italie, je ne suis pas développeur, je ne suis pas ingénieur en électronique mais je suis guide environnemental dans notre parc naturel local (parc naturel de la Maremme).

Dans ma coopérative, nous travaillons beaucoup avec des excursions en canoë, des excursions naturalistes et calmes sur la rivière Ombrone pour observer les oiseaux et se détendre un peu.

Mais la rivière Ombrone est aussi célèbre pour son type de débit caractéristique: de l'été "zéro" à l'automne-hiver, un débit de plusieurs milliers de mètres cubes d'eau par heure.

Pour cette raison, la rivière Ombrone est surveillée en permanence par l'excellent service hydrométrique régional (SIR), avec un site fantastique qui met à disposition les données collectées.

On attend maintenant la fin de la saison et les premières crues d'automne pour enlever le quai et les canoës…

Mais quand commence-t-on à parler de scraping parsing esp32ing etc? encore un instant

Pendant le verrouillage italien, j'ai fait la première leçon de clignotement d'arduino, cool… et j'ai continué à jouer avec les capteurs et l'arduino C. Donc, si vous trouvez mon code brut ou plein de lacunes logiques absurdes, considérez ceci!

J'ai fait beaucoup de choses juste pour perdre du temps mais avec ce risque constant d'inondation j'ai décidé de faire quelque chose de cool: grâce à un ESP32 avec un facteur de forme arduino (Wemos d1 r32) que j'ai gardé emballé pendant des mois car je pensais "difficile", j'ai vraiment eu beaucoup de satisfactions:

J'ai fait un grattoir qui apporte et analyse les données d'une page Web SIR et affiche les variables obtenues sur un écran LCD i2c bon marché, et sous forme de clignotement de fréquence de luminosité sur certaines leds sur une carte réaliste.

donc si une inondation vient du flanc de la montagne je serai prévenu par la luminosité croissante (changement de niveau) et par la fréquence croissante (changement de niveau en une heure) des leds sur la carte… mais l'ESP32 peut aussi envoyer des mails ! Alors pourquoi ne pas créer une fonction pour cela ?

allons voir le code ci-dessous maintenant!

Fournitures

  • Carte basée sur ESP32: j'ai utilisé Wemos d1 r32 car j'ai des broches femelles et c'est plus facile à manipuler
  • leds, le rouge est plus "alerte comme"
  • I2C 16x2 LCD iv'e seulement un bleu mais le vert est plus élégant
  • panneau de liège pas cher
  • la nuit (facultatif)

Étape 1: le code

Le code
Le code
Le code
Le code

en ligne, je n'ai trouvé que des tutoriels vaporeux qui utilisent des sites externes pour analyser les données, j'ai donc essayé de tester la puissance des cœurs esp32 en analysant les données directement sur la carte… sans problème !

donc si vous visualisez la source de la page SIR, vous pouvez comprendre comment cela fonctionne: heureusement, ils utilisent des valeurs "séparées par des virgules" pour afficher leurs données, donc avec ce code, je recherche une station hydrographique (code TOSnumber) et compte le nombre de virgules (comme séparateur) qui contiennent la valeur que je veux (et la stocke en tant que variable), puis la remapper en tant que luminosité de la led et temps en millis pour le clignotement du "niveau de variation"

Le noyau de ce scraper se trouve dans l'onglet

ind = payload.indexOf("TOSstation_number"); // obtient la position (ind) à partir de laquelle commencer à compter les virgules

String my_var = getValue_ind(payload, ', ', 8); //où 8 est la huitième cellule définie par des virgules (séparateur)

"payload" est ce que je reçois du Web précédemment nettoyé des "quotations" et "&nbsp";

et la fonction getValue_ind qui se trouve dans l'onglet principal

String getValue_ind (données de chaîne, séparateur de caractères, index int) {

entier trouvé = 0; int strIndex = {0, -1}; int maxIndex = data.length() - 1; for (int i = ind; i <= maxIndex && found <= index; i++) { //depuis la position ind if (data.charAt(i) == séparateur || i == maxIndex) { found++; strIndex[0] = strIndex[1] + 1; strIndex[1] = (i == maxIndex) ? je + 1: je; } } return found> index ? data.substring(strIndex[0], strIndex[1]): ""; }

adapté de

le code demande la page toutes les 15min, c'est environ 44Kb, je ne pense pas que ce soit une grosse charge pour les serveurs et pour l'ESP32.. Pour éviter trop de scrolling j'ai divisé le programme en différentes fonctions, lisez les commentaires

ici le collage de code est vraiment un gâchis… j'ai mis les fichiers.ino directement

J'ai utilisé la fonction d'onglets de l'IDE Arduino, j'ai donc différents fichiers.ino

c'est la dernière version du code (?), il y a beaucoup d'efforts, donc j'apprécierai toute suggestion !

- pour le redressement de la luminosité de la led pour les faibles valeurs, - pour la fonction "map" pour les variables en virgule flottante - pour l'utilisation du second core sur l'ESP32, - pour comprendre comment imprimer un mail html à partir d'une chaîne avec sprintf j'ai passé beaucoup de vrai "temps de neding" alors lisez les commentaires sur les fichiers.ino ou sur github !

en tant que paramètres de téléchargement, j'ai utilisé Tools: Partition Scheme: NO OTA pour avoir plus d'espace pour cet énorme code

s'amuser

cliquez ici pour le code sur github

Étape 2: La carte

La carte
La carte
La carte
La carte
La carte
La carte

ce tut est centré sur le code ESP32 donc je ne peux vous donner que quelques mots clés, liens et outils utilisés:

l'excellent service pour extraire les zones vectorielles du formulaire openstreetmap

  • les QGis "ostiques" pour les digérer
  • rechercher une table attributaire pour simplifier votre carte
  • créer une mise en page imprimée et exporter la carte au format svg sur papier A3
  • amusez-vous avec l'illustrateur "plus lisse"
  • imprime le

Étape 3: La fête de la colle chaude

La fête de la colle chaude
La fête de la colle chaude
La fête de la colle chaude
La fête de la colle chaude
La fête de la colle chaude
La fête de la colle chaude
La fête de la colle chaude
La fête de la colle chaude

donc je peux suggérer de découper les trous pour la led et l'affichage sur le papier avant de le fixer sur le panneau de liège

le cablage est vraiment simple et et et mal fait par moi:P

Mon niveau de soudure: Pigeon

comme vous pouvez le voir sur le code, les leds vont aux broches 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

rechercher le brochage ESP32 pour comprendre

Étape 4: Le produit fini

Le produit fini
Le produit fini

donc cette photo n'est pas la meilleure, mais quand nous aurons des crues de rivière je mettrai une belle vidéo !

Conseillé: