import network
import time
from machine import Pin, I2C
import ssd1306
from umqtt.simple import MQTTClient
import dht
import ujson
MQTT_CLIENT_ID = "esp32-variant-2-sensor"
MQTT_BROKER = "mqtt-dashboard.com"
MQTT_TOPIC = "test/tues/wokwi/variant-2"
sensor = dht.DHT22(Pin(14))
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER)
client.connect()
print("Connected to MQTT!")
i2c = I2C(0, scl=Pin(22), sda=Pin(23))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
def display_message(temp):
oled.fill(0)
oled.text('Last Message', 0, 0)
oled.text('{"temp":' + str(temp) + '}', 0, 10)
oled.show()
prev_weather = ""
while True:
print("Measuring weather conditions... ", end="")
sensor.measure()
temp = sensor.temperature()
message = ujson.dumps({
"temp": temp,
})
if message != prev_weather:
print("Updated!")
client.publish(MQTT_TOPIC, message)
display_message(temp)
prev_weather = message
else:
print("No change")
time.sleep(1)