astrophotography/itelescope/plans/README.md
laurence a0e458b429 Move the iTelescope network reference and campaign under itelescope/
Preparing to merge this repository into a combined astrophotography
repo. The network review, the southern-target guide, the drain campaign
and the observing plans all belong together under one directory; the
Default Workflow files (CLAUDE.md, docs/, state/) stay at the top level
because they will govern the combined repository rather than just this
part of it.
2026-07-21 17:13:47 +01:00

100 lines
5.2 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.
Availability probing (2026-07-21): a plain GET of
`New.aspx?start=...&end=...&r=...` is a cheap, side-effect-free conflict check.
The form comes back with the two time dropdowns populated for +/-60 min around
the requested times, and if the slot collides with someone else's booking it
also renders "Conflicting reservation. Start time must be later than H:MM AM".
No message plus a full pair of dropdowns means the window is clear. This beats
reading the DayPilot grid, whose event divs do not survive a plain
Invoke-WebRequest fetch (they are rendered client-side).
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.