Advertisement
Guest User

Untitled

a guest
Nov 29th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.09 KB | None | 0 0
  1. """
  2. importiert Module, um:
  3. -die Eingabe-/Ausgabepins des RaspberryPi's,
  4. -Pausen nutzen zu können
  5. -sys und hx711 werden für das Auslesen der Wägezelle benötigt
  6. """
  7. import RPi.GPIO as GPIO
  8. import time
  9. import sys
  10. import smtplib
  11. import os
  12. from hx711 import HX711
  13.  
  14. def cleanAndExit():
  15.     GPIO.cleanup()
  16.     p.stop()
  17.     server.quit()
  18.     os.system("sudo shutdown -h now")
  19.     print("Script wird beendet!")
  20.     sys.exit()
  21.  
  22. def pausescript():
  23.     check = False
  24.     print("Das Script wurde pausiert!")
  25.     while check == False:
  26.         checkbutton = GPIO.input(13)
  27.         if checkbutton == False:
  28.             print("Script wird fortgesetzt!")
  29.             GPIO.output(19, GPIO.HIGH)
  30.             check = True
  31.            
  32.         time.sleep(0.5)
  33.         GPIO.output(19, GPIO.LOW)
  34.         time.sleep(1)
  35.         GPIO.output(19, GPIO.HIGH)
  36.    
  37. def rotate(x):
  38.     if x < 100:
  39.         #klappe wird geöffnet
  40.         print("Klappe auf!")
  41.         p.ChangeDutyCycle(12.5)
  42.         GPIO.output(19, GPIO.LOW)
  43.    
  44.         time.sleep(3)
  45.  
  46.         #klappe wird geschlossen
  47.         print("Klappe zu!")
  48.         p.ChangeDutyCycle(7.5)
  49.         GPIO.output(19, GPIO.HIGH)
  50.    
  51.         time.sleep(1)
  52.         p.ChangeDutyCycle(0.0)
  53.     else:
  54.         print("Der Futternapf ist voll!")
  55.  
  56. """ Mailserver initalisieren"""
  57.  
  58. server = smtplib.SMTP('smtp.gmail.com', 587)
  59. server.starttls()
  60. server.login("georg.grieger@gmail.com", "OVERall9371347")
  61.  
  62. """hx711 initialisieren"""
  63.  
  64. hx = HX711(5, 6)
  65. hx.set_reading_format("LSB", "MSB")
  66. hx.set_reference_unit(388)
  67. hx.reset()
  68. hx.tare()
  69. weiavg = 0
  70.  
  71. """Servo initialisieren"""
  72. #Pin 4 und 19 des GPIO aktivieren
  73. GPIO.setup(4,GPIO.OUT)
  74. GPIO.setup(19, GPIO.OUT)
  75. #GPIO 19 auf "HIGH" setzen, um LED anzuschalten
  76. GPIO.output(19, GPIO.HIGH)
  77.  
  78. #Pin 13 aktivieren und als "pulled up" setzen
  79. GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  80.  
  81. #Variable p als PWM Signal auf pin 7 gestartet, Frequenz 50Hz
  82. p = GPIO.PWM(4,50)
  83.  
  84. #PWM-Signal der Variable p (Pin 4) wird gestartet
  85. p.start(7.5)
  86.  
  87. check = [1, 2, 3]
  88. shutdown = True
  89.  
  90. while True:
  91.     for i in range(3):
  92.         try:
  93.             for e in range(10):
  94.                 wei = hx.get_weight(5)
  95.                 weiavg = (wei + weiavg) / 2
  96.             print("Aktueller Fuellstand:", weiavg, "g")
  97.             rotate(weiavg)
  98.             for f in range(1200):
  99.                 shutdown = GPIO.input(13)
  100.                 if shutdown == False:
  101.                     cleanAndExit()
  102.                 time.sleep(0.5)
  103.            
  104.             check[i] = weiavg / 10
  105.             if check[0] == check[1] == check[2] and weiavg < 100:
  106.                 server.sendmail("georg.grieger@gmail.com", "georg.grieger@gmail.com", "Der Füllstand des Katzenfütterungsroboters ist niedrig, oder es gibt einen Stau im Rohr!")
  107.                 server.sendmail("georg.grieger@gmail.com", "fhgrieger@aol.com", "Der Füllstand des Katzenfütterungsroboters ist niedrig, oder es gibt einen Stau im Rohr!")
  108.                 pausescript()
  109.  
  110.             time.sleep(5)
  111.  
  112.         except(KeyboardInterrupt, SystemExit):
  113.             cleanAndExit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement