jardin_logique_metier
Ceci est une ancienne révision du document !
Table des matières
Logique métier
Nous allons demander à Python de générer une page web et d'y afficher nos données.
Structure du code
Nous sommes prêt à structurer plus proprement notre application en séparant :
-
la logique capteur/météo (lecture, calculs, API),
-
l’application web (routes, affichage),
Création d'un fichier capteur.py
Dans une démarche de développement propre, modulaire et réutilisable, on sépare la logique métier (la lecture des données et les calculs) de l’interface utilisateur (site web, affichage).
Le fichier capteur.py ne contient plus de boucle while True ni de traitement direct. Il est composé exclusivement de fonctions, que l’on pourra appeler depuis une autre application, ici app.py (notre serveur Flask).
Ce script agit comme une boîte à outils. Il regroupe :
-
la lecture du capteur DHT22,
-
le calcul du point de rosée,
-
le calcul de l’indice humidex,
-
la récupération de la date et heure actuelles.
Le projet final étant hors ligne, nous retirons la partie appel API d'openweather, cette partie du code n'avait qu'un but pédagogique.
#importations import Adafruit_DHT import math from datetime import datetime #definir le capteur et le port GPIO DHT_SENSOR = Adafruit_DHT.DHT22 DHT_PIN = 4 def lire_donnees_capteur(): humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN) #attention, la fonction read_retry() retourne en premier l'humidité puis la temperature. if humidity is not None and temperature is not None: return round(humidity, 1), round(temperature, 1) else: return None, None 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")
jardin_logique_metier.1750860312.txt.gz · Dernière modification : de admin