احذف كل الاسطر الي مثل # -------------------------------------------------
واكتب كود مكتمل لا تختصر
"""Smart Fire Detection System using ESP32 and IoT"""
from machine import Pin, PWM, SoftI2C
import time
import dht
import wifi
import ifttt
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
import urequests as requests
# -------------------------------------------------
# Hardware Configuration
# -------------------------------------------------
# Red LED for fire warning indication
ledRed = Pin(13, Pin.OUT)
# DHT22 sensor for temperature and humidity monitoring
dht22_sensor = dht.DHT22(Pin(32, Pin.IN))
# Buzzers for fire alarm sound
buzzer1 = PWM(Pin(12))
buzzer2 = PWM(Pin(14))
# Configure buzzer frequencies
buzzer1.freq(1024)
buzzer2.freq(512)
# Turn buzzers OFF initially
buzzer1.duty(0)
buzzer2.duty(0)
# Make sure LED is OFF initially
ledRed.off()
# -------------------------------------------------
# LCD Configuration
# -------------------------------------------------
I2C_ADDR = 0x27
totalRows = 2
totalColumns = 16
# Initialize I2C communication for LCD
i2c = SoftI2C(scl=Pin(18), sda=Pin(19), freq=100000)
# Initialize LCD display
lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns)
# Display startup message
lcd.move_to(0, 0)
lcd.putstr("Smart Fire")
lcd.move_to(0, 1)
lcd.putstr("Detection Sys")
# -------------------------------------------------
# Connect ESP32 to WiFi
# -------------------------------------------------
wifi.connect_ap()
# -------------------------------------------------
# Main Fire Detection Function
# -------------------------------------------------
def fire_alarm():
# Prevent sending multiple email alerts repeatedly
mail_send_count = 0
while True:
# Wait 5 seconds between readings
time.sleep(5)
# Read temperature and humidity values
dht22_sensor.measure()
temperature = dht22_sensor.temperature()
humidity = dht22_sensor.humidity()
# -------------------------------------------------
# Print readings to Serial Monitor
# -------------------------------------------------
print("=====================================")
print(" SMART FIRE DETECTION SYSTEM ")
print("=====================================")
print("Room Temperature:", str(temperature) + " °C")
print("Room Humidity :", str(humidity) + " %")
# -------------------------------------------------
# Display readings on LCD
# -------------------------------------------------
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Temp: {} C".format(temperature))
lcd.move_to(0, 1)
lcd.putstr("Hum : {} %".format(humidity))
# -------------------------------------------------
# Fire Detection Logic
# -------------------------------------------------
# If temperature exceeds 57°C,
# activate the fire alarm system
if temperature > 57:
print(" ")
print("!!! FIRE ALERT DETECTED !!!")
print("High temperature detected!")
print("Activating alarm system...")
print(" ")
# -------------------------------------------------
# Turn ON LED continuously during fire alert
# -------------------------------------------------
ledRed.on()
# -------------------------------------------------
# Display warning on LCD
# -------------------------------------------------
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("!!! FIRE !!!")
lcd.move_to(0, 1)
lcd.putstr("HIGH TEMP!")
# -------------------------------------------------
# Alarm repetition counter
# -------------------------------------------------
alarm_count = 0
while alarm_count < 3:
# Activate first buzzer
buzzer1.duty(50)
time.sleep(0.4)
# Turn OFF first buzzer
buzzer1.duty(0)
# Activate second buzzer
buzzer2.duty(50)
time.sleep(0.5)
# Turn OFF second buzzer
buzzer2.duty(0)
alarm_count += 1
# -------------------------------------------------
# Send IoT Alert Notification
# -------------------------------------------------
if mail_send_count == 0:
print("Sending emergency notification...")
# Send notification through IFTTT
ifttt.fire_alert(temperature)
print("Notification sent successfully!")
mail_send_count += 1
else:
# -------------------------------------------------
# Safe condition
# -------------------------------------------------
print("System Status: SAFE")
print("No fire detected.")
print(" ")
# -------------------------------------------------
# Turn OFF LED when there is no fire
# -------------------------------------------------
ledRed.off()
# -------------------------------------------------
# Turn OFF alarm devices
# -------------------------------------------------
buzzer1.duty(0)
buzzer2.duty(0)
# -------------------------------------------------
# Reset mail counter
# -------------------------------------------------
mail_send_count = 0
# -------------------------------------------------
# Program Entry Point
# -------------------------------------------------
if __name__ == '__main__':
fire_alarm()