import network
import time
import urequests
from machine import Pin
import dht
# Koneksi WiFi di Wokwi (Gunakan WiFi Virtual)
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
FLASK_URL = "http://192.168.68.121:5000/api/sensor"
# Konfigurasi Ubidots REST API
UBIDOTS_TOKEN = "BBUS-Sw7nFGCADzR2oAdTXrW7gdu8mYIlvY"
UBIDOTS_URL = "http://industrial.api.ubidots.com/api/v1.6/devices/esp32---sic"
# Konfigurasi Sensor
dht_pin = dht.DHT22(Pin(15)) # DHT11 di GPIO15
trig = Pin(5, Pin.OUT) # HC-SR04 Trigger di GPIO5
echo = Pin(18, Pin.IN) # HC-SR04 Echo di GPIO18
# Koneksi ke WiFi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print("Connected to WiFi")
# Mengukur jarak dengan HC-SR04
def get_distance():
trig.off()
time.sleep_us(2)
trig.on()
time.sleep_us(10)
trig.off()
while echo.value() == 0:
start = time.ticks_us()
while echo.value() == 1:
end = time.ticks_us()
duration = end - start
distance = (duration * 0.0343) / 2 # Konversi ke cm
return round(distance, 2)
# Kirim data ke Ubidots
def send_data(temp, hum, dist):
headers = {
"Content-Type": "application/json"
}
payload = {
"temperature": temp,
"humidity": hum,
"distance": dist
}
response = urequests.post(FLASK_URL, json=payload, headers=headers)
print(response.text)
response.close()
# Jalankan
connect_wifi()
while True:
try:
dht_pin.measure()
temperature = dht_pin.temperature()
humidity = dht_pin.humidity()
distance = get_distance()
print(f"Temperature: {temperature}°C, Humidity: {humidity}%, Distance: {distance}cm")
# Kirim data ke Ubidots
send_data(temperature, humidity, distance)
time.sleep(5)
except Exception as e:
print("Error:", e)