import network
import time
from machine import Pin
import dht
import ujson
from umqtt.simple import MQTTClient
# MQTT 参数
MQTT_CLIENT_ID = "auto-water-esp32"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_TOPIC = "wokwi-auto-water"
# 传感器
sensor = dht.DHT22(Pin(15))
# LED (模拟水泵)
pump = Pin(25, Pin.OUT)
# 湿度阈值
START_WATER = 40
STOP_WATER = 60
watering = False
# WiFi连接
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!")
# MQTT连接
print("Connecting to MQTT...", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER)
client.connect()
print(" Connected!")
while True:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
print("Temp:", temp)
print("Humidity:", hum)
# 自动浇水逻辑
if hum < START_WATER and not watering:
print("Soil dry -> Start watering")
pump.on()
watering = True
if hum > STOP_WATER and watering:
print("Soil wet -> Stop watering")
pump.off()
watering = False
# MQTT上传
message = ujson.dumps({
"temperature": temp,
"humidity": hum,
"watering": watering
})
print("Publish:", message)
client.publish(MQTT_TOPIC, message)
time.sleep(5)