Bridging WaveNode Power Meter Data into Thetis

 




Bridging WaveNode Power Meter Data into Thetis

One of the fun things about modern ham radio is that so much of the station is now software-defined it's not just the radio, but the amplifiers, power meters, rotators, dashboards, remote control systems and logging tools around it.

That also creates a familiar problem: all the pieces know useful things, but they do not always speak the same language.

This project started from a simple question:

Can Thetis display WaveNode RF power and SWR data the same way some stations use TelePost LP-100A meter data?

The short answer is: maybe and this project is an experimental bridge to help test exactly that.

The Problem

Thetis already has a Multi Meter I/O feature that can accept external meter data. Many hams have used this with the TelePost LP-100A, where meter information is sent into Thetis over the network.

WaveNode systems, on the other hand, can publish useful station telemetry such as:

  • Forward power
  • Reflected power
  • SWR

In my station, that data was already available over MQTT (see Getting WaveNode Power Meter Data Into Node-RED).

So the obvious question became:

Instead of trying to make Thetis talk MQTT directly, could a small bridge translate WaveNode MQTT telemetry into an LP100A-style network format that Thetis already understands?

That is what this project attempts to do.

What the Bridge Does

The project is a small Python script:

WaveNode to Thetis LP100A Bridge

It subscribes to WaveNode MQTT topics, reads the current forward power, reflected power and SWR values, then sends them to Thetis as LP100A-style UDP/XML packets.

Conceptually, the flow looks like this:

WaveNode MQTT telemetry
        ↓
Python bridge
        ↓
LP100A-style UDP/XML packets
        ↓
Thetis Multi Meter I/O

The bridge does not modify Thetis, and it does not make Thetis an MQTT client. It simply acts as a translator between the two systems.

Why LP100A-Style Data?

The TelePost LP-100A has become something of a known reference point for external RF power meter data in some SDR workflows. Thetis has support for receiving meter data using a UDP/XML-style format, so rather than inventing a new protocol, this bridge tries to emulate the kind of data structure that Thetis is already prepared to receive.

The bridge sends values such as:

<LP100A>
  <fwdpwr>100.00</fwdpwr>
  <refpwr>2.00</refpwr>
  <swr>1.20</swr>
  <z>50.00</z>
  <phase>0.00</phase>
  <peakpwr>100.00</peakpwr>
</LP100A>

The result is intended to let Thetis display external meter values sourced from WaveNode data.

This is still experimental. The exact behavior may depend on the Thetis version, the Multi Meter I/O setup and how closely Thetis expects the LP100A packet structure to match the original device behavior.

Typical MQTT Topics

The bridge expects WaveNode-style MQTT topics such as:

wavenode/avg_watts/1
wavenode/ref_watts/avg/1
wavenode/swr1

The sensor number is configurable, so if you are using a different WaveNode sensor channel, you can point the bridge at that sensor.

For example, sensor 1 would use:

Forward power:    wavenode/avg_watts/1
Reflected power:  wavenode/ref_watts/avg/1
SWR:              wavenode/swr1

Thetis Setup

In Thetis, configure Multi Meter I/O for external meter input:

Protocol:  UDP
Direction: In
Format:    XML
Port:      9388

If the bridge is running on the same Windows PC as Thetis, send the UDP data to:

127.0.0.1:9388

If the bridge is running on another machine, such as a Raspberry Pi, send the UDP data to the IP address of the Windows PC running Thetis.

Running the Bridge

The bridge requires Python 3.8 or newer and the paho-mqtt package.

Install the dependency with:

pip install paho-mqtt

Or, from the repo:

pip install -r requirements.txt

A basic example:

python wavenode_to_thetis_lp100a.py \
  --mqtt-host 192.168.1.10 \
  --thetis-host 192.168.1.25 \
  --thetis-port 9388 \
  --sensor 1

Replace the MQTT host with the IP address of your MQTT broker, and replace the Thetis host with the IP address of the PC running Thetis.

If you are running the bridge on the same Windows PC as Thetis, use:

python wavenode_to_thetis_lp100a.py \
  --mqtt-host 192.168.1.10 \
  --thetis-host 127.0.0.1 \
  --sensor 1

Windows or Raspberry Pi?

Either should work.

Running it on the Windows PC with Thetis is probably the easiest first test because you can send the data to 127.0.0.1 and avoid firewall or routing issues.

Running it on a Raspberry Pi may make more sense for a permanent station installation, especially if your MQTT broker or other station automation tools already live there. In that case, the Pi sends UDP packets across the LAN to the Thetis PC.

A Linux/Raspberry Pi example:

