예제 #1
0
def rancilio_ready_handler():
    configs = Configurator.instance()
    ready = configs.RancilioHeatedUp
    if ready:
        blynk.virtual_write(4, 255)
    else:
        blynk.virtual_write(4, 0)
예제 #2
0
def setpoint_handler(value):
    logger = logging.getLogger('__main__.' + __name__)
    configs: Configurator = Configurator.instance()

    value = float(value)
    configs.pid_configs[configs.RancilioPowerMode]['setpoint'] = value
    configs.update()
예제 #3
0
def rancilio_main_switch_handler(value):
    logger = logging.getLogger('__main__.' + __name__)

    configs = Configurator.instance()
    powerOn = int(value)
    configs.RancilioPoweredOn = bool(powerOn)
    configs.update()
    status = 'on' if bool(powerOn) else 'off'
    logger.info('Rancilio is powered {}'.format(status))
예제 #4
0
    def __init__(self):
        self.output = 0
        self.cycleStartTime = time.time()
        self.cycleMilliseconds = 1000

        self.onTime = 0

        self.configs = Configurator.instance()
        self.pinHandler = PinHandler.instance()
예제 #5
0
    def __init__(self, sensorAddress: str = None):
        self.logger = logging.getLogger(__name__)
        self.configs = Configurator.instance()
        self.oneWireStatus = oneWire.setupOneWire(
            self.configs.tempSensorPin)

        self.lastTemperature = None

        self.sensorAddress = sensorAddress
        self.sensor = None
예제 #6
0
    def __init__(self):
        self.configs = Configurator.instance()
        self.configs.functionList.append(self.update_configs)
        self.heatingElement = self.configs.heaterElementPin
        os.system('fast-gpio set-output {}'.format(
            self.heatingElement
            ))

        self.last_value = 0

        self.logger = logging.getLogger('__main__.' + __name__)
예제 #7
0
 def __init__(self, stopEvent: Event = None):
     self.input_value = 0
     self.configs = Configurator.instance()
     self.configs.functionList.append(self.update_configs)
     self.heater = Heater()
     self.pid = PID.instance()
     self.update_configs()
     self.isPoweredOn = False
     self.powerMode = self.configs.energy_mode.eco
     self.dataLogger = self.configs.dataLogger
     self._stopEvent = stopEvent
     self.logger = logging.getLogger('__main__.' + __name__)
예제 #8
0
    def __init__(self, stopEvent: Event, error_in_method_event: Event):
        self.boilerTemp = 21
        self.steamTemp = 21
        self._boilerTempSensors = []
        self._boilerTempSensorsIter = None
        self._steamTempSensors = []
        self.configs = Configurator.instance()
        self.configs.functionList.append(self.update_configs)
        self._smoothingFactor = self.configs.smoothingFactor
        self._stopEvent = stopEvent
        self._error_in_method_event = error_in_method_event

        self.lastValue = 23

        self.logger = logging.getLogger('__main__.' + __name__)
예제 #9
0
def rancilio_temperature_status_handler():
    configs: Configurator = Configurator.instance()
    dataLogger = configs.dataLogger
    pid = PID.instance()
    logger = logging.getLogger('__main__.' + __name__)

    temperature = dataLogger.boilerTemp
    if temperature is None:
        logger.warning('Temperature is None: {}'.format(temperature))
        return

    blynk.virtual_write(3, temperature)
    blynk.virtual_write(6, pid.proportional_term)
    blynk.virtual_write(7, pid.integral_term)
    blynk.virtual_write(8, pid.derivative_term)
예제 #10
0
def rancilio_power_mode_handler(value):
    configs = Configurator.instance()
    logger = logging.getLogger('__main__.' + __name__)

    value = int(value)
    if value == 1:
        configs.RancilioPowerMode = configs.energy_mode.off
    elif value == 2:
        configs.RancilioPowerMode = configs.energy_mode.eco
    elif value == 3:
        configs.RancilioPowerMode = configs.energy_mode.on
    elif value == 4:
        configs.RancilioPowerMode = configs.energy_mode.steam
    else:
        configs.RancilioPowerMode = configs.energy_mode.off
        logger.error('Power Mode Handler: undefined value: {}'.format(value))
        return
    configs.update()
    status = configs.energy_mode._fields[configs.RancilioPowerMode]
    logger.info('Rancilio is powered in {} mode'.format(status))

    # set Gauge to new range
    setpoint = configs.pid_configs[configs.RancilioPowerMode]['setpoint']
    blynk.setProperty(3, 'min', setpoint * 0.8)
    blynk.setProperty(3, 'max', setpoint * 1.2)

    # set Slider settings
    blynk.virtual_write(9, setpoint)
    if configs.RancilioPowerMode == configs.energy_mode.off:
        blynk.setProperty(9, 'min', 18)
        blynk.setProperty(9, 'max', 25)
    elif configs.RancilioPowerMode == configs.energy_mode.eco:
        blynk.setProperty(9, 'min', 40)
        blynk.setProperty(9, 'max', 60)
    elif configs.RancilioPowerMode == configs.energy_mode.on:
        blynk.setProperty(9, 'min', 92)
        blynk.setProperty(9, 'max', 110)
    elif configs.RancilioPowerMode == configs.energy_mode.steam:
        blynk.setProperty(9, 'min', 105)
        blynk.setProperty(9, 'max', 125)
예제 #11
0
def smoothing_factor_handler(value):
    value = float(value)
    configs: Configurator = Configurator.instance()
    configs.smoothingFactor = value
    configs.update()
예제 #12
0
def rancilio_heater_status_handler():
    configs = Configurator.instance()
    dutyCycle = configs.heater_output
    blynk.virtual_write(5, dutyCycle)
예제 #13
0
    def __init__(self, _stopEvent: Event):
        self.stopEvent = _stopEvent

    def run(self):
        while not self.stopEvent.is_set():
            rancilio_temperature_status_handler()
            Rancilio.update()
            rancilio_heater_status_handler()
            rancilio_ready_handler()
            time.sleep(1)

        # stop event is set
        Rancilio.setHeaterOutput(0)


configs = Configurator.instance()

# Threading stuff
stopEvent = Event()
error_in_method_event = Event()
dataLogger = DataLogger(stopEvent, error_in_method_event)
dataLogger.addTemperatureSensor('boiler', configs.boilerTempSensor1)
dataLogger.addTemperatureSensor('boiler', configs.boilerTempSensor2)
configs.dataLogger = dataLogger
temperatureAcquisitionProcess = Thread(target=dataLogger.acquireData)
temperatureAcquisitionProcess.start()

Rancilio = RancilioSilvia()
configs.Rancilio = Rancilio

rancilioError = RancilioError.instance()