Exemplo n.º 1
0
    def __listen_thread(self, stop_event):
        logMessage('Background thread for serial started')
        while not stop_event.is_set():
            if not self.ser:
                if self.port == 'auto':
                    (serial_port, name) = autoSerial.detect_port(False)
                else:
                    serial_port = self.port
                try:
                    if serial_port is not None:
                        self.ser = serial_for_url(serial_port,
                                                  baudrate=57600,
                                                  timeout=0.1,
                                                  write_timeout=0.1)
                        self.ser.inter_byte_timeout = 0.01  # necessary because of bug in in_waiting with sockets
                        self.ser.flushInput()
                        self.ser.flushOutput()
                        logMessage('Serial (re)connected at port: {0}'.format(
                            str(serial_port)))
                except (IOError, OSError, SerialException) as e:
                    if self.ser:
                        self.ser.close()
                        self.ser = None
                    error = str(e)
                    if error != self.error:
                        #only print once
                        self.error = error
                        logMessage('Error opening serial: {0}'.format(
                            self.error))
                    time.sleep(1)
            else:
                new_data = ""
                try:
                    while self.ser.in_waiting > 0:
                        # for sockets, in_waiting returns 1 instead of the actual number of bytes
                        # this is a workaround for that
                        new_data = new_data + self.ser.read(
                            self.ser.in_waiting)
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.ser.close()
                    self.ser = None

                if len(new_data) > 0:
                    self.buffer = self.buffer + new_data
                    while True:
                        line_from_buffer = self.__get_line_from_buffer()
                        if line_from_buffer:
                            self.queue.put(line_from_buffer)
                        else:
                            break

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)

        logMessage('Background thread for serial stopped')
        if self.ser:
            self.ser.close()
            self.ser = None
Exemplo n.º 2
0
def stopLogging():
    global config
    logMessage("Stopped data logging, as requested in web interface. " +
               "BrewPi will continue to control temperatures, but will not log any data.")
    config = util.configSet(configFile, 'beerName', None)
    config = util.configSet(configFile, 'dataLogging', 'stopped')
    changeWwwSetting('beerName', None)
    return {'status': 0, 'statusMessage': "Successfully stopped logging"}
Exemplo n.º 3
0
def stopLogging():
    global config
    logMessage("Stopped data logging, as requested in web interface. " +
               "BrewPi will continue to control temperatures, but will not log any data.")
    config = util.configSet(configFile, 'beerName', None)
    config = util.configSet(configFile, 'dataLogging', 'stopped')
    changeWwwSetting('beerName', None)
    return {'status': 0, 'statusMessage': "Successfully stopped logging"}
Exemplo n.º 4
0
def resumeLogging():
    global config
    logMessage("Continued logging data, as requested in web interface.")
    if config['dataLogging'] == 'paused':
        config = util.configSet(configFile, 'dataLogging', 'active')
        return {'status': 0, 'statusMessage': "Successfully continued logging."}
    else:
        return {'status': 1, 'statusMessage': "Logging was not paused."}
Exemplo n.º 5
0
 def exit_on_fatal_error(self):
     if self.fatal_error is not None:
         self.stop()
         logMessage(self.fatal_error)
         if self.ser is not None:
             self.ser.close()
         del self.ser # this helps to fully release the port to the OS
         sys.exit("Terminating due to fatal serial error")
Exemplo n.º 6
0
def resumeLogging():
    global config
    logMessage("Continued logging data, as requested in web interface.")
    if config['dataLogging'] == 'paused':
        config = util.configSet(configFile, 'dataLogging', 'active')
        return {'status': 0, 'statusMessage': "Successfully continued logging."}
    else:
        return {'status': 1, 'statusMessage': "Logging was not paused."}
Exemplo n.º 7
0
 def exit_on_fatal_error(self):
     if self.fatal_error is not None:
         self.thread.join() # wait for background thread to terminate
         logMessage(self.fatal_error)
         if self.ser is not None:
             self.ser.close()
         del self.ser # this helps to fully release the port to the OS
         sys.exit("Terminating due to fatal serial error")
