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:
| Parameter | Value |
|---|---|
| Baud rate | 115200 |
| Data bits | 8 |
| Parity | None |
| Stop bits | 1 |
| Flow control | None |
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
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.
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.
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
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...