import network
import time
import dht
from machine import Pin
from umqtt.simple import MQTTClient
# Konfigurasi WiFi
SSID = "GITA ADELIA"
PASSWORD = "19151515"
# Konfigurasi MQTT
MQTT_BROKER = "test.mosquitto.org" # Broker MQTT
CLIENT_ID = "esp32-wokwi" # ID unik untuk ESP32
TOPIC_PUBLISH = "testtopic/gita_aesthlogic/data_sensor" # Topik untuk publish data sensor
TOPIC_SUBSCRIBE = "testtopic/gita_aesthlogic/aktuasi_led" # Topik untuk kontrol LED
# Inisialisasi perangkat
sensor = dht.DHT22(Pin(15)) # Sensor DHT22 pada GPIO 15
led = Pin(2, Pin.OUT) # LED pada GPIO 2
# Fungsi untuk koneksi WiFi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
print("Menghubungkan ke WiFi...")
while not wlan.isconnected():
time.sleep(1)
print("Terhubung ke WiFi:", wlan.ifconfig())
# Callback untuk menerima pesan MQTT
def on_message(topic, msg):
print("Pesan diterima:", topic, msg)
if topic == TOPIC_SUBSCRIBE.encode():
if msg == b"ON":
led.value(1)
print("LED menyala")
elif msg == b"OFF":
led.value(0)
print("LED mati")
# Program utama
def main():
connect_wifi()
# Koneksi ke broker MQTT
client = MQTTClient(CLIENT_ID, MQTT_BROKER)
client.set_callback(on_message)
client.connect()
print("Terhubung ke broker MQTT")
# Berlangganan ke topik kontrol LED
client.subscribe(TOPIC_SUBSCRIBE)
print("Berlangganan ke topik:", TOPIC_SUBSCRIBE)
try:
while True:
# Publish data sensor
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
data = f"{{\"temperature\": {temperature}, \"humidity\": {humidity}}}"
client.publish(TOPIC_PUBLISH, data)
print("Data sensor dikirim:", data)
# Periksa pesan masuk untuk kontrol LED
client.check_msg()
time.sleep(5) # Publish data setiap 5 detik
except KeyboardInterrupt:
print("Program dihentikan")
client.disconnect()
# Jalankan program
main()