Exemplo n.º 8
0
 def write(self, data):
     self.exit_on_fatal_error()
     # prevent writing to a port in error state. This will leave unclosed handles to serial on the system
     if not self.error:
         try:
             self.ser.write(data)
         except (IOError, OSError, SerialException) as e:
             logMessage('Serial Error: {0})'.format(str(e)))
             self.error = True
Exemplo n.º 9
0
def pauseLogging():
    global config
    logMessage("Paused logging data, as requested in web interface. " +
               "BrewPi will continue to control temperatures, but will not log any data until resumed.")
    if config['dataLogging'] == 'active':
        config = util.configSet(configFile, 'dataLogging', 'paused')
        return {'status': 0, 'statusMessage': "Successfully paused logging."}
    else:
        return {'status': 1, 'statusMessage': "Logging already paused or stopped."}
Exemplo n.º 10
0
def pauseLogging():
    global config
    logMessage("Paused logging data, as requested in web interface. " +
               "BrewPi will continue to control temperatures, but will not log any data until resumed.")
    if config['dataLogging'] == 'active':
        config = util.configSet(configFile, 'dataLogging', 'paused')
        return {'status': 0, 'statusMessage': "Successfully paused logging."}
    else:
        return {'status': 1, 'statusMessage': "Logging already paused or stopped."}
Exemplo n.º 11
0
 def write(self, data):
     self.exit_on_fatal_error()
     # Prevent writing to a port in error state.
     # This will leave unclosed handles to serial on the system
     written = 0
     if self.ser:
         try:
             written = self.ser.write(data)
         except (IOError, OSError, SerialException) as e:
             logMessage('Serial Error: {0})'.format(str(e)))
     return written
Exemplo n.º 12
0
 def write(self, data):
     self.exit_on_fatal_error()
     # Prevent writing to a port in error state.
     # This will leave unclosed handles to serial on the system
     written = 0
     if self.ser:
         try:
             written = self.ser.write(data)
         except (IOError, OSError, SerialException) as e:
             logMessage('Serial Error: {0})'.format(str(e)))
     return written
Exemplo n.º 13
0
def startNewBrew(newName):
    global config
    if len(newName) > 1:     # shorter names are probably invalid
        config = util.configSet(configFile, 'beerName', newName)
        config = util.configSet(configFile, 'dataLogging', 'active')
        startBeer(newName)
        logMessage("Notification: Restarted logging for beer '%s'." % newName)
        return {'status': 0, 'statusMessage': "Successfully switched to new brew '%s'. " % urllib.unquote(newName) +
                                              "Please reload the page."}
    else:
        return {'status': 1, 'statusMessage': "Invalid new brew name '%s', "
                                              "please enter a name with at least 2 characters" % urllib.unquote(newName)}
Exemplo n.º 14
0
    def __listen_thread(self, stop_event):
        logMessage('Background thread for serial started')
        while not stop_event.is_set():
            if not self.ser:
                if self.port == 'auto':
                    (serial_port, name) = autoSerial.detect_port(False)
                else:
                    serial_port = self.port
                try:
                    if serial_port is not None:
                        self.ser = serial_for_url(serial_port, baudrate=57600, timeout=0.1, write_timeout=0.1)
                        self.ser.inter_byte_timeout = 0.01 # necessary because of bug in in_waiting with sockets
                        self.ser.flushInput()
                        self.ser.flushOutput()
                        logMessage('Serial (re)connected at port: {0}'.format(str(serial_port)))
                except (IOError, OSError, SerialException) as e:
                    if self.ser:
                        self.ser.close()
                        self.ser = None
                    error = str(e)
                    if error != self.error:
                        #only print once
                        self.error = error
                        logMessage('Error opening serial: {0}'.format(self.error))
                    time.sleep(1)
            else:
                new_data = ""
                try:
                    while self.ser.in_waiting > 0:
                        # for sockets, in_waiting returns 1 instead of the actual number of bytes
                        # this is a workaround for that
                        new_data = new_data + self.ser.read(self.ser.in_waiting)
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.ser.close()
                    self.ser = None

                if len(new_data) > 0:
                    self.buffer = self.buffer + new_data
                    while True:
                        line_from_buffer = self.__get_line_from_buffer()
                        if line_from_buffer:
                            self.queue.put(line_from_buffer)
                        else:
                            break                   

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)

        logMessage('Background thread for serial stopped')
        if self.ser:
            self.ser.close()
            self.ser = None
