---
title: "HMI Builder for Code-Free and Python"
slug: "hmi-builder-for-code-free-and-python"
updated: 2026-01-30T19:21:20Z
published: 2026-01-30T19:21:20Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vention.io/llms.txt
> Use this file to discover all available pages before exploring further.

# HMI Builder for Code-Free and Python

HMI Builder allows the rapid creation of Operator Interfaces.

![](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/HMI Builder .png)

Operator interface created using HMI Builder

![](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/HMI Builder_Edit Mode.png)

HMI Builder in edit view

The following widgets are available in HMI Builder:

- **Edit Mode**: toggles between edit and play mode. The application can be launched in Play mode.
- **Group**: Allows the creation of additional pages when the plus icon is selected.
- **Information Console**: Shows message in the console when an Add Message command is read,
- **Button**: Sends an MQTT topic that can be used within the application to trigger events. For more information about Events and MQTT , [click here](/technicaldocumentation/docs/using-communication-protocols-with-machinelogic).
- **Variable Input**: Sets the value of a variable from the Operator Interface
- **Variable Display**: Displays the current value of a variable.
- **Digital Input Display**: Displays the current state of a digital Input.
- **Label**: Add text to the operator interface

> [!WARNING]
> The Variable Input and variable Display widgets are only available in Code-free apps

#### Integrating HMI Builder in a Code-Free Application

In code-free applications, HMI builder can be used to send MQTT topics and events that can be received by the application. Use the **Button**widget in conjunction with **Wait for MQTT message**instruction or configure a **State machine transition** to fire on the reception of an MQTT topic.

It is also possible to assign an MQTT message to a variable (using the result variable input field) this can be handy when process parameters or communication strings are received from another device present on the network.

![](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/wait for mqtt message.png)

Wait for MQTT Message instruction

![Configuration interface for an event button labeled 'Start Cycle' in a machine application.](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/configuring a button.png)

Configurating a button to send an MQTT topic and message

#### Integrating HMI Builder in a Python Application

HMI builder uses the MQTT protocol to communicate between the automation control code and the Operator interface. To learn more about HMI builder

To link a functionality in the application with an MQTT event outputted by HMI builder, the `on_mqtt_event` method must be used. [Click here](/technicaldocumentation/docs/vention-python-api) for more information.

Here is example for using this method when the “Start” topic is received from the Operator Interface:

```python
# Functions
        def Start_Conveyor(topic, message):
        my_conveyor.move_continuous_async(250, 1000) # speed of 250 mm/s and acceleration of 1000 mm/s^2
        ### Program ###
        machine.on_mqtt_event('Start', Start_Conveyor) # start event received from operator button press
```

In this example, we begin by creating a function containing both a `topic` and `message` argument. We then use the `machine.on_mqtt_event` to link the previously defined function as a callback when the ‘Start’ event is received
