import network
import time
import blynklib
from machine import Pin, ADC, PWM
import dht
# ---------------- WiFi and Blynk setup ----------------
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASS = ""
BLYNK_AUTH = "Xlc8GVWM0auSkwVjCjOChj1esHZZiosf" # your Blynk token
print("Connecting to WiFi...")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(WIFI_SSID, WIFI_PASS)
while not sta_if.isconnected():
time.sleep(0.5)
print("✅ WiFi connected:", sta_if.ifconfig())
blynk = blynklib.Blynk(BLYNK_AUTH)
# ---------------- Sensor & Actuator setup ----------------
pir = Pin(14, Pin.IN)
ldr = ADC(Pin(34)); ldr.atten(ADC.ATTN_11DB)
gas = ADC(Pin(35)); gas.atten(ADC.ATTN_11DB)
dht_sensor = dht.DHT22(Pin(27))
light = Pin(2, Pin.OUT)
fan = Pin(4, Pin.OUT)
buzzer = Pin(19, Pin.OUT)
door = Pin(22, Pin.OUT)
# ---------------- Main Loop ----------------
print("🏠 Smart Home Started")
while True:
blynk.run()
try:
dht_sensor.measure()
temp = dht_sensor.temperature()
hum = dht_sensor.humidity()
gas_val = gas.read()
ldr_val = ldr.read()
motion = pir.value()
except:
temp, hum = 0, 0
@blynk.on("V6") # Light control button in Blynk app
def v10_handler(value):
if int(value[0]) == 1:
light.value(1)
else:
light.value(0)
@blynk.on("V7") # Fan control
def v11_handler(value):
if int(value[0]) == 1:
fan.value(1)
else:
fan.value(0)
@blynk.on("V9") # Buzzer control
def v12_handler(value):
if int(value[0]) == 1:
buzzer.value(1)
else:
buzzer.value(0)
@blynk.on("V8") # door control
def v12_handler(value):
if int(value[0]) == 1:
door.value(1)
else:
door.value(0)
print("Temp:", temp, "°C | Hum:", hum, "% | Gas:", gas_val, "| LDR:", ldr_val, "| PIR:", motion)
# Auto control
if motion == 1 and ldr_val > 1000:
light.value(1)
else:
light.value(0)
if temp > 28:
fan.value(1)
else:
fan.value(0)
if gas_val > 800:
buzzer.value(1)
else:
buzzer.value(0)
# Send values to Blynk
blynk.virtual_write(1, temp)
blynk.virtual_write(2, hum)
blynk.virtual_write(3, gas_val)
blynk.virtual_write(4, ldr_val)
blynk.virtual_write(5, motion)
time.sleep(2)