A home automation consists of a house that has a set of devices installed that work in coordination like the organs of the body. The stronger that interconnection, the more efficient the home automation will be. Vesta is an architecture that maps a large number of physical devices to their respective logical images. To do this, several circuits are installed around the house connected to sensors, motors, lights, doors, windows, doorbells… Each of these circuits connects to the network via an ethernet cable. There are called vesta modules.

Vesta module

Physically it is an Arduino Mega with a special shield containing several inputs and outputs, a thermostat, a buzzer and a power supply. Each module has its own IP address or it will depend on another Arduino module and will communicating themselves through a serial port acting as a slave. At a logical level, each Vesta module contains a functional core and several numbered devices whose purpose will depend on the specific module type. Devices are a logical image that encapsulates the functionality of its physical counterpart, thus, a digital output will have functions to turn on or off, some register to query its current status, and will generate events when changes occur. The Vesta module works with the home automation system making these communications transparent to the user. By installing a physical device at the input of any Vesta module, its logical equivalent is available in a class of code providing all this functionality, which the physical device implemented.


They are grouped by families with the same functionality (a digital input can obtain its information from a switch, a thermostat or an alarm sensor). Although the physical connections and work voltages are different, at a logical level they provide the same information, generate the same events and contemplate the same settings. The most important parameter of each device is its slot identifier, called SlotId. Each module can have a maximum of 255 devices (number 0 is reserved for the controller itself)

There are two ways to address a Vesta device: Through its URL (IP address)+(slot number) or by concatenating the name assigned to the controller with the name assigned to each device. The user or the installer is the one who has to configure each module and its devices in the web interface. This operation is only performed once, at the time of physically installing the devices. It is better to assign identifying names for reasons of readability. All this configuration data is stored in the EEPROM memory of the controller.


Using the module discovery tool, a database will be generated with all the devices accessible to the home automation system. This operation will only be carried out each time there are changes to the devices installed in the house. The Lares compiler uses this database to generate an abstract class that will be the logical representation of the house.

Classes contained in the compiler

Here are all basic data types, main components and the logical devices description. Each module will use them to generate a module specific C++ code.

This tree contains source files for a specific Vesta distro and its code output
VestaA module used for early deployment contains eight digital inputs, as bInput is the only type of device available at this developing stage
This is the former web output of the module. There were still many changes and corrections to perform
Vesta Current web interface


It is the name of the basic home automation management system. It is the abstract class generated by the compiler, which contains all the installed devices so that they can be used as instances of their respective device classes. To generate a home automation plan, you only have to build a class that will inherit from the Lares class and establish the relevant relationships among devices.

The great advantage of using object-oriented modeling is that the behavior of the architecture is completely open to any programming technique, starting from a simple correspondence between devices or upgrading this to artificial intelligence technologies, machine learning, integration with assistants, executing behavior patterns, etc.


Since the starting point of this system is an object that models a home, everything that can be done with it is only limited by human imagination or creativity. New home automation features can come in the form of code libraries or addons. The behavior of a home can evolve in efficiency without the need to make changes to the hardware, since its only mission is to make this management transparent and store the current states.

WordPress Cookie Plugin by Real Cookie Banner