| @@ -1,50 +1,175 @@ | |||
| import time | |||
| from thread import start_new_thread | |||
| from modules import cbpi | |||
| try: | |||
| import RPi.GPIO as GPIO | |||
| except Exception as e: | |||
| pass | |||
| class Buzzer(object): | |||
| sound = ["H", 0.1, "L", 0.1, "H", 0.1, "L", 0.1, "H", 0.1, "L"] | |||
| def __init__(self, gpio): | |||
| try: | |||
| cbpi.app.logger.info("INIT BUZZER NOW GPIO%s" % gpio) | |||
| self.gpio = int(gpio) | |||
| GPIO.setmode(GPIO.BCM) | |||
| GPIO.setup(self.gpio, GPIO.OUT) | |||
| self.state = True | |||
| cbpi.app.logger.info("BUZZER SETUP OK") | |||
| except Exception as e: | |||
| cbpi.app.logger.info("BUZZER EXCEPTION %s" % str(e)) | |||
| self.state = False | |||
| def beep(self): | |||
| if self.state is False: | |||
| cbpi.app.logger.error("BUZZER not working") | |||
| return | |||
| def play(sound): | |||
| try: | |||
| for i in sound: | |||
| if (isinstance(i, str)): | |||
| if i == "H": | |||
| GPIO.output(int(self.gpio), GPIO.HIGH) | |||
| else: | |||
| GPIO.output(int(self.gpio), GPIO.LOW) | |||
| else: | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.sound,)) | |||
| @cbpi.initalizer(order=1) | |||
| def init(cbpi): | |||
| gpio = cbpi.get_config_parameter("buzzer", 16) | |||
| cbpi.buzzer = Buzzer(gpio) | |||
| cbpi.beep() | |||
| cbpi.app.logger.info("INIT OK") | |||
| import time | |||
| from thread import start_new_thread | |||
| from modules import cbpi | |||
| try: | |||
| import RPi.GPIO as GPIO | |||
| except Exception as e: | |||
| pass | |||
| class Buzzer(object): | |||
| # custom beep sounds | |||
| sound = ["H", 0.1, "L"] | |||
| melodie1 = ["H", 0.1, "L", 0.1, "H", 0.1, "L", 0.1, "H", 0.1, "L", 0.1, "H", 0.1, "L", 0.1, "H", 0.1, "L"] | |||
| melodie2 = ["H", 0.1, "L", 0.1, "H", 0.1, "L", 0.1, "H", 0.1, "L"] | |||
| melodie3 = ["H", 0.4, "L", 0.1, "H", 0.4, "L", 0.1, "H", 0.4, "L"] | |||
| melodie4 = ["H", 0.4, "L", 0.1, "H", 0.1, "L", 0.1, "H", 0.4, "L", 0.1, "H", 0.1, "L", 0.1, "H", 0.4, "L"] | |||
| melodie5 = ["H", 0.6, "L", 0.3, "H", 0.6, "L", 0.3, "H", 0.6, "L"] | |||
| melodie6 = ["H", 0.2, "L", 0.4, "H", 0.2, "L", 0.3, "H", 0.2, "L", 0.2, "H", 0.2, "L", 0.1, "H", 0.2, "L", 0.1, "H", 0.2, "L"] | |||
| def __init__(self, gpio): | |||
| try: | |||
| cbpi.app.logger.info("INIT BUZZER NOW GPIO%s" % gpio) | |||
| self.gpio = int(gpio) | |||
| GPIO.setmode(GPIO.BCM) | |||
| GPIO.setup(self.gpio, GPIO.OUT) | |||
| self.state = True | |||
| cbpi.app.logger.info("BUZZER SETUP OK") | |||
| except Exception as e: | |||
| cbpi.app.logger.info("BUZZER EXCEPTION %s" % str(e)) | |||
| self.state = False | |||
| def beep(self): # beeps once when you boot up your Pi with CBPi -- beeps at Brewing finished | |||
| if self.state is False: | |||
| cbpi.app.logger.error("BUZZER not working") | |||
| return | |||
| def play(sound): | |||
| try: | |||
| for i in sound: | |||
| if (isinstance(i, str)): | |||
| if i == "H": | |||
| GPIO.output(int(self.gpio), GPIO.HIGH) | |||
| else: | |||
| GPIO.output(int(self.gpio), GPIO.LOW) | |||
| else: | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.melodie2,)) | |||
| def MashStepEndBeep(self): # beeps at end of step | |||
| if self.state is False: | |||
| cbpi.app.logger.error("BUZZER not working") | |||
| return | |||
| def play(sound): | |||
| try: | |||
| for i in sound: | |||
| if (isinstance(i, str)): | |||
| if i == "H": | |||
| GPIO.output(int(self.gpio), GPIO.HIGH) | |||
| else: | |||
| GPIO.output(int(self.gpio), GPIO.LOW) | |||
| else: | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.melodie1,)) | |||
| def MashInStepEndBeep(self): # beeps at end of step | |||
| if self.state is False: | |||
| cbpi.app.logger.error("BUZZER not working") | |||
| return | |||
| def play(sound): | |||
| try: | |||
| for i in sound: | |||
| if (isinstance(i, str)): | |||
| if i == "H": | |||
| GPIO.output(int(self.gpio), GPIO.HIGH) | |||
| else: | |||
| GPIO.output(int(self.gpio), GPIO.LOW) | |||
| else: | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.melodie3,)) | |||
| def ChilStepEndBeep(self): # beeps at end of step | |||
| if self.state is False: | |||
| cbpi.app.logger.error("BUZZER not working") | |||
| return | |||
| def play(sound): | |||
| try: | |||
| for i in sound: | |||
| if (isinstance(i, str)): | |||
| if i == "H": | |||
| GPIO.output(int(self.gpio), GPIO.HIGH) | |||
| else: | |||
| GPIO.output(int(self.gpio), GPIO.LOW) | |||
| else: | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.melodie4,)) | |||
| def PumpStepEndBeep(self): # beeps at end of step | |||
| if self.state is False: | |||
| cbpi.app.logger.error("BUZZER not working") | |||
| return | |||
| def play(sound): | |||
| try: | |||
| for i in sound: | |||
| if (isinstance(i, str)): | |||
| if i == "H": | |||
| GPIO.output(int(self.gpio), GPIO.HIGH) | |||
| else: | |||
| GPIO.output(int(self.gpio), GPIO.LOW) | |||
| else: | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.melodie5,)) | |||
| def BoilStepEndBeep(self): # beeps at end of step | |||
| if self.state is False: | |||
| cbpi.app.logger.error("BUZZER not working") | |||
| return | |||
| def play(sound): | |||
| try: | |||
| for i in sound: | |||
| if (isinstance(i, str)): | |||
| if i == "H": | |||
| GPIO.output(int(self.gpio), GPIO.HIGH) | |||
| else: | |||
| GPIO.output(int(self.gpio), GPIO.LOW) | |||
| else: | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.melodie6,)) | |||
| @cbpi.initalizer(order=1) | |||
| def init(cbpi): | |||
| gpio = cbpi.get_config_parameter("buzzer", 16) | |||
| cbpi.buzzer = Buzzer(gpio) | |||
| cbpi.beep() | |||
| cbpi.MashStepEndBeep() | |||
| cbpi.MashInStepEndBeep() | |||
| cbpi.ChilStepEndBeep() | |||
| cbpi.PumpStepEndBeep() | |||
| cbpi.BoilStepEndBeep() | |||
| cbpi.app.logger.info("INIT OK") | |||