Introduction

Think beyond the "Smart Home"

HomeGenie is not just a smart home hub; it is a general-purpose automation engine.

At its core, HomeGenie is a powerful router for signals. It takes raw data from sensors, switches, and web services, and gives you the tools to shape that data into anything you can imagine. By combining Automation Programs and UI Widgets, you can transform HomeGenie into:

You don't just "use" HomeGenie; you build with it.

AI-Assisted Development

The barrier to entry has never been lower. With the integrated AI Widget Genie, you have a senior developer standing by.

Instead of memorizing APIs, you can simply describe your logic or UI in plain English. The Genie will generate the C#, JavaScript, or Python code for you, and the Widget Wizard will deploy it to your system with a single click. It even features a Self-Healing loop that automatically fixes compilation errors.

New to HomeGenie AI? Start here: Cloud AI Integration Guide.

How it works: Programmable Features

Everything in HomeGenie is a program. To add a feature, you simply write it.

Let's say you want to add a "Blink" option to all your lights. You create a program that adds a checkbox to the device settings:

// Setup
Program.AddOption("Feature.Blink.Enable", "false", "Blink every 0.5s", "checkbox");
Program.Run();

Then, you implement the logic in the Main block to toggle all devices that have that checkbox active:

// Main
while (Program.IsRunning) {
  Modules.WithFeature("Feature.Blink.Enable").Toggle();
  Pause(0.5);
}

Universal API: A Common Language

HomeGenie treats every device, service, or script as a Module. Whether it's a ZigBee bulb, a Python script, or a virtual weather service, they all speak the same language.

A Module is the universal entity in HomeGenie. Once a device is integrated, it uses standard fields like Status.Level or Sensor.Temperature, regardless of the underlying protocol.

Integrating a custom component, like a DHT-22 sensor, is just a matter of "emitting" data to a module:

// Add a virtual sensor module
Program.AddModule("Components.DHT22", "1", "Sensor");
var sensor = Modules.InDomain("Components.DHT22").WithAddress("1").Get();

// Emit the values to the system
sensor.Emit("Sensor.Humidity", 65);
sensor.Emit("Sensor.Temperature", 22.5);

Once emitted, this data is automatically available for logging, real-time charts, and UI widgets.

UI Customization

While HomeGenie comes with a set of professional built-in widgets, the Widget Editor allows you to build completely custom interfaces using HTML, CSS, and JavaScript (zuix.js).

From a simple toggle button to a complex 3D floor plan, the UI is yours to design.

HomeGenie Widget Editor

Next Steps

Ready to start building?

More topics

Setup

Features

Automation

Programming

📖

🕵🏻 Explore HomeGenie DeepWiki

Technical Docs & Interactive Wiki

Ask the AI 🧠
menu_open Content index
forum Q & A discussion forum
HomeGenie
SERVER 2.0 — Documentation