jardin_logique_metier
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
jardin_logique_metier [2025/06/25 14:57] – [Création d'un fichier capteur.py] admin | jardin_logique_metier [2025/06/26 13:01] (Version actuelle) – [Commentaires sur la fonction lire_donnees_capteur() :] admin | ||
---|---|---|---|
Ligne 28: | Ligne 28: | ||
</ | </ | ||
- | **Code pour le Raspberry Pi zéro** | + | =====Code pour le Raspberry Pi zéro :===== |
< | < | ||
Ligne 64: | Ligne 64: | ||
return datetime.now().strftime(" | return datetime.now().strftime(" | ||
</ | </ | ||
+ | |||
+ | =====Code pour le Raspberry Pi 5 :===== | ||
+ | |||
+ | < | ||
+ | # | ||
+ | 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, | ||
+ | else: | ||
+ | return None, None | ||
+ | |||
+ | except RuntimeError as error: | ||
+ | print(" | ||
+ | return None, None | ||
+ | |||
+ | except Exception as error: | ||
+ | dhtDevice.exit() | ||
+ | raise error | ||
+ | |||
+ | def calculer_point_de_rosee(temperature, | ||
+ | #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, | ||
+ | |||
+ | def calculer_humidex(temperature, | ||
+ | #Formule pour calculer l' | ||
+ | humidex = temperature + (5/9) * (6.11 * math.exp(5417.7530 * ((1/273.16) - (1/273.15 + point_de_rosee))) - 10) | ||
+ | return round(humidex, | ||
+ | |||
+ | def recuperer_date_heure(): | ||
+ | return datetime.now().strftime(" | ||
+ | </ | ||
+ | |||
+ | =====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 : "// | ||
+ | |||
+ | **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, | ||
+ | |||
+ | 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, | ||
+ | |||
+ | **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