KaZa Home automation

Home automation

KaZa vs Home Assistant

KaZa vs Home Assistant

This page offers an honest comparison between KaZa and Home Assistant, the most popular open-source home automation platform. Both solve the same core problem — centralizing home device control and automation — but with very different philosophies and tradeoffs.

The goal here is not to declare a winner. Both are legitimate choices depending on your background, constraints, and priorities.


Quick Summary

KaZa Home Assistant
Language C++ / Qt / QML Python
UI technology Native QML (compiled) Web browser (Lovelace)
Mobile client Native Qt app Browser or companion app
Automation language QML (declarative) YAML + automations GUI
New integrations C++ plugin (QML module) Python integration
Community Small Massive
Integrations count ~5 official 3000+
Typical hardware Raspberry Pi, any Linux Raspberry Pi, x86, HAOS VM
RAM usage (idle) ~30–80 MB ~300–600 MB (minimum)
Docker required No Yes (recommended)
Installation apt install (Debian repo) HAOS image / Docker
License Open source Open source (Apache 2.0)

Architecture Comparison

KaZa

KaZa is a compiled C++ daemon with a QML scripting layer. The server binary is small, starts in milliseconds, and has a fixed memory footprint regardless of how many objects are registered (objects are simple C++ structs). The client is a compiled Qt application that communicates over a compact binary protocol.

kazad (C++ binary)
  ├── QML engine (user automation logic)
  ├── KaZaObject registry (in-memory)
  ├── SSL port 1756 (binary protocol)
  └── Control port 43500 (plain TCP)

Home Assistant

Home Assistant is a Python application running on an event loop (asyncio). It loads a large number of Python modules at startup. Its web interface runs in a browser and communicates via a WebSocket API (JSON messages). The official mobile app also connects through the web interface.

home-assistant (Python process)
  ├── Core (event bus, state machine)
  ├── 3000+ integration modules (Python)
  ├── HTTP server (WebSocket + REST API)
  ├── Add-on system (Docker containers)
  └── Supervisor (HAOS only)

Detailed Comparison

Resource Footprint

KaZa wins here. Being a native compiled binary, kazad idles at 30–80 MB of RAM on a Raspberry Pi 4, even with multiple plugins loaded. CPU usage during idle is essentially zero. It starts in under a second.

Home Assistant typically requires 300–600 MB of RAM at idle on a minimal install, and more with add-ons (each add-on is a Docker container). On a Raspberry Pi 4, a full HAOS installation with a few active integrations easily uses 1–2 GB of RAM. Startup takes 30–120 seconds depending on the number of integrations.

Metric KaZa Home Assistant
RAM (idle, no DB) ~30–80 MB ~300–600 MB
RAM (with typical integrations) ~60–150 MB ~500 MB – 2 GB
Startup time < 1 second 30–120 seconds
CPU (idle) ~0% 1–5% (polling, timers)
Minimum SD card 1 GB 8 GB (HAOS recommended: 32 GB)

For very constrained hardware (older Pi, embedded Linux boards), KaZa is significantly more practical.

Integration Ecosystem

Home Assistant wins overwhelmingly. With over 3,000 official integrations and thousands more in the community store (HACS), virtually every smart home device or service is already supported: Zigbee, Z-Wave, Matter, Philips Hue, Ikea Tradfri, Shelly, Sonos, Google Home, Amazon Alexa, Apple HomeKit, Tesla, Fronius, SMA, EV chargers, weather services, and on and on.

KaZa ships with four official plugins: KNX, MQTT, Helios ventilation, and Palazzetti pellet stoves. Adding a new device type requires writing a C++ plugin — a significant barrier.

KaZa Home Assistant
KNX Yes (native plugin) Yes
MQTT Yes (native plugin) Yes
Zigbee No (needs plugin) Yes (ZHA, Zigbee2MQTT)
Z-Wave No (needs plugin) Yes
Matter / Thread No Yes
Modbus No (needs plugin) Yes
HTTP/REST devices Via custom plugin Yes (RESTful integration)
Cloud services Via custom plugin or QML HTTP Yes (many native)
Voice assistants No Yes (Alexa, Google, Siri)
Energy monitoring Yes (via KNX/MQTT + PostgreSQL) Yes (built-in dashboard)

If you rely on mainstream consumer devices (Ikea, Philips Hue, Shelly, Sonos…), Home Assistant is the pragmatic choice. If your installation is based on KNX — which is the professional bus standard in European buildings — KaZa's native KNX plugin offers a tight, low-latency integration.

User Interface

KaZa and Home Assistant take fundamentally different approaches.

KaZa's UI is a native compiled Qt application. The integrator writes QML screens and compiles them into a .rcc bundle. There is no browser involved. This means: - Smooth 60 fps animations on modest hardware - Works without a network connection once the initial bundle is loaded - Fully custom layout, not constrained to any card/widget system - Requires QML knowledge to build

