Calibrate
The receiver measures a local noise floor and calculates on/off thresholds.
Small programs, explicit files, and atomic replacement make the system observable and recoverable.
WeatherLink Live → weather.py → weather.txt ───────────────┐
├→ voice converter → generate.sh → current.wav
AWC GFA → get_clouds_from_awc.py → clouds.json ───────────┤
├→ text converter → current_sms.txt → PNG
HackRF / Airspy → click_listen.py → USB relay + radio ←────┘A single snapshot feeds the voice, text, and graphic. Temporary files move into place only after they are complete. A failed station refresh does not touch the last observation, so file age remains honest.
The receiver measures a local noise floor and calculates on/off thresholds.
Carrier transitions must satisfy the minimum quiet and click-gap timing.
Five qualified clicks inside the configured window become one accepted request.
When enabled, receive pauses, PTT closes, the report plays, PTT opens, and receive restarts.
A fixed cooldown prevents an immediate repeated transmission.
| File | Role |
|---|---|
config.yaml | Safe public station, SDR, radio, capture, relay, and safety defaults. |
weather.py | Direct WeatherLink fetch, timestamp validation, stale rejection, atomic storage. |
get_clouds_from_awc.py | AWC request lock, 30-minute limit, and last-known-good cloud cache. |
convert_weather_*.pl | Transforms one weather/cloud snapshot into spoken and readable products. |
awos_to_image.py | Renders the current readable report as a PNG. |
weather_loop.sh | Locks and orchestrates a complete generation cycle. |
click_listen.py | SDR backends, click state machine, relay PTT, and audio playback. |
radio_audio.py | Optional live PCM and captured WAV/JSON metadata. |
daily_weather_email.py | Sunrise scheduling, health, weather/camera, requests, and NBM guidance. |
tests/ | Regression coverage for freshness, rate limiting, capture, scheduling, and transmit control. |
The root, v2, and v4 directories preserve Arduino and analog-detector approaches that helped the project evolve. They are valuable history, but new builds should start in v5-sdr-usb-relay.