iSpindle Plotter

iSpindle Plotter

Collect and plot fermentation data from an iSpindel hydrometer.

Ian Williams Science & Education

Screenshots

Screenshot of iSpindle Plotter Screenshot of iSpindle Plotter Screenshot of iSpindle Plotter Screenshot of iSpindle Plotter

Description

iSpindle Plotter is a self-hosted companion app for the iSpindel — an open-hardware floating hydrometer used by home brewers to track specific gravity through a fermentation. The app runs a small HTTP server on your phone that the iSpindel posts its readings to over your local Wi-Fi network, then stores, charts, and analyses those readings without ever sending your data to a third-party cloud service.

Pairing and configuration:

* Auto-pair flow that joins the iSpindel's configuration access point, sets the phone as the HTTP target (Generic HTTP / selAPI=3), reads the device's existing cubic calibration polynomial off the firmware, and reconnects to your home network — without losing pre-existing fields like the calibration on subsequent saves.
* mDNS-style hostname discovery so the iSpindel can find your phone again after either device's IP changes.
* Pushes the app's own calibration polynomial back to the iSpindel when you re-calibrate.

Calibration:

* Fit cubic / quadratic / linear polynomials from your own sucrose-dilution measurements.
* Imports the iSpindel's pre-installed factory calibration on first pairing.
* Setup guide with a sucrose-step-dilution recipe for 1.000–1.080 SG.

Plotting and analysis:

* Tilt angle, temperature, specific gravity, and battery voltage charts with a 24h / 7d / 30d / All time-window switcher.
* Potential-alcohol secondary axis on the SG chart.
* Robust phase classifier (Lag / Active / Slowing / Conditioning / Stuck / Cold crash) using a modified-Gompertz Levenberg-Marquardt fit (Zwietering et al. 1990), with fallback to an attenuation-prior when the data is too early to constrain the asymptote.
* Predicted final gravity overlaid on the chart with a tapering uncertainty band derived from short-time noise estimation and the calibration polynomial's residual.
* Battery runway estimate: linear discharge fit projecting time-to-cutoff at the current sample rate.
* Trim-before-date-and-time to drop pre-fermentation noise; CSV export via the system file picker.

Privacy:

* No analytics, no telemetry, no third-party network connections.
* Data is held only on your phone and only sent to your iSpindel's local IP for configuration writes.
* The app's HTTP server listens on the phone's local network address only.

Hardware: built and tested with an MTB iSpindel PCB 4.0; should work with any iSpindel firmware that supports the Generic HTTP target.

What’s new (0.5.23)

Detects the yeast-settling stage at the end of a ferment.

Once fermentation finishes, the yeast flocculates and drops out of suspension. Because the iSpindle floats in the clearing upper layer, the gravity reads a small step down — a couple of points — at steady temperature, before any cold crash. The graph now labels this as a Clarifying stage, shades it on the chart, and treats the clarified gravity as the final gravity: suspended yeast inflates a reading, so the settled value is closer to th

Versions

Version Date Size Requires Android Download
0.5.23 current
97bcf3dea1d62b3f…
2026-06-20 16 MB API 24
0.5.22
3ae4a5a67e8da867…
2026-06-18 16 MB API 24
0.5.19
d3783ccb2656ad67…
2026-06-16 16 MB API 24

Permissions

What the app asks the system for. Android only grants sensitive access after you confirm it.

  • Internet accessSend and receive data over the internet.
  • Network stateCheck whether and how the device is connected.
  • Wi-Fi stateRead information about the Wi-Fi connection.
  • Change networkChange network connections.
  • Change Wi-FiTurn Wi-Fi on and off or switch networks.
  • Precise locationDetermine the location via GPS.
  • NEARBY_WIFI_DEVICES
  • Foreground serviceKeep running in the background, visible in the status bar.
Show 5 more permissions
  • FOREGROUND_SERVICE_CONNECTED_DEVICE
  • Run at startupStart automatically after the device is switched on.
  • NotificationsShow notifications.
  • Prevent sleepingKeep the device from going to sleep.
  • plotter.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

Comments