def set_setpoint(request, pk):
  from device.models import Device
  setpoint = request.GET.get('setpoint')
  f = Fermenter.objects.get(pk=pk)
  Device.serial_cmd(f.component.device.device, "setSetpoint,"+str(f.fid)+','+setpoint)
  f.setpoint = Device.serial_cmd(f.component.device.device, "getSetpoint,"+str(f.fid))
  f.save()
  return HttpResponse(f.setpoint)
 def discover(cls, device):
   from fermenter.models import Fermenter
   sn = Device.serial_cmd(device.device, 'getSN')
   type = Device.serial_cmd(device.device, 'getType')
   try:
     c = Component.objects.get(sn=sn)
     c.device = device
     c.save()
   except Component.DoesNotExist:
     c = Component.objects.create(device=device, sn=sn, type=type)
   if type == 'FERMENTER':
     Fermenter.discover(c)
 def discover(cls, component):
   count = int(Device.serial_cmd(component.device.device,'getFermenters'))
   for fid in range(count):
     try:
       f = cls.objects.get(component=component, fid=fid)
     except Fermenter.DoesNotExist:
       f = cls.objects.create(component=component, fid=fid)
     f.mode = Device.serial_cmd(f.component.device.device,'getMode,'+str(f.fid))
     f.setpoint = Device.serial_cmd(f.component.device.device,'getSetpoint,'+str(f.fid))
     f.save()
     verbose_name="probe_temperature_"+str(f.id)
     try:
       t = Task.objects.get(verbose_name=verbose_name)
     except Task.DoesNotExist:
       cls.probe_temperature(f.id, verbose_name=verbose_name, repeat=60)
def get_temperature(request, pk):
  from device.models import Device
  from beer.models import Temperature
  f = Fermenter.objects.get(pk=pk)
  f.temperature = Device.serial_cmd(f.component.device.device, "getTemperature,"+str(f.fid))
  f.datetime = timezone.now()
  f.save()
  if hasattr(f, 'beer'):
    Temperature.objects.create(beer=f.beer, setpoint=f.setpoint, measured=f.temperature, datetime=timezone.now())
  return HttpResponse(f.temperature)
def edit(request, pk):
  from device.models import Device
  f = Fermenter.objects.get(pk=pk)
  if request.method == "POST":
    form = FermenterForm(request.POST)
    if "save" in request.POST and form.is_valid():
      if not f.name == request.POST.get("name"):
        f.name = request.POST.get("name")
      if not f.setpoint == Decimal(request.POST.get("setpoint")):
        Device.serial_cmd(f.component.device.device,"setSetpoint,"+str(f.fid)+","+request.POST.get("setpoint"))
        f.setpoint = Device.serial_cmd(f.component.device.device,"getSetpoint,"+str(f.fid))
      if not f.mode == request.POST.get("mode"):
        Device.serial_cmd(f.component.device.device,"setMode,"+str(f.fid)+","+request.POST.get("mode"))
        f.mode = Device.serial_cmd(f.component.device.device,"getMode,"+str(f.fid))
      f.save()
    return redirect('fermenter:detail', pk=f.id)
  else:
    form = FermenterForm(instance=f)
    return render(request, 'fermenter/form.html', {'form': form, 'fermenter': f})