- Python 53%
- JavaScript 47%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .gitignore | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| technisat.js | ||
| technisat.py | ||
TechniSat Digit ISIO S2 Controller
Node.js/Express HTTP API that controls the TechniSat Digit ISIO S2 via its UDP port 8090 protocol (TechniSat Connect / ConexusTS protocol). Channel switching and remote control button presses are delegated to a Python script.
Protocol
The receiver accepts XML packets over UDP port 8090. Example:
<rcuButtonRequest code="1" state="pressed"/>
<rcuButtonRequest code="1" state="released"/>
Channel switching works by sending digit key presses followed by OK — the same as using the physical remote.
Setup
npm install
Python 3 is required for technisat.py (no extra packages needed — uses stdlib only).
Running
# With a fixed device IP
TECHNISAT_IP=192.168.1.100 node server.js
# On a custom port
PORT=8080 TECHNISAT_IP=192.168.1.100 node server.js
API
All endpoints accept an optional ?ip=<device_ip> query parameter to override the default TECHNISAT_IP.
| Method | Path | Description |
|---|---|---|
| GET | / |
List endpoints |
| GET | /channel/:number |
Switch to channel |
| POST | /channel |
Switch to channel ({ "channel": 3 }) |
| GET | /key/:name |
Send a key press |
| GET | /discover |
Broadcast device discovery |
| GET | /info |
Request device information |
| GET | /keepalive |
Send keep-alive |
| POST | /text |
Send text input ({ "text": "hello", "enter": true }) |
Examples
# Switch to channel 3
curl http://localhost:3000/channel/3
# Press the RED button
curl http://localhost:3000/key/RED
# Switch channel with explicit IP
curl "http://localhost:3000/channel/7?ip=192.168.1.100"
# Volume up
curl http://localhost:3000/key/VOLUP
Available key names
0-9, OK, UP, DOWN, LEFT, RIGHT, MENU, BACK, EXIT,
RED, GREEN, YELLOW, BLUE, EPG, INFO, STANDBY, MUTE,
VOLUP, VOLDOWN, CHANUP, CHANDOWN,
PLAYPAUSE, REWIND, STOP, WIND, RECORD,
SUBTITLE, AUDIO, TEXT, ZOOM, OPTIONS,
HOME, FAVORITES, ARCHIVE, MEDIA
Python script (standalone)
# Switch to channel 5
python3 technisat.py 192.168.1.100 channel 5
# Press the OK button
python3 technisat.py 192.168.1.100 key OK
# Discover devices on the network
python3 technisat.py 255.255.255.255 discover
# Get device info
python3 technisat.py 192.168.1.100 info
Proxmox deployment
Run on any LXC/VM that can reach the receiver's network. The server binds to 0.0.0.0 so it's reachable from other VMs or the host.
Using systemd:
[Unit]
Description=TechniSat Controller
After=network.target
[Service]
WorkingDirectory=/opt/technisat-controller
ExecStart=/usr/bin/node server.js
Environment=TECHNISAT_IP=192.168.1.100
Environment=PORT=3000
Restart=always
[Install]
WantedBy=multi-user.target