Passer au contenu principal

Partie XIV

Ajout de la sonde d’humidité du sol aux scripts

Modification du script station.py

# Importation des bibliothèques relatives aux sondes
import adafruit_dht
import adafruit_bmp280

# Importations des bibliothèques relatives à la puce MCP3008
import adafruit_mcp3xxx.mcp3008 as MCP
from adafruit_mcp3xxx.analog_in import AnalogIn

# Importation de la bibliothèque permettant la gestion des E/S numérique de la puce MCP3008
import digitalio

# Importation de la bibliothèque permettant d'initialiser et utiiliser le bus i2c et spi
import busio

# Importation de la bibliothèque permettant un accès simple et moderne aux broches GPIO
import board

# Importation des bibliothèques permettant de gérer couleurs et mise en page
from rich.console import Console
from rich.text import Text

# Autres importations
import time
import math
from datetime import datetime

# Déclaration des capteurs :

# DHT22
dhtDevice = adafruit_dht.DHT22(board.D4)

# BMP280
i2c = busio.I2C(board.SCL, board.SDA)
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c, address=0x76)

# Déclaration de la puce MCP3008
spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI)
cs = digitalio.DigitalInOut(board.D5)
mcp = MCP.MCP3008(spi, cs)

#Calcul du point de rosée
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.0)
    point_de_rosee = (beta * gamma) / (alpha - gamma)
    return point_de_rosee

#Calcul de l'humidex
def calculer_humidex(temperature, point_de_rosee):
    # Formule pour calculer l'humidex
    humidex = temperature + (5/9) * (6.11 * math.exp(5417.7530 * ((1/273.16) - (1/273.15 + point_de_rosee))) - 10)
    return humidex

# Déclaration de l'objet console pour gérer les couleurs et mise en page
console = Console()

#Boucle et affichage
while True:
    humidity = dhtDevice.humidity
    temperature = dhtDevice.temperature
    capteur_humidite_1 = AnalogIn(mcp, MCP.P0)
    pression = bmp280.pressure
    if humidity is not None and temperature is not None:
        now = datetime.now()
        date_heure = now.strftime("%d-%m-%Y %H:%M:%S")
        point_de_rosee = calculer_point_de_rosee(temperature, humidity)
        humidex = calculer_humidex(temperature, point_de_rosee)
        console.print(f"\U0001f4c5	[bold cyan]Date et heure :[/bold cyan] {date_heure}")
        console.print(f"\U0001f321	[bold red]Température :[/bold red] {round(temperature, 1)}°C")
        console.print(f"\U0001f4a7 	[bold blue]Humidité :[/bold blue] {round(humidity, 1)}%")
        console.print(f"\U00002746 	[bold magenta]Point de rosée :[/bold magenta] {round(point_de_rosee, 1)}°C")
        console.print(f"\U0001f525	[bold yellow]Humidex :[/bold yellow] {round(humidex, 1)}")
        console.print(f"\U0001f32c	[bold green]Pression atmosphérique :[/bold green] {round(pression, 2)} hPa")
        console.print(f"\U0001f331	[bold navajo_white1]Capteur d'humidité du sol 1 (tension) :[/bold navajo_white1] {round(capteur_humidite_1.voltage, 2)} V")
        console.print(f"\U0001f9ea	[bold gold3]Capteur d'humidité du sol 1 (valeur brute) :[/bold gold3] {round(capteur_humidite_1.value, 2)}")
        print("----")
    else:
        print("Échec de la lecture du capteur")

    #Pause de 20 secondes
    time.sleep(20)

Modification du script capteur.py

Modification du script app.py