Edge release 2019/07/10

Firmware release date: 2019/07/10

This release adds some usability improvements, and fixes an annoying bug in the firmware.

An oft-requested feature was for the Step view widget to display which step already has been applied.
Note that this is independent from whether you actually clicked the button: it will consider the step active if applying it would not change anything.

The firmware had a bug where if the Spark couldn’t find the network, it would retry before the previous search was finished. This would significantly slow down everything.



  • Fixed a bug where the controller becomes very slow if Wifi is unavailable.
  • Changed filter implementation in Setpoint.
    • The filter levels themselves have changed
    • The filter levels are available simultaneously
  • Independent PID derivative filter
    • The derivative is now taken from an automatically selected filter level, so it is indepedent of the filter chosen.
    • The proportional part of the calculation uses the selected filter, but can now be set much shorter.
  • Changing PID Kp now does not affect integral output (it also scaled to keep the same output)
  • More accurate calculation of achieved PWM value. This resolves apparent peaks at the start of the cycle.
  • Update interval tracking and adjustment for PID and filter to the average interval is exactly 1 second

User interface

  • Improved display of pending state in Digital Actuators and Motor Valves.
    • State is pending if one or more constraints block it.
    • A spinner is displayed over the desired state.
    • If the actuator is not driven, you can toggle the state back to the (non-constrained) setting.
    • A tooltip displays which constraint is currently blocking the state change.
  • The Graph now displays a message if no data is available for the current settings.
  • The “Apply Step” button is colored green if the step is currently active (matches the current state).
  • If a value was changed during the Step view prompt, it is persisted in settings.
  • Changed multiple parts in Process View:
    • Split the Pump in two parts: Pump, and PWM Pump.
    • Pump can be either manual, or linked to a digital actuator.
    • PWM pump is linked to a PWM (big surprise), and will turn slower/faster depending on PWM setting.
    • Actuator Valve can now also be linked to a Digital Actuator.
  • Display settings are reset when removing all service blocks.


We have created a new category on the forum for release notes and from now on will create a new topic for each release to make it easier to discuss the changes.


Have updated and found that my previously “disabled” fridge is now cooling despite the set points showing as disabled ?


Hmm that’s not good. Can you export your blocks?

When a PID goes inactive it sets it’s output to zero only once to allow you to set the pwm manually later. Settings for the PWM block were stored when it was last configured, not when the PID changed the setting.
I suspect that on reboot the pwm was created after the inactive PID and included a setting.
I’ll try to reproduce it.

Can you confirm this theory by:

  • confirming that the PWM setting is constant since the reboot
  • setting it to zero and confirming that it stays at zero, also after a reboot

A possible fix is perhaps to split manual and PID applied setting of the pwm and only store a manually applied setting. I’ll have to think if this is also possible in other places.

brewblox-errors.json (1.8 KB)

All seems to be as it should now, I noticed the cooling after the update this morning, it was previously disabled as it is currently empty, I reapplied the “disable” but had to leave it until later in the day. I noticed it had been cooling to a previously set 11degs, albeit the set point was inactive. It stopped when I disabled the Cool PWM. I have just recycled the settings enable fridge constant and then disable and it seems to work. Have also rebooted and remains at zero.

Whilst in the disabled state I have applied a manual 18% duty to the heat PWM and it has started to heat despite the set point being disabled, I now can’t change it manually.

13%20PM|656x404 53%20PM

Does any of that help?

In addition it now won’t respond to the disable command and is still continuing to heat as if to follow the set point. Similar to the issue I first reported.

So to cut a long story short, it seems that a value entered manually into a PWM overrides the disabled set point.

Yes, that is by design.

When you disable the setpoint or PID, you can set the pwm manually.

I have been able to reproduce the issue.
The problem is that the order the blocks are recreated at boot is different than the order in which the settings were applied.

If you disable a setpoint or PID after manually setting the pwm, the PID sets the pwm to zero.

If at restart the PID is loaded first, it has no pwm to disable. The pwm is created with its last manually applied settings, which is enabled.
Because the inactive PID does not continuously set the pwm to zero, it stays at the manual setting.

It’s a hard problem that I have to think about for a bit.

After discussing this with Bob for about the entire afternoon, we found a fix that is simple enough and seems to work well.

We’ll release this as a hotfix tonight.

Since I have to specify in a file that I have 2 spark v2 with the addresses, why this late in the game do I still need to disconnect 1 to then update the second one? Why aren’t you reading said file and then running the firmware update on all specified addresses?

NOTE: Using RPi v3 with 2 Spark v2 connected via USB cable


Sorry guys but I seem to have a issue after this hotfix.

I have lost the controller block list it is just blank

One setup has lost the PID displays and when they are selected the screen just dims.

The other when a PID graphic is selected it opens the PID but it cannot be edited with the screen going dim.

The third seems to be working as before on fridge constant.

I did capture an error message the first time I selected a PID graphic on Fridge 2, doesn’t display it any more the screen dims and hangs.

I have rebooted both the RPi and the brewpi and rerun the update.

To spare you the detailed technical explanation: streamlined firmware updates are in development right now.

Behavior will be to update firmware of the currently connected Spark(s) while everything is running. We haven’t turned it on yet in the UI because we have some issues with updates over USB (it already works nicely over Wifi).

I think this may be an issue with old deprecated objects. Could you please export your blocks? (spark service page, actions). If it is what I think that error message is saying, you may be able to resolve it manually before we release a fix tomorrow.

brewblox-errors.json (29 Bytes)

The blocks please, not the errors =) top right corner spark page, under “actions”.

Sorry, there s no actions on the spark page it is all blank.

Could you please go to PI_ADDRESS/spark-one/api/doc, and under “Objects” run the command to get all objects?

You are leading the blind here Bob, is that what you are after?

Yes. That’s it.

Could you please copy the response body into a file?

Object request.txt (19.7 KB)

Thanks for the upload! It seems pretty clear where the problem comes from, but this will require some software changes. For now I’ll just roll back the hotfix.

Edit: it should be done in a few minutes. https://dev.azure.com/brewblox/brewblox/_build/results?buildId=1090