Anomaly Detection

Last updated March 19, 2026


Overview

Anomaly Detection watches your sensors over time and learns what "normal" looks like for each one. Once enough historical data has accumulated, the system automatically flags readings that deviate from that learned pattern and alerts you through the notification center.

The feature works without any threshold configuration. Instead of asking you to define a fixed acceptable range, Anomaly Detection builds a statistical picture of your sensor's typical behavior — its average value, how much it normally fluctuates, and its long-term trend — and uses that picture to identify readings that genuinely look unusual.

Anomaly Detection is available on the Pro plan and above.

How It Works

Baseline Learning

Once per hour, a background Cloud Function analyzes the last seven days of recorded readings for every sensor on your device. From those readings it computes:

  • The average value (mean) across the window
  • How much the readings typically vary from that average (standard deviation)
  • The lowest and highest values seen
  • A trend line that captures whether the sensor has been gradually climbing or falling

This summary is called the sensor's baseline. Anomaly Detection needs at least 100 readings before it will establish a baseline for a sensor. New sensors or sensors that have been offline for an extended period will not have a baseline and will be skipped until enough data accumulates.

What Gets Detected

Once a baseline exists and Anomaly Detection is enabled for a sensor, every incoming reading is evaluated in real time. Four types of anomalies can be detected:

Spike — A single reading is far outside the expected range. For example, a temperature sensor that normally reads between 20 and 25 °C suddenly reports 60 °C. The system compares the reading to the baseline average and flags it if the gap is large relative to the sensor's normal variation.

Erratic Reading — The last several readings are unusually unstable even if none of them is individually extreme. A sensor that normally holds steady but suddenly starts oscillating wildly would trigger this check. It compares the recent variability to the baseline variability.

Stuck Sensor — The last several readings are all nearly identical, suggesting the sensor has stopped responding and is outputting a frozen value. A healthy sensor always has at least a tiny amount of natural variation; a stuck one does not.

Gradual Drift — The average of the most recent readings has shifted away from the long-term baseline average. Individual readings may look fine, but the sensor's mean has crept outside the expected range. This catches slow degradation that a spike detector would miss.

Sensitivity

Sensitivity controls how far a reading or trend must deviate from the baseline before it is flagged. Three levels are available:

  • Low — Only extreme outliers are flagged. Best for sensors with naturally noisy signals where false alerts would be disruptive.
  • Medium — The default. Flags moderate deviations that are unlikely to be normal variation.
  • High — Flags subtle anomalies. Useful for precision sensors where small deviations are meaningful.

Sensitivity applies to spikes, erratic readings, and drift checks. The stuck sensor check is not affected by this setting.

Alert Lifecycle

When an anomaly is detected, an alert event is created and appears in your notification center. The alert remains active as long as the sensor continues to read outside the expected pattern. Once readings return to the normal range, the alert is automatically resolved — you do not need to manually close it.

If an alert of the same type is already active for a sensor, the system updates it in place rather than creating a new one. This prevents your inbox from filling up during a sustained anomaly.

Configuration Options

Anomaly Detection is configured per sensor. You will find the settings panel for each sensor in Device Settings under the Anomaly tab. The available options are:

Enable / Disable — A toggle that turns anomaly detection on or off for the selected sensor. Disabled sensors are not evaluated and will not generate alerts, but the baseline continues to update in the background.

Sensitivity — Low, Medium, or High. Defaults to Medium. See the section above for guidance on choosing a level.

Detect — Checkboxes for each of the four anomaly types: Spike, Erratic Reading, Stuck Sensor, and Gradual Drift. All four are enabled by default. You can disable individual types if one of them generates too many alerts for a particular sensor. For example, a pump actuator that cycles on and off may cause a related flow sensor to look "erratic" even though that behavior is intentional — disabling the Erratic Reading check for that sensor removes the noise.

Use Cases

Detecting a Failing Sensor

Sensors degrade over time. A temperature probe may start returning frozen values when its connection corrodes, or a humidity sensor may begin drifting upward as its element absorbs moisture permanently. Anomaly Detection catches both of these scenarios automatically. The Stuck Sensor check fires when the probe freezes, and the Gradual Drift check fires as the humidity element drifts. Either alert prompts investigation before the bad data affects any control loops the sensor feeds.

Catching Unexpected Environmental Events

In a greenhouse or fermentation environment, a sudden spike in CO2 or temperature might indicate a failed heater, a broken seal, or an equipment malfunction — not a normal fluctuation. Anomaly Detection flags the spike within seconds of the reading arriving, even if you have not pre-configured a threshold for that exact value. This is particularly useful for sensors measuring variables where the acceptable range shifts with the season or batch, making fixed thresholds impractical to maintain.

Troubleshooting

Anomaly Detection is enabled but I am not receiving any alerts

The most common cause is that the sensor does not yet have a baseline. A baseline requires at least 100 readings within the last seven days, and the computation runs once per hour. If the sensor was recently added, recently came back online after a gap, or has only been running for a few hours, it will not have enough data yet. Check back after the device has been running continuously for a day or two.

If the sensor has been running long enough, verify that anomaly detection is actually toggled on for that sensor in Device Settings. The global device switch and the per-sensor toggle are separate controls — the per-sensor toggle must be on.

I am receiving too many alerts for a sensor with a naturally variable signal

Reduce the sensitivity to Low. This raises the threshold so that only large, sustained deviations are flagged. If a specific check type is the main source of noise — for example, the Erratic Reading check firing frequently on a sensor that monitors a turbulent fluid — disable that check type for the sensor while leaving the others active. You can also disable Gradual Drift if the sensor is expected to shift over time, such as a soil moisture sensor that dries out naturally between irrigation cycles.

Known Issues and Limitations

  • Anomaly Detection does not activate until at least 100 readings have been recorded for a sensor. Sensors that report data infrequently — for example, once every few minutes — may take several hours or more to accumulate enough readings for a baseline.

  • The baseline is recomputed once per hour. A sensor that was behaving abnormally for several days before Anomaly Detection was enabled may initially have a skewed baseline that reflects the abnormal behavior. The baseline will normalize over the following days as readings return to a healthier pattern.

  • Anomaly Detection evaluates readings as they arrive from the device. If the device is offline and readings are buffered, the alerts may appear after a delay once the device reconnects.

  • Anomaly Detection is a Pro plan feature. If your subscription is on the Hobby or Maker tier, the settings panel will appear but will prompt you to upgrade before configuration options become available.