print("Hello, ESP32!") # Imprime uma mensagem de saudação no console
import network # Biblioteca para gerenciar a rede
import time # Biblioteca para funções relacionadas ao tempo
from machine import Pin # Biblioteca para controle de pinos do microcontrolador
import dht # Biblioteca para sensor DHT
import ujson # Biblioteca para trabalhar com JSON
from umqtt.simple import MQTTClient # Biblioteca para MQTT
# Parâmetros do servidor MQTT
MQTT_CLIENT_ID = "Femmes" # Identificação do cliente MQTT
MQTT_BROKER = "broker.mqttdashboard.com" # Endereço do broker MQTT
MQTT_USER = "" # Nome de usuário MQTT (não utilizado)
MQTT_PASSWORD = "" # Senha MQTT (não utilizada)
MQTT_TOPIC1 = "CidadeInd.Umidade" # Tópico MQTT para publicar umidade
MQTT_TOPIC2 = "CidadeInd.Temperatura" # Tópico MQTT para publicar temperatura
# Inicializa o sensor DHT22 no pino 4 do ESP32
sensor = dht.DHT22(Pin(4))
# Conectando ao Wi-Fi
print("Conectando com o Wi-fi", end="")
sta_if = network.WLAN(network.STA_IF) # Cria uma interface de rede no modo estação (STA)
sta_if.active(True) # Ativa a interface de rede
sta_if.connect('Wokwi-GUEST', '') # Conecta à rede Wi-Fi com SSID 'Wokwi-GUEST' e senha vazia
while not sta_if.isconnected(): # Espera até que a conexão seja estabelecida
print(".", end="")
time.sleep(0.1) # Pausa de 0,1 segundo entre as verificações
print(" Conectado!") # Imprime mensagem de sucesso na conexão
# Conectando ao servidor MQTT
print("Conectando com o MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD) # Configura o cliente MQTT
client.connect() # Conecta ao servidor MQTT
print("Conectado!") # Imprime mensagem de sucesso na conexão ao servidor MQTT
previsaoClima = "" # Variável para armazenar a última previsão do clima
while True:
print("Medindo as condições climáticas... ", end="")
sensor.measure() # Realiza a medição de temperatura e umidade
mensagem = ujson.dumps({ # Converte as medições em um objeto JSON
"temp": sensor.temperature(), # Adiciona a temperatura ao objeto JSON
"umidade": sensor.humidity(), # Adiciona a umidade ao objeto JSON
})
if mensagem != previsaoClima: # Verifica se há mudanças nas medições
print("Atualizado!") # Informa que as medições foram atualizadas
client.publish(MQTT_TOPIC1, str(sensor.humidity())) # Publica a umidade no tópico MQTT correspondente
client.publish(MQTT_TOPIC2, str(sensor.temperature())) # Publica a temperatura no tópico MQTT correspondente
previsaoClima = mensagem # Atualiza a última previsão do clima
else:
print("Não houve mudanças!") # Informa que não houve mudanças nas medições
time.sleep(1) # Pausa de 1 segundo antes da próxima medição