from machine import Pin, PWM from time import sleep import dht from mq135 import MQ135 from dfplayer import Player import urequests led_pin = Pin(2, Pin.OUT) # create output pin on GPIO0 temp_pin = dht.DHT11(Pin(14)) door_relais_pin = Pin(25, Pin.OUT) # Relais 2 bell_relais_pin = Pin(26, Pin.OUT) # Relais 1 pir_pin = Pin(39, Pin.IN) gas_pin = MQ135(Pin(36)) # analog PIN bell = Player(17, 16) button_pin = Pin(27, Pin.IN, Pin.PULL_UP) # Doorbell button: GPIO27 -> GND servo_pin = Pin(4) servo = PWM(servo_pin,freq=50) # duty for servo is between 40 - 115 bell.volume(15) #server_address = "https://haeusle.svhub.de" server_address = "https://haeusle.hinz.casa" servo_off = 50 servo_on = 100 servo.duty(servo_off) #try: # temp_pin.measure() # temperature = temp_pin.temperature() # humidity = temp_pin.humidity() #except: # print("Error: DHT11 not working") def doorbell_event(): led_pin.on() # -> DFPlayer play mp3 #bell.volume(3) bell.play_from_folder(01, 03) # -> Send signal to server try: response = urequests.get(server_address + "/event?event=doorbell_button") response.close() except: print("Error: Sending doorbell signal to server failed") # -> Servo to push button servo.duty(servo_on) sleep(1) servo.duty(servo_off) # Relais #door_relais_pin.on() #bell_relais_pin.on() def pir_event(): pass def send_sendor_data(): try: temp_pin.measure() temperature = temp_pin.temperature() humidity = temp_pin.humidity() print("Temperature: " + str(temp_pin.temperature()) + " Celsius") print("Humidity: " + str(temp_pin.humidity()) + "%") rzero = gas_pin.get_rzero() corrected_rzero = gas_pin.get_corrected_rzero(temperature, humidity) resistance = gas_pin.get_resistance() ppm = gas_pin.get_ppm() corrected_ppm = gas_pin.get_corrected_ppm(temperature, humidity) print("DHT11 Temperature: " + str(temperature) +"\t Humidity: "+ str(humidity)) print("MQ135 RZero: " + str(rzero) +"\t Corrected RZero: "+ str(corrected_rzero)+ "\t Resistance: "+ str(resistance) +"\t PPM: "+str(ppm)+ "\t Corrected PPM: "+str(corrected_ppm)+"ppm") except: #pass print("Error: send_sendor_data()") def off_signals(): door_relais_pin.off() bell_relais_pin.off() led_pin.off() servo.duty(servo_off) while True: if pir_pin.value() > 0: #pir signal on pir_event() elif button_pin.value() == 0: #button pressed doorbell_event() else: off_signals()