# Sensor calibration

URL: https://pro-weather.com/docs/calibration

> Correct a sensor that reads consistently high or low, and filter out spikes, without touching your hardware.

Every station drifts. A barometer reads 2 hPa low, a thermometer catches an
hour of afternoon sun, a tipping bucket under-catches in heavy rain. Pro
Weather already discards **impossible** readings automatically, but a reading
that is merely *wrong* looks perfectly plausible and gets stored like any
other.

Calibration is where you correct that. It lives under **your site → Calibration**
in the dashboard, and it is set **per station**.

## How a correction works

Each reading is adjusted as:

```
corrected = raw x multiplier + offset
```

- **Offset** shifts every reading by a fixed amount. Use it for sensors that
  read consistently high or low: temperature, humidity, pressure, wind
  direction.
- **Multiplier** scales every reading. Use it for sensors that mis-*scale*
  rather than mis-*read*: a rain gauge catching 4% too little needs a
  multiplier of `1.04`, not an offset.

Leave a field blank to change nothing. Values are entered in your site's
[unit system](https://pro-weather.com/docs/customizing/units-language), so an imperial site types
offsets in °F and inHg.

### What you can correct

| Sensor | Knob |
| --- | --- |
| Outdoor temperature | Offset |
| Outdoor humidity | Offset |
| Pressure (sea level) | Offset |
| Pressure (station) | Offset |
| Indoor temperature and humidity | Offset |
| Wind direction | Offset, in degrees |
| Wind speed and gust | Multiplier |
| Rainfall | Multiplier |
| Solar radiation | Multiplier |
| UV index | Multiplier |

Derived values are recalculated from the corrected readings, so nothing
contradicts itself: correct the air temperature and your dew point, heat
index, wind chill, humidex, apparent temperature and cloud base all follow.

### Finding the right numbers

- **Temperature**: compare against a reference thermometer in a properly
  shielded, ventilated spot, over a full day rather than one moment.
- **Pressure**: compare against a nearby official station or an airport METAR
  at the same minute. Pressure is the most commonly mis-set sensor and the
  easiest to verify.
- **Humidity**: ageing capacitive sensors usually read low. A salt test (a
  saturated salt solution in a sealed jar reads 75% at room temperature) gives
  you a reference point.
- **Rainfall**: pour a measured volume through the funnel slowly and compare
  the total. Set the multiplier to the ratio of what you poured over what was
  recorded.

Start small. A large correction usually means something else is wrong, such as
a sensor in direct sun or a blocked rain funnel, and no amount of arithmetic
fixes a badly sited sensor.

## Spike limits

A spike limit is the largest change you accept between two consecutive
readings. Radio interference, a dying battery or a loose connector produce
single readings that jump far beyond anything the weather can do. A reading
that fails its limit is **dropped** rather than corrected, exactly like an
impossible value: it is treated as if the station never reported it.

- Temperature, humidity, pressure, wind and gust limits cap the **change**
  between readings.
- The rain limits are **absolute caps** on the rate and on the amount recorded
  in a single reading, because a phantom bucket tip has no previous value to
  be compared against.

Two readings more than an hour apart are never compared, so a gateway coming
back online after a quiet night is not mistaken for a spike.

Keep limits generous. A real cold front can move the temperature several
degrees in minutes, and a limit that is too tight quietly deletes real
weather. If the page shows that readings are being dropped on calm days, raise
the limit.

## What calibration does and does not change

- Corrections apply **the moment data arrives**, before anything is shown or
  stored. Your public site, your charts, your records and your CSV exports
  therefore always agree with each other.
- **Older history is not rewritten.** A correction changes new readings, plus
  roughly the **last hour**, which your station's archive still hands back on
  every refresh and which is re-saved each time. Everything before that keeps
  the values it was stored with, so your charts show a small step at the moment
  you saved the correction. This is deliberate: silently rewriting months of
  stored observations is not something we will do behind your back.
- **Imported history is not corrected.** Data brought in from weewx or
  CumulusMX was already calibrated by that software.
- Calibration is per station, so a site with more than one station calibrates
  each separately.
