Releases: thorrak/fermentrack
Additional BrewPi-Script Manager Bugfixes
This release incorporates a handful of fixes that I've been testing to the BrewPi-Script process manager that should help make it more stable. This includes shifting from having the process manager constantly hit the database directly to obtain a list of active devices to instead leverage an HTTP API.
Changed
- Changed BrewPi-Script process manager to get list of devices via an HTTP API rather than directly querying the database
- Force BrewPi-Script process manager to restart in certain cases where a deadlock is detected
BrewPi-Script Bugfixes
This release resolves a handful of issues with the BrewPi-script integration that could cause Fermentrack to periodically stop communicating with controllers - in some cases requiring a reboot of Fermentrack (or the device hosting it) to resolve. It is a recommended upgrade for all users of the previous release.
Changed
- Changes the message when a BrewPi device cannot be reached
- Only allow BrewPi-Script to check for profile updates once every 30 seconds
- Prevents two BrewPi devices from being able to have the same cached IP address
Fixed
- Resolves an error that would cause debugging connections to controllers to periodically raise an exception
- Resolves an error where a missing schema on a generic push target would not get corrected to http://
- Allow GravityLog.device to be None in backups, fixing errors that could prevent backups from being properly generated
- BrewPi-Script processes are now launched in a manner that allows StopIteration exceptions to be properly handled
New BrewPi-Script Daemon, Eliminate Circus, and Refactor Backups
This PR introduces a number of substantial changes from the previous release of Fermentrack.
Major Changes
BrewPi-Script Manager Rewrite
Since the early days of Fermentrack, Circus has been used to launch & manage individual instances of brewpi-script for each individual BrewPi Device. Unfortunately, Circus imposes a number of upstream dependencies that make keeping Fermentrack up-to-date an extremely onerous task. This PR replaces Circus with a custom BrewPi-Script management daemon.
Backup/Restore Refactor
The original implementation of backup/restore relied on an internal Django management command to read the database and write out database object descriptions to a JSON file. Although this works in theory, in practice this means that the backup is fairly dumb given that it is not aware of the nuance of Fermentrack's object relationships.
This PR replaces the use of the internal Django management command with new logic that generates a "smart" backup, which includes a Fermentrack-generated (rather than database-driven) representation of Fermentrack objects in JSON.
Changes from the previous logic when using newly-generated backups
- Backup/restore no longer requires a fresh installation of Fermentrack for restoration to work
- Backup/restore will no longer restore user accounts
- Restoring controllers will no longer restart logging if they were logging when the backup was generated
- Restoring controllers will no longer trigger a temperature profile to be applied if one was applied when the backup was generated
UUIDs
As part of the backup/restore refactoring, I have added UUIDs to every object that is likely to be exported. These UUIDs allow Fermentrack to recognize when an object in a backup file already exists in the Fermentrack database, and will update that object (rather than attempting to install a second instance).
New Upgrade Workflow
Unfortunately, Docker resets containers to their "downloaded" state which means that the previous upgrade workflow no longer functions as intended. The ability to "upgrade from GitHub" has now been removed in favor of providing instructions on how to re-run the install script which pulls the latest image from Docker Hub.
TiltBridge Jr (New Tilt Bluetooth support)
The existing Tilt Bluetooth daemon has been removed in favor of a new, standalone bluetooth daemon called "TiltBridge Jr." This should hopefully allow for Tilt support to be upgraded/improved independently from Fermentrack while simultaneously providing a better experience.
Full Changelog
Added
- BrewPi-Script instances are now controlled via a custom process manager
- Officially added arm64v8 to supported platforms
- Added support for new versions of the BrewPi Firmware for certain ESP-based BrewPi Controllers
- Added support for extended settings on new BrewPi Firmware for certain ESP-based BrewPi Controllers
- Added board types for ESP32, ESP32-C3, and ESP32-S2
- Added examples for HTTPS support (Thanks @HuggableShark)
- Added UUIDs to most exportable objects to allow for easier import/export
- Added "TiltBridge Jr." (new Tilt bluetooth daemon) support
Changed
- Removed Circus support in favor of managing processes via Supervisord
- Removed libzmq requirement
- Removed environment tests for Tilt hydrometers (Obviated via Docker)
- Switch to use latest LTS version of Django
- Update to Python 3.9
- Changed most references to ESP8266 to reference ESP32 as appropriate
- Rewrote backup & restore functions to no longer rely on Django management code
- Changed restoration of legacy backups to explicitly utilize the staging folder
- Removed GitHub upgrade workflow from UI
Removed
- Removed Fermentrack-specific Bluetooth daemon - now handled by TiltBridge Jr.
Docker Support
This is a particularly material release, which adds a number of new features primarily aimed at supporting containerized installations of Fermentrack using Docker. Containerized installations reduce the potential for environmental issues preventing Fermentrack from working as expected and significantly reduce the effort required to perform larger upgrades such as the Django 3.0 upgrade from last year.
Added
- Added support for Docker installations
- Added environment/container version number to GitHub page
- Tilt "version" is now displayed on the Tilt Configuration page (Bluetooth only)
- Tilt battery level now shows on the Tilt Configuration page (Bluetooth v3/Tilt Pro only)
- "Last Check-in" time now added to Tilt configuration page (Bluetooth only)
- Added link to view Huey logs inside the Fermentrack UI
- Added link to view Circusd logs inside the Fermentrack UI
Changed
- Removed instances where BrewPi-Script would write to the database
- Adjusted feedback loop for Circus to eliminate a potential race condition with transactional databases
- Redesigned available firmware list to reduce confusion
- Stale gravity check-in points will now not be displayed in the gravity dashboard panels
- Added support for latest TiltBridge firmware
- Remove unimplemented "TCP Socket" external push option
- Added Beer Setting, Fridge Setting, and Controller State to generic external push targets
- Upgraded TiltBridge support for v1.0.0 TiltBridges (earlier TiltBridge versions will now require manual configuration)
- External push target attempts now log to huey stdout
- Added battery to the GenericPushTarget message for pushed iSpindel devices
Fixed
- Fermentrack now works with properly transactional databases (e.g. Postgres)
- Resolved issue causing false failures of the connectivity test (Thanks postalbunny!)
- Fixed issue preventing renaming of BrewPi controllers
- Dashes now allowed in TiltBridge mDNS IDs
- Corrected issue where iSpindel data couldn't be loaded if a data point wasn't availble in Redis
Tilt Troubleshooting Wizard & Bugfixes
This release adds a "troubleshooting" wizard for Tilt Hydrometer support to help diagnose certain environmental issues that can cause the Tilt support to not work as expected. This also includes a handful of other bugfixes and cleans up legacy code that is no longer required.
Added
- Added explicit support for LBussy’s BrewPi-Remix I2C Board
- Exposed upgrade.log from the help screen
- Store the exact last time that a message was received from a Tilt to Redis
- Add sentry support to tilt_monitor_aio.py
- Added “debug” scripts for bluetooth Tilt connections
- Added TiltBridge connection settings to Tilt management page
Changed
- Removed legacy Python 2 code
- Reduced gravity sensor temp precision to 0.1 degrees
- Locked pybluez, aioblescan, and redis versions to prevent undesired format changes going forward
Fixed
- Fix display of TiltBridge mDNS settings on Tilt settings page
Improved ESP32 Flashing Support
In addition to all of the features that were released in earlier versions (I'm really bad at tagging releases...) this includes the following:
Added
- Added support for flashing a bootloader and otadata partition to ESP32 devices
Changed
- SPIFFS partitions can now be flashed to ESP8266 devices
Tilt Monitor Refactoring
I've done a pretty bad job of tagging releases, so this is the first "tagged" release in awhile. That said, here is what has changed since what should have been the last tagged release. As always, everything is up to date in the changelog.
Changed
- The Tilt Hydrometer monitor now uses aioblescan instead of beacontools for better reliability
- Added support for smaller screen sizes
Fixed
- Tilt Hydrometers will now properly record temperatures measured in Celsius
Initial Release
This is the initial release of Fermentrack. It includes a number of features, such as:
- Native multi-chamber support
- Cleaner, more intuitive controller setup
- Integrated support for ESP8266-based controllers
- Official support for "legacy" controllers
- Native support (including mDNS autodetection) for WiFi controllers