Zweck
NEOCP Machine ist eine Windows-GUI für den Beobachtungsworkflow rund um MPC NEOCP und PCCP. Der aktuelle Schwerpunkt liegt auf der Ermittlung sinnvoller Zielobjekte: aktuelle Listen laden, Residuen und Bewegungen bevorzugt mit Find_Orb bestimmen, Beobachtbarkeit anhand Bildfeld, Grenzgröße und Tycho-Stack bewerten und Änderungen sichtbar melden.
Die Anwendung läuft in dieser Phase bewusst im Trockenlauf. ASCOM-Simulatoren werden erkannt, echte Kamera- oder Montierungsbefehle werden aber nicht ungefragt gesendet.
Start und Updates
Beim Start lädt die App Konfiguration und Live-State aus dem Datenordner, stellt die letzten Tabellen wieder her und prüft nach kurzer Verzögerung die veröffentlichte versions.txt der Webseite. Wenn dort eine höhere Version steht, wird ein Update-Hinweis angeboten.
Die GUI verwendet eine Ein-Instanz-Sperre pro Datenordner. Wenn dieselbe Instanz bereits läuft, erscheint ein Hinweis statt eines zweiten Hauptfensters.
Die Titelzeile zeigt Station, Stationsdatum, UTC-Zeit, Stationszeit mit Zeitzonen-Kürzel und UTC-Differenz sowie den Countdown bis zum nächsten MPC-Refresh.
Hauptfenster
Das Fenster besteht aus einem ausblendbaren Konfigurationsblock links und dem Arbeitsbereich rechts. Rechts sitzen oben Status, Tag/Nacht-Grafik und Live-Log. Darunter befindet sich ein oberer Tab-Bereich mit Zielplanung, provisorisch verschwundenen Objekten, NEOCP/PCCP-Übersicht, eigenen Beobachtungen, Grenzmodell, Ereignissen und Live-State.
Tabellen verwenden eine Schrift mit fester Zeichenbreite. Zahlenwerte sind rechtsbündig. Spaltenköpfe sortieren die sichtbare Tabelle; die manuelle Sortierung wird beim Beenden nicht gespeichert. Spaltenbreiten werden dagegen dauerhaft gespeichert.