Home Assistant's UI is Lovelace, a browser-based dashboard. Lovelace cards are configured via YAML or a GUI editor. There are hundreds of custom card types available (via HACS). This means: - No coding required for most UIs - Any browser becomes a dashboard (TV, tablet, old phone) - Highly limited by the card/grid system for truly custom layouts - Animations and responsiveness depend on the browser and network

KaZa Home Assistant
UI technology Native QML Web browser
Layout flexibility Unlimited (full QML) Cards/grids (limited)
Performance Excellent (native) Good (depends on browser/network)
Mobile app Native Qt app Browser or companion app
Offline UI Yes Partial (with local mode)
Customization effort High (must write QML) Low (GUI editor)
Screen design Pixel-perfect Constrained to card system

Automation Language

Both systems use declarative approaches, but they feel very different in practice.

KaZa automations are written in QML — a reactive, signal/slot language with JavaScript expressions. If you know QML, automation is natural: bind a Scheduler to fire an action at a given time, or use onValueChanged to react to a sensor reading. Complex logic (state machines, multi-condition rules) is just JavaScript.

// KaZa: motion light with auto-off timer
KzObject {
    id: motion
    object: "knx.sensor.hallway.motion"
    onValueChanged: {
        if (value) {
            hallwayLight.set(true)
            lightTimer.restart()
        }
    }
}
Timer {
    id: lightTimer
    interval: 120000
    onTriggered: hallwayLight.set(false)
}

Home Assistant automations are configured via the GUI or written in YAML with Jinja2 templates. The trigger/condition/action model covers most use cases without any code. Complex logic requires Jinja2 templates or Node-RED (a separate add-on).

# Home Assistant: motion light with auto-off
automation:
  - alias: "Hallway light on motion"
    trigger:
      - platform: state
        entity_id: binary_sensor.hallway_motion
        to: "on"
    action:
      - service: light.turn_on
        entity_id: light.hallway
      - delay: "00:02:00"
      - service: light.turn_off
        entity_id: light.hallway
KaZa Home Assistant
Automation language QML + JavaScript YAML + Jinja2
GUI automation editor No Yes
Learning curve High (QML required) Low to medium
Complex logic Natural (JS) Awkward (Jinja2 templates)
Code reuse QML components Blueprint templates
Debugging journalctl + console.log Logbook + trace viewer

Development: Adding New Integrations

This is where the difference is sharpest.

KaZa requires writing a C++ Qt plugin. You need a working Qt 6 development environment, knowledge of C++17, Qt's signals/slots and QObject model, and CMake. The barrier is real but the result is performant, type-safe, and ships as a standard Debian package.

Home Assistant requires writing a Python integration following the HA architecture (config entries, entities, coordinator pattern). Python is far more accessible than C++. The HA developer documentation is extensive, and thousands of existing integrations serve as templates.

KaZa Home Assistant
Language for new integrations C++17 / Qt 6 Python 3
Development difficulty High Medium
Build system CMake + Qt pip / poetry
Packaging Debian .deb HACS or PR to core
Community support Very limited Extensive (forum, Discord)
API stability Stable Evolves with HA releases

Security

KaZa enforces mutual TLS for every client connection. Every device has its own X.509 certificate signed by a private CA that the integrator controls. There is no anonymous access, no API key fallback, and no shared secret. The certificate authority stays on the server; compromising one client certificate does not compromise others.

Home Assistant offers several authentication modes: a trusted networks mode (IP-based, no credentials), API long-lived tokens, and the default username/password flow. The Nabu Casa cloud integration adds remote access. Security quality varies significantly with configuration — it is possible to expose Home Assistant to the internet with weak security, which has been the source of real-world incidents.

KaZa Home Assistant
Default auth Mutual TLS (mandatory) Username/password
Per-device identity Yes (X.509 certificates) No (shared credentials/tokens)
Anonymous access Not possible Possible (trusted networks)
Remote access Manual (VPN or port forward) Nabu Casa cloud (paid) or VPN
Security setup difficulty High (certificate generation) Low

Installation and Maintenance

Home Assistant wins on ease of first-run setup. Home Assistant OS (HAOS) is a turnkey image that boots on a Raspberry Pi and guides you through setup via a web browser. Docker and supervised installs are also straightforward. Updates happen in one click from the web UI.

KaZa takes a different but equally clean approach once the Debian repository is in place: install the server with a single apt install, add any integration with another apt install, and manage everything with standard Debian tooling. There is no Docker involvedkazad is a plain native binary managed by systemd, just like any other Linux service. Each integration is an independent .deb package with proper dependency declarations.

# KaZa installation — nothing more than standard Debian package management
sudo apt install kaza-server-bin
sudo apt install kaza-knx kaza-mqtt

sudo systemctl enable kazad
sudo systemctl start kazad

Compared to Home Assistant's Docker-based architecture (multiple containers, Supervisor, add-on store), this is a minimal footprint that fits naturally into any existing Debian or Raspberry Pi OS installation without requiring a dedicated OS image or container runtime.

