Documentation

Complete guide to setting up and using MQTT Dashboard Client

1. Broker Connection

An MQTT broker is a server through which devices exchange messages. To get started, add at least one broker.

How to Add a Broker
  1. Open the Brokers tab (bottom menu)
  2. Tap the + button in the top right corner
  3. Fill in the required fields:
    • Name — any name (e.g., "Home Server")
    • URL — broker IP address or domain
    • Port — port (1883 for TCP, 8883 for SSL)
    • Protocol — select tcp://, ssl://, ws:// or wss://
  4. Optionally enable Authentication and enter username/password
  5. Configure additional parameters (Client ID, Clean Session, Keep Alive Interval, Auto Connect)
  6. Tap Done
Tip: Enable Auto Connect so the broker connects automatically when the app starts.

2. Broker Endpoints

A broker can have several connection addresses (endpoints). This is useful when the broker is reachable via multiple addresses — for example, a local IP at home and a cloud domain over the internet. If the current address is unavailable, the app automatically switches to the next one.

Adding an Endpoint

The first address is set when you create a broker. To add more, open the broker editor and tap Add endpoint.

  1. Host — IP address or domain
  2. Protocoltcp://, ssl://, ws:// or wss://
  3. Port — connection port
  4. SSL — for ssl:///wss://: self-signed certificate or a custom CA certificate file

Additional settings:

  • Priority — High / Medium / Low. Higher priority addresses are tried first.
  • Network Scope — for which networks the address is suitable: Any / Wi-Fi only / Cellular only.
  • Enabled — disabled addresses are not used. Toggle it, or delete the address, from the menu on the endpoint screen.
Tip: The first endpoint is free. Adding more endpoints requires a Premium subscription.
How It Works
  • When connecting, the app tries enabled addresses in priority order (High → Medium → Low)
  • If an address fails, it automatically switches to the next one
  • After all addresses fail, the pause between attempts grows (2 s → 4 s → … → 60 s)
  • When the network changes (Wi-Fi ↔ cellular), the selection restarts from the highest-priority address
  • The broker card shows the active address and per-address errors
  • At least one address must be enabled
  • Endpoint addresses are included when you back up and restore your data

3. Widgets

Widgets are the main UI elements for displaying data from the broker and sending commands.

Creating a Widget
  1. On the main screen, tap the + button in the bottom right corner and choose Create Widget
  2. Enter the Widget Name and select a Group to add it to
  3. Choose the number of parameters (1 to 4) using the horizontal pager — each parameter can have its own type, topic and settings
  4. Tap a parameter in the list to configure its type, topics and data processing — see the Widget Parameter Configuration section for details
  5. Tap Done to complete creation
A single widget can contain up to 4 parameters of different types (e.g., text + button + switch).
Widget Management
  • Drag and Drop: long-press a widget and drag it to a new location. Empty cells are highlighted.
  • Context Menu: long-press a widget to open the menu (Edit, Delete)
  • Editing: tap a widget to open detailed info and settings
  • Changing the group: open the widget for editing and pick another Widget Group
  • Lock: long press can be turned off entirely — see Lock Home screen

4. Widget Parameter Configuration

Each parameter added during widget creation can be configured individually: choose the type, topics, and data processing. Click a parameter type below to expand its detailed configuration guide.

The Parameter Screen
  • Name and Data type are the first card on the screen. The type is picked in a bottom sheet: every type comes with a live preview — exactly what will appear on the tile — and a short description of what it does.
  • Icon — the icon and color of the parameter, chosen in the Icon and color dialog. For Binary and Button the appearance is set separately for the on and off states; for Switch and Dropdown list it is set per state in the list of states.
  • Topics, data processing and the remaining settings depend on the selected type — see the descriptions below.
The type can be changed later as well: the topics, states and data processing you have already set are carried over as far as the new type supports them.

The Text widget displays arbitrary text data from an MQTT topic: statuses, messages, sensor readings.

Configuration:

  1. Subscription Topic — the topic to receive data from
  2. JsonPath / Regex — if the data is in JSON, configure extraction of the field
  3. Prefix / Suffix — add text before or after the value
Example: Sensor publishes {"status": "Door open"}. JsonPath: $.status → displays "Door open".

The Boolean widget displays and controls binary device states (on/off, open/closed).

Basic settings:

  1. Subscription Topic — receive device state
  2. Send Topic — send on/off commands
  3. Values — specify what message is "On" (e.g. 1) and "Off" (e.g. 0)
  4. JsonPath / Regex — extract state from JSON payload

Confirmation mode:

