citrascope 0.3.0__py3-none-any.whl → 0.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- citrascope/__main__.py +12 -15
- citrascope/api/citra_api_client.py +13 -1
- citrascope/citra_scope_daemon.py +91 -19
- citrascope/constants.py +23 -0
- citrascope/hardware/abstract_astro_hardware_adapter.py +61 -0
- citrascope/hardware/nina_adv_http_adapter.py +106 -77
- citrascope/logging/web_log_handler.py +9 -8
- citrascope/settings/citrascope_settings.py +34 -45
- citrascope/tasks/runner.py +36 -2
- citrascope/web/app.py +137 -13
- citrascope/web/server.py +10 -1
- citrascope/web/static/app.js +246 -17
- citrascope/web/static/config.js +248 -9
- citrascope/web/static/style.css +32 -0
- citrascope/web/templates/dashboard.html +143 -7
- {citrascope-0.3.0.dist-info → citrascope-0.5.0.dist-info}/METADATA +40 -32
- {citrascope-0.3.0.dist-info → citrascope-0.5.0.dist-info}/RECORD +19 -19
- docs/index.md +0 -47
- {citrascope-0.3.0.dist-info → citrascope-0.5.0.dist-info}/WHEEL +0 -0
- {citrascope-0.3.0.dist-info → citrascope-0.5.0.dist-info}/entry_points.txt +0 -0
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
<div class="container">
|
|
21
21
|
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom align-items-center">
|
|
22
22
|
<span class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-body-emphasis text-decoration-none">
|
|
23
|
-
<span class="fs-4 d-flex align-items-
|
|
23
|
+
<span class="fs-4 d-flex align-items-baseline gap-2">
|
|
24
24
|
<img src="/static/img/citra.png" alt="CitraScope Logo" class="logo-img" />
|
|
25
25
|
CitraScope
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
<small class="text-muted" style="font-size: 0.875rem;">
|
|
27
|
+
<span id="headerVersion" style="cursor: pointer; user-select: none;" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Click to check for updates">v...</span>
|
|
28
|
+
<span id="updateIndicator" class="badge bg-info text-dark ms-1" style="display: none; font-size: 0.7rem;"></span>
|
|
29
|
+
</small>
|
|
30
30
|
</span>
|
|
31
31
|
</span>
|
|
32
32
|
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
<li class="nav-item"><a href="#" class="nav-link px-2 text-white" data-section="monitoring"
|
|
35
35
|
aria-current="page">Monitoring</a></li>
|
|
36
36
|
<li class="nav-item"><a href="#" class="nav-link px-2" data-section="config">Config</a></li>
|
|
37
|
+
<li class="nav-item"><a href="https://docs.citra.space/citrascope/" class="nav-link px-2" target="_blank">Docs</a></li>
|
|
37
38
|
<li class="nav-item"><a href="#" class="nav-link bg-success text-white btn" style="display: none;"
|
|
38
39
|
id="taskScopeButton" target="_blank">Task my Scope</a></li>
|
|
39
40
|
</ul>
|
|
@@ -57,8 +58,8 @@
|
|
|
57
58
|
</div>
|
|
58
59
|
<div class="card-body">
|
|
59
60
|
<div class="row mb-2">
|
|
60
|
-
<div class="col-6 fw-semibold">
|
|
61
|
-
<div class="col-6" id="
|
|
61
|
+
<div class="col-6 fw-semibold">Daemon</div>
|
|
62
|
+
<div class="col-6" id="wsStatus"><span class="badge rounded-pill bg-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Dashboard connection status">Connecting...</span></div>
|
|
62
63
|
</div>
|
|
63
64
|
<div class="row mb-2">
|
|
64
65
|
<div class="col-6 fw-semibold">Telescope</div>
|
|
@@ -68,6 +69,15 @@
|
|
|
68
69
|
<div class="col-6 fw-semibold">Camera</div>
|
|
69
70
|
<div class="col-6" id="cameraConnected"><span class="badge rounded-pill bg-secondary">Unknown</span></div>
|
|
70
71
|
</div>
|
|
72
|
+
<div class="row">
|
|
73
|
+
<div class="col-6 fw-semibold">Task Processing</div>
|
|
74
|
+
<div class="col-6 d-flex align-items-center gap-2">
|
|
75
|
+
<span id="processingStatus"><span class="badge rounded-pill bg-success">Active</span></span>
|
|
76
|
+
<button id="toggleProcessingButton" class="btn btn-sm btn-secondary" title="Pause task processing">
|
|
77
|
+
<span id="processingButtonIcon">Pause</span>
|
|
78
|
+
</button>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
71
81
|
</div>
|
|
72
82
|
</div>
|
|
73
83
|
</div>
|
|
@@ -77,6 +87,10 @@
|
|
|
77
87
|
Telescope
|
|
78
88
|
</div>
|
|
79
89
|
<div class="card-body">
|
|
90
|
+
<div class="row mb-2">
|
|
91
|
+
<div class="col-6 fw-semibold">Adapter</div>
|
|
92
|
+
<div class="col-6" id="hardwareAdapter">-</div>
|
|
93
|
+
</div>
|
|
80
94
|
<div class="row mb-2">
|
|
81
95
|
<div class="col-6 fw-semibold">Right Ascension</div>
|
|
82
96
|
<div class="col-6" id="telescopeRA">-</div>
|
|
@@ -165,6 +179,32 @@
|
|
|
165
179
|
</div>
|
|
166
180
|
<div class="card-body">
|
|
167
181
|
<div class="row g-3">
|
|
182
|
+
<div class="col-12">
|
|
183
|
+
<label for="apiEndpoint" class="form-label">API Endpoint</label>
|
|
184
|
+
<select id="apiEndpoint" class="form-select">
|
|
185
|
+
<option value="production">Production (api.citra.space)</option>
|
|
186
|
+
<option value="development">Development (dev.api.citra.space)</option>
|
|
187
|
+
<option value="custom">Custom</option>
|
|
188
|
+
</select>
|
|
189
|
+
</div>
|
|
190
|
+
<div class="col-12" id="customHostContainer" style="display: none;">
|
|
191
|
+
<label for="customHost" class="form-label">Custom API Host</label>
|
|
192
|
+
<input type="text" id="customHost" class="form-control" placeholder="api.example.com">
|
|
193
|
+
<div class="row g-2 mt-2">
|
|
194
|
+
<div class="col-6">
|
|
195
|
+
<label for="customPort" class="form-label small">Port</label>
|
|
196
|
+
<input type="number" id="customPort" class="form-control" value="443" placeholder="443">
|
|
197
|
+
</div>
|
|
198
|
+
<div class="col-6 d-flex align-items-end">
|
|
199
|
+
<div class="form-check">
|
|
200
|
+
<input class="form-check-input" type="checkbox" id="customUseSsl" checked>
|
|
201
|
+
<label class="form-check-label" for="customUseSsl">
|
|
202
|
+
Use SSL
|
|
203
|
+
</label>
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
168
208
|
<div class="col-12 col-md-6">
|
|
169
209
|
<label for="personal_access_token" class="form-label">Personal Access Token <span class="text-danger">*</span></label>
|
|
170
210
|
<input type="password" id="personal_access_token" class="form-control" placeholder="Enter your Citra API token" required>
|
|
@@ -198,6 +238,38 @@
|
|
|
198
238
|
|
|
199
239
|
<!-- Dynamic Adapter Settings Container -->
|
|
200
240
|
<div id="adapter-settings-container"></div>
|
|
241
|
+
|
|
242
|
+
<!-- Filter Configuration Section (shown when adapter supports filters) -->
|
|
243
|
+
<div id="filterConfigSection" style="display: none; margin-top: 1.5rem;">
|
|
244
|
+
<hr class="border-secondary">
|
|
245
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
246
|
+
<h5 class="mb-0">Filter Configuration</h5>
|
|
247
|
+
<div class="text-end">
|
|
248
|
+
<button type="button" class="btn btn-sm btn-outline-primary" id="runAutofocusButton">
|
|
249
|
+
<span id="autofocusButtonText">Run Autofocus</span>
|
|
250
|
+
<span id="autofocusButtonSpinner" class="spinner-border spinner-border-sm ms-2" style="display: none;" role="status"></span>
|
|
251
|
+
</button>
|
|
252
|
+
<div><small class="text-muted">Note: Pause task processing before running autofocus</small></div>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
<div id="filterTableContainer">
|
|
256
|
+
<table class="table table-dark table-sm">
|
|
257
|
+
<thead>
|
|
258
|
+
<tr>
|
|
259
|
+
<th>Filter ID</th>
|
|
260
|
+
<th>Name</th>
|
|
261
|
+
<th>Focus Position</th>
|
|
262
|
+
</tr>
|
|
263
|
+
</thead>
|
|
264
|
+
<tbody id="filterTableBody">
|
|
265
|
+
<!-- Filter rows will be populated by JavaScript -->
|
|
266
|
+
</tbody>
|
|
267
|
+
</table>
|
|
268
|
+
<div id="noFiltersMessage" class="text-muted small" style="display: none;">
|
|
269
|
+
No filters configured. Connect to hardware to discover filters.
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
</div>
|
|
201
273
|
</div>
|
|
202
274
|
</div>
|
|
203
275
|
</div>
|
|
@@ -315,6 +387,23 @@
|
|
|
315
387
|
data-bs-toggle="collapse" data-bs-target="#logAccordionCollapse" aria-expanded="false"
|
|
316
388
|
aria-controls="logAccordionCollapse">
|
|
317
389
|
<span id="latestLogLine" class="log-latest-line">Log Terminal</span>
|
|
390
|
+
<div class="accordion-social-links">
|
|
391
|
+
<a href="https://github.com/citra-space/citrascope/issues/new" target="_blank" class="social-link" title="Report an Issue" onclick="event.stopPropagation();">
|
|
392
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
|
|
393
|
+
<path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
|
|
394
|
+
</svg>
|
|
395
|
+
</a>
|
|
396
|
+
<a href="https://discord.gg/STgJQkWe9y" target="_blank" class="social-link" title="Join Discord" onclick="event.stopPropagation();">
|
|
397
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
|
|
398
|
+
<path d="M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"/>
|
|
399
|
+
</svg>
|
|
400
|
+
</a>
|
|
401
|
+
<a href="https://github.com/citra-space/citrascope" target="_blank" class="social-link" title="View on GitHub" onclick="event.stopPropagation();">
|
|
402
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
|
|
403
|
+
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"/>
|
|
404
|
+
</svg>
|
|
405
|
+
</a>
|
|
406
|
+
</div>
|
|
318
407
|
</button>
|
|
319
408
|
</h2>
|
|
320
409
|
<div id="logAccordionCollapse" class="accordion-collapse collapse" aria-labelledby="logAccordionHeader"
|
|
@@ -346,6 +435,53 @@
|
|
|
346
435
|
</div>
|
|
347
436
|
|
|
348
437
|
|
|
438
|
+
<!-- Version Check Modal -->
|
|
439
|
+
<div class="modal fade" id="versionModal" tabindex="-1" aria-labelledby="versionModalLabel" aria-hidden="true">
|
|
440
|
+
<div class="modal-dialog modal-dialog-centered">
|
|
441
|
+
<div class="modal-content bg-dark text-light border-secondary">
|
|
442
|
+
<div class="modal-header border-secondary">
|
|
443
|
+
<h5 class="modal-title" id="versionModalLabel">Version Check</h5>
|
|
444
|
+
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
445
|
+
</div>
|
|
446
|
+
<div class="modal-body">
|
|
447
|
+
<div id="versionCheckLoading" style="text-align: center;">
|
|
448
|
+
<div class="spinner-border text-primary" role="status">
|
|
449
|
+
<span class="visually-hidden">Checking...</span>
|
|
450
|
+
</div>
|
|
451
|
+
<p class="mt-2">Checking for updates...</p>
|
|
452
|
+
</div>
|
|
453
|
+
<div id="versionCheckUpToDate" style="display: none;">
|
|
454
|
+
<p class="text-success">✓ You're up to date!</p>
|
|
455
|
+
<p>
|
|
456
|
+
<strong>Current version:</strong> <span id="modalCurrentVersionUpToDate">-</span>
|
|
457
|
+
</p>
|
|
458
|
+
</div>
|
|
459
|
+
<div id="versionCheckUpdateAvailable" style="display: none;">
|
|
460
|
+
<p class="text-warning">A new version of CitraScope is available!</p>
|
|
461
|
+
<p class="mb-3">
|
|
462
|
+
<strong>Current:</strong> <span id="modalCurrentVersion">-</span><br>
|
|
463
|
+
<strong>Latest:</strong> <span id="modalLatestVersion">-</span>
|
|
464
|
+
</p>
|
|
465
|
+
<p class="mb-2">To upgrade, run:</p>
|
|
466
|
+
<pre class="bg-secondary p-2 rounded"><code>pip install -U citrascope</code></pre>
|
|
467
|
+
<p class="mb-0">
|
|
468
|
+
<a href="#" id="releaseNotesLink" target="_blank" class="text-info">View release notes on GitHub →</a>
|
|
469
|
+
</p>
|
|
470
|
+
</div>
|
|
471
|
+
<div id="versionCheckError" style="display: none;">
|
|
472
|
+
<p class="text-muted">Unable to check for updates. You may be offline or GitHub is unreachable.</p>
|
|
473
|
+
<p>
|
|
474
|
+
<strong>Current version:</strong> <span id="modalCurrentVersionError">-</span>
|
|
475
|
+
</p>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
<div class="modal-footer border-secondary">
|
|
479
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
480
|
+
</div>
|
|
481
|
+
</div>
|
|
482
|
+
</div>
|
|
483
|
+
</div>
|
|
484
|
+
|
|
349
485
|
<script type="module" src="/static/app.js"></script>
|
|
350
486
|
|
|
351
487
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: citrascope
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Remotely control a telescope while it polls for tasks, collects and edge processes data, and delivers results and data for further processing.
|
|
5
5
|
Author-email: Patrick McDavid <patrick@citra.space>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -9,13 +9,9 @@ Requires-Dist: click
|
|
|
9
9
|
Requires-Dist: fastapi>=0.104.0
|
|
10
10
|
Requires-Dist: httpx
|
|
11
11
|
Requires-Dist: platformdirs>=4.0.0
|
|
12
|
-
Requires-Dist: pydantic-settings
|
|
13
|
-
Requires-Dist: pytest-cov
|
|
14
12
|
Requires-Dist: python-dateutil
|
|
15
|
-
Requires-Dist: python-json-logger
|
|
16
13
|
Requires-Dist: requests
|
|
17
14
|
Requires-Dist: skyfield
|
|
18
|
-
Requires-Dist: types-python-dateutil
|
|
19
15
|
Requires-Dist: uvicorn[standard]>=0.24.0
|
|
20
16
|
Requires-Dist: websockets>=12.0
|
|
21
17
|
Provides-Extra: all
|
|
@@ -38,10 +34,7 @@ Requires-Dist: mypy; extra == 'dev'
|
|
|
38
34
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
39
35
|
Requires-Dist: pytest; extra == 'dev'
|
|
40
36
|
Requires-Dist: pytest-cov; extra == 'dev'
|
|
41
|
-
|
|
42
|
-
Requires-Dist: sphinx; extra == 'docs'
|
|
43
|
-
Requires-Dist: sphinx-autodoc-typehints; extra == 'docs'
|
|
44
|
-
Requires-Dist: sphinx-markdown-builder; extra == 'docs'
|
|
37
|
+
Requires-Dist: types-python-dateutil; extra == 'dev'
|
|
45
38
|
Provides-Extra: indi
|
|
46
39
|
Requires-Dist: pixelemon; extra == 'indi'
|
|
47
40
|
Requires-Dist: plotly; extra == 'indi'
|
|
@@ -65,33 +58,46 @@ Remotely control a telescope while it polls for tasks, collects observations, an
|
|
|
65
58
|
- Connects to configured telescope and camera hardware
|
|
66
59
|
- Acts as a task daemon carrying out and remitting photography tasks
|
|
67
60
|
|
|
61
|
+
## Documentation
|
|
62
|
+
|
|
63
|
+
Full documentation is available at [docs.citra.space](https://docs.citra.space/citrascope/).
|
|
64
|
+
|
|
65
|
+
Documentation source is maintained in the [citra-space/docs](https://github.com/citra-space/docs) repository.
|
|
66
|
+
|
|
68
67
|
## Installation
|
|
69
68
|
|
|
70
|
-
|
|
69
|
+
**Important:** CitraScope requires Python 3.10, 3.11, or 3.12.
|
|
71
70
|
|
|
72
|
-
|
|
71
|
+
### Check Your Python Version
|
|
73
72
|
|
|
74
73
|
```sh
|
|
75
|
-
|
|
74
|
+
python3 --version
|
|
76
75
|
```
|
|
77
76
|
|
|
78
|
-
|
|
77
|
+
If you don't have a compatible version, install one with [pyenv](https://github.com/pyenv/pyenv):
|
|
79
78
|
|
|
80
|
-
|
|
79
|
+
```sh
|
|
80
|
+
pyenv install 3.12.0
|
|
81
|
+
pyenv local 3.12.0 # Sets Python 3.12.0 for the current directory
|
|
82
|
+
```
|
|
81
83
|
|
|
82
|
-
|
|
83
|
-
```sh
|
|
84
|
-
pipx install citrascope[indi]
|
|
85
|
-
# or with pip: pip install citrascope[indi]
|
|
86
|
-
```
|
|
84
|
+
### Install CitraScope
|
|
87
85
|
|
|
88
|
-
|
|
89
|
-
```sh
|
|
90
|
-
pipx install citrascope[all]
|
|
91
|
-
# or with pip: pip install citrascope[all]
|
|
92
|
-
```
|
|
86
|
+
**Recommended: Using pip in a virtual environment**
|
|
93
87
|
|
|
94
|
-
|
|
88
|
+
```sh
|
|
89
|
+
python3 -m venv citrascope-env
|
|
90
|
+
source citrascope-env/bin/activate # On Windows: citrascope-env\Scripts\activate
|
|
91
|
+
pip install citrascope
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Optional Dependencies
|
|
95
|
+
|
|
96
|
+
For Linux-based telescope control (INDI):
|
|
97
|
+
|
|
98
|
+
```sh
|
|
99
|
+
pip install citrascope[indi]
|
|
100
|
+
```
|
|
95
101
|
|
|
96
102
|
This provides the `citrascope` command-line tool. To see available commands:
|
|
97
103
|
|
|
@@ -101,16 +107,18 @@ citrascope --help
|
|
|
101
107
|
|
|
102
108
|
## Usage
|
|
103
109
|
|
|
104
|
-
|
|
110
|
+
### Starting the Daemon
|
|
111
|
+
|
|
112
|
+
Run the daemon with:
|
|
105
113
|
|
|
106
114
|
```sh
|
|
107
|
-
citrascope
|
|
115
|
+
citrascope
|
|
108
116
|
```
|
|
109
117
|
|
|
110
|
-
|
|
118
|
+
By default, this starts the web interface on `http://localhost:24872`. You can customize the port:
|
|
111
119
|
|
|
112
120
|
```sh
|
|
113
|
-
citrascope
|
|
121
|
+
citrascope --web-port 8080
|
|
114
122
|
```
|
|
115
123
|
|
|
116
124
|
## Developer Setup
|
|
@@ -174,10 +182,10 @@ Then create a release in the GitHub UI from the new tag. This triggers automatic
|
|
|
174
182
|
|
|
175
183
|
If you are using Visual Studio Code, you can run or debug the project directly using the pre-configured launch options in `.vscode/launch.json`:
|
|
176
184
|
|
|
177
|
-
- **Python: citrascope
|
|
178
|
-
- **Python: citrascope
|
|
185
|
+
- **Python: citrascope** — Runs the daemon with default settings
|
|
186
|
+
- **Python: citrascope (custom port)** — Runs with web interface on port 8080
|
|
179
187
|
|
|
180
|
-
To use these, open the Run and Debug panel in VS Code, select the desired configuration, and click the Run or Debug button.
|
|
188
|
+
To use these, open the Run and Debug panel in VS Code, select the desired configuration, and click the Run or Debug button.
|
|
181
189
|
|
|
182
190
|
## Running Tests
|
|
183
191
|
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
citrascope/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
citrascope/__main__.py,sha256=
|
|
3
|
-
citrascope/citra_scope_daemon.py,sha256=
|
|
2
|
+
citrascope/__main__.py,sha256=W7uY30MOuIlmhzVEoiZ_6BMmKrsqIvxcAxqw4-pOT3k,596
|
|
3
|
+
citrascope/citra_scope_daemon.py,sha256=XPskPbtenx-WNenlnbb5QhvvH_amK4vST-Uw6Pg2cts,13567
|
|
4
|
+
citrascope/constants.py,sha256=Mc7SLzCelUMDV96BIwP684fFLGANCOEO_mM3GCeRDVY,968
|
|
4
5
|
citrascope/api/abstract_api_client.py,sha256=gjmA9mw1O-TK16nYahOWClAwqPc_L1E3F2llZJeKTPw,624
|
|
5
|
-
citrascope/api/citra_api_client.py,sha256=
|
|
6
|
-
citrascope/hardware/abstract_astro_hardware_adapter.py,sha256=
|
|
6
|
+
citrascope/api/citra_api_client.py,sha256=8rpz25Diy8YhuCiQ9HqMi4TIqxAc6BbrvqoFu8u-orQ,6007
|
|
7
|
+
citrascope/hardware/abstract_astro_hardware_adapter.py,sha256=Xc1zNuvlyYapWto37dzFfaKM62pKDN7VC8r4oGF8Up4,8140
|
|
7
8
|
citrascope/hardware/adapter_registry.py,sha256=fFIZhXYphZ_p480c6hICpcx9fNOeX-EG2tvLHm372dM,3170
|
|
8
9
|
citrascope/hardware/indi_adapter.py,sha256=uNrjkfxD0zjOPfar6J-frb6A87VkEjsL7SD9N9bEsC8,29903
|
|
9
10
|
citrascope/hardware/kstars_dbus_adapter.py,sha256=Nv6ijVDvgTCTZUmRFh3Wh-YS7ChiztiXF17OWlzJwoo,7001
|
|
10
|
-
citrascope/hardware/nina_adv_http_adapter.py,sha256=
|
|
11
|
+
citrascope/hardware/nina_adv_http_adapter.py,sha256=Jzg9j74bEFdY77XX-O-UE-e3Q3Y8PQ-xL7-igXMqbwg,27637
|
|
11
12
|
citrascope/hardware/nina_adv_http_survey_template.json,sha256=beg4H6Bzby-0x5uDc_eRJQ_rKs8VT64sDJyAzS_q1l4,14424
|
|
12
13
|
citrascope/logging/__init__.py,sha256=YU38HLMWfbXh_H-s7W7Zx2pbCR4f_tRk7z0G8xqz4_o,179
|
|
13
14
|
citrascope/logging/_citrascope_logger.py,sha256=GkqNpFJWiatqrBr8t4o2nHt7V9bBDJ8mysM0F4AXMa8,3479
|
|
14
|
-
citrascope/logging/web_log_handler.py,sha256=
|
|
15
|
+
citrascope/logging/web_log_handler.py,sha256=d0XQzHJZ5M1v3H351tdkBYg7EOwFzXpp7PA9nYejIV0,2659
|
|
15
16
|
citrascope/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
citrascope/settings/citrascope_settings.py,sha256=
|
|
17
|
+
citrascope/settings/citrascope_settings.py,sha256=C9BgX3vKDnsbwZF1NskUmkczB5ESdOSWPaHrq4rA0aQ,5635
|
|
17
18
|
citrascope/settings/settings_file_manager.py,sha256=Yijb-I9hbbVJ2thkr7OrfkNknSPt1RDpsE7VvqAs0a8,4193
|
|
18
|
-
citrascope/tasks/runner.py,sha256
|
|
19
|
+
citrascope/tasks/runner.py,sha256=-1xSrM2Kvckmn2dg3rs2w-ljsKAbCgrftdvEkZrGaKs,13697
|
|
19
20
|
citrascope/tasks/task.py,sha256=0u0oN56E6KaNz19ba_7WuY43Sk4CTXc8UPT7sdUpRXo,1287
|
|
20
21
|
citrascope/tasks/scope/base_telescope_task.py,sha256=wIdyUxplFNhf_YMdCXOK6pG7HF7tZn_id59TvYyWZAY,9674
|
|
21
22
|
citrascope/tasks/scope/static_telescope_task.py,sha256=XP53zYVcyLHLvebDU06Jx0ghPK3tb0c_XmO60yj_XSA,1132
|
|
22
23
|
citrascope/tasks/scope/tracking_telescope_task.py,sha256=k5LEmEi_xnFHNjqPNYb8_tqDdCFD3YGe25Wh_brJXHk,1130
|
|
23
24
|
citrascope/web/__init__.py,sha256=CgU36fyNSxGXjUy3hsHwx7UxF8UO4Qsb7PjC9-6tRmY,38
|
|
24
|
-
citrascope/web/app.py,sha256=
|
|
25
|
-
citrascope/web/server.py,sha256=
|
|
25
|
+
citrascope/web/app.py,sha256=LGimBCHWmaPrLkh6JDpJ7IoC__423lhO7NldQGTFzKI,26181
|
|
26
|
+
citrascope/web/server.py,sha256=IJJk4HgEwcsjHercL-Q5z39NmJRbkNk_51HIUKKhtRE,5242
|
|
26
27
|
citrascope/web/static/api.js,sha256=s-b1FIw-pTo3A8kLlLINVqHhIvfHwTWA7cEvz4N8Gqc,1924
|
|
27
|
-
citrascope/web/static/app.js,sha256=
|
|
28
|
-
citrascope/web/static/config.js,sha256=
|
|
29
|
-
citrascope/web/static/style.css,sha256=
|
|
28
|
+
citrascope/web/static/app.js,sha256=yvthXW68B0JedxuE8cF6HYfcH7ukDQ7g959o0DNhY80,26214
|
|
29
|
+
citrascope/web/static/config.js,sha256=l0brTgkQ4UW-C9a2wabkvVGwb-wPnJSmM4lb63s0KbY,21500
|
|
30
|
+
citrascope/web/static/style.css,sha256=haVMnKlULZ-SL_qmLyqnrwHdX28s6KzVK9uE_R5nlLo,2877
|
|
30
31
|
citrascope/web/static/websocket.js,sha256=UITw1DDfehOKpjlltn5MXhewZYGKzPFmaTtMFtC0-Ps,3931
|
|
31
32
|
citrascope/web/static/img/citra.png,sha256=Bq8dPWB6fNz7a_H0FuEtNmZWcPHH2iV2OC-fMg4REbQ,205570
|
|
32
33
|
citrascope/web/static/img/favicon.png,sha256=zrbUlpFXDB_zmsIdhhn8_klnc2Ma3N6Q8ouBMAxFjbM,24873
|
|
33
|
-
citrascope/web/templates/dashboard.html,sha256=
|
|
34
|
-
|
|
35
|
-
citrascope-0.
|
|
36
|
-
citrascope-0.
|
|
37
|
-
citrascope-0.
|
|
38
|
-
citrascope-0.3.0.dist-info/RECORD,,
|
|
34
|
+
citrascope/web/templates/dashboard.html,sha256=7N5JPlihK3WNDe8fnFMfIRfCgp4ZZJLbl2TVc_nY0SU,30119
|
|
35
|
+
citrascope-0.5.0.dist-info/METADATA,sha256=dgATUjmZWMhRrItDYeCkZ-oy-AQz63BDdbeZHsWY12A,6481
|
|
36
|
+
citrascope-0.5.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
37
|
+
citrascope-0.5.0.dist-info/entry_points.txt,sha256=fP22Lt8bNZ_whBowDnOWSADf_FUrgAWnIhqqPf5Xo2g,55
|
|
38
|
+
citrascope-0.5.0.dist-info/RECORD,,
|
docs/index.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# CitraScope Documentation
|
|
2
|
-
|
|
3
|
-
Welcome to the CitraScope documentation.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
CitraScope is a Python application for remote telescope control, task automation, and data collection.
|
|
8
|
-
It connects to the Citra.space API and INDI hardware to execute observation tasks.
|
|
9
|
-
|
|
10
|
-
## Architecture
|
|
11
|
-
|
|
12
|
-
- **CLI Entrypoint:** `citrascope/__main__.py`
|
|
13
|
-
Handles configuration, authentication, and starts the task daemon.
|
|
14
|
-
- **API Client:** `citrascope/api/client.py`
|
|
15
|
-
Communicates with Citra.space for authentication, telescope, satellite, and ground station data.
|
|
16
|
-
- **Task Management:** `citrascope/tasks/runner.py`
|
|
17
|
-
Polls for tasks, schedules, and executes observations.
|
|
18
|
-
- **Settings:** `citrascope/settings/_citrascope_settings.py`
|
|
19
|
-
Loads configuration from environment variables.
|
|
20
|
-
|
|
21
|
-
## Configuration
|
|
22
|
-
|
|
23
|
-
See [README.md](../README.md) for installation and environment setup.
|
|
24
|
-
Environment variables are documented in `.env.example`.
|
|
25
|
-
|
|
26
|
-
## Usage
|
|
27
|
-
|
|
28
|
-
Run the CLI:
|
|
29
|
-
```sh
|
|
30
|
-
python -m citrascope start
|
|
31
|
-
```
|
|
32
|
-
Or use VS Code launch configurations for development and debugging.
|
|
33
|
-
|
|
34
|
-
## Testing
|
|
35
|
-
|
|
36
|
-
- **Unit tests** are written using [pytest](https://pytest.org/) and are located in the `tests/` directory.
|
|
37
|
-
- To run tests manually, use:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
pytest
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Further Documentation
|
|
44
|
-
|
|
45
|
-
- [API Reference](https://api.citra.space/docs)
|
|
46
|
-
- [Contributing Guide](contributing.md) (coming soon)
|
|
47
|
-
- [Troubleshooting](troubleshooting.md) (coming soon)
|
|
File without changes
|
|
File without changes
|