import network
import dht
from machine import Pin, PWM
import time
import ujson
from umqtt.simple import MQTTClient
## Parâmetros MQTT
MQTT_CLIENT_ID = "micropython-movement-demo"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "wokwi-pool-temperature-topic"
MQTT_TOPIC1 = "wowki-pool-temperature-topic-message"
buzzer = PWM(23, Pin.OUT) # Inicialização do buzzer como PWM
led = Pin(18, Pin.OUT) # Inicialização do LED como saída
buzzer_active = True
led_active = True
def callback(topic, msg):
global buzzer, led, buzzer_active, led_active
print("Mensagem recebida no tópico {}: {}".format(topic.decode(), msg.decode()))
if msg.decode() == "Desligar":
print("Comando recebido para desligar o buzzer e o Aquecedor.")
buzzer.freq(1)
buzzer.duty(40)
led.off()
buzzer_active = False
led_active = False
if msg.decode() == "Ligar":
print("Comando recebido para ligar o buzzer e o Aquecedor.")
buzzer_active = True
led_active = True
## Print status de conexão
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.set_callback(callback)
client.connect()
client.subscribe(MQTT_TOPIC1)
print("Connected!")
sensor = dht.DHT22(Pin(14))
sensor.measure()
temperature = sensor.temperature()
print("A temperatura medida foi: ", sensor.temperature())
led.on()
while True:
client.check_msg()
time.sleep(1)
sensor.measure()
time.sleep(2)
if sensor.temperature() != temperature:
temperature = sensor.temperature()
print("A temperatura medida foi: ", temperature)
if sensor.temperature() >= 30 and buzzer_active == True:
buzzer.freq(500)
buzzer.duty(250)
else:
buzzer.freq(1)
buzzer.duty(40)
if sensor.temperature() >= 30:
client.publish(MQTT_TOPIC, "Temperatura alta detectada, recomenda-se desligar o aquecedor.")
time.sleep(2)
if led_active == True:
led.on()