sudo apt update
sudo apt install python3 python3-pip
pip3 install paho-mqtt

python3 wavenode_to_thetis_lp100a.py \
  --mqtt-host 192.168.1.10 \
  --thetis-host 192.168.1.25 \
  --sensor 1

Auto-Zero Behavior

One useful feature is auto-zeroing.

If the bridge stops receiving matching WaveNode MQTT updates, it can automatically send zero power and a normal SWR value after a timeout. By default, that timeout is 5 seconds.

That means if RF activity stops, or if telemetry stops updating, the displayed meter values should not remain stuck indefinitely.

Default behavior after timeout:

Forward power   = 0
Reflected power = 0
SWR             = 1.0

You can change the timeout:

python wavenode_to_thetis_lp100a.py \
  --mqtt-host 192.168.1.10 \
  --thetis-host 127.0.0.1 \
  --zero-after 10

Or disable auto-zero:

python wavenode_to_thetis_lp100a.py \
  --mqtt-host 192.168.1.10 \
  --thetis-host 127.0.0.1 \
  --zero-after 0

Useful Command Line Options

Some of the more useful options include:

--mqtt-host        MQTT broker host/IP
--mqtt-port        MQTT broker port, default 1883
--mqtt-username    Optional MQTT username
--mqtt-password    Optional MQTT password
--thetis-host      IP address of the Thetis PC
--thetis-port      Thetis UDP XML input port, default 9388
--base-topic       Base MQTT topic, default wavenode
--sensor           WaveNode sensor number
--interval         UDP send interval in seconds, default 0.5
--zero-after       Zero meters after N seconds with no updates
--send-on-update   Also send immediately when MQTT updates arrive
--verbose          Print each UDP send

For debugging, --verbose is your friend:

python wavenode_to_thetis_lp100a.py \
  --mqtt-host 192.168.1.10 \
  --thetis-host 127.0.0.1 \
  --sensor 1 \
  --verbose

That lets you confirm that the bridge is receiving values and sending packets.

Troubleshooting

If Thetis does not show the meter data, check these first:

  1. Confirm Thetis Multi Meter I/O is set to UDP, In, XML.
  2. Confirm the port in Thetis matches the script, usually 9388.
  3. If running the bridge on another machine, check the Windows firewall on the Thetis PC.
  4. Try running the bridge on the same PC as Thetis and use 127.0.0.1.
  5. Run the script with --verbose and confirm that UDP packets are being sent.

If MQTT connects but the values do not update:

  1. Confirm the MQTT broker IP and port.
  2. Confirm the WaveNode topics match your sensor number.
  3. Use an MQTT client such as MQTT Explorer to verify the actual topic names and payload values.

What This Project Is — and Is Not

This is an experiment and proof of concept.

It is not an official WaveNode product, not an official Thetis feature and not a complete replacement for native device integration. It is a practical ham-radio-style bridge: take useful data from one place, translate it into a format another program already understands and see how far we can get.

That is often how station automation evolves.

A small bridge like this can be useful because it avoids trying to change either endpoint. WaveNode can keep publishing MQTT. Thetis can keep listening for UDP/XML meter input. The bridge handles the translation in the middle.

Why This Matters

The bigger idea is that more of the modern station should be modular.

If your power meter, amplifier, antenna switch, rotator, SDR software, logging software and dashboard can all exchange data, you can build a station that is easier to monitor, easier to operate remotely, and easier to improve over time.

MQTT is excellent for station telemetry. Thetis is excellent SDR software. This project is a small attempt to connect those worlds.

Project Link

The GitHub project is here:

https://github.com/n3bkv/wavenode-thetis-bridge

If you test it with Thetis, especially with different Thetis versions or WaveNode configurations, feedback would be helpful. This is the kind of project that will get better as more stations try it and report what works, what does not and what needs to be adjusted.

73

Comments

Popular posts from this blog

How To Get Precise Time Outside Your Shack

How to Put Your AllStar Node on 44Net Connect

How To Set Up Your Own Remote Station

Why You Might Want To Set Up Your Raspberry Pi Internet Web Server on 44Net

Building a Secure Web Portal on 44Net Without VPN Headaches

Build a Central N3FJP Field Day Log Server With Local DHCP and GPS Time

Getting WaveNode Power Meter Data Into Node-RED

A Non-Programmers Guide on How To Use AI to Write Your Own Custom Ham Radio Computer Applications

Why You Should Use SSH Keys Instead of Passwords on Your Raspberry Pi

Internet Remote Software Defined Radio (SDR) Receivers – A Starter Guide

Ham RSS News Feeds

Amateur Radio Daily

ARRL News

Zero Retries