Interactive mockup of the JapyScope Remote hand controller by JapySoft, plus its companion Web UI — sharing one catalog and one access code, same as the real system will. Click with your mouse, or use your keyboard.
Everything is navigated with the side wheel: rotate to scroll (home screen, menus, lists), push to open/select/confirm. 2/4/6/8 jog the mount whenever the mount can move — home screen, tracking, alignment. 9 always means one level back, never an action. The real backlight is edge-mounted RGB LEDs that light the whole e-ink panel (colors mix, e.g. R+G High = yellow), not a separate light — adjust each channel from Menu → Backlight (rotate = pick R/G/B, push = cycle Off/Med/High); it also auto-off after ~20s idle to save power and comes back with the next key press. Menu → Park sends the mount to a safe resting position; while parked, rotate to choose Unpark or Power off, then push. Menu → Sudo Password sets the factory password (default 1234, same rotary-dial entry as Dev Tools codes) that will guard any destructive Dev Tools action once one exists — none currently need it. The display itself is a fixed-size e-ink panel: its box never grows or shrinks, only what's drawn on it changes.
Keyboard: 1–9, 0 = digits, Enter = encoder push, ↑/↓ = encoder rotate, Backspace = BKSP, F = FN2.
Screen draft, v1 (no mount control). Raspberry Pi OS Lite + INDI. Plain server-rendered HTML, deliberately undesigned. Logs in with the code shown on the controller, and shares its catalog with it — try generating a code on the Hand Controller tab, then log in here.
GET /setup — AP mode, 192.168.4.1
You're connected to the controller's own hotspot JapyScope-Setup. Enter your home Wi-Fi details so the controller can join your network:
Afterwards the controller joins your network and this hotspot disappears — reconnect your phone or laptop to your normal Wi-Fi to keep using this Web UI.
GET /
Enter the code shown on the controller's display:
The code is dynamic — generate it from the controller's menu (Wi-Fi / Web Access). It appears on the e-ink display and is only valid for a limited time.
5 wrong attempts → 30s lockout.
GET /status
| Item | Value |
|---|---|
| INDI connection | connected — Sky-Watcher Flextube 400P |
| RA / Dec | 05h 34m 32s / +22° 00′ 52″ |
| Alt / Az | 47.3° / 132.8° |
| Tracking | on (sidereal) |
| Alignment | — |
| Parked | — |
| Pi temperature | 41.2 °C |
| Wi-Fi signal | −58 dBm |
| Uptime | 2 h 14 min |
Read-only — no controls on this page. Alignment and Parked reflect the controller's real state; everything else above is illustrative sample data in this mockup.
GET /catalog
| # | Name | RA | Dec | Type | Note | Source |
|---|
CSV, one object per line: name,ra,dec,type,note — RA/Dec and type/note are optional (blank if unknown). A first line that doesn't look like data (e.g. starting with "name,") is treated as a header and skipped. Example: M57 Ring Nebula,18h53m35s,+33°01′,nebula,test import
Anything added here shows up on the controller under Catalog → My Catalog — the controller only reads this list, it doesn't edit it.
GET/POST /settings
Latitude / longitude / elevation / timezone fields above are illustrative — not wired up in this mockup.
Reset alignment model — clears the mount's current T-Point model. You'll need to align again.
Where the mount parks to when you choose Park on the controller.
GET /diagnostics
2026-09-14T21:03:11Z [INDI] SkyWatcherAltAzMount: connected on /dev/ttyUSB0 2026-09-14T21:03:12Z [INDI] alignment: loaded 4-point model 2026-09-14T21:04:47Z [INDI] slew requested: RA 05:34:32 Dec +22:00:52 2026-09-14T21:05:19Z [INDI] slew complete, tracking enabled 2026-09-14T21:11:02Z [WARN] wifi rssi dropped to -71 dBm
Illustrative sample log — not live in this mockup.
POST /system/*
(illustrative — not wired up in this mockup)
(illustrative — not wired up in this mockup)
No mount control here or anywhere in the Web UI — system and data management only.