Introduction

The Seletek Line Protocol (SLP) provides a unified way to control the entire Seletek family of controllers, along with most Lunaticoastro devices (Dragonfly, Starling, Lanternfish, Caterpillar, Beaver...). All commands follow the same structure regardless of which device you're communicating with.

HTTP API

The primary interface for modern automation. Send commands via simple HTTP GET requests using curl, scripts, or any HTTP client.

Serial / USB

Devices with a USB or serial port can be controlled directly at 115200 baud, 8N1 (8 data bits, no parity, 1 stop bit). Useful for direct PC connections without a network.

UDP

Network-connected devices also accept commands over UDP on port 10000 (default). Lower overhead than HTTP for high-frequency polling scenarios.

Plain Text

All commands and responses are human-readable ASCII text, making development and debugging straightforward.

Consistent

The same protocol works across all devices. Learn the structure once, use it everywhere.

HTTP Command Format

Commands are sent as HTTP GET requests to your device's IP address or hostname:

http://{device}/slp/{group}/{command}[/{param1}[/{param2}[/{param3}]]]

For example, to get the firmware version from a Dragonfly named dragonfly:

http://dragonfly/slp/seletek/version

The response might be:

!seletek version:4231#

Quoting parameters with spaces

A parameter that contains spaces can be wrapped in single or double quotes so it is treated as one argument. This is a general rule of the protocol. It is most common when a command carries another command as an argument — for example forwarding a command to a paired shutter board:

!dome sendtoshutter 'seletek version'#

Serial / USB

Devices with a physical USB or serial port can be controlled directly from a PC without any network. Open the port with these settings:

ParameterValue
Baud rate115200
Data bits8
ParityNone
Stop bits1
Flow controlNone

Commands and responses use the same plain-text format as HTTP. Send the command string terminated with a newline (\n) and read back the response line.

UDP

Network-connected devices also listen for commands on UDP port 10000 (default). Send the command as a UTF-8 text datagram to the device's IP address; the device replies to the sender's address and port. The command and response format is identical to HTTP.

# Example using netcat (Linux/macOS)
echo -n '!seletek version#' | nc -u your-device 10000

Response Format

All responses follow this structure, where result is typically 0 for success or the requested value:

!group command param1 [param2 [param3]]:result#

Supported Devices

Legacy devices

Conventions

Element Range Notes
Relays & Sensors 0 to 7 On Dragonfly/Firefly/Starling
Analog Values 0 to 1023 10-bit ADC resolution
Controller Ports (legacy) 0 to 2 0=MAIN, 1=EXP, 2=THIRD (Platypus only)
Port Pins (legacy) 0 to 9 Physical pins on SubD-9 connectors

Quick Start

1

Find your device

Ensure your device is connected to the network. Some of them support Ethernet (such as the Dragonfly), some use WiFi (such as the pocketCW2 or the Lanternfish). Use the device's hostname or IP address.

2

Test the connection

Verify communication by requesting the firmware version:

curl http://your-device/slp/seletek/version

For any command, you can just visit the url in your web browser instead of doing it from a console.

3

Send a command

Try controlling a relay (on a Dragonfly/Starling):

# Close relay 0 (port is ignored on Dragonfly/Starling, use 0)
curl http://dragonfly/slp/relio/rlset/0/0/1

# Open relay 0
curl http://dragonfly/slp/relio/rlset/0/0/0
4

Explore commands

Use the search box or browse the command groups below to discover all available functionality for your device.

Filter by Device

Click to show only commands available for specific devices:

Loading commands...