Compiled from active code in seestar_alp (Feb 2026).
Only includes methods with confirmed active usage — legacy/commented-out calls are excluded.
{"method": "get_albums"}No params.
{"method": "get_camera_info"}No params. (Only invoked via Bruno API tests, not in Python device code.)
{"method": "get_camera_state"}No params.
Full state (no filter):
{"method": "get_device_state"}Filtered by keys:
{"method": "get_device_state", "params": {"keys": ["<key1>", "<key2>", ...]}}| Param | Type | Description |
|---|---|---|
keys |
list[str] |
Top-level state keys to return. Known values: "location_lon_lat", "mount", "device", "setting", "camera", "focuser", "ap", "station", "storage", "balance_sensor", "compass_sensor", "pi_status" |
{"method": "get_disk_volume"}No params.
{"method": "get_focuser_position"}No params. Returns integer position in range ~1200–2600.
{"method": "get_last_solve_result"}No params.
{"method": "get_solve_result"}No params.
{"method": "get_stacked_img"}No params. Note: In ALP this is sent over the binary/imaging socket (port 4800) with hardcoded "id": 23, not the main command socket (port 4700).
{"method": "get_stack_setting"}No params.
{"method": "get_stack_info"}No params.
{"method": "get_sensor_calibration"}No params.
{"method": "get_setting"}No params.
{"method": "get_user_location"}No params.
Standard:
{"method": "get_view_state"}With explicit id (used for polling loops):
{"method": "get_view_state", "id": 42}{"method": "get_wheel_position"}No params.
{"method": "get_wheel_setting"}No params.
{"method": "iscope_get_app_state"}No params.
Goto target (with coordinates):
{
"method": "iscope_start_view",
"params": {
"mode": "star",
"target_ra_dec": [<ra>, <dec>],
"target_name": "<name>",
"lp_filter": false
}
}Mode switch only (no coordinates):
{"method": "iscope_start_view", "params": {"mode": "star"}}Frontend passthrough (arbitrary params):
{"method": "iscope_start_view", "params": <params_from_request>}| Param | Type | Description |
|---|---|---|
mode |
str |
"star", "moon", "sun", "scenery" |
target_ra_dec |
[float, float] |
[RA_hours, Dec_degrees] |
target_name |
str |
Target name (also used as directory name on emmc) |
lp_filter |
bool |
Always false in ALP device code; LP filter controlled via set_setting with stack_lenhance |
Note: ALP never passes a mosaic param here. Mosaics are managed at the scheduler level.
Stop everything (full stop):
{"method": "iscope_stop_view"}Stop a specific stage:
{"method": "iscope_stop_view", "params": {"stage": "<stage>"}}| Param | Type | Description |
|---|---|---|
stage |
str |
Stage to stop. Known values: "AutoGoto", "Stack", "ContinuousExposure", "AutoFocus", "DarkLibrary", "PlateSolve", "ScopeGoto" |
{"method": "iscope_start_stack", "params": {"restart": true}}| Param | Type | Default | Description |
|---|---|---|---|
restart |
bool |
true |
Restart the stacking sequence |
{"method": "scope_get_equ_coord"}No params. ALP uses "id": 420 for the heartbeat variant.
{"method": "scope_get_horiz_coord"}No params.
{"method": "scope_get_ra_dec"}No params.
{"method": "scope_goto", "params": [<ra>, <dec>]}| Param | Type | Description |
|---|---|---|
params[0] |
float |
RA in decimal hours [0, 24] |
params[1] |
float |
Dec in decimal degrees [-90, 90] |
Note: params is a list, not a dict.
{"method": "scope_move_to_horizon"}No params.
Simple park:
{"method": "scope_park"}With equatorial mode:
{"method": "scope_park", "params": {"equ_mode": true}}| Param | Type | Description |
|---|---|---|
equ_mode |
bool |
true = EQ mode, false = Alt-Az mode |
{"method": "scope_sync", "params": [<ra>, <dec>]}| Param | Type | Description |
|---|---|---|
params[0] |
float |
RA in decimal hours |
params[1] |
float |
Dec in decimal degrees |
Note: params is a list, not a dict.
{
"method": "scope_speed_move",
"params": {"speed": <int>, "angle": <int>, "dur_sec": <int>}
}| Param | Type | Default | Description |
|---|---|---|---|
speed |
int |
— | Steps/sec. Max ~4000. 240 = ~1 deg/sec. 0 = stop. |
angle |
int |
— | Direction in degrees. 0=right, 90=up, 180=left, 270=down |
dur_sec |
int |
3 |
Duration in seconds |
{"method": "set_control_value", "params": ["gain", <int>]}| Param | Type | Description |
|---|---|---|
params[0] |
str |
Control key. Only "gain" is used in active code |
params[1] |
int |
Value. For gain: <80 = LCG mode, >=80 = HCG mode |
Note: params is a list, not a dict.
Always sends only the specific key(s) being changed:
{"method": "set_setting", "params": {<key>: <value>}}All known setting keys used in ALP active code:
| Key | Type | Example | Description |
|---|---|---|---|
auto_af |
bool |
false |
Autofocus after goto |
stack_after_goto |
bool |
true |
Auto-start stacking after goto completes |
exp_ms |
dict |
{"stack_l": 10000, "continuous": 500} |
Exposure times in ms. Can send just stack_l or both |
stack_lenhance |
bool |
true |
Enable LP (light pollution) filter / dark subtraction |
stack_dither |
dict |
{"pix": 50, "interval": 5, "enable": true} |
Dithering settings |
stack |
dict |
{"dbe": false} |
Stack processing. Known sub-key: dbe |
frame_calib |
bool |
true |
Frame calibration |
lang |
str |
"en" |
Language |
master_cli |
bool |
true |
Guest mode / CLI master control |
cli_name |
str |
"hostname" |
Client hostname identification |
auto_3ppa_calib |
bool |
true |
Auto 3-point polar alignment calibration |
auto_power_off |
bool |
false |
Auto power off after inactivity |
Multiple keys can be sent in a single call:
{"method": "set_setting", "params": {"stack": {"dbe": false}, "frame_calib": true}}{
"method": "set_stack_setting",
"params": {
"save_discrete_ok_frame": true,
"save_discrete_frame": false
}
}| Param | Type | Description |
|---|---|---|
save_discrete_ok_frame |
bool |
Save accepted individual sub-frames |
save_discrete_frame |
bool |
Save all individual sub-frames (including rejected) |
{"method": "set_sequence_setting", "params": [{"group_name": "<name>"}]}| Param | Type | Description |
|---|---|---|
group_name |
str |
Target/sequence name |
Note: params is a list containing a single dict.
{
"method": "set_sensor_calibration",
"params": {
"compassSensor": {
"x": <float>,
"y": <float>,
"z": <float>,
"x11": <float>,
"x12": <float>,
"y11": <float>,
"y12": <float>
}
}
}| Param | Type | Description |
|---|---|---|
x, y, z |
float |
Compass sensor offsets |
x11, x12, y11, y12 |
float |
Rotation/calibration matrix coefficients |
{
"method": "set_user_location",
"params": {"lat": <float>, "lon": <float>, "force": true}
}| Param | Type | Description |
|---|---|---|
lat |
float |
Latitude in decimal degrees (positive = North) |
lon |
float |
Longitude in decimal degrees (positive = East) |
force |
bool |
Always true in ALP |
{"method": "set_wheel_position", "params": [<int>]}| Value | Filter |
|---|---|
0 |
Dark (shutter closed) |
1 |
IR Cut (open, 400–700nm with Bayer matrix) |
2 |
LP (narrow-band OIII + H-alpha) |
Note: params is a list containing a single int.
{"method": "move_focuser", "params": {"step": <int>, "ret_step": true}}| Param | Type | Description |
|---|---|---|
step |
int |
Absolute target position (~1200–2600). Factory default: 1580 |
ret_step |
bool |
Always true in ALP. Return the final step position |
{
"method": "pi_set_time",
"params": [{
"year": <int>,
"mon": <int>,
"day": <int>,
"hour": <int>,
"min": <int>,
"sec": <int>,
"time_zone": "<tz_name>"
}]
}| Param | Type | Description |
|---|---|---|
year |
int |
e.g. 2026 |
mon |
int |
1–12 |
day |
int |
1–31 |
hour |
int |
0–23 |
min |
int |
0–59 |
sec |
int |
0–59 |
time_zone |
str |
IANA timezone name, e.g. "Europe/Vienna" |
Note: params is a list containing a single dict.
{"method": "pi_reboot"}No params. ALP parks the scope before sending this.
{"method": "pi_shutdown"}No params. ALP parks the scope before sending this.
{"method": "pi_is_verified"}No params.
{
"method": "pi_output_set2",
"params": {
"heater": {"state": <bool>, "value": <int>}
}
}| Param | Type | Description |
|---|---|---|
state |
bool |
Derived from value > 0 |
value |
int |
Heater power level |
{"method": "start_auto_focuse"}No params. (Note: misspelling is intentional — matches firmware API.)
{"method": "stop_auto_focuse"}No params.
{"method": "start_create_dark"}No params.
{
"method": "start_polar_align",
"params": {"restart": true, "dec_pos_index": <int>}
}| Param | Type | Default | Description |
|---|---|---|---|
restart |
bool |
true |
Restart the alignment sequence |
dec_pos_index |
int |
from config | Declination position index |
Can also be called without params.
{"method": "stop_polar_align"}No params.
{"method": "start_scan_planet"}No params. ALP sends this via method_async (non-blocking).
{"method": "start_solve"}No params.
{"id": 1, "method": "scan_iscope", "params": ""}Sent via UDP to port 4720 (not TCP). Hardcoded id: 1. params is an empty string. Used for device discovery/handshake.
{"method": "play_sound", "params": {"num": <int>}}| Sound ID | Usage in ALP |
|---|---|
13 |
Before parking for shutdown |
80 |
Startup sequence begin |
82 |
Startup complete / scheduler finished |
83 |
Scheduler manually stopped |
{"method": "test_connection"}No params. Used as heartbeat in the binary protocol path (port 4800) with hardcoded "id": 2. The main command socket heartbeat uses scope_get_equ_coord instead.
These methods exist in seestarpy but have zero active usage in seestar_alp:
| Method | Notes |
|---|---|
scope_get_track_state |
Zero references |
scope_set_track_state |
Only in a comment: # method: scope_set_track_state, params: { tracking: true } |
pi_get_time |
Zero references |
stop_create_dark |
ALP waits for completion instead of stopping |
stop_solve |
Zero references |
stop_goto_target |
Not sent as RPC; ALP uses iscope_stop_view(stage="AutoGoto") |
stop_scheduler |
Not an RPC; ALP manages this locally via stop_slew() + stop_stack() |