# Project Name: HSC069 - Semen 1 Roda - Rhaka Reza Rayvaldi
# (1) ====== WIFI ==========
import network # Modul Wifi
import time # Modul Waktu Tunda
wifi = network.WLAN(network.STA_IF) # Hubungkan ke Wifi
wifi.active(True) # Aktifkan Wifi
wifi.connect("Wokwi-GUEST", "") # Login Wifi
Lama_tunggu = 0 # Inisialisasi waktu tunggu
print(">>> Menunggu terhubung ke Wifi")
while not wifi.isconnected(): # Selama tidak terhubung Wifi
print("-", end="") # Tampilkan tanda >
time.sleep(0.5) # dengan interval 0.5 detik
Lama_tunggu = Lama_tunggu + 1 # Hitung total waktu tunggu
print(" Selamat!!! Wifi Terhubung, lama tunggu", Lama_tunggu/2, "detik.")
# (2) ===== Test Koneksi ke ESP32 ke LED selama 5 detik LED ON =====
from machine import Pin # Modul ESP32
pin25 = Pin(25, Pin.OUT) # Tentukan pin Output pada diagram
pin25.on() # Nyalakan LED
print(">>> Tes Koneksi ESP32 dan LED")
print(">>> Jika LED Menyala (ON) maka koneksi Sukses")
time.sleep(5.0) # LED ON selama 5 detik
pin25.off()
print(">>> Pastikan LED Mati (OFF)") # Matikan lagi LED
# (3) ===== SENSOR CUACA DHT22 ======
import dht # Mudul Sensor Cuaca
data_sensor = dht.DHT22(Pin(21)) # Tentukan Pin Input Data Sensor
# (4) ===== Parameter MQTT Server =====
from umqtt.simple import MQTTClient # Modul MQTT (HiveMQ)
MQTT_CLIENT_ID = "clientId-mUZSengo5F" # Sesuaikan dengan HiveMQ
MQTT_BROKER = "broker.emqx.io" # Sesuaikan dengan HiveMQ
#MQTT_BROKER = "broker.hivemq.com" # Sesuaikan dengan HiveMQ
#MQTT_BROKER = "mqtt-dashboard.com" # Sesuaikan dengan HiveMQ
MQTT_USER = "" # Sesuaikan dengan HiveMQ
MQTT_PASSWORD = "" # Sesuaikan dengan HiveMQ
MQTT_TOPIC = "/hsc069/rhakarezarayvaldi/data_sensor" # Sesuaikan dengan HiveMQ
# (5) ===== Tes Koneksi ke MQTT Server =====
print(">>> Menghubungkan ke MQTT server... ", end="")
kirim_data = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
kirim_data.connect() # Menghubungkan ke MQTT
print(">>> Sukses Terhubung ke MQTT Server!", end="")
# (6) ===== Membaca SENSOR =======
import ujson
laporan_cuaca = "" # Variabel Penampung Data Cuaca
while True:
print(">>> Mengambil data cuaca... ", end="")
data_sensor.measure() # Membaca Data Sensor
display = ujson.dumps({
"Temperature": data_sensor.temperature(), # Ambil Suhu Udara
"Kelembaban": data_sensor.humidity(), # Ambil Kelembaban Udara
})
if display != laporan_cuaca: # Cek Apakah Data Cuaca Berubah
pin25.on() # Nyalakan LED selama 1 detik
time.sleep(1) # Jika ada perubahan data cuaca
pin25.off()
print("Berhasil Mengambil data Cuaca!")
print("Mengirim Data Cuaca ke MQTT {}: {}".format(MQTT_TOPIC, display))
kirim_data.publish(MQTT_TOPIC, display) # Kirim Data ke MQTT
laporan_cuaca = display
else:
print("Cuaca Tidak Berubah")
time.sleep(1)