Skip to content

MQTT Station Automation

Jeremy Fielder edited this page Apr 13, 2026 · 1 revision

MQTT Station Automation

The MQTT applet connects AetherSDR to your station automation system using MQTT — the lightweight publish/subscribe protocol used by Node-RED, Home Assistant, and many ham shack automation tools.

Quick Start

  1. Open the MQTT applet from the toggle row in the Applet Panel.
  2. Enter your broker's Host and Port (default: localhost:1883).
  3. Optionally enter a Username and Password if your broker requires authentication.
  4. Enter comma-separated Topics to subscribe to. Prefix a topic with * to display its last value on the panadapter overlay. Example: *rotator/pos, *ant/selected, station/log
  5. Click On to connect.

The status indicator turns green when connected. The applet will auto-reconnect if the broker goes away, using exponential backoff (5 s → 60 s).

Publish Buttons

You can create custom buttons that publish MQTT messages when clicked — useful for sending rotator commands, switching antennas, or triggering Node-RED flows.

To add a button:

  1. Click Edit in the Publish section.
  2. Click the + button to add a new entry.
  3. Fill in:
    • Label — text shown on the button
    • Topic — MQTT topic to publish to
    • Payload — message body (plain text)
  4. Click Done to exit edit mode.

To remove a button: right-click it while in edit mode.

Buttons are saved across restarts. Up to 12 buttons (4 rows × 3 columns) can be configured.

Panadapter Overlay

Topics prefixed with * in the subscription list display their last received value in the top-right corner of the spectrum, below the propagation and WNB indicators.

Example: subscribing to *rotator/pos shows the current beam heading directly on the spectrum without switching windows.

Multiple *-prefixed topics are shown on the same line, separated by spaces. Values clear automatically when the broker disconnects.

Use Cases

Rotator Control via Node-RED

A typical Node-RED rotator setup:

  • Node-RED reads your rotator controller (serial, USB, or IP) and publishes rotator/pos with the current heading (e.g. 240)
  • Node-RED subscribes to rotator/cmd to send commands back to the controller

AetherSDR setup:

Field Value
Subscribe topics *rotator/pos
Button: CW topic rotator/cmd, payload CW
Button: CCW topic rotator/cmd, payload CCW
Button: Stop topic rotator/cmd, payload STOP

Result: beam heading appears on the spectrum at all times; you send rotator commands without leaving AetherSDR.

Antenna Switching

For any MQTT-connected antenna switch (Node-RED, ESP32, Raspberry Pi, etc.):

Field Value
Subscribe topics *ant/selected
Button: Hexbeam topic ant/select, payload 1
Button: Vertical topic ant/select, payload 2
Button: Wire topic ant/select, payload 3

The active antenna label appears on the panadapter; tap a button to switch.

SteppIR Controller

For SteppIR antennas controlled via MQTT:

Field Value
Subscribe topics *steppir/band, *steppir/direction
Button: Normal topic steppir/cmd, payload normal
Button: 180° topic steppir/cmd, payload reverse
Button: Bi-Dir topic steppir/cmd, payload bidir

Technical Notes

  • MQTT QoS 0 (fire-and-forget) is used for both subscribe and publish.
  • Auto-reconnect uses exponential backoff: 5 s initial, doubling up to 60 s.
  • Username and password are optional; leave blank for unauthenticated brokers.
  • TLS is not currently supported — use a local broker or route through a VPN.
  • Up to 12 publish buttons can be configured (4 rows × 3 columns).
  • The applet uses the bundled Eclipse Mosquitto library (libmosquitto). No separate installation is required.

Broker Setup

Any MQTT broker works. Popular options:

  • Mosquitto — lightweight, installs in seconds on most Linux distros (sudo apt install mosquitto or sudo pacman -S mosquitto)
  • Home Assistant — built-in MQTT broker available under Settings → Add-ons
  • Node-RED — can act as broker via the node-red-contrib-aedes package

For a quick local test broker:

# Install
sudo pacman -S mosquitto      # Arch/CachyOS
sudo apt install mosquitto    # Debian/Ubuntu

# Start (unauthenticated, local only)
mosquitto -v

# Test subscribe in another terminal
mosquitto_sub -t "test/#" -v

# Test publish
mosquitto_pub -t "test/hello" -m "world"

Once working locally, point AetherSDR at localhost:1883.

Clone this wiki locally