Smart Home Person Tracking System Development
Budget: €1,500 – €3,000 EUR
Multi-Person Indoor Tracking System for Smart Home — Raspberry Pi 5, Python, Local-Only
PROJECT OVERVIEW
I'm building a local smart home system that needs to know where each person is inside the house at all times - including persistent re-identification as people move between rooms and camera views.
The end goal: the music (AirPlay) follows the person. When someone walks into another room, the music and lights follows them.
Re-identification is therefore critical — a person must keep the same ID throughout their stay, even after temporarily leaving all camera views.
Person positions are displayed live as dots on a floor-plan overlay in the home dashboard (rendered from the STEP file) — so coordinates must map cleanly onto the STEP geometry.
Everything runs on a Raspberry Pi 5, fully offline. No cloud, no external APIs.
WHAT YOU NEED TO BUILD
1. Camera Placement Optimisation
Given a floor plan (STEP file provided), optimise camera placement — minimum number of cameras, maximum coverage.
Output: placement proposal with mounting positions and angles.
Cameras are PoE (Power-over-Ethernet), RGB day + IR night. PoE is fixed — fewer cable runs.
2. Tracking Engine
A Python service running on the Pi that:
- Ingests RTSP streams from all cameras simultaneously
- Detects and tracks up to 5 persons at the same time
- Assigns each person a persistent, globally consistent ID — re-ID must survive camera handoffs and brief disappearances
- Converts pixel positions to floor-plan coordinates in mm (origin = fixed reference point)
- Achieves less than 150 ms latency from zone crossing to API call
- Runs entirely on the Pi (no GPU — optimise for Pi 5 CPU/NPU)
Tracking approach is open — use whatever achieves reliable re-ID and the latency target.
3. Privacy Zones
Bedroom and bathroom are presence-only. No per-person coordinates inside these rooms. Output for anyone detected there: fixed zone-centre coordinate + their ID + privacy: true. The system detects that someone is in the room, not where within it.
4. Output Interface
After each frame (or on position change), the service posts to the Maro server (FastAPI, Python).
Content that matters:
{
"cam_id": "cam_wohnzimmer",
"persons": [
{ "id": "p1", "x": 3420, "y": 1870, "zone": "wohnzimmer", "privacy": false },
{ "id": "p2", "x": 0, "y": 0, "zone": "bad", "privacy": true }
],
"ts": 1714200000.123
}
Coordinates in mm from floor-plan origin. IDs consistent across all cameras. Endpoint URL and HTTP structure are flexible — propose what makes sense.
The dashboard renders each person as a dot on a live floor-plan image from the STEP file. The x/y values are projected directly onto this image — coordinate origin and scale must match the rendered floor plan exactly. Factor this into how the calibration tool defines and exports the mapping.
5. Calibration Tool
Lightweight tool to re-calibrate when the floor plan changes. Method is open — propose what's
practical. Easy to use for non technical personal. Input: updated STEP file. Output: updated camera-to-floor-plan mapping for the tracking engine.
TECHNICAL REQUIREMENTS
Hardware: Raspberry Pi 5 , PoE cameras (RGB + IR), local network only
Language: Python (clean, well-structured, editable)
Latency: less than 150 ms from zone crossing to API call
Persons: up to 5 simultaneous, persistent IDs
Re-identification: persistent across cameras and brief disappearances
Privacy zones: bedroom + bathroom — presence only, fixed centre coordinate
Coordinates: mm from fixed floor-plan origin, projected onto STEP-rendered floor plan
Internet: zero — fully offline
DELIVERABLES
1. Camera placement proposal — optimised positions and angles based on floor plan
2. Tracking service — Python, runs on Pi 5, RTSP in, HTTP POST out
3. Calibration tool — re-maps cameras to updated floor plan
4. Setup documentation — install, configure, run
Budget: open to offers — please include your approach and relevant experience
Timeline: ASAP
PROJECT OVERVIEW
I'm building a local smart home system that needs to know where each person is inside the house at all times - including persistent re-identification as people move between rooms and camera views.
The end goal: the music (AirPlay) follows the person. When someone walks into another room, the music and lights follows them.
Re-identification is therefore critical — a person must keep the same ID throughout their stay, even after temporarily leaving all camera views.
Person positions are displayed live as dots on a floor-plan overlay in the home dashboard (rendered from the STEP file) — so coordinates must map cleanly onto the STEP geometry.
Everything runs on a Raspberry Pi 5, fully offline. No cloud, no external APIs.
WHAT YOU NEED TO BUILD
1. Camera Placement Optimisation
Given a floor plan (STEP file provided), optimise camera placement — minimum number of cameras, maximum coverage.
Output: placement proposal with mounting positions and angles.
Cameras are PoE (Power-over-Ethernet), RGB day + IR night. PoE is fixed — fewer cable runs.
2. Tracking Engine
A Python service running on the Pi that:
- Ingests RTSP streams from all cameras simultaneously
- Detects and tracks up to 5 persons at the same time
- Assigns each person a persistent, globally consistent ID — re-ID must survive camera handoffs and brief disappearances
- Converts pixel positions to floor-plan coordinates in mm (origin = fixed reference point)
- Achieves less than 150 ms latency from zone crossing to API call
- Runs entirely on the Pi (no GPU — optimise for Pi 5 CPU/NPU)
Tracking approach is open — use whatever achieves reliable re-ID and the latency target.
3. Privacy Zones
Bedroom and bathroom are presence-only. No per-person coordinates inside these rooms. Output for anyone detected there: fixed zone-centre coordinate + their ID + privacy: true. The system detects that someone is in the room, not where within it.
4. Output Interface
After each frame (or on position change), the service posts to the Maro server (FastAPI, Python).
Content that matters:
{
"cam_id": "cam_wohnzimmer",
"persons": [
{ "id": "p1", "x": 3420, "y": 1870, "zone": "wohnzimmer", "privacy": false },
{ "id": "p2", "x": 0, "y": 0, "zone": "bad", "privacy": true }
],
"ts": 1714200000.123
}
Coordinates in mm from floor-plan origin. IDs consistent across all cameras. Endpoint URL and HTTP structure are flexible — propose what makes sense.
The dashboard renders each person as a dot on a live floor-plan image from the STEP file. The x/y values are projected directly onto this image — coordinate origin and scale must match the rendered floor plan exactly. Factor this into how the calibration tool defines and exports the mapping.
5. Calibration Tool
Lightweight tool to re-calibrate when the floor plan changes. Method is open — propose what's
practical. Easy to use for non technical personal. Input: updated STEP file. Output: updated camera-to-floor-plan mapping for the tracking engine.
TECHNICAL REQUIREMENTS
Hardware: Raspberry Pi 5 , PoE cameras (RGB + IR), local network only
Language: Python (clean, well-structured, editable)
Latency: less than 150 ms from zone crossing to API call
Persons: up to 5 simultaneous, persistent IDs
Re-identification: persistent across cameras and brief disappearances
Privacy zones: bedroom + bathroom — presence only, fixed centre coordinate
Coordinates: mm from fixed floor-plan origin, projected onto STEP-rendered floor plan
Internet: zero — fully offline
DELIVERABLES
1. Camera placement proposal — optimised positions and angles based on floor plan
2. Tracking service — Python, runs on Pi 5, RTSP in, HTTP POST out
3. Calibration tool — re-maps cameras to updated floor plan
4. Setup documentation — install, configure, run
Budget: open to offers — please include your approach and relevant experience
Timeline: ASAP