Wireless Controllers

Network-based control via WiFi and MQTT provides remote monitoring and control of your OWL system from any device with a web browser.

Modes

Mode

Description

Best For

Standalone

OWL creates WiFi hotspot with local dashboard

Single OWL, field use, no network infrastructure

Networked

OWL joins existing WiFi with remote MQTT broker

Multiple OWLs, farm network integration

Standalone Mode

OWL creates its own WiFi hotspot. Connect your phone, tablet, or laptop directly to control and monitor. Includes local MQTT broker and full web dashboard.

Standalone Setup
Networked Mode

OWL joins your existing WiFi network. Multiple OWLs communicate via a central MQTT broker. Optional dedicated controller with touchscreen.

Networked Setup

Combining with Wired Controllers

Wireless control can be used alongside wired controllers.

Important

Hardware takes precedence.

When both wired and wireless controllers are active, physical switch inputs from wired controllers override wireless/dashboard commands. This ensures reliable operation if network connectivity is lost.

Example: Standalone + Ute Controller

  • Ute Controller provides physical toggle switches

  • Standalone dashboard provides monitoring and video feed

  • If you flip the recording switch OFF on the hardware, the dashboard cannot override it

Configuration

In GENERAL_CONFIG.ini, set both controller types:

[Controller]
controller_type = ute

# Shared LED pins (BOARD numbering)
status_led_pin = 40
gps_led_pin = 38

# Ute controller pins
switch_purpose = recording
switch_pin = 36

The wireless dashboard is enabled separately during owl_setup.sh.


MQTT Communication

Both standalone and networked modes use MQTT for communication between the OWL and dashboard.

Topics

Topic

Purpose

owl/{device_id}/state

Full OWL state (FPS, detections, settings, mode)

owl/{device_id}/commands

Commands to OWL (start, stop, config changes)

owl/{device_id}/status

Heartbeat and connectivity status

owl/{device_id}/config

Configuration snapshots

owl/{device_id}/indicators

Short events for the dashboard lights: weed detected, image written, drive full

owl/{device_id}/errors

Error log lines from the OWL (level, message, time)

owl/{device_id}/gps

GPS position and speed data. Never sent to Noktura

cloud_out/{device_id}/state

Networked: small status for Noktura (only the fields the cloud uses), sent when one changes or every 20 s. The cloud bridge forwards this, not the full state

cloud_out/state

Standalone: the same small cloud status, through the OWL’s own bridge

owl/{device_id}/capture

One small event per saved image (count, time, position) for the controller’s collection map. Local only

owl/{device_id}/thumb

JPEG of the latest saved image (about every 2 s) for the controller’s collection gallery. Local only

owl/cloud/{device_id}/commands

Networked: commands from Noktura for one OWL, delivered through the controller’s cloud bridge. Only an allowlist is acted on (list, upload, preview and delete sessions, update to a release tag, download and select a model, restart, reboot). Kept separate from owl/{device_id}/commands so the cloud never gets full control

owl/cloud_commands

Standalone: the same inbound cloud commands and allowlist, through the OWL’s own bridge

owl/cloud/policy

Retained, from the controller: the Noktura upload host networked OWLs pin uploads to

Testing MQTT

Standalone mode:

# On the OWL
mosquitto_pub -h localhost -t "owl/test" -m "hello"
mosquitto_sub -h localhost -t "owl/#"

Networked mode:

# Replace with your broker IP
mosquitto_pub -h 192.168.1.2 -t "owl/test" -m "hello"
mosquitto_sub -h 192.168.1.2 -t "owl/#"

OWL Configuration

Enable MQTT in your OWL config file:

File: ~/owl/config/CONTROLLER.ini

Standalone:

[MQTT]
enable = True
broker_ip = localhost
broker_port = 1883
device_id = owl-1

Networked:

[MQTT]
enable = True
broker_ip = 192.168.1.2
broker_port = 1883
device_id = owl-1

Troubleshooting

Cannot connect to WiFi hotspot (Standalone)

nmcli connection show
sudo systemctl restart NetworkManager

Dashboard not loading

sudo systemctl status nginx owl-dash
journalctl -u owl-dash -f

MQTT not connecting

# Check broker is running (standalone only)
sudo systemctl status mosquitto

# Test connection
mosquitto_pub -h localhost -t test -m test

Next Steps