Exemplo n.º 15
0
def startNewBrew(newName):
    global config
    if len(newName) > 1:     # shorter names are probably invalid
        config = util.configSet(configFile, 'beerName', newName)
        config = util.configSet(configFile, 'dataLogging', 'active')
        startBeer(newName)
        logMessage("Notification: Restarted logging for beer '%s'." % newName)
        return {'status': 0, 'statusMessage': "Successfully switched to new brew '%s'. " % urllib.unquote(newName) +
                                              "Please reload the page."}
    else:
        return {'status': 1, 'statusMessage': "Invalid new brew name '%s', "
                                              "please enter a name with at least 2 characters" % urllib.unquote(newName)}
Exemplo n.º 16
0
 def write(self, data):
     self.exit_on_fatal_error()
     # prevent writing to a port in error state. This will leave unclosed handles to serial on the system
     if not self.error:
         try:
             if hasattr(data, 'encode'):
                 # Encode if it's not already done
                 self.ser.write(data.encode(encoding='cp437'))
             else:
                 self.ser.write(data)
         except (IOError, OSError, SerialException) as e:
             logMessage('Serial Error: {0})'.format(str(e)))
             self.error = True
Exemplo n.º 17
0
    def __listen_thread(self):
        run = True
        while run:
            new_data = ""
            if not self.error:
                try:
                    while self.ser.in_waiting > 0:
                        # for sockets, in_waiting returns 1 instead of the actual number of bytes
                        # this is a workaround for that
                        new_data = new_data + self.ser.read(
                            self.ser.in_waiting)
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.error = True

            if len(new_data) > 0:
                self.buffer = self.buffer + new_data
                while True:
                    line_from_buffer = self.__get_line_from_buffer()
                    if line_from_buffer:
                        self.queue.put(line_from_buffer)
                    else:
                        break

            if self.error:
                try:
                    # try to restore serial by closing and opening again
                    self.ser.close()
                    self.ser.open()
                    # test serial to see if it is restored by writing an empty line (which is ignored by the controller)
                    if self.writeln("") > 0:
                        self.error = False
                    else:
                        self.fatal_error = 'Lost serial connection. Cannot write to serial'

                except (ValueError, OSError, SerialException) as e:
                    if self.ser.isOpen():
                        self.ser.flushInput(
                        )  # will help to close open handles
                        self.ser.flushOutput(
                        )  # will help to close open handles
                    self.ser.close()
                    self.fatal_error = 'Lost serial connection. Error: {0})'.format(
                        str(e))

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)
Exemplo n.º 18
0
def changeWwwSetting(settingName, value):
    wwwSettingsFileName = util.addSlash(config['wwwPath']) + 'userSettings.json'
    if os.path.exists(wwwSettingsFileName):
        wwwSettingsFile = open(wwwSettingsFileName, 'r+b')
        try:
            wwwSettings = json.load(wwwSettingsFile)  # read existing settings
        except json.JSONDecodeError:
            logMessage("Error in decoding userSettings.json, creating new empty json file")
            wwwSettings = {}  # start with a fresh file when the json is corrupt.
    else:
        wwwSettingsFile = open(wwwSettingsFileName, 'w+b')  # create new file
        wwwSettings = {}

    wwwSettings[settingName] = str(value)
    wwwSettingsFile.seek(0)
    wwwSettingsFile.write(json.dumps(wwwSettings))
    wwwSettingsFile.truncate()
    wwwSettingsFile.close()
