IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Probabilité de pluie


Sujet :

Arduino

  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 030
    Par défaut Probabilité de pluie
    Bonjour à tous,

    Depuis quelques temps , je souhaite pouvoir détecter la probabilité de risque de pluie avec un Arduino ( localement car je ne souhaite pas interroger les sites en ligne à cause du quota)
    Les détecteurs actuels sont peu ou pas fiables car l'idéal n'est pas de tester la présence de l'eau ( c'est trop tard ) mais bien la proba lité qu'elle arrive

    Ce faisant , il pourrait exister une solution en mesurant de façon périodique la température et l'humidité extérieures et ainsi me donner quelques solutions

    - soit par un modèle d'approche "par apprentissage automatique"
    je mesure et je stocke les données T° et RH%
    puis j'utilise un "model" pour en déterminer la probabilité mais là je n'ai pas le type de modele

    -soit je détermine alors des seuils
    je mesure T° et RH% et suivant des seuils tels que :
    - Si humidité > 90% et température < 20°C, forte chance de pluie. (vPluie = 1 )
    - Si humidité < 60%, pluie peu probable. (vPluie = 0)

    j'expérimente çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    #include <DHT.h>
    #include <math.h>
     
    // Taille de l'écran OLED
    #define SCREEN_WIDTH 128
    #define SCREEN_HEIGHT 64
     
    // Initialisation de l'écran OLED (adresse 0x3C)
    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
     
    // Capteur DHT
    #define DHTPIN 2
    #define DHTTYPE DHT22
    DHT dht(DHTPIN, DHTTYPE);
     
    // Coefficients issus du modèle de régression logistique
    float a = -0.34513;
    float b = 0.09128;
    float c = -1.43782;
     
    void setup() {
      Serial.begin(9600);
      dht.begin();
     
      // Initialisation de l'écran OLED
      if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
        Serial.println(F("Écran SSD1306 non détecté"));
        for (;;); // Boucle infinie en cas d'erreur
      }
     
      display.clearDisplay();
      display.setTextSize(1);
      display.setTextColor(SSD1306_WHITE);
      display.setCursor(0, 0);
      display.println("Station Meteo");
      display.display();
      delay(2000);
    }
     
    void loop() {
      float temp = dht.readTemperature();
      float humid = dht.readHumidity();
     
      if (isnan(temp) || isnan(humid)) {
        display.clearDisplay();
        display.setCursor(0, 0);
        display.println("Erreur capteur!");
        display.display();
        delay(2000);
        return;
      }
     
      // Calcul de la probabilité de pluie
      float z = a * temp + b * humid + c;
      float proba = 1.0 / (1.0 + exp(-z));  // <=====================
     
      // Affichage sur OLED
      display.clearDisplay();
      display.setCursor(0, 0);
      display.setTextSize(1);
     
      display.print("Temp: ");
      display.print(temp, 1);
      display.println(" C");
     
      display.print("Humid: ");
      display.print(humid, 0);
      display.println(" %");
     
      display.print("Pluie: ");
      display.print(proba * 100, 0);
      display.println(" %");
     
      // Message en fonction du seuil
      display.setCursor(0, 48);
      display.setTextSize(1);
      if (proba >= 0.5) {
        display.println("Pluie probable");
      } else {
        display.println("Pluie peu probable");
      }
     
      display.display();
     
      Serial.print("Temp: ");
      Serial.print(temp);
      Serial.print(" | Humid: ");
      Serial.print(humid);
      Serial.print(" | Proba pluie: ");
      Serial.println(proba, 2);
     
      delay(5000);
    }


    Je voudrais donc simplement ici avoir votre avis ou peut-être avez-vous d'autres solutions


    merci bien
    pascal

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 253
    Par défaut
    Bonjour,
    Citation Envoyé par cobra38 Voir le message
    Ce faisant , il pourrait exister une solution en mesurant de façon périodique la température et l'humidité extérieures et ainsi me donner quelques solutions.
    Sans être météorologue, il manque :
    - La mesure de pression atmosphérique car quand elle baisse il pleut souvent. https://meteofrance.com/actualites-e...temp%C3%A9ries.
    - Tu peux aussi mesurer la luminosité pour tenter de voir le ciel se couvrir (prédiction de court terme car on mesure localement).
    - Le vent qui monte est très souvent annonciateur de pluie.

    Un modèle d'apprentissage me paraît une très bonne idée ! Peut être complexe à mettre en oeuvre ? Je ne l'ai jamais fait personnellement.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 030
    Par défaut
    Bonjour Vincent

    - La mesure de pression atmosphérique car quand elle baisse il pleut souvent. https://meteofrance.com/actualites-e...temp%C3%A9ries.
    - Tu peux aussi mesurer la luminosité pour tenter de voir le ciel se couvrir (prédiction de court terme car on mesure localement).
    - Le vent qui monte est très souvent annonciateur de pluie.
    Oui tu as raison j'ai oublié d'y adjoindre la pression atmosphérique mais je devrais alors changer de capteur (BME680)
    mais je ne vois surtout pas comment l’intégrer dans la formule de proba

    d'ailleurs , j'ai fini par comprendre que la probabilité de pluie tenait compte de la conscience du météorologue (?) et de la zone
    pas forcement de données compilées étrange...

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 792
    Par défaut
    Hello,

    Le modèle Alaro utilisé par l'IRM (météo Belgique) a mis des années (si pas plus d'une décennie) pour être à peu près fiable (c'est en constante évolution). Alors, en amateur (et je ne dénigre rien ni personne), je pense qu'espérer pouvoir prévoir qu'il va pleuvoir, c'est quelque peu "au petit bonheur la chance".
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent ;)

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 030
    Par défaut
    Salut edgarjacobs

    Le modèle Alaro utilisé par l'IRM (météo Belgique) a mis des années (si pas plus d'une décennie) pour être à peu près fiable (c'est en constante évolution). Alors, en amateur (et je ne dénigre rien ni personne), je pense qu'espérer pouvoir prévoir qu'il va pleuvoir, c'est quelque peu "au petit bonheur la chance".
    oh rassures-toi , je n'ai pas cette prétention, je voulais juste trouver une autre approche que celle d'un capteur ou d'une API sur "openweathermap" que je sollicite beaucoup trop à mon goût ...

  6. #6
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 650
    Par défaut
    Bonjour,

    En local cela doit être plus facile d'établir un modèle qu'avoir un modèle général paramétrable localement. Bon déjà, à pile ou face nous avons déjà 50% c'est déjà pas si mal

    La prise en compte de l'électricité statique est assez simple pour détecter les orages à venir (détection > 10 km) mais il y a des orages sans pluie (assez rare) et des pluies sans orage (assez fréquent). J'aurais tendance à prendre les différents éléments déjà cités et les faire contribuer à un évaluateur global avec, dans un premier temps, une logique linéaire et non contradictoire (certaines valeurs de capteurs peuvent influer sur l'interprétation d'autres capteurs). Donc une grosse somme pondérée comparée à un seuil.

    Une détection d'eau serait un plus pour éviter que le bidule soit toujours dans le "non pluie" alors qu'il pleut à verse

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 245
    Billets dans le blog
    48
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     // Coefficients issus du modèle de régression logistique
    float a = -0.34513;
    float b = 0.09128;
    float c = -1.43782;
    //...
     
    // Calcul de la probabilité de pluie
      float z = a * temp + b * humid + c;
      float proba = 1.0 / (1.0 + exp(-z));
    Par curiosité, d'où vient cette formule ?

  8. #8
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 030
    Par défaut
    Salut à tous ,

    Par curiosité, d'où vient cette formule ?
    je suis parti de cette formule

    Nom : 2025-07-23_16-35-04.jpg
Affichages : 117
Taille : 3,7 Ko

    avec quelques datas météo en exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data = {
        'temperature': [22, 25, 18, 20, 27, 15, 17, 30, 28, 21],
        'humidite':    [70, 60, 90, 85, 55, 95, 80, 50, 45, 88],
        'pluie':       [0, 0, 1, 1, 0, 1, 1, 0, 0, 1]
    }
    on finit par trouver les coefficients suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float a = -0.34513;
    float b = 0.09128;
    float c = -1.43782;
    je sais , ce n'est pas terrible au vu du nombre de datas mais ces coefficients sont là pour être ajustés comment ?
    je pensais avec les données méteo annuelles peut-être via API ...


    Une détection d'eau serait un plus pour éviter que le bidule soit toujours dans le "non pluie" alors qu'il pleut à verse
    ahah , j'ai essayé mais c'est une galère les détecteurs ne fonctionnent pas ou trop tard ....

    en fait, je voulais juste m'inspirer des données méteo que l'on retrouve comme par ex la probabilité de 0 à 100% qui me parait, elle, fiable mais je ne sais pas comment cela est généré ....





  9. #9
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 650
    Par défaut
    Bonjour,

    Ce qui est bien avec les probabilités de pluie est que nous sommes incapables humainement de les apprécier réellement. En effet, nous n'intégrons pas les données sur le long terme. Par exemple, pour apprécier une probabilité de 80 %, il faudra maintes occurrences avant d'être capable de dire si les 80 % affichés sont proches de la réalité. Humainement, nous n'aurons qu'une vague impression.

    La convergence vers une solution fiable me semble impliquer enregistrements et contrôles (on retrouve la proposition d'un capteur de pluie ).

    Il y a aussi l'aspect temps (heure pas météo ). La prévision concerne quel horizon de temps ? 1 heure, 2 heures ou plus ? Une prévision, même à 100 % ne sera confirmée que si la pluie arrive avant l'horizon de temps fixé.

    Une idée complètement autre sur ce sujet (peut-être difficile à mettre en œuvre). Les réseaux LoRa captent souvent les données météo. En regardant régulièrement les endroits où il pleut alentour et en dressant une carte de progression de la pluie, il serait possible de dire si l'une des pluies les plus proches s'approche (en regardant les relevés précédents) et à quelle vitesse.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. Probabilité
    Par laclac dans le forum Probabilités
    Réponses: 3
    Dernier message: 12/03/2006, 21h45
  2. algorithme pour calcul de probabilité
    Par filsdugrand dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 14/12/2005, 14h11
  3. [SQL] : lois de probabilité
    Par PpPool dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/11/2005, 15h26
  4. [SQL] : lois de probabilité
    Par PpPool dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2005, 12h31
  5. Démineur, probabilité d'avoir une mine ?
    Par KORTA dans le forum Probabilités
    Réponses: 28
    Dernier message: 25/03/2005, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo