itelescope/plans/README.md
Laurence 9003d672ff Reservations created for all three sessions; mechanics documented
The Reservations Pilot app at reservations.itelescope.net is now mapped and
driven end to end: three-step WebForms flow (form GET, Refresh Plans
postback with plan+times selected which enables Confirm, then Confirm),
observatory-local times, 4-hour maximum, plan attachment causing iTelescope
to auto-start the run at reservation start, and the reschedule flag that
rebooks weather losses on the next free night. Crucial gotcha recorded: the
confirm modal returns OK even when nothing was created (first attempt
silently failed on the 4-hour rule), so verification against the grid is
mandatory.

Live reservations: 749227 (T59, NGC 6744, 00:05-03:45 SSO local 20 Jul),
749228 (T33, 47 Tuc test, 00:05-00:50 same night), 749229 (T33, NGC 6752,
00:05-00:50 following night). Ledger corrected: T59 moon discount is 0%
until 21 Jul (the earlier 25% figure came from a Utah scope's grid), so the
NGC 6744 estimate returns to ~240 pts. Monitoring crons replace the old
starter crons since the scheduler now fires the plans itself.
2026-07-18 23:04:26 +01:00

91 lines
4.6 KiB
Markdown

# Observing plans and the T33 session runbook
ACP observing plans for iTelescope scopes, plus the procedure to run one on T33
(the free Siding Spring scope). Credentials are NOT in this repo: they live in
the local claudetemp itelescope folder (creds.txt, `username=`/`password=` lines).
## Plan format (ACP)
See [ngc104-test.txt](ngc104-test.txt). Directives, then a target line:
`Name<TAB>RA_decimal_hours<TAB>Dec_decimal_degrees`. Counts, intervals, binning
and filters are parallel comma-separated lists. `#shutdown` parks safely at the
end (iTelescope's own one-click plans do the same).
## T33 endpoints (base http://t33.itelescope.net:8033, HTTP auth = iTelescope creds)
| Purpose | Path |
|---|---|
| Status JSON (times, obsStat, obsOwner) | /ac/SystemStatus/asystemstatus.asp |
| Console text | /ac/SystemStatus/aconsread.asp |
| Scope connect control | /ac/SystemStatus/ascopeconn.asp |
| Shutter/roof status | /ac/SystemStatus/ashutterctl.asp |
| My plan folder (list/upload/delete) | /plans/qisback/aindex.asp, aupload.asp, adelfile.asp |
| Run a plan ("Acquire Images") | POST /ac/Plans/plan.asp |
| My logs | /logs/qisback/aindex.asp |
| Finished data | data.itelescope.net |
Upload: multipart POST to `/plans/qisback/aupload.asp`, fields `File1` (the file)
and `DestPath=/plans/qisback`. Verified working 2026-07-18; content round-trips
exactly.
Run: the web UI posts the plan select to `/ac/Plans/plan.asp`; the select's value
is the WINDOWS path `C:\ProgramData\ACP\ACP Web Data\Doc Root\plans\qisback\<file>`.
Field names seen: `plan`, optional `VPhot`, `AutoLogoff`. NOT yet exercised live
(observatory was closed, daytime); the first live session must confirm whether a
scope-connect POST (ascopeconn.asp) is required first, and capture the exact
response shape.
## The 47 Tuc free-session test (ngc104-test.txt)
- Target: NGC 104 / 47 Tucanae, RA 0.4015 h, Dec -72.0814 deg (circumpolar at SSO).
- L 4x120 s, RGB 2x90 s each, Bin2: about 17 min exposure, about 24 min with
overhead, inside the daily free 30 minutes.
- Uploaded to /plans/qisback/ on 2026-07-18 and verified.
### When to run
47 Tuc clears T33's 20 degree minimum elevation in the second half of the SSO
night. SSO local = UTC+10; the good window is roughly 14:00-19:30 UTC (UK
afternoon/evening). Sunrise at SSO was 06:14 local (20:14 UTC) at recon time;
stop well before dawn.
### Procedure
1. GET asystemstatus.asp: confirm observatory open (obsStat) and no other user
(obsOwner n/a). If someone is on, wait and retry; T33 is first-come.
2. Confirm the plan file is still in /plans/qisback/ (aindex.asp).
3. POST plan.asp with the plan's Windows path to start acquisition.
4. Poll aconsread.asp (console) every minute or two: slew, centering, filter
changes, exposures. The run self-terminates via #shutdown.
5. Images land in /images/qisback/ on the scope server and then on
data.itelescope.net; logs in /logs/qisback/.
6. Record the session outcome in state/NOTES.md.
Abort path if something looks wrong: the web UI exposes an abort on the console
page; locate it live before starting exposures (not yet mapped).
## Reservations (verified working 2026-07-18)
Reservations live at http://reservations.itelescope.net ("Reservations Pilot"),
reached from each scope's /ac/MenuItems/reservation-edit.asp iframe as
`?t=<scope-id>&u=<username>` (scope ids look like GRAS059 for T59, GRAS033 for
T33; full list in the resources JSON on go.itelescope.net/Reservation/Overview.aspx,
whose embedded DayPilot events also show everyone's bookings, roof/sun times, and
the moon discount per night). No separate login: it trusts the u= parameter once a
session cookie exists.
Creating one is a three-step WebForms dance against
`New.aspx?start=<ISO local>&end=<ISO local>&r=<scope-id>` (times are OBSERVATORY
LOCAL): (1) GET the form, (2) POST tokens + DropDownStartTime/DropDownEndTime
(e.g. "12:05 AM"/"3:45 AM") + PlanToRunListBox=<plan file> + RescheduleCheckbox
+ ButtonRefreshPlans=Refresh Plans, which re-renders with Confirm enabled,
(3) re-POST the fresh tokens with the same fields + ReservationOKButton=Confirm
Reservation. Success = response script `ModalStatic.result("OK")` AND the booking
appearing in the grid: the modal also says "OK" on silent failure, so ALWAYS
re-fetch the grid and look for the reservation id + username.
Rules learned: maximum reservation length 4:00; recommended duration 1.5x total
imaging time; the attached plan is auto-started by iTelescope at reservation
start (no walk-in POST needed); RescheduleCheckbox auto-rebooks the identical
timeslot on the first available night of the next 30 if the run does not happen.
Delete/edit via Edit.aspx?id=<reservation id> from the grid.