Exemplo n.º 19
0
def changeWwwSetting(settingName, value):
    wwwSettingsFileName = util.addSlash(config['wwwPath']) + 'userSettings.json'
    if os.path.exists(wwwSettingsFileName):
        wwwSettingsFile = open(wwwSettingsFileName, 'r+b')
        try:
            wwwSettings = json.load(wwwSettingsFile)  # read existing settings
        except json.JSONDecodeError:
            logMessage("Error in decoding userSettings.json, creating new empty json file")
            wwwSettings = {}  # start with a fresh file when the json is corrupt.
    else:
        wwwSettingsFile = open(wwwSettingsFileName, 'w+b')  # create new file
        wwwSettings = {}

    wwwSettings[settingName] = str(value)
    wwwSettingsFile.seek(0)
    wwwSettingsFile.write(json.dumps(wwwSettings))
    wwwSettingsFile.truncate()
    wwwSettingsFile.close()
Exemplo n.º 20
0
    def __listen_thread(self):
        while self.run:
            new_data = ""
            if not self.error:
                try:
                    while self.ser.in_waiting > 0:
                        # for sockets, in_waiting returns 1 instead of the actual number of bytes
                        # this is a workaround for that
                        new_data = new_data + self.ser.read(self.ser.in_waiting)
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.error = True

            if len(new_data) > 0:
                self.buffer = self.buffer + new_data
                while True:
                    line_from_buffer = self.__get_line_from_buffer()
                    if line_from_buffer:
                        self.queue.put(line_from_buffer)
                    else:
                        break

            if self.error:
                try:
                    # try to restore serial by closing and opening again
                    self.ser.close()
                    self.ser.open()
                    # test serial to see if it is restored by writing an empty line (which is ignored by the controller)
                    if self.writeln("") > 0:
                        self.error = False
                    else:
                        self.fatal_error = 'Lost serial connection. Cannot write to serial'

                except (ValueError, OSError, SerialException) as e:
                    if self.ser.isOpen():
                        self.ser.flushInput() # will help to close open handles
                        self.ser.flushOutput() # will help to close open handles
                    self.ser.close()
                    self.fatal_error = 'Lost serial connection. Error: {0})'.format(str(e))

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)
Exemplo n.º 21
0
    def __listenThread(self):
        lastReceive = time.time()
        while self.run:
            in_waiting = None
            new_data = None
            if not self.error:
                try:
                    #in_waiting = self.ser.inWaiting() # WiFi Change
                    in_waiting = self.ser.readline()
                    if in_waiting:
                        #new_data = self.ser.read(in_waiting) # WiFi Change
                        new_data = in_waiting
                        lastReceive = time.time()
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.error = True

            if new_data:
                self.buffer = self.buffer + new_data.decode(encoding="cp437")
                line = self.__get_line_from_buffer()
                if line:
                    self.queue.put(line)

            if self.error:
                try:
                    # try to restore serial by closing and opening again
                    self.ser.close()
                    self.ser.open()
                    self.error = False
                except (ValueError, OSError, SerialException) as e:
                    if self.ser.isOpen():
                        self.ser.flushInput(
                        )  # will help to close open handles
                        self.ser.flushOutput(
                        )  # will help to close open handles
                    self.ser.close()
                    self.fatal_error = 'Lost serial connection. Error: {0})'.format(
                        str(e))
                    self.run = False

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)
Exemplo n.º 22
0
    def __listenThread(self):
        lastReceive = time.time()
        while self.run :
            in_waiting = None
            new_data = None
            if not self.error:
                try:
                    in_waiting = self.ser.inWaiting()
                    if in_waiting > 0:
                        new_data = self.ser.read(in_waiting)
                        lastReceive = time.time()
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.error = True

            if new_data:
                self.buffer = self.buffer + new_data
                while True:
                    line = self.__get_line_from_buffer()
                    if line:
                        self.queue.put(line)
                    else:
                        break
                                  

            if self.error:
                try:
                    # try to restore serial by closing and opening again
                    self.ser.close()
                    self.ser.open()
                    self.error = False
                except (ValueError, OSError, SerialException) as e:
                    if self.ser.isOpen():
                        self.ser.flushInput() # will help to close open handles
                        self.ser.flushOutput() # will help to close open handles
                    self.ser.close()
                    self.fatal_error = 'Lost serial connection. Error: {0})'.format(str(e))
                    self.run = False

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)
Exemplo n.º 23
0
    def __listen_thread(self, stop_event):
        logMessage('Background thread for serial started')
        while not stop_event.is_set():
            if not self.ser:
                serial_port = autoSerial.find_port(self.port)
                try:
                    if serial_port is not None:
                        self.ser = serial_for_url(serial_port['device'],
                                                  baudrate=57600,
                                                  timeout=0.1,
                                                  write_timeout=0.1)
                        self.ser.inter_byte_timeout = 0.01  # necessary because of bug in in_waiting with sockets
                        self.ser.flushInput()
                        self.ser.flushOutput()
                        if "socket://" in serial_port['device']:
                            logMessage(
                                'Serial (re)connected over WiFi at {0}'.format(
                                    serial_port.get('device')
                                    or "unknown location"))
                        else:
                            logMessage(
                                'Serial (re)connected for {0} [{1}] at port: {2}'
                                .format(
                                    serial_port.get('product')
                                    or 'unknown product',
                                    serial_port.get('serial_number')
                                    or 'unknown serial number',
                                    serial_port.get('name')
                                    or 'unknown location'))
                        self.writeln(
                            'r'
                        )  # ask device to print reset reason if disconnection was due to reset
                except (IOError, OSError, SerialException) as e:
                    if self.ser:
                        self.ser.close()
                        self.ser = None
                    error = str(e)
                    if error != self.error:
                        #only print once
                        self.error = error
                        logMessage('Error opening serial: {0}'.format(
                            self.error))
                    time.sleep(1)
            else:
                new_data = ""
                try:
                    while self.ser.in_waiting > 0:
                        # for sockets, in_waiting returns 1 instead of the actual number of bytes
                        # this is a workaround for that
                        new_data = new_data + self.ser.read(
                            self.ser.in_waiting)
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.ser.close()
                    self.ser = None

                if len(new_data) > 0:
                    self.buffer = self.buffer + new_data
                    while True:
                        line_from_buffer = self.__get_line_from_buffer()
                        if line_from_buffer:
                            self.queue.put(line_from_buffer)
                        else:
                            break

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)

        logMessage('Background thread for serial stopped')
        if self.ser:
            self.ser.close()
            self.ser = None
