NAMO: On-device floorplan tracking and visual zones with ESP32 and LD2450

NAMO — Ain’t Motion-Only

Still here, even when you’re still.

I built a fully local, self-contained presence sensor with an embedded web app, visually editable zones, automatic room detection from a floor plan, and filter zones for suppressing unwanted detections.

Please note that Optional OCR requires an internet connection to load its library, while image processing remains in the browser.

Here is a short demo showing the lights responding as I move between different detection zones.

Live Demo and Source Code

You can try the live demo and explore the source code here:

Hardware

Here is the actual hardware I built for this project.


Hardware details, including the PCB design and documentation, are available here:

Why Did I Build This?

I started with a fairly simple smart-home setup using Xiaomi devices: buttons, bulbs, motion sensors, door sensors, and so on.

However, Xiaomi’s regional ecosystem makes it difficult to integrate Chinese-region devices with global-region devices.

Later, I rented a new office and had the opportunity to rebuild the entire smart-home setup from scratch. Because of my previous experience with Xiaomi, I decided to try Tuya instead.

Unfortunately, I ran into similar problems again: cloud dependency, slower automation, and ecosystem lock-in.

That probably explains why I am now a little obsessed with local control, lol.

So, without further ado, here are the main features.

1. Dashboard

View real-time presence, motion, target status, environmental sensor data, room-level presence, and system information in one place.

The dashboard also provides access to advanced settings such as environmental sensor calibration, status LED settings, timezone selection, and diagnostic tools.

NAMO dashboard

2. Radar Map

Track up to three targets using the LD2450’s native multi-target tracking capability.

You can also create and edit detection zones, exclusion zones, correction zones, and exit zones directly from the radar map.

An automatic false-positive correction feature is included, but please keep in mind that it is still experimental.

NAMO radar map

3. Floor Plan Onboarding

Upload a floor plan, define its physical dimensions and scale, analyze wall and room candidates, and place the radar through a guided setup process.

OCR currently supports Korean room labels only. English OCR support is planned for a future update.

4. Room Editing

After the automatic room-detection process, you can manually refine each detected room.

Rooms can be renamed, reshaped by adding or removing points, deleted, or created manually. My goal was to make the editing process as flexible as possible.

NAMO room editor

5. Radar Repositioning and Zone Editing

Match the radar’s position and rotation to the floor plan, then create and edit detection, exclusion, correction, and exit zones while viewing the actual room layout.

NAMO radar placement and zone editor

6. Furniture Layout

Select a room, add furniture, and move, rotate, or resize each object so that the floor plan more closely reflects the real space.

Additional furniture types will be added in future updates.

NAMO furniture editor

Current Limitations

This project is not perfect.

The biggest remaining challenge is maintaining reliable detection when someone remains almost completely still for a long period of time, such as while sleeping, working at a desk, or watching TV.

I added an exit-zone concept and target-tracking logic to reduce dropped targets, but the LD2450 can still lose a target under certain conditions.

False detections caused by moving doors, curtains, fans, appliances, reflections, and nearby spaces also remain areas that require further testing and refinement.

This is therefore still an actively developed project rather than a finished commercial product.

Roadmap

  • Multi-sensor support
  • Further refinement of the false-positive correction algorithm
  • Further refinement of the filter-zone algorithm
  • Semi-automatic OTA firmware updates
  • Additional language support

Feedback Wanted

I am actively developing NAMO and would greatly appreciate feedback from both hardware users and people who only want to try the demo.

If You Have Compatible Hardware

Recommended hardware:

  • Seeed Studio XIAO ESP32-S3
  • HLK-LD2450

I would especially appreciate feedback about:

  • False detections caused by doors, curtains, fans, microwave ovens, or other objects
  • Detection reliability when a person remains still
  • Stability near zone boundaries
  • Whether the initial setup and Wi-Fi onboarding process are easy to understand
  • Any unexpected behavior in a real room

You can share your results in this thread or open an issue on GitHub.

If You Do Not Have the Hardware

You can still try the live demo and provide feedback about:

  • Dashboard UI and UX
  • Floor plan onboarding
  • Room and zone editing
  • PCB layout and schematic
  • Code quality, algorithms, architecture, and maintainability
  • Documentation quality
  • Additional translations

Contributions and pull requests are also welcome.

Thank you for reading, and happy hacking!


Licenses

The NAMO software is and will remain free and open source. It is licensed under:

AGPL-3.0-or-later

The hardware design files are distributed separately under:

CC BY-NC-SA 4.0

Development Note

This project was planned, designed, assembled, and tested by the author.

OpenAI Codex was used throughout development for code generation, refactoring, testing support, and documentation assistance.

1 Like

Update: NAMO v0.5.5 Developer Beta

A new developer beta is now available.

The project has also been renamed to NAMO: NAMO Ain’t Motion-Only.

Still here, even when you’re still.

The repository and live demo are now available at:

Optional LD2410C sensor fusion

The main change in v0.5.5 is optional LD2410C support alongside the existing LD2450 and PIR sensors.

The fusion logic is intentionally conservative:

  • PIR or LD2450 must start the presence session.
  • LD2410C cannot turn presence on by itself.
  • After overlapping an existing presence session for two seconds, LD2410C can maintain presence if LD2450 temporarily loses the target.
  • A confirmed exit-zone or room-boundary exit prevents LD2410C from keeping the room occupied.
  • When presence ends without confirmed exit evidence, one 30-second reentry window can recover the same session.
  • If LD2410C is not installed, the firmware quietly continues with the existing PIR and LD2450 behavior.

This is intended to improve sleeping and motionless-presence detection without allowing the static radar to become an unrestricted source of false occupancy.

Dashboard changes

The dashboard now shows the assist-sensor state directly below the main presence status.

A new LD2410C sensitivity editor is also available in the Zones page:

  • Nine selectable distance bands
  • Live moving and still energy
  • Current detected-band highlighting
  • Per-band sensitivity adjustment
  • Engineering telemetry enabled only while the editor is open

The control is automatically disabled when LD2410C is not detected.

When LD2450 loses a target but LD2410C maintains presence, the radar map can retain the last reliable target position. A position with a significantly different LD2410C distance is shown in gray. This retained marker is display-only and does not affect zones, target counts, rooms, calibration, or heatmaps.

Other changes

  • Added LD2410C distance stabilization for brief spikes and invalid samples
  • Expanded native tests for sensor fusion, exit veto, reentry, and retained targets
  • Updated the live demo with the latest assist-sensor and tuning features
  • Renamed the firmware entry point to namo.yaml
  • Updated firmware asset names to namo-v<version>-factory.bin and namo-v<version>-ota.bin
  • Expanded the README, hardware documentation, licensing, and third-party notices
  • Added ESLint, TypeScript, dashboard tests, and ESPHome configuration validation to the public workflow

Hardware note

LD2410C is optional. Existing LD2450/PIR installations remain supported.

The currently published PCB and enclosure files represent the previous hardware generation. Updated dual-radar hardware files are still being validated and will be published separately.

Updating

  • Use the factory image for a new USB installation.
  • Use the ota image for an existing device.
  • Back up your configuration before updating.

I would especially appreciate feedback about:

  • Sleeping or very still presence
  • False occupancy after leaving the room
  • LD2410C distance stability
  • Interference or placement issues when LD2450 and LD2410C are installed together

This is still a developer beta, so real-world test results are very welcome.