The UpdatePlan page embeds each telescope's dark-of-moon base rate in a data-default-rate attribute; effective rate = base x (1 - plan AccessDiscount from DataService.svc/GetMyAvailablePlans) x (1 - moon discount from a server-side illumination table, not yet extracted). Records the computed Plan-40 rates for all 25 listed scopes, the billing model (points per imaging hour, billed per minute of exposure time, overhead unbilled), the walk-in rule (idle scopes need no reservation; the ACP flow is identical to the free scopes with points deducting), and the Cloudflare constraint on the reservation planner.
3.3 KiB
Notes
Working notes, gotchas, environment quirks, and dead ends to avoid. Free form. The point is to save a future session from rediscovering something the hard way.
- Refresh the specs snapshot with:
curl -sL "https://docs.google.com/spreadsheets/d/1jZWkkjewOuyNC9YzQ8y2d0pO1e4T7EBeysmQMPBVSOk/export?format=csv" -o data/itelescope-telescopes.csv - The CSV has multi-line cells (quoted); line count is not row count. Telescope rows
start
T<number>,; observatory header rows have an empty first column. - Sensors are 16-bit ADC unless noted (T20's ASI2400C is 14-bit).
- Free scopes (30 min/day): T68 (Utah), T33 (Siding Spring).
- Minimum elevation limits come from the support article, not the sheet.
Automation recon (2026-07-18, all verified live)
Credentials live OUTSIDE this repo (local claudetemp, never commit them).
- go.itelescope.net is ASP.NET WebForms. Login: GET /login.aspx, POST UsernameTextBox/PasswordTextBox plus __VIEWSTATE, __VIEWSTATEGENERATOR, __EVENTVALIDATION, LoginButton=Login; session cookie then works everywhere.
- JSON service at /DataService.svc (session-cookie auth): GetAccountStatus (balance, plan, renewal), GetMyAvailablePlans (per-plan, per-scope AccessDiscount), ApplyPromoCode (POST). More methods likely; enumerate from inline $.ajax calls on each page (Scripts/Common.js has none).
- Home page /default.aspx carries live network status text (per-scope offline/online reasons) plus points balance: cheap to poll.
- Reservation/Overview.aspx links every telescope's own control server: https://tNN.itelescope.online/ or http://tNN.itelescope.net:80NN/. These are ACP web servers behind HTTP auth accepting the same iTelescope credentials (verified read-only on T33: index.asp is a TiddlyWiki info page, min elevation 20 degrees, 900 s max exposure). Session control and plan submission happen here; ACP endpoint mapping is the next step.
- Reservation/Planner.aspx now redirects to https://lookup.itelescope.online (new planning tool, not yet explored).
- Weather per site: Weather/Weather.aspx?site=UDRO|SSO|DSC|SRO|AC|EYE.
- Account: Plan-40 (GBP 32.00 per 28 days), renewal 12 Aug 2026, subscribed since Apr 2019, balance 2,638 points at recon time.
Rate card (2026-07-18, points per imaging hour, billed per minute)
Extracted from MyAccount/UpdatePlan.aspx: each scope row carries data-default-rate (dark-of-moon base); effective rate = base x (1 - AccessDiscount from DataService GetMyAvailablePlans) x (1 - moon discount, server-side table keyed on illumination, not extracted yet). Plan-40 discount is 10% on most scopes, 20% on a few, 0% on the newest (T25, T26, T73, T74).
Plan-40 rates before moon discount: T2 50, T5 68, T8 130, T10 146, T11 161, T14 97, T17 135, T18 81, T20 89, T21 76, T24 186, T25 322, T26 394, T30 161, T32 146, T33 0 (free), T59 80, T68 0 (free), T70 119, T71 106, T72 202, T73 224, T74 295, T75 202, T80 119.
Standouts: T59 at 80/hr is the value big scope (20" CDK, square 37 arcmin field, 900 s subs); T5 at 68/hr the cheapest paid; T26 at 394/hr the dearest. Billing is per minute of imaging (exposure) time, so overhead is not billed. Paid imaging needs no reservation when a scope is idle: same walk-in ACP flow as the free scopes, points just deduct. Reservations (to guarantee a slot) go through lookup.itelescope.online, which is Cloudflare-protected: Playwright needed.