RASP Prediction
RASP prediction
sigssafe.netlify.app
Starting up...

SigsSafe - Pilot Decision Guide

Signal Hill & Lion's Head - Cape Town - Updated 2026-05-20

0 · What This App Does

SigsSafe covers two Cape Town paragliding sites — Signal Hill and Lion's Head — from one app.
Signal Hill uses three PgSonda sensors: BACK (behind the hill, authoritative), FRONT (at launch), and SEAPOINT (landing zone). Lion's Head uses two sensors: LH UPPER at the launch (Holfuy) and GLEN CLUB at the landing (GlenWind). A sixth sensor, LH LOWER, is planned.

Each site has its own live display, log, and status. The app evaluates each site independently and displays: FLYABLE · FLYABLE WITH CAUTION · MANUAL CHECK · UNSAFE

All six sensors write into a shared database. This makes it possible to review history, compare sensors across sites, and test safety rules against real past conditions before activating them.

Important: MANUAL CHECK does not mean “don't fly.” It means sensors are degraded — use visual assessment, a handheld anemometer, or ask a current pilot before deciding. The app cannot make that call for you.

Redundancy: a separate live wind feed is available at stations.systemic.co.za ↗ — cross-check it when SigsSafe is in MANUAL CHECK or when you want a second opinion.

Collective decision-making: SigsSafe shows the same data to all pilots on site. If experienced pilots on the ground are seeing different conditions, trust the site consensus over any single reading. The app is a tool — not a replacement for pilot judgement and shared observation.

Pilot warnings: Tandem pilots can log field observations (turbulence, sink, rotor, unsafe vote) directly in the app. Warnings are timestamped, stored in the database, and shown to other pilots for up to 10 minutes. The 3-vote unsafe system can be activated or deactivated by site management.

1 · Signal Hill Sensors

CardStation IDRole
BACK — TowersignalhillPrimary. Behind the hill at mast height. Authoritative for overall status.
FRONT — LaunchlionsheadlowerAt launch. Cross-checks when BACK is offline. Cannot override BACK.
SEAPOINTseapointMarine layer / sea breeze indicator. Protects landing zone. Early warning for building westerlies.

All three Signal Hill sensors are hosted on pgsonda.cz. Readings are fetched directly from PgSonda every 10 seconds and also written to the Supabase database for history.

1b · Lion's Head Sensors

CardSourceRole
LH UPPERHolfuy station 1724At the launch in the venturi. Updates every 2 minutes. Primary LH launch reference.
GLEN CLUBGlenWind APIAt the landing zone. Updates every 5 minutes on the clock. Confirms landing conditions and provides early warning of wind shifts.
LH LOWERPgSonda (planned)Future sensor — offline placeholder. Will add an intermediate reference between launch and landing.

LH Upper and Glen Club readings are written to Supabase by the Netlify poller. The browser reads the latest values from Supabase. Glen Club uses a Davis 6410 wind sensor with a 5-minute averaging window — lull, average, and gust are all recorded.

2 · Signal Hill — Decision Tree

Evaluated in priority order — first matching rule wins. “Recent” means the sensor reported within the last 3 minutes.

#BACKSEAFRONT (last 10 min)Result
1 Any sensor in a RED zone (speed exceeds zone limit) 🔴 UNSAFE
2 Recent · green Recent · green Recent · all green ✅ FLYABLE
3 Recent · green/yellow Recent · green/yellow Any green/yellow reading 🌡 CAUTION · ALERT
4 Stale / offline Recent · green/yellow All green/yellow · no R004 in last 10 min 🌡 CAUTION — B-Stale/Offline
5 Stale / offline Recent R004 (over the back) reading in last 10 min ⚠ MANUAL — F-Backwind
6 Recent Recent Stale / offline ✅ FLYABLE — F-Offline (noted)
7 Recent Stale / offline ⚠ MANUAL — S-Offline · use handheld
8 Stale / offline Stale / offline ⚠ MANUAL — B+S offline · visual check required

