A multi-sensor data collection and LoRa transmission system for environmental and aircraft (ADS-B) monitoring, designed for edge deployment on a solar-powered Raspberry Pi 5.
src/: Core daemon services and protocols:sensor_lora_daemon.py: Main sensor ETL and LoRa broadcaster.aircraft_lora_daemon.py: ADS-B decoder and parser.ntrip_client.py: RTCM3 correction injector for sub-meter GPS RTK fixes.web_app.py: Flask web dashboard and telemetry API.
configs/: Systemd unit configurations (lhzn-sensor.service,lhzn-ntrip.service,lhzn-web.service).scripts/: System logs and offline test scripts (scripts/tests/).docs/: Technical notebooks and architecture documentation.
Ensure uv is installed on your host system:
curl -LsSf https://astral.sh/uv/install.sh | shRun uv sync to automatically initialize the Python virtual environment and install all dependencies declared in pyproject.toml:
uv sync- To run the environmental sensor and power telemetry daemon:
uv run src/sensor_lora_daemon.py
- To run the web dashboard:
uv run src/web_app.py
The aircraft tracking pipeline requires the dump1090 utility built from source:
sudo apt update
sudo apt install git build-essential pkg-config libusb-1.0-0-dev rtl-sdr libncurses5-dev libhackrf-dev
git clone https://github.com/flightaware/dump1090.git
cd dump1090
makeEnsure the resulting dump1090 executable is referenced correctly in your execution paths.
The background services can be registered to startup automatically. Standard systemd unit templates are located in the configs/ folder:
- Copy the configurations:
sudo cp configs/lhzn-*.service /etc/systemd/system/ - For the web dashboard, create the symlink:
sudo ln -sf /home/pi/Projects/lhzn-io/lazy-buoy/configs/lhzn-web.service /etc/systemd/system/lhzn-web.service
- Reload and restart:
sudo systemctl daemon-reload sudo systemctl enable lhzn-sensor lhzn-ntrip lhzn-web sudo systemctl restart lhzn-sensor lhzn-ntrip lhzn-web
MIT