A Windows desktop application (Python / CustomTkinter) that simulates an antenna rotor controlled through PstRotator's UDP protocol, so you can test a client software chain (logging, tracking, automation) without physical rotor hardware.
- Listens for incoming UDP commands on a configurable port (12000 by default) and replies on port+1, following the PstRotator User Manual's UDP Control chapter.
- Supported commands:
<AZ>xxx</AZ>,<EL>yyy</EL>(also<AZIMUTH>/<ELEVATION>) set a target position;AZ?andEL?return the current actual position. Multiple commands can arrive concatenated in a single UDP packet. - Realistic motion simulation: receiving a target does not jump the rotor instantly — a background thread moves the actual position toward the target at the real rotor's measured speed:
- Azimuth: 360° in 80s (4.5°/s)
- Elevation: 180° in 80s (2.25°/s)
- Movement always follows the direct path on the displayed scale (e.g. 350° → 10° travels 340° backward, not a 20° shortcut through 0/360°) — mimicking a real rotor's mechanical stop.
- A new command received mid-rotation immediately overrides the previous target.
AZ?/EL?queries return the interpolated live position, not the pending target.
- Two graphical gauges: a full compass dial for azimuth and a half-circle dial (0–180°, G-5500 style) for elevation, each showing a target needle and a live-position needle, plus an adjustable beam-width sector.
- Manual target entry: set an azimuth/elevation target locally for testing, without any external client.
- Live log: every received and transmitted UDP frame is timestamped and displayed.
- Automatic port-conflict handling: if the default port is already in use, the app prompts for an alternative port instead of crashing.
The UI is available in French and English, switchable at any time from the dropdown at the top of the window — labels, gauges, log messages, and error dialogs all follow the selected language immediately, no restart required.
Development and testing of client applications that drive an antenna rotor via PstRotator's UDP protocol (e.g. Log4OM, satellite tracking software) when the physical rotor is not available or not convenient to use.
- Python 3
customtkinter
python pstrotator_sim.pyw