def start_pid(value): auto = control.latest('log.auto_mode') if not auto: # Start PID by changing setpoint to current temperature setpoint = control.latest('log.temperature') control.publish('set.setpoint', setpoint) return '{0} °C/minute'.format(value)
def update_pid(value): auto = control.latest('log.auto_mode') if auto: # Already running PID, so increment setpoint by given degC/minute setpoint = control.latest( 'log.setpoint') + value * UPDATE_INTERVAL / 60 control.publish('set.setpoint', setpoint) return '{0} °C/minute'.format(value)
def stopwatch(): # Get last stopwatch reset reset_time = control.latest('log.stopwatch') elapsed = time.time() - reset_time if reset_time else 0 # Return stopwatch value return 'Stopwatch: {minutes:02d}:{seconds:02d}'.format( minutes=int(elapsed / 60), seconds=int(elapsed % 60))
def badge_auto(invert=False): # Use this to change icon colours when in manual/PID mode auto = control.latest('log.auto_mode') class_name = 'badge badge-pill badge-' if auto: return class_name + ('secondary' if invert else 'success') else: return class_name + ('success' if invert else 'secondary')
def table(): data = control.latest( ['log.temperature', 'log.temperature_roc', 'log.heat', 'log.setpoint']) return [ html.Tr([ html.Td(key.replace('log.', '')), html.Td('{0:.1f}'.format(value)) ]) for key, value in data.items() ]