from machine import Pin, time_pulse_us
import dht
import time
import network
import urequests
# WiFi
SSID = "Wokwi-GUEST"
PASSWORD = ""
# Ganti dengan URL Web App kalian
URL = "https://script.google.com/macros/s/AKfycbwyICz26KbEKdUx_yrhZdJgygIGRwyWrWDbYi85XetW_mYkdzzE7RmadboUgVyRgk6y/exec"
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Connecting to WiFi...")
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
print(".", end="")
time.sleep(0.5)
print("\nConnected!")
print("IP address:", wlan.ifconfig()[0])
return wlan
# =====================
# KONFIGURASI PIN
# =====================
DHT_PIN = 15
TRIG_PIN = 18
ECHO_PIN = 19
# =====================
# INISIALISASI SENSOR
# =====================
dht_sensor = dht.DHT22(Pin(DHT_PIN))
trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)
# =====================
# FUNGSI BACA JARAK
# =====================
def read_distance():
trig.off()
time.sleep_us(2)
trig.on()
time.sleep_us(10)
trig.off()
duration = time_pulse_us(echo, 1, 30000) # timeout 30 ms
distance = (duration * 0.0343) / 2 # cm
return distance
# =====================
# LOOP UTAMA
# =====================
def loop():
while True:
try:
# Baca DHT22
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
# Baca Ultrasonik
distance = round(read_distance())
print("Suhu :", temperature, "°C")
print("Kelembapan:", humidity, "%")
print("Jarak :", distance,"cm")
print("--------------------------")
# Cek data valid
if temperature is None or humidity is None or distance is None:
print("Sensor error: data None")
else:
data = {
"temperature": temperature,
"humidity": humidity,
"distance": distance,
"device": "esp32-sim"
}
try:
headers = {"Content-Type": "application/json"}
response = urequests.post(URL, json=data, headers=headers)
print("Sent:", data)
print("HTTP Code:", response.status_code)
response.close()
except Exception as e:
print("HTTP Error:", e)
except Exception as e:
print("Sensor read error:", e)
# jeda 5 detik
time.sleep(5)
connect_wifi()
loop()