Pilot vote override (3 net “unsafe” votes in database) can elevate any status to UNSAFE. See Section 14.

3 · Status Meanings

StatusMeaningAction
✅ FLYABLEAll active sensors green, no alert conditionsNormal operations
🌡 CAUTION · ALERTYellow zone or Promenade Wall turbulence activeHeightened awareness; consider waiting
🌡 CAUTIONBACK offline, but FRONT confirms flyable conditionsFly with extra vigilance; BACK may recover
⚠ MANUALSensors degraded or ambiguous — app cannot decideUse visual/handheld/site consensus to decide
🔴 UNSAFESpeed limit exceeded, or 3+ pilot unsafe votesDo not fly

4 · Risk Zones — Signal Hill (BACK & FRONT)

ZoneDirectionSpeed limitSector
R001W to N (270°–360°)≤ 30 kphGREEN
R002SW turbulence (225°–270°)≤ 25 kphYELLOW
R003N high sink (0°–45°)≤ 20 kphYELLOW
R004Over the back (45°–225°)≤ 10 kphYELLOW — backwind

4b · Risk Zones — Seapoint (SEA)

ZoneDirectionSpeed limitSector
R005SW to N (225°–45°)≤ 30 kphGREEN
R006NE turbulence (45°–90°)≤ 15 kphYELLOW
R007S turbulence (180°–225°)≤ 20 kphYELLOW
R008Wind rotor (90°–180°)≤ 10 kphYELLOW

Zone limits are from the SAHPA risk assessment. Speed is 10-minute average (avgSpd). Direction is corrected before zone lookup.

4c · Risk Zones — Lion's Head Upper (LHU)

The LHU sensor sits in a venturi at the launch. Speeds read higher than open-air because of the compression effect. Zone limits account for this.

ZoneDirectionSpeed limit (gust)Sector
R009SSW to WSW (202°–248°)≤ 52 kphGREEN — on condition
R010WSW to W — ridge rotor (248°–270°)≤ 46 kphYELLOW
R011aS to SSW (180°–202°)≤ 45 kphYELLOW
R011W to S via North (270°–180°)No flyRED

4d · Risk Zones — Glen Club Landing (GLEN)

Glen Club measures the landing field. Direction matters as much as speed here — a north or east wind at the landing means pilots are flying into rotor or turbulence off the ridge.

ZoneDirectionSpeed limit (avg)Sector
R012SSW to N (202°–360°)≤ 22 kphGREEN
R013SE to SSW — rotor (135°–202°)≤ 22 kphYELLOW
R014N to SE (0°–135°)No flyRED

5 · Direction Corrections

Raw compass readings are corrected before any zone or status logic runs. Current values (from config.json):

SensorOffset appliedEffect
Back (signalhill)−22°Corrects for mast orientation
Front (lionsheadlower)+2°Minor launch alignment
SeapointNo correction needed
LH UpperHolfuy self-calibrated
Glen ClubGlenWind self-calibrated

Corrections are defined in config.json and applied at fetch time. Cards always show the corrected direction. When a correction is updated, old database readings are not changed — the correction is applied fresh each time history is displayed.

6 · Unified Database & History

All six sensors write into a single Supabase database. Every reading is stored as a permanent raw fact — direction, average speed, gust, lull, and temperature where available. Nothing is discarded.

CapabilityHow it works
Full history playbackScroll back through any sensor on any past day. The app replays the same zone and rule logic against the stored readings.
Cross-site comparisonSignal Hill and Lion's Head history on one timeline. See how Glen Club and Seapoint track each other during a building sea breeze.
Calibration without rewriting historyIf a direction correction is updated, the database readings stay unchanged. The new correction is applied when you view history — so you can see what the old and new calibration would have shown for the same event.
Rule testingA proposed new safety rule can be run against 90 days of stored readings before it is activated. See Section 8.

The database retains 90 days of raw readings across all sensors. Hourly summaries for longer-term analysis are planned. Raw readings are written by Netlify server functions only — the browser never writes sensor data.

7 · Early Warning System

Some dangerous conditions at a launch or landing show up at a different sensor first. SigsSafe uses cross-sensor patterns to warn pilots before the problem reaches the critical point.

PatternWhat it meansEarly signal
Building westerly at Signal HillSeapoint often accelerates before the Back sensor crosses its limit. A Seapoint spike alarm is a 5–10 minute warning for Sigs conditions.Seapoint ↑ trend
SW breakthrough at Signal HillWhen Glen Club starts reading strong SSW and Seapoint backs up, a SW surge at Signal Hill is likely within minutes.Glen SSW + Seapoint rising
Wind shift at Glen Club landingThe landing field can flip from a clean SSW to a rotor-producing SE while the launch still reads fine. Glen Club is the only sensor that catches this directly.Glen direction crossing 202° toward SE
Lion's Head Upper going off conditionWhen LHU direction shifts toward W (above 248°) the venturi amplifies the speed rapidly. R010 caution is an early indicator before R011 no-fly.LHU direction 248°–270°, speed rising

These patterns are currently used as manual awareness cues. Future versions will formalise these as named rules that fire automatic caution banners.

8 · Rule Testing Against History

A safety rule is a simple if-then statement: “if Glen direction is between 135° and 202° AND Glen average speed exceeds 18 kph, show CAUTION at the landing.” Before a new rule is activated, it needs to be tested.

Because all sensor readings are stored raw in the database, a proposed rule can be replayed against real past data without touching the live app at all.

StepWhat happens
1. Write the ruleDefine the conditions — sensor, direction range, speed threshold, time window.
2. Run it against historyThe rule is applied to every stored reading from the past 90 days. It counts how many times it would have fired.
3. Compare with pilot reportsCross-check the rule trigger times against the pilot feedback log. Did the rule fire when pilots were actually reporting problems? Did it fire when conditions were fine?
4. Adjust thresholdsIf the rule fires too often on benign conditions, raise the threshold. If it misses real events, lower it. Rerun against history until it fits.
5. ActivateOnce the rule performs well against historical data, it is added to the live decision logic.

Example: a proposed “Glen landing rotor caution” rule was tested against 60 days of Glen Club readings and matched 8 out of 9 pilot reports of difficult landings in that period, with 3 false positives on days pilots reported no issues. Threshold was raised by 2 kph and retested before activating.

9 · Stale Sensor Logic

A sensor is treated as stale (equivalent to offline for decision purposes) if its last reading is more than 3 minutes old. This threshold is the default and can be adjusted via stale_min in config.json.

ConditionEffect
Last reading < 3 min agoSensor is “recent” — used normally in all rules
Last reading ≥ 3 min agoSensor is “stale” — treated as offline for status logic
No reading at allSensor is “offline” — same as stale

Stale sensors are shown in the card header with a greyed clock icon. The decision tree falls through to the appropriate MANUAL or CAUTION rule (see Section 2).

Note: LH Upper updates every 2 minutes and Glen Club every 5 minutes by design — these are not stale. The stale threshold only triggers if a sensor stops reporting unexpectedly.

10 · Warning Strip — S (Stabilising) & T (Spike Trend)

These warnings run independently of the overall status. The status banner shows current live conditions. The warning strip below shows active S and T warnings — the pilot sees FLYABLE + a warning rather than being blocked.

CodeMeaningExample
SR001·BACK 7mStabilising on R001, Back sensor, 7 min cooldown leftSpeed exceeded R001 limit, now below — waiting out timer
SR001·BACK ⌛Timer done, awaiting next reading below limitTimer expired between sensor polls
TR002·FRONT →28kphTrend projects Front will exceed R002 (25 kph) next reading3 rising readings: 18→22→24 kph, projects 28

The 🔔 ALARM button controls audio alerts only — PC only at the moment; mobile alarm support coming soon. Both S and T alarms fire once per event. The pilot can silence audio without losing the visual warning.

