1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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()
|