Skip to content

feat: NOAA Weather Radio streaming for selected location #296

@Orinks

Description

@Orinks

Summary

Add the ability to listen to live NOAA Weather Radio (NWR) broadcasts for the user's selected location or any location in their list.

Background

NOAA Weather Radio broadcasts continuous weather information on VHF frequencies (162.400-162.550 MHz). Many stations have online audio streams (MP3/Icecast) hosted by volunteers and services like weatherUSA.net.

Implementation

Audio Playback

AccessiWeather already uses sound_lib (Bass audio library wrapper) for sound packs. sound_lib.stream.URLStream supports internet audio streaming natively:

from sound_lib import stream, output
s = stream.URLStream(url="http://example.com:8000/stream.mp3")
s.play()  # starts streaming
s.stop()  # stops

No new dependencies required.

Station Database

  • Build a station lookup table: callsign, name, lat/lon, stream URL
  • Source station data from weatherUSA.net and/or NWS station listings
  • Find nearest station to selected location using haversine distance

UI

  • "Listen to NOAA Radio" button or menu item (View menu)
  • Small player dialog with:
    • Station name and callsign display
    • Play/Stop button
    • Volume slider
    • Station selector (nearest + nearby alternatives)
  • All controls must have accessible names for screen readers

Edge Cases

  • Not all stations have online streams; show clear message when unavailable
  • Handle stream disconnects/stalls gracefully (is_stalled property)
  • US-only feature; hide or disable for international locations
  • Stream URLs may change over time; consider a maintainable data format

Acceptance Criteria

  • User can listen to nearest NOAA Weather Radio station for selected location
  • Player has accessible play/stop/volume controls
  • Nearest station auto-selected with option to choose alternatives
  • Graceful handling when no stream is available
  • Feature hidden/disabled for non-US locations
  • Tests for station lookup and service layer

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions