Add VRS JSON format support for readsb integration

Added comprehensive support for VRS (Virtual Radar Server) JSON format
as a simpler alternative to Beast binary protocol, enabling integration
with readsb --net-vrs-port output.

## Key Features:
- **VRS JSON Parser**: Stream parsing of newline-delimited JSON aircraft data
- **VRS Client**: TCP client with automatic reconnection and error recovery
- **Mixed Format Support**: Use Beast and VRS sources simultaneously
- **Enhanced Aircraft Data**: Added VRS-specific fields (registration, type, operator)
- **Position Source Tracking**: Identifies ADS-B, MLAT, TIS-B, and satellite positions

## Implementation:
- `internal/vrs/parser.go`: VRS JSON message parsing and validation
- `internal/client/vrs.go`: VRS TCP client implementation
- Enhanced `MultiSourceClient` to support both Beast and VRS formats
- Extended `Aircraft` struct with validity flags and additional metadata
- Updated configuration to include `format` field ("beast" or "vrs")

## Testing:
- Successfully tested against svovel:33005 VRS JSON stream
- Verified aircraft data parsing and position tracking
- Confirmed mixed-format operation with existing Beast clients

## Documentation:
- Updated README.md with VRS format configuration examples
- Enhanced ARCHITECTURE.md with VRS parser documentation
- Added data format comparison and configuration guide

This enables simpler integration with modern readsb installations while
maintaining full backward compatibility with existing Beast deployments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2025-08-31 11:02:27 +02:00
commit 073acb7304
10 changed files with 903 additions and 40 deletions

View file

@ -52,21 +52,28 @@ SkyView is a high-performance, multi-source ADS-B aircraft tracking system built
## Core Components
### 1. Beast Format Clients (`internal/client/`)
### 1. Multi-Format Clients (`internal/client/`)
**Purpose**: Manages TCP connections to dump1090 receivers
**Purpose**: Manages TCP connections to dump1090/readsb receivers using multiple protocols
**Key Features**:
- Concurrent connection handling for multiple sources
- Automatic reconnection with exponential backoff
- Beast binary format parsing
- Support for Beast binary and VRS JSON formats
- Per-source connection monitoring and statistics
- Mixed-format multi-source support
**Files**:
- `beast.go`: Main client implementation
- `beast.go`: Beast binary client and multi-source manager
- `vrs.go`: VRS JSON format client
### 2. Mode S/ADS-B Decoder (`internal/modes/`)
**Supported Formats**:
- **Beast Binary**: Traditional binary format from dump1090 (port 30005)
- **VRS JSON**: JSON format from readsb VRS output (port 33005)
### 2. Data Format Processors
#### Mode S/ADS-B Decoder (`internal/modes/`)
**Purpose**: Decodes raw Mode S and ADS-B messages into structured aircraft data
**Key Features**:
@ -78,6 +85,18 @@ SkyView is a high-performance, multi-source ADS-B aircraft tracking system built
**Files**:
- `decoder.go`: Core decoding logic
#### VRS JSON Parser (`internal/vrs/`)
**Purpose**: Parses Virtual Radar Server JSON format aircraft data
**Key Features**:
- Newline-delimited JSON stream parsing
- Direct aircraft data extraction (no Mode S decoding required)
- Support for VRS-specific fields (registration, aircraft type, operator)
- Position source identification (ADS-B, MLAT, TIS-B, Satellite)
**Files**:
- `parser.go`: VRS JSON message parsing
### 3. Data Merger (`internal/merger/`)
**Purpose**: Fuses aircraft data from multiple sources using intelligent conflict resolution
@ -144,9 +163,9 @@ SkyView is a high-performance, multi-source ADS-B aircraft tracking system built
## Data Flow
### 1. Data Ingestion
1. **Beast Clients** connect to dump1090 receivers via TCP
2. **Beast Parser** processes binary message stream
3. **Mode S Decoder** converts raw messages to structured aircraft data
1. **Multi-format Clients** connect to dump1090/readsb receivers via TCP
2. **Format Parsers** process binary Beast or JSON VRS message streams
3. **Data Converters** convert messages to structured aircraft data (Mode S decoding for Beast, direct mapping for VRS)
4. **Data Merger** receives aircraft updates with source attribution
### 2. Data Fusion