import network
import time
import dht
from machine import Pin
from umqtt.simple import MQTTClient
import ujson
sensor = dht.DHT22(Pin(13))
ledVerde = Pin(16, Pin.OUT)
ledAmarelo = Pin(4, Pin.OUT)
ledLaranja = Pin(0, Pin.OUT)
ledVermelho = Pin(2, Pin.OUT)
ledAlarme = Pin(15, Pin.OUT)
MQTT_CLIENT_ID = 'cliente'
MQTT_BROKER = 'broker.hivemq.com'
MQTT_PORT = 1883
MQTT_USER = ''
MQTT_PASSWORD = ''
MQTT_TOPIC_PUB = 'esp32siedschlag/sensor/dht22'
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect('Wokwi-GUEST', '')
print('Tentando conectar ao Wi-Fi...')
while not wifi.isconnected():
print('.', end='')
time.sleep(0.2)
print('Conectado com sucesso!')
print('Configuração de rede: ', wifi.ifconfig())
def conecta_mqtt():
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, port=MQTT_PORT, user=MQTT_USER, password=MQTT_PASSWORD)
client.set_callback(recebeDados)
client.connect()
client.subscribe("esp32siedschlag/temperatura_ambiente_desejada")
client.subscribe("esp32siedschlag/alarme")
print('Conectado ao Broker MQTT!')
return client
def recebeDados(topic, msg):
topico = topic.decode()
mensagem = msg.decode()
if topico == 'esp32siedschlag/alarme':
if mensagem == 'ligar':
print('alarme acionado')
ledAlarme.on()
elif mensagem == "desligar":
ledAlarme.off()
if topico == 'esp32siedschlag/temperatura_ambiente_desejada':
print(temperatura, temperatura_ambiente_desejada, umidade)
client = conecta_mqtt()
temperatura = 0
umidade = 0
while True:
client.check_msg()
sensor.measure()
temperatura = sensor.temperature()
umidade = sensor.humidity()
dados = {
'temperatura': temperatura,
'umidade': umidade
}
mensagem = ujson.dumps(dados)
client.publish(MQTT_TOPIC_PUB, mensagem)
time.sleep(2)