from machine import Pin
import network
import time
import ujson
from umqtt.simple import MQTTClient
# =====================================================
# MQTT Configuration
# =====================================================
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_TOPIC = b"smart/curtain/system"
CLIENT_ID = "ESP32_BOARD1"
# =====================================================
# WiFi Connection
# =====================================================
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
print("Connecting to WiFi...")
wifi.connect("Wokwi-GUEST", "")
while not wifi.isconnected():
time.sleep(0.2)
print("WiFi Connected!")
print(wifi.ifconfig())
# =====================================================
# MQTT Connection
# =====================================================
print("MQTT Connecting")
client = MQTTClient(CLIENT_ID, MQTT_BROKER)
client.connect()
print("MQTT Connected")
# =====================================================
# Push Buttons
# =====================================================
# OPEN Button
open_button = Pin(14, Pin.IN, Pin.PULL_UP)
# CLOSE Button
close_button = Pin(12, Pin.IN, Pin.PULL_UP)
# STOP Button
stop_button = Pin(13, Pin.IN, Pin.PULL_UP)
# =====================================================
# Variables
# =====================================================
current_state = "NO_PRESS"
last_state = ""
print("Board 1 Ready")
# =====================================================
# Main Loop
# =====================================================
while True:
current_state = "NO_PRESS"
if open_button.value()==0:
current_state = "OPEN"
elif close_button.value()==0:
current_state = "CLOSE"
elif stop_button.value() == 0:
current_state = "STOP"
if current_state != last_state:
msg = ujson.dumps({
"state": current_state
})
client.publish(MQTT_TOPIC, msg)
print("----------------")
print("Published: ", msg)
last_state = current_state
time.sleep_ms(20)