Updates follow the normal Debian flow:

sudo apt update && sudo apt upgrade

The trade-off is that initial configuration (SSL certificates, server QML, client bundle) still requires manual steps and QML knowledge — there is no setup wizard.

KaZa Home Assistant
Installation method apt install (Debian repo) HAOS image / Docker / pip
Docker required No Yes (recommended)
Systemd integration Native (standard daemon) Via Docker or HAOS supervisor
Updates apt upgrade (standard Debian) One-click in web UI
Per-integration install apt install kaza-<plugin> Add-on store / HACS
Backup Manual (files + DB dump) Snapshot system
Monitoring journalctl -u kazad Built-in logbook + statistics
Community support Very limited Large forum, Reddit, Discord

Pros and Cons

KaZa

Pros: - Extremely small resource footprint — runs well on a Raspberry Pi 3 or any constrained Linux board - No Docker required — a single apt install from the Debian repository gets the server running; each plugin is an additional .deb package. Standard Debian package management, no container runtime, no special OS image - Native, hardware-accelerated UI — no browser, no network latency for the interface - Tight KNX integration — professional bus, bidirectional, reads ETS project directly - Binary protocol — object value updates are 10–20 bytes; a Pi handles hundreds of objects with no measurable load - Mutual TLS mandatory — strong security model out of the box - Fully custom UI — any layout, any animation, any interaction pattern - No cloud dependency — runs entirely locally - Clean separation: server logic in QML, client UI in QML, plugins in C++ - Fits into any existing Debian/Raspberry Pi OS system — no dedicated hardware or OS image needed

Cons: - QML knowledge required for UI and server logic — significant learning curve - C++ required for new integrations — high barrier for adding unsupported devices - Very small ecosystem — ~5 official integrations, no community store - No installation wizard — setup requires Linux skills and manual configuration - No GUI for configuration or automation rules - Small community — very limited resources for help, no active forum - No voice assistant integration - No energy dashboard, history graphs, or statistics UI out of the box (must be built in QML) - Certificate management is manual

Home Assistant

Pros: - Enormous ecosystem — 3000+ integrations, virtually any device is already supported - No coding required for most use cases — GUI automation editor, card editor - Very easy installation — HAOS image, Docker, one-click updates - Large, active community — extensive documentation, forum, YouTube tutorials - Built-in energy monitoring dashboard, statistics, history graphs - Voice assistant integration (Alexa, Google, Siri via HomeKit bridge) - Mobile companion app with notifications, GPS presence, widgets - Node-RED integration for complex automation without code - Active development — frequent releases, rapidly expanding feature set - Nabu Casa cloud for easy remote access (paid subscription)

Cons: - High resource usage — not suitable for very constrained hardware - Slow startup — not ideal if the server restarts frequently - UI limited to the Lovelace card system — truly custom layouts are difficult - Python-only integrations — slower than native C++ for latency-sensitive protocols - Security defaults are weaker — easy to misconfigure remote access - YAML can become complex and hard to maintain for large installations - Dependency on HA release cycle — integrations break on major HA updates - Cloud features require subscription (Nabu Casa) - Less suitable for KNX-centric professional installations


When to Choose KaZa

  • Your installation is KNX-centric (professional European bus standard)
  • You (or someone on your team) know Qt/QML and want full control over the UI
  • You need to run on very constrained hardware (old Pi, embedded ARM board)
  • You want native apps on all platforms with no browser dependency
  • You want strong security by default (mutual TLS, no anonymous access)
  • You are building a custom product where the UI must be pixel-perfect and branded
  • You are comfortable with C++ and want to write tight, performant protocol integrations

When to Choose Home Assistant

  • You need broad device compatibility without writing code
  • You (or the end user) are not developers — YAML and the GUI editor are enough
  • You rely on mainstream consumer devices (Ikea, Philips Hue, Shelly, Z-Wave, Zigbee, Matter)
  • You want easy installation and updates with minimal Linux knowledge
  • You want voice assistant integration (Alexa, Google, Siri)
  • You want a large community for help and ready-made automations
  • You need built-in energy monitoring and statistics dashboards
  • You are comfortable with the cloud features (remote access, mobile notifications)

Can They Coexist?

Yes. KaZa's MQTT plugin makes it straightforward to bridge KaZa objects to Home Assistant via a Mosquitto broker. This lets you use KaZa for KNX (where it excels) and Home Assistant for everything else (cloud integrations, voice assistants, energy dashboard), with both systems sharing state through MQTT topics.

KNX bus
  └── knxd
        └── KaZa (kaza-knx plugin)
              └── MQTT broker (Mosquitto)
                    └── Home Assistant (MQTT integration)

In this setup, KaZa handles the KNX side (fast, bidirectional, ETS-native) while Home Assistant provides the ecosystem, voice control, and mobile notifications. The KaZa native client handles the day-to-day mobile UI; Home Assistant is accessible from any browser for administration and monitoring.