import network
import time
import _thread
from machine import Pin, PWM
import dht
import ujson
from umqtt.simple import MQTTClient
MQTT_CLIENT_ID = "esp1"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC_TEMP_ALERT = "esp1/alert"
MQTT_TOPIC_HUMIDITY = "esp1/humidity"
sensor = dht.DHT22(Pin(15))
servo1 = PWM(Pin(17), freq=50)
servo2 = PWM(Pin(18), freq=50)
slide_switch = Pin(19, Pin.IN)
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!")
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.connect()
print("Connected!")
def set_servo_angle(servo, angle):
min_duty = 26
max_duty = 123
duty = int(min_duty + (angle / 180) * (max_duty - min_duty))
servo.duty(duty)
def monitor_environment():
while True:
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
if slide_switch.value() == 0:
if temperature >= 60:
set_servo_angle(servo1, 50)
set_servo_angle(servo2, 180)
else:
set_servo_angle(servo1, 0)
set_servo_angle(servo2, 0)
if humidity < 20:
client.publish(MQTT_TOPIC_HUMIDITY, "Umidade baixa")
else:
client.publish(MQTT_TOPIC_HUMIDITY, "Umidade normal")
else:
set_servo_angle(servo1, 0)
set_servo_angle(servo2, 0)
time.sleep(2)
_thread.start_new_thread(monitor_environment, ())
while True:
time.sleep(1)