Big Swings with Thermowell - need to tune!

Hi all, I’ve just revamped my brewpi setup slightly by adding a thermowell in the FV which now sits in the beer (rather than having a pocked of bubblewrap on the side that I used to have.
I now need to tune Brewpi by the looks of it!

I have a fridge for cooling and a 60w tube heater in the bottom of it for heating. Beer temp is recorded from the thermowell and fridge temp is recorded from the sensor towards the top of the fridge along one of the walls.

I am testing with just tap water. To begin with the fridge was around 20c and the water was sitting at around 11.5c. I set the beer temp to be 14c and let it go. As you can see, it hasn’t been running for long but there are definite swings there.

{
  "kind": "Control",
  "pids": [
    {
      "kind": "Pid",
      "name": "heater1",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 20
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 18.375,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -1.6211,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 16.2109,
      "i": 0.5156,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 16.7266,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1798845
          },
          "target": {
            "kind": "ActuatorPin",
            "state": false,
            "pin": 16,
            "invert": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "heater2",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer2set",
        "value": null
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer2",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 11.6875,
          "connected": true,
          "address": "28FFDAC86B1403DF",
          "calibrationOffset": 0
        }
      },
      "inputError": null,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 0,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1798774
          },
          "target": {
            "kind": "ActuatorNop",
            "state": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "cooler",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 20
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 18.375,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -1.6211,
      "Kp": 30,
      "Ti": 2400,
      "Td": 20,
      "p": 48.6328,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": true,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 1800,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1798699
          },
          "target": {
            "kind": "ActuatorTimeLimited",
            "minOnTime": 120,
            "minOffTime": 180,
            "maxOnTime": 65535,
            "state": false,
            "target": {
              "kind": "ActuatorPin",
              "state": false,
              "pin": 10,
              "invert": false
            }
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "beer2fridge",
      "enabled": false,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer1set",
        "value": null
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer1",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": null,
          "connected": false,
          "address": "28FFB7976B140360",
          "calibrationOffset": 0
        }
      },
      "inputError": null,
      "Kp": 2,
      "Ti": 7200,
      "Td": 1200,
      "p": 0,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorSetPoint",
        "targetSetPoint": {
          "kind": "SetPointSimple",
          "name": "fridgeset",
          "value": 20
        },
        "targetSensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 18.375,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        },
        "referenceSetPoint": {
          "kind": "SetPointSimple",
          "name": "beer1set",
          "value": null
        },
        "output": 127.9961,
        "achieved": 127.9961,
        "minimum": -10,
        "maximum": 10
      }
    }
  ]
}

Any pointers from @Elco especially. It’s mostly default brewpi settings at the minute. I tweaked a couple of things to enable the heater to be on for longer and allow the fridge to run for longer a while back but that’s it I think.

The settings you posted do not match the screenshot. Please hit the refresh button a few times before copying it.

For the beer-to-fridge PID:

  • Kp: 10
  • Ti: 14400
  • Td: 2400
  • Input filter:
  • Derivative filter: 639
  • beer to fridge maximum difference: 5 degrees

Sorry. Got caught out by not refreshing first!

{
  "kind": "Control",
  "pids": [
    {
      "kind": "Pid",
      "name": "heater1",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 16.5469
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 13.0625,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -3.4844,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 34.8438,
      "i": 72.2461,
      "d": -0.0781,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 100,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1799822
          },
          "target": {
            "kind": "ActuatorPin",
            "state": true,
            "pin": 16,
            "invert": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "heater2",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer2set",
        "value": null
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer2",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 12.8125,
          "connected": true,
          "address": "28FFDAC86B1403DF",
          "calibrationOffset": 0
        }
      },
      "inputError": null,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 0,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1799751
          },
          "target": {
            "kind": "ActuatorNop",
            "state": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "cooler",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 16.5469
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 13.0625,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -3.4844,
      "Kp": 30,
      "Ti": 2400,
      "Td": 20,
      "p": 104.5313,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": true,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 1800,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1799675
          },
          "target": {
            "kind": "ActuatorTimeLimited",
            "minOnTime": 120,
            "minOffTime": 180,
            "maxOnTime": 65535,
            "state": false,
            "target": {
              "kind": "ActuatorPin",
              "state": false,
              "pin": 10,
              "invert": false
            }
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "beer2fridge",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer1set",
        "value": 14
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer1",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 12.75,
          "connected": true,
          "address": "28FFF81420160455",
          "calibrationOffset": 0
        }
      },
      "inputError": -1.2461,
      "Kp": 2,
      "Ti": 7200,
      "Td": 1200,
      "p": 2.4922,
      "i": 0,
      "d": 0.0547,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorSetPoint",
        "targetSetPoint": {
          "kind": "SetPointSimple",
          "name": "fridgeset",
          "value": 16.5469
        },
        "targetSensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 13.0625,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        },
        "referenceSetPoint": {
          "kind": "SetPointSimple",
          "name": "beer1set",
          "value": 14
        },
        "output": 2.5469,
        "achieved": -0.9375,
        "minimum": -10,
        "maximum": 10
      }
    }
  ]
}

