Outils pour utilisateurs

Outils du site


jardin_logique_metier

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
jardin_logique_metier [2025/06/25 14:57] – [Création d'un fichier capteur.py] adminjardin_logique_metier [2025/06/26 13:01] (Version actuelle) – [Commentaires sur la fonction lire_donnees_capteur() :] admin
Ligne 28: Ligne 28:
 </note> </note>
  
-**Code pour le Raspberry Pi zéro**+=====Code pour le Raspberry Pi zéro :=====
  
 <code> <code>
Ligne 64: Ligne 64:
     return datetime.now().strftime("%d-%m-%Y %H:%M:%S")     return datetime.now().strftime("%d-%m-%Y %H:%M:%S")
 </code> </code>
 +
 +=====Code pour le Raspberry Pi 5 :=====
 +
 +<code>
 +#importations
 +import adafruit_dht
 +import board
 +import math
 +from datetime import datetime
 +
 +def lire_donnees_capteur():
 +    try:
 +        dhtDevice = adafruit_dht.DHT22(board.D4)
 +        humidity = dhtDevice.humidity
 +        temperature = dhtDevice.temperature
 +        dhtDevice.exit()
 +        if humidity is not None and temperature is not None:
 +            return round(humidity, 1), round(temperature, 1)
 +        else:
 +            return None, None
 +
 +    except RuntimeError as error:
 +        print("Erreur de lecture :", error)
 +        return None, None
 +
 +    except Exception as error:
 +        dhtDevice.exit()
 +        raise error
 +
 +def calculer_point_de_rosee(temperature, humidity):
 +    #Formule pour calculer le point de rosée
 +    alpha = 17.27
 +    beta = 237.7
 +    gamma = (alpha * temperature) / (beta + temperature) + math.log(humidity / 100)
 +    point_de_rosee = (beta * gamma) / (alpha - gamma)
 +    return round(point_de_rosee, 1)
 +
 +def calculer_humidex(temperature, point_de_rosee):
 +    #Formule pour calculer l'indice humidex
 +    humidex = temperature + (5/9) * (6.11 * math.exp(5417.7530 * ((1/273.16) - (1/273.15 + point_de_rosee))) - 10)
 +    return round(humidex, 1)
 +
 +def recuperer_date_heure():
 +    return datetime.now().strftime("%d-%m-%Y %H:%M:%S")
 +</code>
 +
 +=====Commentaires sur la fonction lire_donnees_capteur() :=====
 +
 +  * Cette fonction permet de lire la température et l’humidité à partir du capteur DHT22 connecté au GPIO4 du Raspberry Pi.
 +  * Elle renvoie ces deux valeurs sous forme de nombres arrondis à une décimale.
 +  * Si la lecture échoue, elle retourne None, None.
 +
 +**try:**
 +
 +  * On démarre un bloc qui va tenter de réaliser la lecture.
 +  * Si une erreur survient, Python basculera dans le bloc except.
 +
 +**dhtDevice = adafruit_dht.DHT22(board.D4)**
 +
 +  * Cette ligne crée un objet capteur, ici un DHT22, branché sur le GPIO4 (représenté par board.D4).
 +  * 💡 👉 C’est une étape indispensable pour communiquer avec le capteur.
 +
 +**humidity = dhtDevice.humidity
 +temperature = dhtDevice.temperature**
 +
 +Ces lignes interrogent le capteur pour récupérer :
 +
 +  * humidity → le taux d’humidité.
 +  * temperature → la température.
 +
 +**dhtDevice.exit()**
 +
 +  * Cette commande est **très importante** : elle **libère les ressources GPIO** utilisées par le capteur.
 +  * Cela évite les erreurs fréquentes sur Raspberry Pi telles que : "//Lost access to message queue//".
 +
 +**if humidity is not None and temperature is not None:**
 +
 +  * On vérifie que le capteur a bien répondu avec des données valides.
 +  * Les capteurs DHT peuvent parfois échouer à donner une valeur.
 +
 +**return round(humidity, 1), round(temperature, 1)**
 +
 +Si les valeurs sont valides :
 +
 +  * On les arrondit à une décimale pour un affichage plus lisible.
 +  * Puis on les renvoie sous la forme de deux nombres.
 +
 +**else: return None, None**
 +
 +Si le capteur n’a pas répondu correctement, la fonction renvoie None pour les deux mesures.
 +
 +**except RuntimeError as error:**
 +
 +  * Gestion des erreurs courantes dues aux capteurs DHT (perte temporaire de lecture).
 +  * On affiche l’erreur mais le programme continue de fonctionner.
 +
 +**except Exception as error:**
 +
 +  * Gestion des erreurs plus graves (problème matériel, GPIO bloqué, etc.).
 +  * On ferme proprement le capteur avec dhtDevice.exit() avant de relancer l’erreur (raise error) pour éventuellement arrêter le programme.
 +
 +----
 +
 +Suite vers [[jardin_application_web|Application web]]
jardin_logique_metier.1750863444.txt.gz · Dernière modification : de admin