main.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from machine import Pin, PWM
  2. from time import sleep
  3. import dht
  4. from mq135 import MQ135
  5. from dfplayer import Player
  6. import urequests
  7. led_pin = Pin(2, Pin.OUT) # create output pin on GPIO0
  8. temp_pin = dht.DHT11(Pin(14))
  9. door_relais_pin = Pin(25, Pin.OUT) # Relais 2
  10. bell_relais_pin = Pin(26, Pin.OUT) # Relais 1
  11. pir_pin = Pin(39, Pin.IN)
  12. gas_pin = MQ135(Pin(36)) # analog PIN
  13. bell = Player(17, 16)
  14. button_pin = Pin(27, Pin.IN, Pin.PULL_UP) # Doorbell button: GPIO27 -> GND
  15. servo_pin = Pin(4)
  16. servo = PWM(servo_pin,freq=50) # duty for servo is between 40 - 115
  17. bell.volume(15)
  18. #server_address = "https://haeusle.svhub.de"
  19. server_address = "https://haeusle.hinz.casa"
  20. servo_off = 50
  21. servo_on = 100
  22. servo.duty(servo_off)
  23. #try:
  24. # temp_pin.measure()
  25. # temperature = temp_pin.temperature()
  26. # humidity = temp_pin.humidity()
  27. #except:
  28. # print("Error: DHT11 not working")
  29. def doorbell_event():
  30. led_pin.on()
  31. # -> DFPlayer play mp3
  32. #bell.volume(3)
  33. bell.play_from_folder(01, 03)
  34. # -> Send signal to server
  35. try:
  36. response = urequests.get(server_address + "/event?event=doorbell_button")
  37. response.close()
  38. except:
  39. print("Error: Sending doorbell signal to server failed")
  40. # -> Servo to push button
  41. servo.duty(servo_on)
  42. sleep(1)
  43. servo.duty(servo_off)
  44. # Relais
  45. #door_relais_pin.on()
  46. #bell_relais_pin.on()
  47. def pir_event():
  48. pass
  49. def send_sendor_data():
  50. try:
  51. temp_pin.measure()
  52. temperature = temp_pin.temperature()
  53. humidity = temp_pin.humidity()
  54. print("Temperature: " + str(temp_pin.temperature()) + " Celsius")
  55. print("Humidity: " + str(temp_pin.humidity()) + "%")
  56. rzero = gas_pin.get_rzero()
  57. corrected_rzero = gas_pin.get_corrected_rzero(temperature, humidity)
  58. resistance = gas_pin.get_resistance()
  59. ppm = gas_pin.get_ppm()
  60. corrected_ppm = gas_pin.get_corrected_ppm(temperature, humidity)
  61. print("DHT11 Temperature: " + str(temperature) +"\t Humidity: "+ str(humidity))
  62. print("MQ135 RZero: " + str(rzero) +"\t Corrected RZero: "+ str(corrected_rzero)+
  63. "\t Resistance: "+ str(resistance) +"\t PPM: "+str(ppm)+
  64. "\t Corrected PPM: "+str(corrected_ppm)+"ppm")
  65. except:
  66. #pass
  67. print("Error: send_sendor_data()")
  68. def off_signals():
  69. door_relais_pin.off()
  70. bell_relais_pin.off()
  71. led_pin.off()
  72. servo.duty(servo_off)
  73. while True:
  74. if pir_pin.value() > 0: #pir signal on
  75. pir_event()
  76. elif button_pin.value() == 0: #button pressed
  77. doorbell_event()
  78. else:
  79. off_signals()