Set up a sensor
Step‑by‑step setup for each hardware feed. For what to buy or build first, see /sensors. Already have a camera? Those guides are Add a camera, Add an IP camera, RF scanner, and the API.
First: get a node token
Every hardware feed is authenticated — a live dot on the map is always tied to a node, never an anonymous tap. So each feeder needs your node id and its token.
- Enrol a node (it can be the same Pi you're using for sensors — a node is just an account here, it doesn't have to be a camera).
- Note the node id (
n_…) and save its token to a file, e.g.mynode.token. Keep it private. - Every command below takes
--node n_… --key mynode.token.
tools/sensors/ in the
source
(radar is tools/radar_bridge.py). Run any of them with
--simulate first to watch the payloads without hardware.📡 Radar / speed traps beta
You need
A radar detector with Bluetooth output (Uniden R7/R8, Escort, or Radenso), and a device to run the bridge (a phone hotspot + laptop, or a Pi in the car). A USB GPS or gpsd gives position; otherwise pass a fixed one.
Easiest: in your browser
- Pair the detector to your phone or computer (it usually appears as a COM port, or a Bluetooth LE device).
- Open the browser connect page, paste your node id + token, pick your location, and hit Connect via Serial (or Bluetooth LE). That's it — no scripts.
Or: the PC bridge (any detector, incl. iPhone users' setups)
- Pair the detector so it shows up as a serial port (
COM5on Windows,/dev/rfcomm0on Linux). - Run the bridge (great for a fixed detector on an always‑on PC):
For a fixed spot, droppython tools/radar_bridge.py --hub https://map.sparrowmap.com \ --node n_abcd1234 --key mynode.token \ --serial COM5 --gpsd--gpsdand pass--lat/--lon. - Watch it on the radar screen, or turn on Layers → radar / speed traps on the map.
✈️ Planes & police aircraft beta
You need
An RTL‑SDR dongle + 1090 MHz antenna on a Raspberry Pi running dump1090 (or PiAware).
Steps
- Install dump1090‑fa; confirm it serves JSON at
http://localhost:8080/data/aircraft.json. - Run the feeder:
python tools/sensors/adsb_feed.py --hub https://map.sparrowmap.com \ --node n_abcd1234 --key mynode.token \ --dump1090 http://localhost:8080/data/aircraft.json - Your locally‑received aircraft merge into the aircraft layer, and an orbit over one spot is flagged automatically.
🛸 Drones (Remote ID) beta
You need
An ESP32‑S3 flashed with open‑source OpenDroneID / WiFi‑RemoteID firmware (it prints one JSON object per drone it hears), on USB. A phone app like Drone Scanner works too if you'd rather pipe its output.
Steps
- Flash the ESP32 and confirm it prints Remote ID JSON over serial.
- Run the feeder pointed at that port:
python tools/sensors/drone_feed.py --hub https://map.sparrowmap.com \ --node n_abcd1234 --key mynode.token --serial COM6 - Turn on Layers → drones (Remote ID). Each drone shows as a live point that fades when it stops broadcasting.
📻 Police radio activity beta
You need
An RTL‑SDR + trunk‑recorder following your county's P25 system, and the receiver's fixed location.
Steps
- Get trunk‑recorder decoding calls (check your county isn't fully encrypted first — many are).
- Point the feeder at its call output and give your location:
python tools/sensors/p25_feed.py --hub https://map.sparrowmap.com \ --node n_abcd1234 --key mynode.token \ --lat 42.73 --lon -84.55 --calls /var/trunk-recorder/calls - Turn on Layers → police radio activity. A soft pulse appears where your scanner is hearing dispatch.
Every feed is receive‑only and node‑authenticated. Only government/marked vehicles are ever published; a private vehicle's plate is removed on the device before anything is uploaded. Questions? See /sensors or all guides.