from machine import Pin, ADC, PWM
from umqtt.simple import MQTTClient
import time
# MQTT Server Parameters
MQTT_CLIENT_ID = "DJoverdant"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC1 = "value.send" #tópico para enviar mensagem
MQTT_TOPIC2 = "status" #tópico para se inscrever
# Alarme
buzzer_pin = Pin(5, Pin.OUT)
buzzer = PWM(buzzer_pin)
# Potenciômetro
P32 = Pin(32, Pin.IN)
alavanca = ADC(P32)
alavanca.atten(ADC.ATTN_11DB)
# Leds
LED_green = Pin(19, Pin.OUT)
LED_red = Pin(18, Pin.OUT)
# Função de alerta
def alert(POWER):
if POWER == 'ON':
# LED
LED_red.on()
LED_green.off()
# alarme
buzzer.freq(100)
buzzer.duty(112)
else:
# LED
LED_green.on()
LED_red.off()
# alarme
buzzer.duty(0)
# MQTT
def callback(topic, msg):
global status
if msg.decode() > 2500:
client.publish(MQTT_TOPIC2, "Cuidado! o nivel de água está alto!")
alert('ON')
else:
client.publish(MQTT_TOPIC2, "O nível de água está normal.")
alert('OFF')
# Potenciômetro
value = 0
while True:
if value != alavanca.read():
value = alavanca.read()
print('O nivel da água mudou!')
if alavanca.read() > 2500:
print(f'Cuidado! o nivel de água está alto: {alavanca.read()}L')
alert('ON')
else:
print(f'E está normalizado: {alavanca.read()}L')
alert('OFF')
# Wifi
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!")
status = 0
while True:
client.check_msg()
time.sleep(1)