import network
import time
from machine import Pin
import dht
import ujson
from umqtt.simple import MQTTClient
MQTT_CLIENT_ID = "lab3-IoT"
MQTT_BROKER = "3a6c1f4162fe4b13806da1fef2540a43.s1.eu.hivemq.cloud"
MQTT_PORT = 8883
MQTT_USER = "hivemq.webclient.1763082457368"
MQTT_PASSWORD = "0s4J:1HP3wQhX!<pF>jl"
MQTT_TOPIC = "temperature"
def connectWifi():
print("Connecting to WiFi", end="")
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect('Wokwi-GUEST', '')
while not wifi.isconnected():
print(".", end="")
time.sleep(0.5)
print(" Connected!")
def connectMQTT():
print("Connecting to HiveMQ ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, port=MQTT_PORT, user=MQTT_USER,
password=MQTT_PASSWORD, ssl=True, ssl_params={"server_hostname": MQTT_BROKER})
client.connect()
return client
connectWifi()
client = connectMQTT()
sensor = dht.DHT22(Pin(25))
current_weather = ""
while True:
sensor.measure()
message = ujson.dumps({
"temperature": sensor.temperature(),
"humidity": sensor.humidity(),
})
if message != current_weather:
print(f"Reporting to MQTT topic {MQTT_TOPIC}: {message}\n")
client.publish(MQTT_TOPIC, message)
current_weather = message
time.sleep(1)