import RPi.GPIO as GPIO
import time
import Adafruit_DHT
# Assigning pin numbers for each device
motion_sensor_pin = 18
flame_sensor_pin = 21
gas_sensor_pin = 28
water_sensor_pin = 27
pump_pin = 17
buzzer_pin = 6
# Setting up DHT sensor type and pin
dht_sensor = Adafruit_DHT.DHT22
dht_pin = 4
# GPIO setup
GPIO.setmode(GPIO.BCM)
GPIO.setup(motion_sensor_pin, GPIO.IN)
GPIO.setup(flame_sensor_pin, GPIO.IN)
GPIO.setup(gas_sensor_pin, GPIO.IN)
GPIO.setup(water_sensor_pin, GPIO.IN)
GPIO.setup(pump_pin, GPIO.OUT)
GPIO.setup(buzzer_pin, GPIO.OUT)
def read_temperature():
"""Read temperature from DHT sensor"""
humidity, temperature = Adafruit_DHT.read_retry(dht_sensor, dht_pin)
if humidity is not None and temperature is not None:
return temperature
else:
return None
def read_motion_sensor():
"""Read motion sensor state"""
return GPIO.input(motion_sensor_pin)
def read_flame_sensor():
"""Read flame sensor state"""
return GPIO.input(flame_sensor_pin)
def read_gas_sensor():
"""Read gas sensor state"""
return GPIO.input(gas_sensor_pin)
def read_water_sensor():
"""Read water sensor state"""
return GPIO.input(water_sensor_pin)
def activate_pump():
"""Activate the pump"""
GPIO.output(pump_pin, GPIO.HIGH)
def deactivate_pump():
"""Deactivate the pump"""
GPIO.output(pump_pin, GPIO.LOW)
def activate_buzzer():
"""Activate the buzzer"""
GPIO.output(buzzer_pin, GPIO.HIGH)
def deactivate_buzzer():
"""Deactivate the buzzer"""
GPIO.output(buzzer_pin, GPIO.LOW)
try:
while True:
temperature = read_temperature()
motion_detected = read_motion_sensor()
flame_detected = read_flame_sensor()
gas_detected = read_gas_sensor()
water_detected = read_water_sensor()
if temperature is not None:
if temperature >= 50:
activate_pump()
print("Over Temperature Detected!")
if motion_detected:
print("Motion Detected!")
if flame_detected:
activate_pump()
activate_buzzer()
print("Fire Detected!")
if gas_detected:
activate_pump()
print("Gas Leakage Detected!")
if water_detected:
print("Water Detected!")
time.sleep(1)
except KeyboardInterrupt:
print("Exiting...")
deactivate_pump()
deactivate_buzzer()
GPIO.cleanup()