import network
import time
import dht
import ujson
from machine import Pin
from umqtt.simple import MQTTClient
# Sensor DHT22
sensor = dht.DHT22(Pin(15))
# Wi-Fi simulasi Wokwi
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# Konfigurasi EMQX public broker
MQTT_BROKER = "broker.emqx.io"
MQTT_PORT = 1883
MQTT_CLIENT_ID = "pas-esp32-ruang01-73921"
# Topic MQTT
TOPIC = b"pas-teknik/ruang01/monitoring"
def hubungkan_wifi():
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
if not wifi.isconnected():
wifi.connect(WIFI_SSID, WIFI_PASSWORD)
batas = 20
while not wifi.isconnected() and batas > 0:
print("Menghubungkan Wi-Fi...")
time.sleep(1)
batas -= 1
if not wifi.isconnected():
raise RuntimeError("Wi-Fi gagal terhubung")
print("Wi-Fi terhubung:", wifi.ifconfig()[0])
def hubungkan_mqtt():
client = MQTTClient(
MQTT_CLIENT_ID,
MQTT_BROKER,
port=MQTT_PORT,
keepalive=60
)
client.connect()
print("MQTT EMQX terhubung!")
return client
hubungkan_wifi()
client = hubungkan_mqtt()
while True:
try:
sensor.measure()
data = {
"device": "ESP32_01",
"temperature": sensor.temperature(),
"humidity": sensor.humidity()
}
payload = ujson.dumps(data)
client.publish(TOPIC, payload)
print("Topic:", TOPIC.decode())
print("Payload:", payload)
except Exception as e:
print("Error:", e)
try:
client.disconnect()
except Exception:
pass
time.sleep(3)
client = hubungkan_mqtt()
time.sleep(5)
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4