I’ve put those settings in @Elco. As you left Input Filter empty, I have left that alone at 18 seconds.

You can set it to a bit more filtering. Also check why your fridge is not reaching the setpoint. Looks like your heater didn’t work after 4:00

Yeah. I noticed that… Checked and the connection on my SSR was loose with the connector hanging off. Re-seated, now all seems to be ok.
I’ll let it run overnight with the new settings and report back… Thanks!

Looking pretty good now I think…

This has been the story overnight… I might see how it does with moving up by a couple of degrees to 16.

You’ll want to smooth out that fridge setpoint a bit more to prevent alternating between heating and cooling.

  • Max filtering in beer to fridge PID, both input and derivative
  • Perhaps lower your derivative gain

Thanks @Elco

Are we talking Beer to Fridge input filter delay time to 639 seconds? Beer to fridge derivative filter delay time is already 639 seconds so I should leave that?
For derivative gain… Is that Beer-to-Fridge derivative time constant? It is currently set to 2400

Thanks,
Rich

Yes to all your questions.

Thanks for that. I have actually just put a new brew in so am trying it on that :slight_smile:

I do have a question. I just started a new active brew. I pitched at 20c and want to ferment at 19c. I have set the beer constant to 19c. It initially set the fridge set point to 14c but after 10 mins, turned it off and set the fridge set point to 24c. This doesn’t seem right?
I’ve attached a screenshot and the control algorithm.

{
  "kind": "Control",
  "pids": [
    {
      "kind": "Pid",
      "name": "heater1",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 24
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 16.6875,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -7.3164,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 73.1641,
      "i": 0,
      "d": -0.1953,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 72.9688,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 975843
          },
          "target": {
            "kind": "ActuatorPin",
            "state": false,
            "pin": 16,
            "invert": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "heater2",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer2set",
        "value": null
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer2",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 15.5625,
          "connected": true,
          "address": "28FFDAC86B1403DF",
          "calibrationOffset": 0
        }
      },
      "inputError": null,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 0,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 975772
          },
          "target": {
            "kind": "ActuatorNop",
            "state": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "cooler",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 24
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 16.6875,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": -7.3164,
      "Kp": 30,
      "Ti": 2400,
      "Td": 20,
      "p": 219.4922,
      "i": 0,
      "d": -0.1172,
      "actuatorIsNegative": true,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 1800,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 975696
          },
          "target": {
            "kind": "ActuatorTimeLimited",
            "minOnTime": 0,
            "minOffTime": 180,
            "maxOnTime": 65535,
            "state": false,
            "target": {
              "kind": "ActuatorPin",
              "state": false,
              "pin": 10,
              "invert": false
            }
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "beer2fridge",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer1set",
        "value": 19
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer1",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 20.1875,
          "connected": true,
          "address": "28FFF81420160455",
          "calibrationOffset": 0
        }
      },
      "inputError": 1.8281,
      "Kp": 10,
      "Ti": 14400,
      "Td": 1200,
      "p": -18.2813,
      "i": -4.7773,
      "d": 608.0859,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorSetPoint",
        "targetSetPoint": {
          "kind": "SetPointSimple",
          "name": "fridgeset",
          "value": 24
        },
        "targetSensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 16.6875,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        },
        "referenceSetPoint": {
          "kind": "SetPointSimple",
          "name": "beer1set",
          "value": 19
        },
        "output": 5,
        "achieved": -2.3125,
        "minimum": -5,
        "maximum": 5
      }
    }
  ]
}

Any help would be appreciated.

