This chart displays all temperatures and state information logged by BrewPi.
Not all temperatures are shown by default, but you can toggle them with the colored dots.
Click and drag left or right to zoom horizontally, click and drag up or down to zoom vertically. Double click to zoom out.
When zoomed in, you can hold shift to pan around. On your phone or tablet you can just pinch to zoom.
The state information is shown as colored bars at the bottom of the graph, explanation below.
Idle
No actuator is active.
Cooling
The fridge is cooling!
Heating
The heater is heating!
Waiting to cool
The fridge is waiting to start cooling. It has to wait because BrewPi has just cooled or heated. There is a a minimum time for between cool cycles and a minimum time for switching from heating to cooling.
Waiting to heat
Idem for heating. There is a a minimum time for between heat cycles and a minimum time for switching from cooling to heating.
Cooling minimum time
There is a minimum on time for each cool cycle. When the fridge hits target but has not cooled the minimum time, it will continue cooling until the minimum time has passed.
Heating minimum time
There is a minimum on time for each heat cycle too. When the fridge hits target but has not heated the minimum time, it will continue heating until the minimum time has passed.
Waiting for peak detect
BrewPi estimates fridge temperature overshoot to be able to turn off the actuators early. To adjust the estimators, it has to detect the peaks in fridge temperature.
When BrewPi would be allowed to heat/cool by the time limits but no peak has been detected yet for previous cycle, it waits in this state for a peak.
A temperature profile is a set of timestamps and beer temperature settings. Between the points you define, the temperature is interpolated.
Using profile mode, you can easily do slow temperature increases/decreases, for example: set the temperature to 20 degrees on day 1 and 23 on day 4.
This will result in a temperature of 22 degrees on day 3.
Open
The Open button shows a list of saved profiles. Clicking them loads the profile in the web interface, but does not activate it yet. When you hit 'Apply', the profile is set as active and the script will start following it.
Remember to change the start date when loading an old profile!
New
When you click the New button, a dialog will open where you can enter a name for the profile and add temperature points. Decimals are allowed in both columns!
You can right-click on a row to insert a new row or to delete the row. There will always be an empty row at the bottom too.
The Start Now button sets the start date of the profile to the current date on your computer. Make sure your Pi and your computer are in sync.
The Insert Now button adds a new point to the profile at the current date and the current beer temperature setting.
This allows you to change a running profile 'from now on', while not changing the part of the profile that already passed.
When you are done with your profile, click Save. This will save the profile on the Raspberry Pi and load it in the web interface.
Note: The table is kept sorted based on the Date and Time column. The 'Date and Time' column cannot be edited directly: it is calculated from the start date and the Day column.
Edit
The Edit profile button allows you to the edit the currently loaded profile.
Save As
The Save As opens the same dialog as the Edit button, but allows you to save under a new name after editing.
Refresh
The refresh button can be useful if you edited the profile outside of the web interface: it reloads the profile from the Raspberry Pi.
Final notes..
If your start date is in the future, BrewPi will use the first temperature in the profile. If your last date is in the past, BrewPi will use the last temperature.
You can leave a temperature cell empty to temporarily disable temperature control in profile mode.
You can start a profile with an empty temperature cell at day 0 to postpone starting temperature control or you can end with an empty cell to disable temperature control after a while.
Take into account that your points define 'line pieces', to end with 22 degrees for a while and then OFF you define: 22, 22, empty.
It might sound a bit complicated now, but just play around with the editor a bit and look at the changes in the chart. It is not as complicated as it sounds here.
°C
°C
Temperature control disabled. Fridge will not cool or heat, but will still log temperatures.
Here you can upload a firmware file which will be uploaded to the controller by the Python script.
The script will automatically restart itself after programming.
Script output will auto-refresh while programming if you keep this tab open.
Log data point every:
Profile name:
Date format:
PID algorithm for fridge setting
The red values are control settings. The beer setting is set by the profile or constant. The fridge setting is set by PID or constant.
The orange values are control variables. These are intermediate results of the fridge setting calculation.
The blue values are constants, they never change automatically.
Beer temp. error
*
Kp
=
P
Beer temp. error integral
*
Ki
=
I
Beer temp. derivative
*
Kd
=
D
+
Beer Setting
+
P + I + D
=
FridgeSetting
Predictive ON/OFF and peak detection
The heater and cooler are controlled by a predictive on-off algorithm.
BrewPi estimates the overshoot that would happen when it would go to IDLE. When that lands on the target temperature, it goes to IDLE.
The overshoot is estimated as time active in hours * estimator.
BrewPi detects the actual peaks and compares them to the prediction to automatically adjusts the estimators.
You can change them manually in 'advanced settings' when they are far off.
Estimated peak
Last detected negative peak
Last target for negative peak
Last detected positive peak
Last target for positive peak
Cooling overshoot estimator
Heating overshoot estimator
Control settings
ModeActive temperature control mode. Use to control panel to switch (apply button).
Beer Temperature SettingBeer temperature setting when in profile or beer constant mode. Use the control panel to adjust.
Fridge Temperature SettingAutomatically adjust when in profile/beer constant mode. Use the control panel to adjust.
Cooling overshoot estimatorThis is a self learning estimator for the overshoot when turning the cooler off.
It is adjusted automatically, but you can set adjust it manually here. This does not stop further automatic adjustment.
Heating overshoot estimatorThis is a self learning estimator for the overshoot when turning the heater off.
It is adjusted automatically, but you can set adjust it manually here. This does not stop further automatic adjustment.
Control constants
Temperature formatSwitch your temperature format here. The algorithm always uses fixed point Celcius format internally,
but it converts all settings that go in or out to the right format.
Temperature setting minimumThe fridge and beer temperatures cannot go below this value.
Temperature setting maximumThe fridge and beer temperatures cannot go above this value.
The fridge temperature is controlled with PID. The fridge setting = beer setting + PID.
The proportional part is linear with the temperature error.
The integral part slowly increases when an error stays present, this prevents steady state errors.
The derivative part is in the opposite direction to the proportional part. This prevents overshoot: it lowers the PID value when there's 'momentum' in the right direction.
PID: KpThe beer temperature error is multiplied by Kp to give the proportional part of the PID value.
PID: KiWhen the integral is active, the error is added to the integral every 30 seconds. The result is multiplied by Ki to give the integral part.
PID: KdThe derivative of the beer temperature is multiplied by Kd to give the derivative part of the PID value.
PID: maximumYou can define the maximum difference between the beer temp setting and fridge temp setting here. The fridge setting will be clipped to this range.
Integrator: maximum temp error °CThe integral is only active when the temperature is close to the target temperature. This is the maximum error for which the integral is active..
Temperature idle range topWhen the fridge temperature is within this range, it won't heat or cool, regardless of other settings.
Temperature idle range bottomWhen the fridge temperature is within this range, it won't heat or cool, regardless of other settings.
Heating target upper boundWhen the overshoot lands under this value, the peak is within target range and the estimator is not adjusted.
Heating target lower boundWhen the overshoot lands above this value, the peak is within target range and the estimator is not adjusted.
Cooling target upper boundWhen the overshoot lands under this value, the peak is within target range and the estimator is not adjusted.
Cooling target lower boundWhen the overshoot lands above this value, the peak is within target range and the estimator is not adjusted.
Maximum time in seconds for heating overshoot estimatorThe time the fridge has been heating is used to estimate overshoot. This is the maximum time that is taken into account.
Maximum time in seconds for cooling overshoot estimatorThe time the fridge has been cooling is used to estimate overshoot. This is the maximum time that is taken into account.
Beer fast filter delay timeThe beer fast filter is used for display and data logging. More filtering give a smoother line, but also more delay.
Beer slow filter delay timeThe beer slow filter is used for the control algorithm. The fridge temperature setting is calculated from this filter.
Because a small difference in beer temperature causes a large adjustment in the fridge temperature, more smoothing is needed.
Beer slope filter delay timeThe slope is calculated every 30 seconds and fed to this filter. More filtering means a smoother fridge setting.
Fridge fast filter delay timeThe fridge fast filter is used for on-off control, display and logging. It needs to have a small delay.
Fridge slow filter delay timeThe fridge slow filter is used for peak detection to adjust the overshoot estimators. More smoothing is needed to prevent small fluctuations to be recognized as peaks.
Fridge slope filter delay timeThe fridge slope filter is not used in the current version.
Use light as heaterIf this option is set to 'Yes' the light wil be used as a heater.
Trigger rotary encoder at every ...When you feel like you have to turn your rotary encoder two steps for every trigger, set this to half step.
With the button below, you can reset the entire controller to factory defaults.
This will reset all settings and will remove all installed devices.