import network
import json
from umqtt.simple import MQTTClient
from time import sleep
import ntptime
from machine import Pin
import dht
# Initialize DHT22 sensor
Sensor_Data = dht.DHT22(Pin(0))
# Connect to Wi-Fi
print("Connecting to Internet", end="")
sta = network.WLAN(network.STA_IF)
sta.active(True)
sta.connect('Wokwi-GUEST', '')
while not sta.isconnected():
print(".", end="")
sleep(0.1)
print(" connected")
# MQTT configuration
mqtt_broker = "broker.hivemq.com"
mqtt_port = 1883
mqtt_topic = "Sensor/Temperature" # Changed topic
client_id = "Harris"
mqtt = MQTTClient(client_id, mqtt_broker, port=mqtt_port)
def connect_mqtt():
try:
print("connecting to MQTT")
mqtt.connect()
print("Connected to MQTT broker")
except Exception as e:
print("Error Connecting to MQTT broker:", str(e))
# Connect to MQTT broker
connect_mqtt()
while True:
try:
sleep(2)
Sensor_Data.measure()
Temperature_in_Celsius = Sensor_Data.temperature()
# Temperature_in_Fahrenheit = Temperature_in_Celsius * 1.8 + 32.0
# Humidity = Sensor_Data.humidity()
# Create a JSON payload for better structure
payload = json.dumps({
"temperature_celsius": Temperature_in_Celsius,
# "temperature_fahrenheit": Temperature_in_Fahrenheit,
# "humidity": Humidity
})
mqtt.publish(mqtt_topic, payload)
print(f"Published {payload} to topic {mqtt_topic}")
except Exception as e:
print(f"Error in loop: {str(e)}")
# Attempt to reconnect if disconnected
connect_mqtt()