Exemplo n.º 24
0
    def __listen_thread(self, stop_event):
        logMessage('Background thread for serial started')
        while not stop_event.is_set():
            if not self.ser:
                serial_port = autoSerial.find_port(self.port)
                try:
                    if serial_port is not None:
                        self.ser = serial_for_url(serial_port['device'], baudrate=57600, timeout=0.1, write_timeout=0.1)
                        self.ser.inter_byte_timeout = 0.01 # necessary because of bug in in_waiting with sockets
                        self.ser.flushInput()
                        self.ser.flushOutput()
                        if "socket://" in serial_port['device']:
                            logMessage('Serial (re)connected over WiFi at {0}'.format(
                                serial_port.get('device') or "unknown location"
                                )
                            )
                        else:
                            logMessage('Serial (re)connected for {0} [{1}] at port: {2}'.format(
                                serial_port.get('product') or 'unknown product', 
                                serial_port.get('serial_number') or 'unknown serial number',
                                serial_port.get('name') or 'unknown location'
                                )
                            )
                        self.writeln('r') # ask device to print reset reason if disconnection was due to reset
                except (IOError, OSError, SerialException) as e:
                    if self.ser:
                        self.ser.close()
                        self.ser = None
                    error = str(e)
                    if error != self.error:
                        #only print once
                        self.error = error
                        logMessage('Error opening serial: {0}'.format(self.error))
                    time.sleep(1)
            else:
                new_data = ""
                try:
                    while self.ser.in_waiting > 0:
                        # for sockets, in_waiting returns 1 instead of the actual number of bytes
                        # this is a workaround for that
                        new_data = new_data + self.ser.read(self.ser.in_waiting)
                except (IOError, OSError, SerialException) as e:
                    logMessage('Serial Error: {0})'.format(str(e)))
                    self.ser.close()
                    self.ser = None

                if len(new_data) > 0:
                    self.buffer = self.buffer + new_data
                    while True:
                        line_from_buffer = self.__get_line_from_buffer()
                        if line_from_buffer:
                            self.queue.put(line_from_buffer)
                        else:
                            break                   

            # max 10 ms delay. At baud 57600, max 576 characters are received while waiting
            time.sleep(0.01)

        logMessage('Background thread for serial stopped')
        if self.ser:
            self.ser.close()
            self.ser = None
