import network
import time
from machine import ADC, Pin
import dht
import ujson
from umqtt.simple import MQTTClient
# MQTT SERVER
SERVIDOR = "broker.hivemq.com"
# MQTT Tópicos
MQTT_TOPICO_TEMP = "temperatura3M"
MQTT_TOPICO_UMID = "umidade3M"
###Adicione um tópico para o potenciometro
#Nome do ESP na rede
NOMEDOESP32 = "ESP3M"
#configurando a classe sensor e o pino do DHT22
sensor = dht.DHT22(Pin(15))
#Conexão WiFi
print("Conectando-se ao 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(" Conectado!")
#Conexão MQTT
print("Conectando-se ao servidor MQTT... ", end="")
client = MQTTClient(NOMEDOESP32, SERVIDOR, 1883)
client.connect()
print("Conectado!")
#loop infinito - equivalente ao void loop
prev_weather = ""
while True:
#Faz as medições
print("Medindo as condições climáticas... ", end="")
sensor.measure()
temperatura=str(sensor.temperature())
umidade = str(sensor.humidity())
###Adicione a leitura do potenciometro
#agrupa as medições em uma string
mensagem = ujson.dumps({
"temperatura": sensor.temperature(),
"umidade": sensor.humidity(),
###adicione a leitura do potenciometro aqui "potenciometro": potenciometro.read() (ver exemplo do potenciometro)
})
#se a medição mudar envia os dados, se não mudar não envia
if mensagem != prev_weather:
print("Atualizado!")
#publish envia os dados ao servidor MQTT
client.publish(MQTT_TOPICO_TEMP, temperatura)
client.publish(MQTT_TOPICO_UMID, umidade)
###adicioneo client.publish do potenciometro
prev_weather = mensagem
else:
print("Sem atualizações!")
time.sleep(1)