import machine
import dht
import network
import urequests
import time
import random
# Konfigurasi WiFi
SSID = 'Wokwi-GUEST'
PASSWORD = ''
API_KEY = '9FPF1XQYU0I6NIP7'
CHANNEL_ID = 3157022
THINGSPEAK_URL = 'http://api.thingspeak.com/update'
DHT_PIN = machine.Pin(15)
FAN_PIN = machine.Pin(5, machine.Pin.OUT)
ZMPT_PIN = machine.Pin(34)
SCT_PIN = machine.Pin(35)
HEATER_PIN = machine.Pin(25, machine.Pin.OUT)
dht_sensor = dht.DHT22(DHT_PIN)
MIN_TEMP = 30.0
MAX_TEMP = 43.0
dummy_voltages = [180, 210, 220, 230]
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print('Connected to WiFi')
# Setup
connect_wifi()
FAN_PIN.value(0)
HEATER_PIN.value(0)
while True:
try:
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
print(f'Temperature: {temperature}°C, Humidity: {humidity}%')
if temperature < MIN_TEMP or temperature > MAX_TEMP:
print('Temperature out of range!')
dummy_voltage = random.choice(dummy_voltages)
if temperature > MAX_TEMP:
HEATER_PIN.value(1)
dummy_voltage = 220;
print('Voltage out of range!')
heater_status = "Heater aktif"
else :
HEATER_PIN.value(0)
heater_status = "Heater tidak aktif"
if temperature < MIN_TEMP:
HEATER_PIN.value(0)
dummy_voltage = 180;
print('Voltage below of range!')
heater_status = "Heater tidak aktif"
else :
HEATER_PIN.value(1)
heater_status = "Heater aktif"
print(f'Voltage ZMPT101B: {dummy_voltage}V - {heater_status}')
if temperature > MAX_TEMP:
FAN_PIN.value(1)
dummy_current = 2.5
print('Exhaust Fan ON')
else:
FAN_PIN.value(0)
dummy_current = 0.0
print('Exhaust Fan OFF')
url = f'{THINGSPEAK_URL}?api_key={API_KEY}&field1={temperature}&field2={humidity}&field3={dummy_voltage}&field4={dummy_current}'
response = urequests.get(url)
if response.status_code == 200:
print('Data sent to Thingspeak')
else:
print('Error sending data to Thingspeak')
response.close()
except Exception as e:
print(f'Error: {e}')
time.sleep(5)