Don’t worry about my last post. It seems to have sorted itself out and changed the fridge set point back to 14c.

Thanks for the hints @Elco. Here’s what it looks like now with actual beer in it with a brew I started yesterday.

{
  "kind": "Control",
  "pids": [
    {
      "kind": "Pid",
      "name": "heater1",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 16.7656
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 17.0625,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": 0.3516,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": -3.5156,
      "i": 0,
      "d": 1.7969,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1797101
          },
          "target": {
            "kind": "ActuatorPin",
            "state": false,
            "pin": 16,
            "invert": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "heater2",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer2set",
        "value": null
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer2",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 19.5625,
          "connected": true,
          "address": "28FFDAC86B1403DF",
          "calibrationOffset": 0
        }
      },
      "inputError": null,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 0,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1797030
          },
          "target": {
            "kind": "ActuatorNop",
            "state": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "cooler",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "fridgeset",
        "value": 16.7656
      },
      "inputSensor": {
        "kind": "TempSensorFallback",
        "onBackupSensor": false,
        "sensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 17.0625,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        }
      },
      "inputError": 0.3516,
      "Kp": 30,
      "Ti": 2400,
      "Td": 20,
      "p": -10.5469,
      "i": -21.0469,
      "d": 1.875,
      "actuatorIsNegative": true,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 29.7188,
        "period": 1800,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "waitTime": 1796954
          },
          "target": {
            "kind": "ActuatorTimeLimited",
            "minOnTime": 0,
            "minOffTime": 180,
            "maxOnTime": 65535,
            "state": true,
            "target": {
              "kind": "ActuatorPin",
              "state": true,
              "pin": 10,
              "invert": false
            }
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "beer2fridge",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "name": "beer1set",
        "value": 19
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer1",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 18.9375,
          "connected": true,
          "address": "28FFF81420160455",
          "calibrationOffset": 0
        }
      },
      "inputError": 0.0234,
      "Kp": 10,
      "Ti": 14400,
      "Td": 1200,
      "p": -0.2344,
      "i": -1.6484,
      "d": -0.3516,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorSetPoint",
        "targetSetPoint": {
          "kind": "SetPointSimple",
          "name": "fridgeset",
          "value": 16.7656
        },
        "targetSensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": 17.0625,
            "connected": true,
            "address": "28FF7DB26B14030E",
            "calibrationOffset": 0
          }
        },
        "referenceSetPoint": {
          "kind": "SetPointSimple",
          "name": "beer1set",
          "value": 19
        },
        "output": -2.2344,
        "achieved": -1.9375,
        "minimum": -5,
        "maximum": 5
      }
    }
  ]
}

Look ok?

Hmm no, I wouldn’t be happy with those results. It is strange that your fridge is very slow to respond to heating.

Because the fridge setpoint and actual temperature are out of phase, you are getting these swings.
Can you try:

  • Increase Ti for heater1 and cooler to 7200 (Ti should be much larger than the reaction time of your sensor)
  • Increase Td for heater1 to 300 (set it to the amount of time you overshoot, in seconds)

ok. done. We’ll see how it goes. For the heater Td… I have set to 300 but do I calculate overshoot time from the point that it moves over to the point where it comes back down to the beer set point? looking at it, that’s an average of 900 seconds.

@Elco. It’s looking better now. You can see when I made the changes.

That is indeed getting a bit better.

Can you try one other thing for me:

  • At the bottom of advanced settings, set the dead time to 1 hour. You shouldn’t be alternating between heating and cooling. It’s a waste of energy and the temperature will be a lot smoother if you’re not doing that.
    By setting the dead time to 1 hour, it cannot switch from heating to cooling within an hour. You could even try 2 hours.

Thanks. I’ve set it to an hour. I’ll report back tomorrow. Help is much appreciated!

I apologize in advance for interrupting this thread and I’m new with brewpi and the community but is there really a need for the heater? I use a chest freezer with no heat and have thermowells in my 7 gallon fermenters and my beer temp seems to stay pretty flat… Am I missing something here? Here’s a screenshot of the brewpi simply monitoring another controller but you can see when the chest freezer goes on and off.

There is often no need for a heater if your ambient temperature is above the desired beer temperature. But you have a beer sitting in a fridge in a shed in the middle of winter, you’ll want a heater.

Generally, you’ll only need one of the two, depending on the season.

1 Like