import network
import urequests
import utime
import json
# --- SETUP WIFI WOKWI ---
SSID = 'Wokwi-GUEST'
PASSWORD = ''
# --- SETUP OPENWEATHERMAP ---
API_KEY = '96dc3605704dc638ad30d6cbb5527068'
LAT = '5.5710' # Latitude UPT Lab Terpadu USK
LON = '95.3698' # Longitude UPT Lab Terpadu USK
# URL menggunakan API versi 2.5 (Aman & Gratis, sama kayak Prak 08)
URL = "http://api.openweathermap.org/data/2.5/weather?lat={}&lon={}&appid={}&units=metric".format(LAT, LON, API_KEY)
# 1. Hubungkan ke WiFi
print("Menghubungkan ke jaringan WiFi...")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(SSID, PASSWORD)
while not sta_if.isconnected():
print(".", end="")
utime.sleep(0.5)
print("\nWiFi Terhubung! IP:", sta_if.ifconfig()[0])
utime.sleep(1)
# 2. Looping Tarik Data Cuaca Tiap 30 Detik
print("Memulai pengambilan data cuaca UPT Lab Terpadu USK...")
while True:
try:
print("\n--- Mengambil Data Terbaru ---")
response = urequests.get(URL)
# Ekstrak dan tampilkan data JSON jika sukses (HTTP 200)
if response.status_code == 200:
data_json = response.json()
# --- TAMPILKAN JSON MENTAH (Sesuai instruksi Prak 07) ---
print(json.dumps(data_json))
else:
print("Gagal! Kode Error API:", response.status_code)
print("Pesan Error:", response.text)
# Tutup koneksi agar memory ESP32 tidak penuh
response.close()
except Exception as e:
print("Gagal melakukan request:", e)
# Ulangi tiap 30 detik
utime.sleep(30)