Skip to content

iSpindels

Sean Cardus edited this page May 17, 2026 · 1 revision

iSpindels Tab

The iSpindels tab manages iSpindel hydrometers that post readings over WiFi to the controller. Unlike Tilts, iSpindels are not detected via BLE — they push HTTP JSON to OurBrewbot whenever they wake up to take a reading.

The device exposes a POST /iSpindel endpoint. Point your iSpindel firmware at http://<controller>/iSpindel as its "Generic HTTP" target, and the next reading auto-registers a slot. From then on the iSpindel is identified by the ID field in its payload.


Page Layout

The tab shows one card per iSpindel slot. Slots are filled in the order new iSpindels first reported in. If no iSpindels have ever posted, the tab shows "No iSpindel slots configured."

A slot card header shows:

  • The slot index (0, 1, …)
  • The iSpindel's reported name (e.g. iSpindel_42AB) once registered
  • An Active badge when the slot has live data

Live Readings

Configured slots display a live-readings line with whatever fields were in the last received payload:

  • SG — last raw specific gravity
  • Temp — last reported temperature (with calibration offset applied)
  • Angle — tilt angle (degrees) — useful for diagnosing calibration drift
  • Batt — battery voltage in volts
  • RSSI — WiFi signal strength of the iSpindel itself

If the iSpindel firmware also reports polynomial-corrected values (eg, from Gravitymon), a second line shows:

  • Corr.SG — corrected gravity (after the iSpindel's onboard polynomial)
  • Velocity — gravity change rate
  • Cycle — wake-to-sleep cycle time (seconds)
  • Unit — gravity unit string from the device (typically SG or Plato)

The footer shows Last seen: N min ago — or "Never" if the slot has never reported.

The slot's Device ID (also shown) is the unique identifier the iSpindel sends in every payload; this is what binds the slot to a specific physical device.


Configurable Fields

Field Description
Fermenter Which fermenter (0 – 3, or None) this iSpindel is assigned to. The iSpindel's gravity becomes that fermenter's SG.
Unit How to interpret incoming gravity readings — SG or Plato. Match the iSpindel firmware's configured unit.
Temperature reading Whether to use the iSpindel's onboard temperature as the Beer temperature for the assigned fermenter, or Not used.
SG Adjust Per-iSpindel gravity offset, applied on top of any polynomial the iSpindel firmware applies.
Temp Adjust Per-iSpindel temperature offset (°C).
Save Commits the slot's settings.
Clear Resets the slot to unconfigured. Use this to remove a retired or replaced iSpindel.

How iSpindels Drive Control

  • The iSpindel's gravity feeds the assigned fermenter's SG, which is what gravity-based profile steps (3, 4, 6, 7, 8, 9) compare against.
  • If Temperature reading = Beer, the iSpindel's temperature overrides the DS18B20 Beer probe for that fermenter. Useful if the iSpindel sits in the wort and is more representative than a side-mounted probe.

Configuring an iSpindel

  1. In the iSpindel firmware, set the target to Generic HTTP (sometimes called HTTP POST). Host = the controller IP or mDNS name, Port = 80, URL path = /iSpindel. Use SG or Plato as appropriate.
  2. Wake the iSpindel so it sends a reading. The controller auto-registers a slot.
  3. Open the iSpindels tab and configure the new slot: pick a Fermenter, set Unit, and pick whether to use the iSpindel's temperature as Beer.
  4. Calibrate if necessary using SG Adjust / Temp Adjust.

Tips

  • Wake interval affects responsiveness. iSpindels typically sleep between readings. Gravity-step triggers will only fire when a reading is posted, so set the wake interval reasonably — every 15 min is a common balance between battery and reactivity.
  • Battery health — Batt voltage well below ~3.6 V suggests a fading lithium cell. Replace before it stops reporting mid-batch.
  • Polynomial calibration is best done in the iSpindel firmware (it's a polynomial vs. tilt-angle fit). Use SG Adjust here only for fine offset trimming.
  • Replaced an iSpindel? Use Clear on the old slot so its retained data doesn't confuse you, then point the replacement at the same /iSpindel endpoint to register fresh.

Clone this wiki locally