Konfiguration links
Alle Eingabefelder besitzen ausführliche Hovertexte. Änderungen werden laufend gespeichert. Der Konfigurationsblock kann eingeklappt werden; der Griff bleibt sichtbar, damit er wieder erreichbar ist.
| Feld | Bedeutung |
|---|---|
| Stationscode | MPC-Observatory-Code. Nachschlagen übernimmt Stationsname, Breite und Länge aus der MPC-Quelle. |
| Stationsname | Wird für Titelzeile, Zeitzonenbestimmung und Protokoll verwendet. Bekannte Orte wie Chile/Rio Hurtado werden auf die passende Zeitzone gemappt; sonst dient die Länge als Fallback. |
| Breite, Länge Ost | Geografische Koordinaten in Grad. Die Länge ist positiv nach Osten; Westlängen können als 360-Wert aus MPC-Tabellen erscheinen. |
| MPC Refresh s | Automatischer Abruf der MPC-Tabellen. Unter 5 Minuten erscheint eine Warnung wegen möglicher IP-Sperren; unter 1 Minute und über 30 Minuten werden verweigert. |
| Belichtung s | Standardbelichtung für simulierte Einzelaufnahmen und Statusanzeigen. |
| Modell x s | Referenzzeit für das Grenzgrößenmodell: Welche Grenzgröße wird in dieser Belichtungszeit erwartet? |
| Modell bis Sonne | Sonnenhöhe, bis zu der Zenitbelichtungen für das Modell gesammelt werden. Standard: -15 Grad. |
| Feld B x H | Bildfeldbreite und -höhe in Bogenminuten. Die FITS-Analyse kann diese Werte übernehmen. |
| Rotation | Bildfeldrotation in Grad. Wird für spätere Feldprüfung und FITS-Diagnose gespeichert. |
| Residuum-Faktor | Anteil der Bildfelddiagonale, der als zulässiges Residuum gilt. |
| Sigma | Nachweisschwelle für die 3σ-Belichtungsrechnung. |
| Grenzmag @s | Simulierte Grenzgröße und zugehörige Referenzzeit. FITS- oder Stack-Schätzungen können die Werte aktualisieren. |
| Max Einzel s | Grenze, ab der die App statt Einzelbelichtung lieber Tycho-Stacking bewertet. |
| Tycho Subs / Tycho max Frames | Subframe-Länge und maximale Framezahl. Die Zielplanung rechnet immer mit drei Tycho-Stacks. |
| Ziel Refresh s | Intervall für die Zielplanung. Die App warnt oder verweigert extreme Werte wie beim MPC-Refresh. |
| Nutzfeld % | Prozentanteil des Bildfelds, der für die Durchquerungszeit nutzbar sein muss. Der Wert wird ganzzahlig gespeichert. |
| Trockenlauf | Derzeit fest aktiv. Die App simuliert Kamera, Montierung und Fokusbefehle. |
| ASCOM-Treiber | Auswahl der gefundenen Kamera-, Montierungs- und Fokussierer-Treiber. |
| Tycho / find_orbit | Gefundene Programmpfade. Ist eine Komponente vorhanden, ist der Installationsbutton grau und der Pfad kann über den Hover kopiert werden. |
| Platesolve-Befehl | CLI-Aufruf für einen lokalen Platesolver. Platzhalter wie {image}, {output}, {tycho} und {find_orbit} werden ersetzt. |
| FITS laden | Lädt eine oder mehrere FITS-Dateien, analysiert Headerdaten und speichert das Ergebnis bis zur nächsten Analyse. |
Status und Tag/Nacht
Der Statusblock listet ASCOM-Erkennung, Treiber, Tycho, Find_Orb, NEOCP/PCCP-Zahlen, Internetstatus und Automatikzustand. Bei fehlender Internetverbindung erscheint eine rote, fett blinkende Zeile.
Die Tag/Nacht-Grafik zeigt 24 Stunden, die aktuelle Zeit liegt in der Mitte. Die Skala markiert volle Drei-Stunden-Schritte als 00h, 03h usw. Die Beschriftung kann zwischen UTC und Stationszeit umgeschaltet werden.
| Marke | Bedeutung |
|---|---|
| SA / SU | Sonnenaufgang und Sonnenuntergang unten in der Grafik. |
| MA / MU | Mondaufgang und Monduntergang oben in der Grafik. |
| Mondbalken | Oberer Balken bis etwa ein Drittel der Grafikhöhe. Je heller der Mond, desto heller wird der Nachtbereich. |
Zielplanung
Der Tab Zielplanung enthält die berechneten Kandidaten. Nur Objekte innerhalb der eingestellten Helligkeits- und Bewegungsfilter erscheinen. Wenn der Filter Objekte ausblendet, blinkt die Beschriftung des jeweiligen Grenzfelds langsam.
| Spalte | Inhalt |
|---|---|
| # | Laufende Nummer der Erstsortierung. |
| Objekt | NEOCP/PCCP-Bezeichnung. Doppelklick öffnet eine lokale Objektseite. |
| Prio | Interner Beobachtungs-Score. Höher bedeutet dringender. Formel: Residuum + 0,35 × Drop + Helligkeitsbonus + 1000, wenn das Residuum außerhalb des Grenzwerts liegt. |
| Resid " | Residuum in Bogensekunden. Find_Orb hat Vorrang; simulierte Werte werden tiefrot markiert. |
| RA / Dec | Berechnete Position zur Zeit über der Tabelle. RA in Stunden/Minuten, Dec auf ganze Bogenminuten. |
| V | Visuelle Helligkeit aus der MPC-Tabelle, eine Nachkommastelle. |
| "/min | Eigenbewegung in Bogensekunden pro Minute. Find_Orb-/OBS80-Daten werden bevorzugt verwendet. |
| 3σ exp | Erforderliche Belichtungszeit für den Sigma-Nachweis, eine Nachkommastelle. |
| Nutzfeld s | Ganze Sekunden, bis das Objekt den eingestellten nutzbaren Bildfeldanteil durchquert. |
| Tycho Stack | Bewertung von drei Tycho-Stacks mit Subframe-Länge und Framezahl. |
| Drop | Dringlichkeitsschätzung, wann ein Objekt voraussichtlich eine provisorische Bezeichnung erhält und aus NEOCP verschwindet. |
| MPC Update | Kurzer Update-Text, z.B. Upd May 23.48 UT (02:15). |
| Anz | Anzahl der Beobachtungen aus der aktuellen MPC-Zeile. |
| Arc | Beobachtungsbogen aus der aktuellen MPC-Zeile, als dd:hh:mm. |
| Änderung | Kurzstatus gleich, neue Beos oder neu mit Alter in Klammern als hh:mm. |
Farben und Blinken
Der Knopf Farben? öffnet dieselbe Erklärung direkt in der App. Der Knopf Farben an/aus/alt schaltet Farben und Blinken um.
| Darstellung | Bedeutung |
|---|---|
| Hellrot bis tiefrot | Neue Beobachtungen liegen unter 3 Stunden zurück. Je frischer, desto kräftiger. |
| Hellgrün bis tiefgrün | Seit mindestens 3 Stunden keine neuen Daten. Nach 12 Stunden ist das Grün am kräftigsten. |
| Tiefrot blinkend | Neu publiziertes Objekt innerhalb der letzten 6 Stunden. |
| Tiefrote Schrift | Mindestens ein Tabellenwert ist simuliert. |
| Graue Schrift | Für dieses Objekt liegen OBS80-Zeilen mit dem eigenen Stationscode vor. Die Zeile bleibt sortier- und klickbar. |
| Drop-Zelle blinkt | Nur die Drop-Zelle blinkt. Mittlere Werte blinken langsam, kritische Werte schnell. |
Tabs
| Tab | Inhalt |
|---|---|
| Zielplanung | Aktuelle priorisierte Beobachtungsplanung. |
| Prov. | Seit Start aus NEOCP/PCCP verschwundene Objekte erscheinen hier nur, wenn der MPC-Index ToConfirm_PrevDes eine Zuordnung meldet. Die App zeigt die provisorische Bezeichnung und das MPEC; wenn dort kein MPEC steht, zeigt sie die alternative Bezeichnung oder den MPC-Status wie was not confirmed. Reine offene Platzhalter werden nicht mehr angezeigt. |
| NEOCP / PCCP | Direkte Übersicht aus den MPC-Tabellen mit aktuellen Positionen, Beobachtungszahlen und Helligkeiten. |
| Eigene Obs | OBS80-Zeilen, in denen der eigene Stationscode vorkommt. Zusätzlich kann eine lokale sortierbare HTML-Tabelle geöffnet werden. |
| Grenzmodell | Zenit- und FITS-basierte Messpunkte für das Grenzgrößenmodell. |
| Ereignisse | Live-Log der aktuellen Arbeitsschritte. |
| Live-State | Rohansicht des gespeicherten Live-State zur Diagnose. |
Objektseite
Ein Doppelklick auf ein Objekt öffnet eine lokal erzeugte HTML-Seite. Sie enthält die aktuellen Werte, eine Find_Orb-ähnliche Textdarstellung, eine Ephemeride, einen Kartenbereich und einen Linkstatus zur Bill-Gray-Seite.
Wenn die Bill-Gray-Datei noch nicht existiert, weist die Seite darauf hin, dass die Datei bis zu eine Stunde verzögert verfügbar werden kann. Der Link bleibt anklickbar.
Die lokale Ephemeride beginnt immer mit der letzten vollen Stunde in der Vergangenheit und läuft 48 Stunden im 10-Minuten-Takt. Angegeben werden RA, Dec, V, Bewegung, geozentrische Distanz, Sonnenabstand, Azimut, Höhe, Sonnenelongation, Mondelongation, Mondbeleuchtung und die Quelle der Werte. Für jeden Eintrag werden Position, Höhe und Azimut neu aus der aktuellen Zeile berechnet; Simulationen sind als solche markiert.
Sternkarte
Die Standard-Hoverkarte nutzt die schnelle BigSky-Direktansicht für große Felder. Wenn ein lokaler Gaia-DR3-Katalog vorhanden ist, schaltet die Karte bei kleinen Feldern bis 3° automatisch auf Gaia um. Sie kann per Mausrad bis 90° heraus- und bis 0,25° hineingezoomt werden. Der Knopf Detail schaltet die langsamere Ansicht mit Sternbildlinien, Sternbildgrenzen, Deep-Sky-Objekten und Milchstraßenkonturen bewusst zu. Label schaltet Deep-Sky-Beschriftungen um.
Weitere gefilterte NEOCP/PCCP-Objekte im Bildfeld werden blau eingezeichnet und unten mit V und Bewegung notiert. Die Objektposition zeigt zusätzlich eine Unsicherheitsellipse, wenn lokale Planungsdaten vorhanden sind. Der Export erzeugt eine Finder-HTML-Seite mit 2°-Karte, Ephemeride, Höhengrafik und Find_Orb-Block.

