def init_mashing(batch): # (Re)set defaults for batch set_batch_defaults(batch) set_variable('active_mashingprocess_batch_id', str(batch.id)) # Initialize Arduino with Nanpy if not settings.ARDUINO_SIMULATION: sensor = DallasTemperature(ARDUINO_TEMPERATURE_PIN) addr = sensor.getAddress(ARDUINO_TEMPERATURE_PIN) Arduino.pinMode(ARDUINO_HEAT_PIN, Arduino.OUTPUT) Arduino.pinMode(ARDUINO_COOL_PIN, Arduino.OUTPUT) Arduino.pinMode(ARDUINO_STATUS_PIN, Arduino.OUTPUT) Arduino.digitalWrite(ARDUINO_HEAT_PIN, Arduino.LOW) Arduino.digitalWrite(ARDUINO_COOL_PIN, Arduino.LOW) Arduino.digitalWrite(ARDUINO_STATUS_PIN, Arduino.HIGH) else: # Set initial dummy temperature batch.temperature = 20 # Testing purpose only batch.save() batch = Batch.objects.get(id=batch.id) # Run Mashing proces while get_variable('active_mashingprocess_batch_id', 'None') == str(batch.id): # Measure data measured_data = {} if settings.ARDUINO_SIMULATION: measured_data['temp'] = get_dummy_temperature(batch) else: sensor.requestTemperatures() measured_data['temp'] = sensor.getTempC(addr) # Define actions depending on measured data batch = process_measured_data(batch.id, measured_data) # Send updates to arduino if not settings.ARDUINO_SIMULATION: send_updates_to_arduino(batch) # Send to logging department handle_logging(batch) # Delay sleep(DELAY_BETWEEN_MEASUREMENTS) Arduino.digitalWrite(ARDUINO_STATUS_PIN, Arduino.LOW) Arduino.digitalWrite(ARDUINO_COOL_PIN, Arduino.LOW) Arduino.digitalWrite(ARDUINO_HEAT_PIN, Arduino.LOW) return 'Mashing proces ended'
def start_mashing(request, batch_id): set_variable("active_mashingprocess_batch_id", str(batch_id)) batch = Batch.objects.get(id=batch_id) init_mashing.delay(batch) return simplejson.dumps({"status": 200})
def stop_mashing(request, batch_id): set_variable("active_mashingprocess_batch_id", "None") return simplejson.dumps({"status": 200})