import network
import time
import dht
import machine
from umqtt.simple import MQTTClient
# Konfigurasi WiFi Wokwi
SSID = "Wokwi-GUEST"
PASSWORD = ""
# Konfigurasi MQTT
MQTT_BROKER = "ALL_RED_Tubagus_Restu_Budhi_Pratama" # Gunakan broker publik gratis
MQTT_TOPIC_TEMP1 = "all_red/tubagus/data_sensor"
MQTT_TOPIC_TEMP2 = "all_red/tubagus/data_sensor"
MQTT_TOPIC_LED = "allred/tubagus/led"
MQTT_CLIENT_ID = "mqttx_7b2bcd52"
# Inisialisasi sensor DHT22 dan LED
dht_sensor1 = dht.DHT22(machine.Pin(15)) # Sensor pertama di GPIO 15
dht_sensor2 = dht.DHT22(machine.Pin(4)) # Sensor kedua di GPIO 4
led = machine.Pin(2, machine.Pin.OUT) # LED pada GPIO 2
# Fungsi untuk menghubungkan ke WiFi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
print("Menghubungkan ke WiFi", end="")
while not wlan.isconnected():
print(".", end="")
time.sleep(1)
print("\nTerhubung ke WiFi dengan IP:", wlan.ifconfig()[0])
# Callback MQTT saat pesan diterima
def mqtt_callback(topic, msg):
print(f"Pesan diterima: {topic.decode()} -> {msg.decode()}")
if topic.decode() == MQTT_TOPIC_LED:
if msg.decode().lower() == "on":
led.value(1) # Nyalakan LED
print("LED dinyalakan")
elif msg.decode().lower() == "off":
led.value(0) # Matikan LED
print("LED dimatikan")
# Fungsi untuk mengirim data ke MQTT
def send_to_mqtt(client):
try:
dht_sensor1.measure()
dht_sensor2.measure()
temp1 = dht_sensor1.temperature()
temp2 = dht_sensor2.temperature()
client.publish(MQTT_TOPIC_TEMP1, str(temp1))
client.publish(MQTT_TOPIC_TEMP2, str(temp2))
print(f"Data Dikirim: {MQTT_TOPIC_TEMP1} = {temp1}°C")
print(f"Data Dikirim: {MQTT_TOPIC_TEMP2} = {temp2}°C")
except Exception as e:
print("Error membaca sensor:", e)
# Hubungkan ke WiFi
connect_wifi()
# Inisialisasi koneksi MQTT
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER)
client.set_callback(mqtt_callback)
client.subscribe(MQTT_TOPIC_LED)
print(f"Berlangganan topik: {MQTT_TOPIC_LED}")
# Loop utama
while True:
client.check_msg() # Cek apakah ada pesan baru dari MQTT
send_to_mqtt(client) # Kirim data suhu ke MQTT
time.sleep(10) # Kirim data setiap 10 detik