Eigene MPC-Beobachtungen
Beim MPC-Refresh lädt die App für die gelesenen Objekte OBS80-Daten und sucht den eigenen Stationscode am Ende der Zeilen. Treffer werden in Eigene Obs gezeigt. In den NEOCP/PCCP- und Zieltabellen werden betroffene Objektzeilen grau dargestellt, bleiben aber vollständig bedienbar.
FITS-Analyse
Die Analyse wird gespeichert und bleibt nach Programmende erhalten, bis neue FITS-Dateien analysiert werden. Während der Analyse zeigt die App einen Fortschrittsbalken.
Bildfeldberechnung
Die App bestimmt zuerst den Plattenmaßstab in Bogensekunden pro Pixel. Die Reihenfolge ist:
- Explizite Headerwerte wie
SECPIX,PIXSCALE,SCALE. - WCS-Werte aus
CDELT1/2oder der CD-Matrix. - Optische Näherung:
206.265 × Pixelgröße_µm / Brennweite_mm.
Dann gilt: Bildfeld_Breite' = NAXIS1 × Maßstab / 60 und Bildfeld_Höhe' = NAXIS2 × Maßstab / 60. Der Binning-Faktor wird nicht zusätzlich multipliziert, wenn die im Header angegebene Pixelgröße bereits die effektive gebinnte Pixelgröße ist. Die Diagnose zeigt deshalb auch, wie groß der Fehler wäre, wenn man das Binning fälschlich noch einmal einrechnet.
Grenzgröße
Wenn ein FITS-Header Grenzgrößenfelder wie LIMMAG, MAGLIM, LIMITMAG oder LMAG enthält, werden diese bevorzugt. Fehlen sie, erzeugt die App eine nicht katalogkalibrierte Rausch-/SNR-Schätzung aus der Vorschau. Für mehrere Bilder wird eine Stack-Näherung über die Gesamtbelichtungszeit gebildet.
Ein Doppelklick auf eine FITS-Zeile öffnet links die scrollbaren Headerkarten und rechts ein doppelt großes, automatisch skaliertes Vorschaubild. Der Pfeilbutton öffnet die FITS-Datei in der Windows-Standard-App.
Automatik
Es gibt nur einen Automatik-Schalter. Beim Einschalten fragt die App, ob der Lauf nur diesmal oder dauerhaft beim App-Start aktiv sein soll. Grün bedeutet aktiv für diesen Lauf; dunkelgrün bedeutet dauerhaft aktiv. Beim Ausschalten fragt die App entsprechend nach nur jetzt oder dauerhaft aus.
Der Ablauf ist: Sonnenuntergang bestimmen, Kamera auf etwa 50 Prozent Kühlleistung regeln oder auf Umgebung minus 20 Grad gehen, absolute Kameragrenze beachten, bei Sonne unter -10 Grad in Zenitnähe fahren, Histogramm und Sterne prüfen, Platesolve/Fokus prüfen und bis zur Modellgrenze weiterbelichten.
Tray-Betrieb
Beim Minimieren wandert die App in das Windows-Tray. Neue Objekte lassen das Tray-Symbol blinken; der Hover nennt die betroffenen Objekte. Das Blinken endet erst, wenn das Fenster aus dem Tray geöffnet wird. Größe und Position des Fensters werden gespeichert und beim Wiederherstellen verwendet.
Im Tray-Menü können die Objektänderungen seit Start angezeigt, neue Objekte erneut vorgelesen und laufende Ansagen abgebrochen werden. Die Vorlesefunktion liest rückwärts, also das neueste Objekt zuerst, buchstabiert die Bezeichnung langsam und ergänzt die gerundete Größenklasse. Automatische Wiederholungen erfolgen mit jeweils verdoppeltem Abstand und enden nach insgesamt vier Ansagen oder bei Mausbewegung.
Ansage abbrechen läuft im Hintergrund und blockiert die Oberfläche nicht mehr. Wiederholungen werden sofort gestoppt; der Windows-SAPI-Abbruch wird anschließend asynchron an die Sprachengine gesendet.
Web-Downloads prüfen
Der Menüpunkt Web-Downloads prüfen ist kein Cloud-Sync. Er liest die veröffentlichte versions.txt, prüft die Download-URLs und vergleicht, soweit lokal vorhanden, Dateigrößen und SHA256-Werte. Wenn das Setup noch nicht öffentlich synchron ist, weist die App Onedir als vorläufig empfohlenen Download aus.

