import dht
from umqtt.simple import MQTTClient
from machine import Pin
from utime import sleep
import time
import network

# MQTT configuration

MQTT_CLIENT_ID = "Wokwi-GUEST"
MQTT_BROKER    = "test.mosquitto.org"
MQTT_USER      = ""
MQTT_PASSWORD  = ""
MQTT_TOPIC     = "/data"

# Define le dht22 comme un périphérique d'entrée
d = Pin(15, Pin.IN)
sensor = dht.DHT22(d)

# se connecter au wifi
try:
    sta_if = network.WLAN(network.STA_IF)
    sta_if.active(True)
    sta_if.connect('Wokwi-GUEST', '')
    print("---Connexion en cours---")
    while not sta_if.isconnected():
        print(".", end="")
        time.sleep(0.1)
except Excepion as e:
    print(e)
print("---Connectée!---")

# Connection au MQTT broker
client = MQTTClient(MQTT_CLIENT_ID,MQTT_BROKER,user=MQTT_USER,password=MQTT_PASSWORD)
try:
    client.connect()
except OSError as e:
    print(f"Error connecting to MQTT broker: {e}")
    sleep(100)

while True:
    # lire la temperature et humidité
    sensor.measure()

    # Stocker les valeurs de la température et de l'humidité dans des variables
    tmp = sensor.temperature()
    hum = sensor.humidity()
    # publier la temperature et humidity au MQTT broker
    try:
        client.publish(MQTT_TOPIC + "/temperature",str(tmp))
        client.publish(MQTT_TOPIC + "/humidity",str(hum))
    # Afficher les résultats
        print(f"Température: {tmp}°C \nHumidité: {hum}%")
        print("_____\n")
    except OSError as e:
        print(f"Error publishing data to MQTT broker: {e}")
    
    sleep(1)