Without confirmation: The app sends a command and switches the widget immediately. If the incoming message matches "On" — widget is on, otherwise off.
Example: "On" = 1. Receiving 1 → on, 0 or any other value → off.
With confirmation: Separate topics are used for sending commands and receiving state. The app waits for a response from the device.
Setup: Send topic home/light/set, subscription topic home/light/status.
Flow: Tap → command to .../set → device confirms in .../status → widget updates.
Troubleshooting: If the switch turns off immediately after turning on — check incoming messages in the Terminal. The topic may publish unexpected values. Also ensure the send and subscription topics are different.

The Switch widget shows and sets a device state. It supports 2 to 4 states — for example "Off / Auto / Turbo" for ventilation, or "Stop / Open / Close" for a gate.

Main settings:

  1. Subscription Topic — receive device state
  2. Send Topic — send commands
  3. JsonPath / Regex — extract state from payload

State list (the "Data Parsing" block). Each state has:

  • Label — the text the user sees on the widget
  • MQTT value — what is published to the topic and what is recognized in an incoming message
  • Icon and color — set individually per state

The Add state button is disabled once there are four states; a state can be removed while more than two remain.

On the tile, states are drawn as a segmented control. If they do not fit on one row they wrap onto two, and on the smallest tiles only the active state indicator remains — tapping it opens a menu with the rest.

Wait for device confirmation — a separate toggle below the state list. When enabled, the app publishes the command and shows a loading indicator until the device confirms the new state on the subscription topic. Turn it off if the broker responds unreliably — the widget will then switch immediately.

Switches created in earlier versions are migrated automatically: the former "On" and "Off" values become the first two states, keeping their icons and colors.

The Dropdown list widget works exactly like Switch, but with no limit on the number of states and a different look on the tile: the current state is shown as a compact row, and tapping it opens a menu with every option.

Use it when there are too many values for a switch: air conditioner mode, lighting preset, input source, fan speed.

Configuration:

  1. Subscription Topic — receive the current state
  2. Send Topic — publish the selected value
  3. JsonPath / Regex — extract state from payload
  4. State list — label, MQTT value, icon and color for every option; at least two, no upper limit
  5. Wait for device confirmation — behaves the same as for Switch
Example: an air conditioner publishes AUTO, COOL, HEAT, DRY, FAN to home/ac/mode. Create five states with those MQTT values and readable labels — the widget will both display the current mode and switch it.

If an incoming message carries a value that is not in the state list, the widget shows "No Data".

The Button widget sends a predefined message to a topic on each tap.

Configuration:

  1. Send Topic — the target topic
  2. Value — the fixed message to send (e.g. RESET or {"command": "reboot"})
  3. QoS — quality of service (0, 1, 2)
  4. Prefix / Suffix — for building complex messages
Example: "Reboot router" button. Topic: home/router/command, value: reboot.

The Numeric widget displays numeric sensor readings: temperature, humidity, voltage, etc.

Configuration:

  1. Subscription Topic — receive numeric data
  2. Decimal Places — number of displayed decimal digits
  3. JsonPath / Regex — extract number from payload
  4. Prefix / Suffix — for units of measurement (e.g. °C)
Example: Sensor publishes {"temperature": 25.5}. JsonPath: $.temperature, decimal places: 1, suffix: °C → "25.5°C".

The Regulator widget sends numeric values using a slider. Suitable for dimmers, volume, brightness.

Configuration:

  1. Send Topic — send the slider value
  2. Subscription Topic — receive current value (optional, for synchronization)
  3. Min / Max — value range (e.g. 0–100). Min and Max can be negative, e.g. −50–50 with zero in the middle
  4. Decimal places — value precision: 0 gives whole numbers, 1 or more gives a fractional step
  5. Prefix / Suffix — for formatting outgoing data
The arc fill starts from 0, not from Min — with a negative-to-positive range, the fill grows from the center towards the current value in either direction.
Example: Dimmer with range 0–255. Send topic: home/light/dimmer/set, subscription topic: home/light/dimmer/status.

The Color widget lets you pick and send colors for RGB strips and bulbs.