Berechnungen
| Wert | Berechnung |
|---|---|
| Residuum-Grenze | Residuum-Faktor × sqrt(Breite² + Höhe²) × 60 in Bogensekunden. |
| 3σ-Belichtung | Referenzzeit × 10^((V - Grenzmag) / 1.25) × (Sigma/3)², begrenzt auf 0,5 bis 3600 Sekunden. |
| Nutzfeldzeit | Nutzfeld% × Bildfelddiagonale × 60 / Bewegung, danach in Sekunden umgerechnet. |
| Tycho-Stack | 3 × Frames × Subbelichtung. Frames werden aus der benötigten Belichtungszeit abgeleitet und gegen Tycho max Frames begrenzt. |
| Drop | 100 / (1 + Resttage). Ohne externe MPEC-Statistik nutzt die App 5,5 Tage + 0,35 × Arc als Erwartungswert. |
| Prio | Residuum + 0,35 × Drop + max(0, 22 - V); außerhalb der Residuum-Grenze kommen 1000 Punkte hinzu. |
Speicherorte
Standardmäßig liegen Konfiguration, Live-State, Logs, FITS-Analyse, Objektseiten, OBS80-Cache und temporäre Diagnose unter %APPDATA%\NEOCPMachine. Für Tests kann per CLI oder Umgebungsvariable NEOCP_MACHINE_HOME ein anderer Datenordner verwendet werden.
CLI
Die separate CLI-EXE startet keine GUI. Sie dient für Diagnose, Smoke-Tests und einmalige MPC-Abrufe.
| Parameter | Funktion |
|---|---|
--help | Hilfe anzeigen. |
--version | Version ausgeben. |
--state-dir PFAD | Alternativen Datenordner verwenden. |
--diagnose | Hardware- und Softwarediagnose als JSON ausgeben. |
--fetch-once | MPC einmal laden, Zielplanung speichern. |
--mpec-stats | Aktuell nicht in der GUI sichtbar; CLI kann die Statistik weiter erzeugen. |
--build-gaia-catalog --gaia-mag 15 | Gaia-DR3-Katalog bis G<=15 im lokalen Cache erzeugen. Ohne Grenzwert nimmt das separate Skript ebenfalls 15 an. |
--gaia-output-dir PFAD | Zielordner für den Gaia-Katalog. Die App bietet Dokumentation, Fortschrittsanzeige und Ordneröffnung im Menü Kataloge. |
--self-test | Offline-Parser-, Speicher- und Modelltest. |
Externe Module, Datenquellen und Nutzungsbedingungen
Die App nennt diese Übersicht auch im Menü Hilfe. Die automatisch erzeugte Paketliste steht zusätzlich in bundled_modules.html.
- Python und Standardbibliothek: https://www.python.org/
- Tk/Tcl über tkinter: https://www.tcl.tk/
- pywin32/pythoncom für Windows-SAPI: https://github.com/mhammond/pywin32
- comtypes für ASCOM-COM-Zugriff: https://github.com/enthought/comtypes
- pystray und Pillow für Tray-Icon und Bilder: https://github.com/moses-palmer/pystray, https://python-pillow.org/
- pyarrow/Parquet für lokale Stern- und Gaia-Kataloge: https://arrow.apache.org/
- starplot/astropy als optionale Karten- und Sternbildhelfer: https://github.com/steveberardi/starplot, https://www.astropy.org/
- MPC NEOCP/PCCP, PrevDes, MPECs, OBS80 und Observatory-Code-Daten: https://www.minorplanetcenter.net/iau/NEO/toconfirm_tabular.html
- Project Pluto, Find_Orb und NEOCP2-Seiten: https://www.projectpluto.com/find_orb.htm
- ESA Gaia DR3/TAP: https://www.cosmos.esa.int/web/gaia/dr3
- OpenNGC-Deep-Sky-Daten: https://github.com/mattiaverga/OpenNGC
- JPL-DE421-Ephemeriden: https://ssd.jpl.nasa.gov/planets/eph_export.html
- ASCOM und Tycho Tracker bleiben externe Installationen mit eigenen Nutzungsbedingungen: https://ascom-standards.org/, https://www.tycho-tracker.com/
Diese Quellen behalten ihre jeweiligen Lizenzen und Nutzungsbedingungen. NEOCP Machine speichert sie nur lokal für den konfigurierten Workflow und lizenziert Fremddaten nicht neu.
Problembehebung
| Symptom | Prüfung |
|---|---|
| MPC-Refresh bleibt bei 00:00 | Internetstatus prüfen, Log lesen, manuellen MPC jetzt abrufen auslösen. Nach Klick springt der Countdown auf den Startwert. |
| Find_Orb fehlt | Pfad prüfen oder Tycho/MPC-Neo-Alert-Helfer installieren. Ohne Find_Orb sind Residuen und Bewegungen nur eingeschränkt belastbar. |
| FITS-Bildfeld falsch | Diagnose öffnen und Maßstab, Pixelgröße, Brennweite, NAXIS und Binning prüfen. Binning wird nicht doppelt auf die Pixelgröße gerechnet. |
| Sternkarte leer | Die App nutzt einen lokalen Sterne-Fallback. Wenn im gewählten 10×10-Grad-Feld kein Stern im Offline-Katalog liegt, erscheint ein Hinweis. |
| Setup wirkt groß | Die GUI enthält Python, Tk, COM/ASCOM, Tray-Unterstützung, FITS-Vorschau, Astronomiedaten und den lokalen Sternkatalog. Details stehen in der README und auf der Webseite. |