11 · Stabilising — Cooldown Detail

Applies to R001, R002, R003 (Signal Hill) and R005 (Seapoint). Not applied to R004, R006, R007, R008. When any included zone's speed limit is exceeded, a cooling timer starts. Timer restarts on each new exceedance; worst-case peak excess determines wait time.

Peak excess above zone limitMinimum waitExample
< 5 kph over limit5 minutesR001 limit 30 → reads 32 kph (+2)
5 – 9 kph over limit10 minutesR001 limit 30 → reads 37 kph (+7)
≥ 10 kph over limit30 minutesR001 limit 30 → reads 42 kph (+12)

32 kph in R001, drops to 25, stays there — clears after 5 min.
37 kph, drops to 20 — 10-min timer. Spikes to 44 before clearing — timer restarts, worst excess now +14, locked for 30 min.
Sensor stale while stabilising — counter pauses. Resumes when sensor comes back online; may already have expired.
Direction shifts R001 to R002 mid-timer — zone max drops from 30 to 25. Current speed re-checked against new limit; if exceeded, timer restarts.

12 · ⚡ Spike Warning — Predictive Trend

If 3 consecutive readings on any sensor are strictly rising and the projected next reading would exceed the zone limit, a spike alarm fires before the limit is crossed.

ReadingBack speedBelow R001 limit (30)?
t − 4 min22 kph
t − 2 min26 kph
t − 0 min29 kph
t + 2 min (projected)32 kph✗ → ⚡ SPIKE ALARM

Seapoint often leads Signal Hill by several minutes in a building westerly — a Seapoint spike alarm is an early warning for Sigs conditions. The same logic applies to Glen Club as an early warning for the Lion's Head landing.

13 · Promenade Wall Turbulence

A computed condition on the Sea sensor. When Sea direction is 270°–337° (WNW to NNW) and average speed exceeds 15 kph, there can be increased turbulence on landing. Shows as S-Promenade Wall in the banner. Always CAUTION · ALERT — never causes UNSAFE on its own.

14 · Pilot Vote — Unsafe Report

Any pilot can tap REPORT UNSAFE to register a vote. Votes are stored in the database and visible to all pilots on site. When 3 or more net “unsafe” votes accumulate, the app overrides all sensor logic and forces 🔴 UNSAFE.

ParameterValue (config.json)
Votes required to call UNSAFE3
Vote expiry window10 minutes
StorageDatabase (server-side, shared across all users)

This mechanism is for when pilots physically on site observe dangerous conditions that the sensors have not yet captured — rotor, unexpected turbulence, equipment failure. It is a collective safety tool, not a protest button.

Use responsibly: A false UNSAFE call affects every pilot checking the app. Only vote unsafe when you have direct, current evidence of dangerous conditions at the site.

Official risk assessment document (v1.7, February 2026):
SAHPA Risk Assessment — Lion's Head & Signal Hill v1.7 ↗

Tandem Pilot Report - Signal Hill

Select warning(s)
When did this happen?
Fetching wind data...
BACKLoading
Awaiting sensor data
FRONTLoading
Awaiting sensor data
SEAPOINTLoading
Awaiting sensor data
PG SHT 2x
PG SHT 2x
PG SHL 2x
Wind Chart - last 30 min  |  Back   Front   Sea   * = projected next
Choose a rule and period. Results jump the graph directly to that event.
Live Feed
TIME BACK - Tower FRONT - Launch SEAPOINT STATUS
Fetching Lion's Head data...
GLEN CLUBLoading
Awaiting sensor data
LH UPPERLoading
Awaiting sensor data
LH LOWEROffline
No sensor connection yet
PG LHL 2x
PG LHU 2x
PG LHT 2x
Wind Chart - live 30 min  |  Glen Club   LH Upper   LH Lower  
Lion's Head Live Feed
TIME GLEN CLUB (Glen Wind) LH UPPER (Holfuy) LH LOWER STATUS