Exemplo n.º 25
0
     configFile = os.path.abspath(a)
     if not os.path.exists(configFile):
         sys.exit('ERROR: Config file "%s" was not found!' % configFile)
 # send quit instruction to all running instances of BrewPi
 if o in ('-s', '--status'):
     allProcesses = BrewPiProcess.BrewPiProcesses()
     allProcesses.update()
     running = allProcesses.as_dict()
     if running:
         pprint(running)
     else:
         printStdErr("No BrewPi scripts running")
     exit()
 # quit/kill running instances, then keep this one
 if o in ('-q', '--quit'):
     logMessage("Asking all BrewPi Processes to quit on their socket")
     allProcesses = BrewPiProcess.BrewPiProcesses()
     allProcesses.quitAll()
     time.sleep(2)
     exit()
 # send SIGKILL to all running instances of BrewPi
 if o in ('-k', '--kill'):
     logMessage("Killing all BrewPi Processes")
     allProcesses = BrewPiProcess.BrewPiProcesses()
     allProcesses.killAll()
     exit()
 # close all existing instances of BrewPi by quit/kill and keep this one
 if o in ('-f', '--force'):
     logMessage("Closing all existing processes of BrewPi and keeping this one")
     allProcesses = BrewPiProcess.BrewPiProcesses()
     if len(allProcesses.update()) > 1:  # if I am not the only one running
Exemplo n.º 26
0
 def exit_on_fatal_error(self):
     if self.fatal_error is not None:
         self.stop()
         logMessage(self.fatal_error)
         sys.exit("Terminating due to fatal serial error")
Exemplo n.º 27
0
    bg_ser.start()

    success = 0
    fail = 0
    for i in range(1, 5):
        # request control variables 4 times. This would overrun buffer if it was not read in a background thread
        # the json decode will then fail, because the message is clipped
        bg_ser.write('v')
        bg_ser.write('v')
        bg_ser.write('v')
        bg_ser.write('v')
        bg_ser.write('v')
        line = True
        while(line):
            line = bg_ser.read_line()
            if line:
                if line[0] == 'V':
                    try:
                        decoded = simplejson.loads(line[2:])
                        print("Success")
                        success += 1
                    except simplejson.JSONDecodeError:
                        logMessage("Error: invalid JSON parameter string received: " + line)
                        fail += 1
                else:
                    print(line)
        time.sleep(5)

    print("Successes: {0}, Fails: {1}".format(success,fail))

Exemplo n.º 28
0
     configFile = os.path.abspath(a)
     if not os.path.exists(configFile):
         sys.exit('ERROR: Config file "%s" was not found!' % configFile)
 # send quit instruction to all running instances of BrewPi
 if o in ('-s', '--status'):
     allProcesses = BrewPiProcess.BrewPiProcesses()
     allProcesses.update()
     running = allProcesses.as_dict()
     if running:
         pprint(running)
     else:
         printStdErr("No BrewPi scripts running")
     exit()
 # quit/kill running instances, then keep this one
 if o in ('-q', '--quit'):
     logMessage("Asking all BrewPi Processes to quit on their socket")
     allProcesses = BrewPiProcess.BrewPiProcesses()
     allProcesses.quitAll()
     time.sleep(2)
     exit()
 # send SIGKILL to all running instances of BrewPi
 if o in ('-k', '--kill'):
     logMessage("Killing all BrewPi Processes")
     allProcesses = BrewPiProcess.BrewPiProcesses()
     allProcesses.killAll()
     exit()
 # close all existing instances of BrewPi by quit/kill and keep this one
 if o in ('-f', '--force'):
     logMessage(
         "Closing all existing processes of BrewPi and keeping this one")
     allProcesses = BrewPiProcess.BrewPiProcesses()
Exemplo n.º 29
0
 def exit_on_fatal_error(self):
     if self.fatal_error is not None:
         self.stop()
         logMessage(self.fatal_error)
         sys.exit("Terminating due to fatal serial error")