diff --git a/CONFIG.md b/CONFIG.md index 21e1099..b0e1432 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -217,8 +217,61 @@ All aircraft sprites should face **right (east)** - the code flips them automati ## Quick Start Checklist -1. [ ] Edit `config.json` with your receiver IP (or leave as AUTO) -2. [ ] Set your location name, latitude, and longitude -3. [ ] Replace `north.png`, `east.png`, `south.png`, `west.png` with your local views -4. [ ] Start the server: `python3 server.py` -5. [ ] Open browser to `http://your-server-ip:2001` +1. [ ] Install dependencies: `pip install -r requirements.txt` +2. [ ] Edit `config.json` with your receiver IP (or leave as AUTO) +3. [ ] Set your location name, latitude, and longitude +4. [ ] (Optional) Add custom backgrounds to `backgrounds/custom/` and set `"theme": "custom"` +5. [ ] Start the server: `python3 server.py` +6. [ ] Open browser to `http://your-server-ip:2001` + +--- + +## Running as a Service (Auto-Start) + +To run Pixel-ADSB automatically on boot, create a systemd service: + +### 1. Create the service file + +```bash +sudo nano /etc/systemd/system/pixel-adsb.service +``` + +Add this content (adjust paths as needed): + +```ini +[Unit] +Description=Pixel-ADSB Flight Tracker +After=network.target + +[Service] +Type=simple +WorkingDirectory=/path/to/pixel-view +ExecStart=/usr/bin/python3 /path/to/pixel-view/server.py +Restart=always +RestartSec=5 +StandardOutput=append:/var/log/pixel-adsb.log +StandardError=append:/var/log/pixel-adsb.log + +[Install] +WantedBy=multi-user.target +``` + +### 2. Enable and start the service + +```bash +sudo systemctl daemon-reload +sudo systemctl enable pixel-adsb +sudo systemctl start pixel-adsb +``` + +### 3. Check status + +```bash +sudo systemctl status pixel-adsb +``` + +### 4. View logs + +```bash +tail -f /var/log/pixel-adsb.log +``` diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..031457b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Allen Cross + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 4f94928..ae7614c 100644 --- a/README.md +++ b/README.md @@ -2,54 +2,111 @@ A retro SNES-style side-view flight tracker that displays ADS-B aircraft data with custom pixel art sprites. +![Pixel-ADSB Screenshot](screenshots/screenshot.png) + ## Features - Real-time aircraft tracking via ADS-B receivers -- Custom pixel art sprites for 6 aircraft types -- Animated sun and moon with accurate positions based on location -- Weather visualization (clouds, rain/snow) -- Directional view (N/E/S/W) with unique backgrounds +- Custom pixel art sprites for 6 aircraft types (small prop, regional jet, narrow body, wide body, heavy, helicopter) +- Animated sun and moon with accurate astronomical positions +- Dynamic sky colors based on time of day +- Weather visualization with cloud sprites +- Directional view (N/E/S/W) with themed backgrounds +- Auto-discovery of ADS-B receivers on your network - Canvas-based 10 FPS retro rendering ## Quick Start ```bash +# Clone the repository +git clone https://gitea.chops.one/allen/Pixel-ADSB.git +cd Pixel-ADSB + # Install dependencies -pip install aiohttp netifaces +pip install -r requirements.txt + +# Configure your location (required for weather and celestial positioning) +# Edit config.json and set your lat/lon coordinates # Start the server python3 server.py ``` -Access at http://localhost:2001 (or configured port in config.json) +Access at http://localhost:2001 ## Requirements - Python 3.8+ -- ADS-B receiver providing SBS/BaseStation format on port 30003 +- ADS-B receiver providing SBS/BaseStation format on port 30003 (dump1090, readsb, etc.) - Modern web browser with Canvas support -## Documentation +## Configuration -- [CONFIG.md](CONFIG.md) - Configuration options and background themes -- [CLAUDE.md](CLAUDE.md) - Development guidance +Edit `config.json` to customize your installation: -## Aircraft Types +```json +{ + "receivers": "AUTO", + "receiver_port": 30003, + "location": { + "name": "My Location", + "lat": 36.2788, + "lon": -115.2283 + }, + "web_port": 2001, + "theme": "desert" +} +``` -| Type | Description | -|------|-------------| -| Small Prop | Light aircraft, N-prefix callsigns | -| Regional Jet | Regional carriers | -| Narrow Body | 737/A320 class | -| Wide Body | 777/787 class | -| Heavy | 747/A380 class | -| Helicopter | Low altitude, slow speed | +**Important:** Set your `location.lat` and `location.lon` for accurate weather and sun/moon positioning. + +See [CONFIG.md](CONFIG.md) for full configuration options including custom backgrounds and running as a service. ## Controls - **Arrow Keys / A/D**: Rotate view direction - View cycles through North, East, South, West +- Click aircraft in sidebar to highlight + +## Aircraft Types + +| Type | Detection | +|------|-----------| +| Helicopter | Low altitude + slow speed | +| Heavy (747/A380) | High altitude or specific callsigns | +| Wide Body | Very high altitude/speed | +| Narrow Body | Default commercial | +| Regional Jet | Regional carrier callsigns or lower altitude | +| Small Prop | N-prefix callsigns or very low/slow | + +## Custom Backgrounds + +Create backgrounds for your location: + +1. Add 4 directional images to `backgrounds/custom/` (north.png, east.png, south.png, west.png) +2. Set `"theme": "custom"` in config.json +3. Restart the server + +See [CONFIG.md](CONFIG.md) for image specifications and tips. + +## Running as a Service + +To auto-start on boot, see the systemd service instructions in [CONFIG.md](CONFIG.md#running-as-a-service-auto-start). + +## Compatible Receivers + +Works with any receiver providing SBS/BaseStation format on port 30003: +- dump1090 / dump1090-fa / dump1090-mutability +- readsb +- ADS-B Exchange feeders +- FlightAware PiAware +- Any SBS1 compatible receiver ## License -MIT +MIT License - see [LICENSE](LICENSE) for details. + +## Credits + +- Aircraft and environment sprites generated with AI assistance +- Weather data from [Open-Meteo](https://open-meteo.com/) (free, no API key required) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..57443cf --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +aiohttp>=3.8.0 +netifaces>=0.11.0 diff --git a/screenshots/screenshot.png b/screenshots/screenshot.png new file mode 100644 index 0000000..23c2279 Binary files /dev/null and b/screenshots/screenshot.png differ