Configuration:

  1. Send Topic — send the selected color
  2. Subscription Topic — receive current device color
  3. Format — HEX (#FF5A30), RGB ([255, 90, 48]) or HSV ([12, 0.81, 1.00])
  4. JsonPath — extract color from JSON

The URL Image widget loads and displays an image from a URL received via MQTT.

Configuration:

  1. Subscription Topic — receive the image URL
  2. JsonPath — extract the URL from a JSON message
Example: Camera publishes {"image": "http://cam.local/snapshot.jpg"}. JsonPath: $.image.

The Location widget displays coordinates on a map. This feature is in development and cannot yet be picked from the parameter type list — the description below is for reference.

  1. Subscription Topic — receive coordinates
  2. JsonPath — extract coordinates from JSON

5. Data Processing

The app supports multiple ways to extract data from MQTT payloads.

JsonPath FREE

Extracts a value from a JSON message.

Example:
Payload: {"temperature": 25.5, "humidity": 60}
JsonPath: $.temperature25.5

Supports dot notation ($.object.array[0].value) and bracket notation ($[\'store\'][\'book\'][0][\'title\']).

Regex PREMIUM

Extracts data using regular expressions. Works as a second stage after JsonPath.

Three-step pipeline:

  1. JsonPath → extract field from JSON
  2. Regex (primary) → extract data from string
  3. Regex (secondary) → post-process the result
Example:
Payload: {"data": "temp: 25.5C hum: 60%"}
1. JsonPath $.data → "temp: 25.5C hum: 60%"
2. Regex temp:\s*([\d.]+)C25.5

Regex Time — separate expression for extracting a timestamp from the payload.

JsonPath for Time FREE

Extracts a timestamp from a separate JSON field.

  • Specify a JsonPath to the time field
  • Time zone correction — slider from -12 to +12
  • Supports various date/time formats

6. Prefix and Suffix

Add text before and after values for formatting.

Outgoing Data FREE

Format data before sending to the broker.

Example: slider = 1
Prefix: {"command": "
Suffix: "}
Result: {"command": "1"}

Useful for building JSON commands.

Incoming Data PREMIUM

Format received data before displaying on the widget.

Example: sensor = 42
Suffix: °C
Result: 42°C

Convenient for adding measurement units.

7. Widget Groups

Groups help organize widgets by meaning — for example, "Sensors", "Light Control", "Temperature".

  1. Open the Groups tab (bottom menu) and tap + in the top right corner — or tap + on the main screen and choose Create Group
  2. Enter the group Name and tap Done
  3. To move a widget to another group, open the widget for editing and pick the desired Widget Group

On the main screen, groups are shown as section headers: tapping a header collapses or expands the group. On the Groups tab the list can be sorted manually, by name, or by widget count.

8. Scripts and Automation PREMIUM

Scripts allow you to automate actions: send messages based on conditions, execute scenarios on app start, and more.

Creating a Script
  1. Open the Scripts tab (bottom menu)
  2. Tap + in the top right corner and choose Create Script
  3. Configure the triggers:
    • Widget — fires on the value of a selected widget parameter: equals, not equals, greater than, less than. The topic comes from that parameter's own settings
    • App Start — runs when the application starts or returns to the screen
    • Logical Block — combines several conditions
  4. A Logical Block supports the operators AND, OR, NOT ANY and NOT ALL; blocks can be nested
  5. Configure actions:
    • WidgetSend Message through a widget parameter, or Blink Widget in a chosen color
    • Push notification — show a notification with your own text
    • Play sound PREMIUM — a system sound or your own audio file
  6. Enable the script — toggle switch on the script card. Disabled scripts won't execute but remain editable
Example: "If temperature > 30°C AND humidity < 20% → send command to turn on humidifier and show notification"

A disabled script can be opened and edited — changes are saved and take effect when the script is re-enabled.

9. Scenes

A scene is a switch that sends several messages to different devices with a single tap. A scene has two states — On and Off — and each one has its own list of messages. Scenes are started manually; they never fire on a condition — use scripts for that.

Creating a Scene
  1. Open the Scripts tab (bottom menu)
  2. Tap + in the top right corner and choose Create Scene
  3. Enter the scene Name and the Widget Group it belongs to
  4. For the "On" state pick an icon and a color, then add actions under Messages for "On"
  5. Configure the "Off" state the same way
  6. Tap Done
The message list for the "On" state is required — the scene cannot be saved without it. The "Off" list may be left empty.
Adding an Action

A scene does not work with raw topics — it works with widgets you have already configured, so the topic, QoS and prefix/suffix come from the widget parameter. You therefore need at least one widget before creating a scene.

  1. Tap + in the message list you want
  2. Select the Widget Group
  3. Select the Widget
  4. Select the widget Parameter
  5. Enter the Send Value — for switches, dropdown lists, buttons and regulators, suggestions from the parameter settings are offered
  6. Tap Done
Running a Scene

A finished scene appears on the Scripts tab as a switch. Turning it on sends every message from the "On" list; turning it off sends the "Off" list. The icon and color change with the state.

Example: a "Leave Home" scene — the "Off" list turns off the lights, closes the blinds and switches off the air conditioner; the "On" list sends the opposite commands for coming back home.

10. SSL/TLS Certificates PREMIUM

Connect to brokers with encryption and custom certificates.

Self-signed Certificate
  1. When creating a broker, select ssl:// or wss:// protocol
  2. Enable Self-signed Certificate
  3. The app will trust any certificate from this broker

Suitable for local servers (Raspberry Pi, home server).

Custom CA Certificate
  1. Select ssl:// or wss:// protocol
  2. The Self-signed option must be disabled
  3. Tap Select certificate file
  4. Select a .pem file via file manager

For corporate and cloud MQTT brokers.

11. Backup and Restore

Save and restore your complete app configuration — all widgets, brokers, scripts, scenes, and settings.

Create a Backup
  1. Settings → Configuration Backup
  2. Optionally enable data logs (sensor value history)
  3. Tap Create and choose a save location
What Gets Saved

Widgets

  • Type, icon, color, style
  • State lists of switches and dropdown lists (label, MQTT value, icon, color)
  • Label and displayed data
  • Position on the main screen (separate for portrait and landscape)
  • Subscription topics, JsonPath, Regex, prefix/suffix
  • Outgoing data settings (topic, QoS, format)

Brokers

  • Connection address and port
  • Username and password
  • SSL/TLS settings and certificates
  • Additional endpoints with their priority and network requirement

Widget Groups

  • Name, group order and collapsed/expanded state

Scripts and Automation

  • All scripts with names and state (enabled/disabled)
  • Triggers — by widget parameter value and on app start
  • Logical blocks (AND / OR / NOT ANY / NOT ALL)
  • Actions — send message, push notification, sound, blink widget

Scenes

  • Scenes with icons and colors for the "On" and "Off" states
  • The message lists of both states (widget parameter + value to send)

App Settings

  • All general preferences, favorite colors, widget order
  • Pending messages
  • Sensor data history (optional)
Restore
  1. Settings → Configuration Recovery
  2. Select the backup file
  3. After restoration the app will restart. Client IDs will change to avoid connection conflicts
Restoring replaces all current app data. We recommend creating a fresh backup before restoring.

12. Config Sharing PREMIUM

Transfer your app configuration between devices over an MQTT broker: widgets, groups, scenes and scripts. No need to set up every device manually.

Export (Publish)
  1. Settings → Share configurations over MQTTExport configuration
  2. Optionally enter a configuration name
  3. Choose what to include: Scenes, Scripts and Broker credentials (the latter requires an encryption password)
  4. Optionally set an encryption password and the config storage period (1, 3, 7, 14 or 30 days; default 7)
  5. Select a broker and tap Publish

The configuration is published to the topic {prefix}/{id} and stored on the broker. Without a password, data is only compressed (not encrypted), and broker credentials are not included.

Revoke: on a configuration you published yourself, the Decline button becomes Revoke — it clears the configuration from the broker so other devices no longer see it.
Receive (Import)
  1. Settings → Share configurations over MQTT
  2. Enable Receive configurations — the app subscribes to {prefix}/+ (default config/share/+)
  3. Received configurations appear as cards with View details (what will change), Apply and Decline

Import modes:

  • Merge — update existing items and add new ones
  • Replace all — remove current widgets, groups, scenes and scripts and import new ones. Requires a second confirmation with a checkbox.

If a configuration is password-protected, you will be asked for the password during import. Brokers with authorization will ask for login and password. After a successful decryption, you can save the password so it is applied automatically to future configurations.

The default topic prefix is config/share. You can change it — for example, to separate configurations between device groups.

13. Interface Settings

Settings → Interface: how the app looks, plus everything related to the Home screen.

Theme and Language
  • ThemeSystem, Light or Dark. By default the app follows the device theme.
  • Language — the language of the app interface. System uses the device language.
Lock Home screen NEW

Settings → Interface → Home screenLock Home screen. Off by default.

With the lock on, a long press on a widget does nothing: no context menu, no haptic feedback, no dragging. The layout cannot be broken by accident — useful on a shared or wall-mounted tablet.

  • Taps keep working as usual: switches, buttons, regulators and dropdown lists still control your devices
  • The lock also applies inside a widget group
  • Editing, cloning and deleting remain available the usual way: tap the widget → widget screen → the action you need
The lock is not password-protected and is released with the same toggle — it guards against an accidental gesture, it is not parental control.
Widget and Font Sizes

Settings → Interface → Home screen. Seven sizes, each configured separately:

  • Widget Size — the size of the tile on the Home screen
  • Value (Text) — the font of the parameter value
  • Widget Name — the font of the widget label
  • Last Message Time — the font of the timestamp
  • Parameter Icon — the icon size
  • Value — only for the Binary and Color types
  • Button — only for the Button type

Each item opens a screen with a slider and a preview of the Home screen, so changes are visible right away on your own widgets. Auto means the app picks the size itself; a value you set manually is shown in dp next to the setting name.

The preview on those screens does not react to a long press and does not show the broker reconnect bar — it is there to judge sizes only.