Zambretti Weather Forecaster
Estimate a 12-hour weather outlook from pressure, its 3-hour trend, wind and season. Includes sea-level reduction and clearly stated accuracy limits.
The Zambretti Weather Forecaster turns local barometer observations into a short weather outlook without an internet connection. It is useful for makers building Arduino or ESP32 weather stations, students studying atmospheric pressure, and engineers checking a sensor-to-forecast calculation. The historical device was introduced by Negretti & Zambra in 1915. This tool identifies its digital variant: the documented pywws implementation, using a fixed 950–1050 hPa pressure scale.
Start by selecting the kind of pressure reading you have. A raw sensor normally reports station pressure at the sensor's elevation. Enter that elevation and the outside air temperature to estimate sea-level pressure by the barometric formula. Prefer the preceding twelve-hour mean temperature; a warm circuit-board sensor is unsuitable. If your station already reports reliable sea-level pressure, select that option and enter it directly.
Pressure inputs use kPa: divide hPa or mbar by ten before entering them. For example, 1013 hPa is 101.3 kPa. The metric/US switch converts these fields to psi, elevation to feet, and the temperature reading to Fahrenheit. Calculation steps, the schematic, and the sensitivity chart identify their own units; the Zambretti algorithm uses hPa internally.
Enter the change in sea-level pressure during the last three hours, with a positive sign for a rise and a negative sign for a fall. Both observations must use consistent calibration and reduction. Select the direction the wind comes from, or calm to omit its correction. Then set the hemisphere and month. The result gives a letter from A to Z and an English interpretation for roughly the next twelve hours.
The pressure sensitivity chart holds your trend, wind, and season fixed. Its index changes continuously, while the actual forecast is rounded into categories. The guide lines mark the index limits; values beyond them use the end category. A tiny measurement change near a rounding boundary can therefore change the letter.
This barometer weather forecast is an empirical aid. No published validation establishing its accuracy was found in the sources reviewed; accuracy is unknown. Passing reference tests demonstrates numerical agreement, not success in predicting weather. The method does not model fronts, terrain, convection, rainfall amounts, or storm timing. The original UK-oriented wind rules and their southern rotation are not a validated global climate model. Sea-level reduction is especially uncertain over high terrain, in inversions, and with humid air. Use local observations and official forecasts for decisions where weather matters.
How it is calculated
Station readings are reduced with hydrostatic balance and the ideal-gas law, assuming a dry-air temperature lapse of :
Temperatures in this equation are kelvins. PDAS, Hydrostatic equations, pp. 1–3, supplies the geopotential conversion and linear-gradient relation (equation 15). Constants are , and . Already-reduced pressure bypasses this multiplier.
The forecast follows the documented pywws variant (attached source s4, p. 1; same core as s1). Its 950–1050 hPa normalization is the identity here. The 3-hour change is divided by 3 h: rising at or above +0.1 hPa/h, falling at or below −0.1 hPa/h, otherwise steady. The 16-sector wind offset and warm-half-year offset are added to . Southern wind sectors rotate by 180°. In the warm half-year, rising pressure receives +3.2 hPa and falling receives −3.2 hPa; steady receives zero.
The unrounded index is for rising, for falling, or for steady pressure, with in hPa. Round to the nearest integer and clamp to 0–13, 0–9, or 0–16 respectively, then use the branch-specific letter mapping. Outlook sentences are our own paraphrases. The letter number A=1…Z=26 supports checks; it is not a probability or severity scale.
Assumptions
- Fixed UK-oriented 950–1050 hPa scale; no fitted local climate calibration.
- The barometric reduction extrapolates a constant dry-air lapse below the sensor; it is an estimate of meteorological sea-level pressure, not a complete operational QFF reduction or an aviation altimeter setting.
- Prefer the preceding 12-hour mean outside air temperature, following the NOAA NWS explanation of pressure reduction. Humidity, inversions, temperature history beyond that mean, and local lapse changes are omitted.
- The trend input is an actual 3-hour sea-level pressure difference. Only its category is used: larger changes within a category do not strengthen a forecast.
- Warm half-year means April–September north, October–March south. Wind direction means FROM that sector. Calm omits the wind offset.
- Illustrative dial and terrain are schematic, not a geographic cross-section. Diagram and chart pressures are labelled in hPa.
Where it applies
Accuracy is unknown. No published validation was found in the sources reviewed (25 October 2026). We do not endorse frequently repeated percentage-accuracy claims. This empirical outlook covers approximately the next 12 hours; it gives neither precipitation probability nor a quantitative storm warning.
The two PDAS cases validate only the pressure reduction against published standard-atmosphere numbers, within table rounding. Four separate executions of the official pywws function validate software agreement across all trend branches and the southern transformation. None measures forecast skill. A location-specific study would need timestamped forecasts, observed outcomes, defined scoring rules, and comparisons with persistence or climatology.
Input elevation is limited to −500…3000 m and outside temperature to −60…55 °C as practical tool limits, not validated meteorological bounds. An elevation above 1000 m prompts a caution; use a reliable externally reduced sea-level reading when available. A sea-level value outside 950–1050 hPa or an index beyond its branch limits triggers a saturation note. At very rapid pressure changes, inspect the time series: two endpoints can conceal reversals. Do not use this outlook as the sole basis for hazardous-weather decisions.
References
- pywws contributors, forecast.py, official source snapshot retrieved 2026-10-25 (attached s4, p. 1). https://github.com/jim-easterbrook/pywws/blob/master/src/pywws/forecast.py
- Jim Easterbrook, pywws ZambrettiCore 13.09: documented digital algorithm (s1). https://pywws.readthedocs.io/fr/latest/_modules/pywws/ZambrettiCore.html
- Ralph L. Carmichael, PDAS, Geopotential & Geometric Altitude / Hydrostatic Equations, updated 2020-09-27, pp. 1–3, equations 4 and 15 (s3). https://www.pdas.com/hydro.pdf
- Ralph L. Carmichael, PDAS, A Sample Atmosphere Table (SI units), updated 2021-04-18, rows 0.0, 0.5, 1.0 km (s2 and text snapshot s6). https://www.pdas.com/atmosTable2SI.html
- NOAA National Weather Service, Pressure Definitions: station pressure, altimeter setting, and mean sea-level pressure; accessed 2026-10-25 (s5). https://www.weather.gov/bou/pressure_definitions
- Science Museum Group, Weather forecaster, Negretti and Zambra, 1915, object 1984-531: original instrument and transcribed operating instructions, including seasonal half-years (s7). https://collection.sciencemuseumgroup.org.uk/objects/co54425/weather-forecaster-negretti-and-zambra-1915
Inputs
| Input | Symbol | Unit | Default |
|---|---|---|---|
| Pressure reading Select the kind your sensor reports. Do not correct a sea-level reading twice. | basis | Station pressure (raw sensor) | |
| Measured pressure Use calibrated station pressure, or sea-level pressure if selected above. 100 kPa = 1000 hPa (mbar). The US switch shows psi; the method and chart use hPa. | p_in | kPa | 100 |
| Sensor elevation above sea level Elevation of the pressure sensor, including its height above the ground. Negative values are below sea level. | alt | m | 120 |
| Outside air temperature Prefer the preceding 12-hour mean outside temperature. An instantaneous reading gives a rougher reduction. Do not use the warm temperature inside an electronics enclosure. | T_air | °C | 15 |
| Sea-level pressure change over 3 hours Current sea-level pressure minus its value exactly three hours earlier. 0.1 kPa = 1 hPa. Positive means rising. Reduce both readings consistently; raw station-pressure change is only an approximation. | dp_3h | kPa | 0.12 |
| Wind coming from Meteorological direction: a west wind comes FROM the west. Use the representative prevailing direction, not a brief gust. Calm omits this correction. | wind | SW | |
| Hemisphere The southern option reverses the wind sectors and swaps the seasonal half-year. Local forecast skill is still unvalidated. | hemi | Northern | |
| Month (1 = January, 12 = December) Warm half-year: April–September in the north; October–March in the south. | month | 7 |
Results
With the default inputs above, the calc gives:
| Result | Value |
|---|---|
| Approximate 12-hour outlook | Fair weather; improving |
| Zambretti forecast code | F |
| Sea-level pressure | 101.4 kPa |
| Three-hour pressure tendency | Rising |
| Pressure correction applied | 1.431 kPa |
| Accuracy evidence | No published validation found; forecast accuracy is unknown. |
Checked against sources
Each case below was calculated by this calc and agrees with the value from its source (within the tolerance where one is shown).
Published standard atmosphere at 500 m
Source: PDAS SI atmosphere table, 0.5 km row: 95461 Pa at 284.9 K reduces to the table's sea-level 101325 Pa. Uses the published rounded temperature, not a fitted input. Tolerance covers table rounding and gas-constant precision. https://www.pdas.com/atmosTable2SI.html
Inputs: Measured pressure = 95.461 kPa; Sensor elevation above sea level = 500 m; Outside air temperature = 11.75 °C; Sea-level pressure change over 3 hours = 0 kPa; Wind coming from = Calm / omit wind correction; the others as above.
| Result | Source | This calc |
|---|---|---|
| Sea-level pressure | 101.3 kPa | 101.3 kPa |
Published standard atmosphere at 1000 m
Source: PDAS SI atmosphere table, 1.0 km row: 89876 Pa at the published rounded 281.7 K; expected sea-level pressure 101325 Pa. The 0.05 hPa tolerance allows the table's 0.1 K rounding. https://www.pdas.com/atmosTable2SI.html
Inputs: Measured pressure = 89.876 kPa; Sensor elevation above sea level = 1,000 m; Outside air temperature = 8.55 °C; Sea-level pressure change over 3 hours = 0 kPa; Wind coming from = Calm / omit wind correction; the others as above.
| Result | Source | This calc |
|---|---|---|
| Sea-level pressure | 101.3 kPa | 101.3 kPa |
Independent pywws: summer, SW, rising → F
Source: Executed the unmodified zambretti_code function extracted from the official pywws forecast.py source (attached s4), with rel_pressure=1010, pressure_trend=1.2 hPa/3h, wind_dir=10, wind_ave=2, July, north=True, default 950/1050 range. Its output is F (A=1 → F=6). This verifies implementation agreement, not forecast accuracy. https://github.com/jim-easterbrook/pywws/blob/master/src/pywws/forecast.py
Inputs: Pressure reading = Already reduced to sea level; Measured pressure = 101 kPa; the others as above.
| Result | Source | This calc |
|---|---|---|
| Forecast letter number (A = 1 through Z = 26) | 6 | 6 |
Independent pywws: winter, N, falling → R
Source: Executed the official pywws zambretti_code function, with rel_pressure=1000, pressure_trend=-1.2 hPa/3h, wind_dir=0, wind_ave=2, January, north=True. It returns R (A=1 → R=18). Independent source implementation comparison; no meteorological validation is implied. https://github.com/jim-easterbrook/pywws/blob/master/src/pywws/forecast.py
Inputs: Pressure reading = Already reduced to sea level; Sea-level pressure change over 3 hours = -0.12 kPa; Wind coming from = N; Month (1 = January, 12 = December) = 1; the others as above.
| Result | Source | This calc |
|---|---|---|
| Forecast letter number (A = 1 through Z = 26) | 18 | 18 |
Independent pywws: calm, steady → E
Source: Official pywws zambretti_code, executed with rel_pressure=1015, pressure_trend=0, wind_ave=0 (calm), July. It returns E (A=1 → E=5). Reference from separate published implementation, not observed forecast skill. https://github.com/jim-easterbrook/pywws/blob/master/src/pywws/forecast.py
Inputs: Pressure reading = Already reduced to sea level; Measured pressure = 101.5 kPa; Sea-level pressure change over 3 hours = 0 kPa; Wind coming from = Calm / omit wind correction; the others as above.
| Result | Source | This calc |
|---|---|---|
| Forecast letter number (A = 1 through Z = 26) | 5 | 5 |
Independent pywws: southern summer, NE → F
Source: Official pywws zambretti_code, executed with rel_pressure=1010, pressure_trend=1.2, wind_dir=2, wind_ave=2, January, north=False. Returns F after southern wind and seasonal transformations. This is a software comparison, not an accuracy measurement. https://github.com/jim-easterbrook/pywws/blob/master/src/pywws/forecast.py
Inputs: Pressure reading = Already reduced to sea level; Measured pressure = 101 kPa; Wind coming from = NE; Hemisphere = Southern (180° wind rotation); Month (1 = January, 12 = December) = 1; the others as above.
| Result | Source | This calc |
|---|---|---|
| Forecast letter number (A = 1 through Z = 26) | 6 | 6 |







Responses