Quick Overview
KaZa Home Automation
KaZa is an open-source home automation platform built on Qt and QML. It connects physical devices — KNX bus, MQTT brokers, HTTP appliances — into a unified object model and serves a native, hardware-accelerated user interface to any number of phones, tablets, and desktops simultaneously.
Key Characteristics
- Native everywhere — the client is a compiled Qt application for Linux, Windows, and Android. No browser required.
- Declarative automation — server-side logic is written in QML. Bindings, timers, and schedulers express your rules concisely.
- Secure by design — all client connections use mutual TLS. Every device gets its own certificate, generated by the server on demand.
- Efficient protocol — object value updates are binary frames of 10–20 bytes. A Raspberry Pi handles hundreds of objects and multiple clients with no measurable load.
- Extensible — new device types are added as Qt QML extension modules (plugins) in C++. The integrator imports the plugin in QML and uses its types immediately.
Documentation
| Section | Audience | Description |
|---|---|---|
| Introduction | Everyone | Architecture, components, security model, existing integrations |
| Integrator Guide | Integrators | Writing server-side and client-side QML for your home |
| Plugin Development | Developers | Creating new integration plugins in C++/Qt/CMake |
| KaZa vs Home Assistant | Everyone | Objective pros/cons comparison with the most popular alternative |
Quick Overview
Raspberry Pi (server) Phones & tablets (clients)
────────────────────── ──────────────────────────
kazad daemon KaZa Client (native app)
└── main.qml (your code) └── UI from app.rcc
├── KnxBus (ETS project) bound to object names
├── MqttClient updated in real time
├── Scheduler (cron rules)
└── DataLogger (PostgreSQL)
│
└── SSL port 1756 ──────────► synchronized objects
(mutual TLS) ← user actions
Example: Minimal Server Application
import QtQml 2.0 import org.kazoe.kaza 1.0 import org.kazoe.knx 1.0 KaZaElement { KnxBus { knxd: "ip:192.168.1.250" knxProj: "/etc/kaza/home.knxproj" } // Evening automation Scheduler { hour: "20" minute: "0" onTimeout: { outdoorLights.set(true) livingRoomDimmer.set(60) } } KzObject { id: outdoorLights; object: "light.switch.outside" } KzObject { id: livingRoomDimmer; object: "light.dim.lounge" } }