HomeGenie
SERVER 2.0 — Documentation

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 signal router. It takes raw data from sensors, switches, and web services, and gives you the canvas 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 create with it.

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 Code

// Configuration APIs like AddOption are placed inside the Program.Setup callback
Program.Setup(() => {
  Program.AddOption("Feature.Blink.Enable", "false", "Blink every 0.5s", "checkbox");
});
// Run the Main code
Program.Run();

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

Main Code

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 Browse Content