"""
MicroPython IoT Weather Station Example for Wokwi.com
To view the data:
1. Go to :/http/www.hivemq.com/demos/websocket-client/
2. Click "Connect"
3. Under Subscriptions, click "Add New Topic Subscription"
4. In the Topic field, type "wokwimca-weather" then click "Subscribe"
Now click on the DHT22 sensor in the simulation,
change the temperature/humidity, and you should see
the message appear on the MQTT Broker, in the "Messages" pane.
"""
import network
import time
from machine import Pin, I2C
import dht
import ujson
from umqtt.simple import MQTTClient
import ssd1306
# ESP32 Pin assignment
i2c = I2C(0, scl=Pin(21), sda=Pin(19))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# MQTT Server Parameters
MQTT_CLIENT_ID = "micropython-weather-demo"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "mepco"
sensor = dht.DHT22(Pin(15))
print("Connecting to WiFi", end="")
wifi_node= network.WLAN(network.STA_IF)
wifi_node.active(True)
wifi_node.connect('Wokwi-GUEST', '')
while not wifi_node.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.connect()
print("Connected!")
while True:
sensor.measure()
message = ujson.dumps({
"temp": sensor.temperature(),
"humidity": sensor.humidity(),
})
print("Reporting to MQTT topic {}: {}".format(MQTT_TOPIC, message))
client.publish(MQTT_TOPIC, message)
oled.text(message,10, 10)
oled.show()
time.sleep(2)
#client.subscribe(call_back)