Kinect V2 Motion Watcher - Lightweight, CPU-only depth motion sensor for HAOS

Hi everyone,

I wanted to share a custom Home Assistant Add-on I’ve been working on that allows you to use the Xbox One Kinect sensor to achieve motion detection.

Why this exists?

Until now, using a Kinect V2 with Home Assistant OS (HAOS) has been notoriously difficult. Because HAOS is a locked-down appliance OS, you couldn’t easily install the necessary C++ drivers (libfreenect2), and most existing Docker-based solutions required heavy NVIDIA GPU acceleration or full skeletal tracking—which is overkill for simple room occupancy and won’t run on standard mini-PCs or All-In-Ones.

This add-on brings a functionality that didn’t previously exist for HAOS users: a self-contained, pre-compiled driver environment that works directly with the physical hardware. This project is made possible thanks to the incredible work of the OpenKinect team and their libfreenect2 library, which provides the driver foundation for this integration.

Existing drivers often choke on the 1080p RGB video stream when running on low-power USB controllers (like those in many AIOs or NUCs). This add-on solves that by:

  1. Severing the RGB feed: It ignores the color camera entirely to save massive amounts of USB bandwidth.
  2. CPU-Only Pipeline: It uses a specialized libfreenect2 CPU packet pipeline to keep overhead low, making it compatible with hardware that lacks a dedicated GPU.
  3. Raw Depth Analysis: It analyzes infrared depth data frame-by-frame to detect motion based on volumetric changes in the room.

Key Features:

  • HAOS Compatible: No need for a separate Linux box; it runs as a standard Home Assistant Add-on.
  • Fully Local: No cloud, no internet required.
  • Highly Sensitive: Since it uses IR depth, it works in total darkness and is much more reliable than standard PIR sensors or camera-based motion detection.
  • Configurable UI: Sensitivity and cooldown are adjustable directly in the Add-on’s “Configuration” tab.
  • MQTT Based: Sends simple ON/OFF payloads to your broker.

Prerequisites:

  • Xbox Kinect V2 + USB 3.0 PC Adapter.
  • A dedicated USB 3.0 port (blue port).
  • Mosquitto Broker (or any MQTT broker).

How to use:

  1. Add my repository to your Add-on Store: https://github.com/darthbeobee/ha-addons
  2. Install Kinect V2 Motion Watcher.
  3. Configure your MQTT credentials in the UI and hit Start.
  4. Add a binary sensor to your configuration.yaml:
mqtt:
  binary_sensor:
    - name: "Kinect Motion"
      state_topic: "kinect/motion"
      payload_on: "ON"
      payload_off: "OFF"
      device_class: motion

Troubleshooting Note:

If you see packets were lost in the logs, don’t panic! The script is designed with a “heartbeat” to process through packet loss. It’s a side effect of the Kinect’s massive data rate, but motion detection remains accurate.

GitHub Repository: GitHub - darthbeobee/ha-addons: Addons for Home Assistant OS · GitHub

I hope this help other people that were having similar issues!

note: I’m not a coder, I used AI to help me create this as I couldn’t find anything preexisting to achieve this goal.