# TI-Monitor — Benutzerhandbuch

Anleitung fuer die Ueberwachung von KoCoBox MED+ und RISE Konnektoren **und** ORGA Kartenterminals (6141 online / Neo) an IKK Kliniken.

---

## 1. Installation

### Automatische Installation (empfohlen)

PowerShell oeffnen und diesen Befehl ausfuehren:

```powershell
irm https://downloads.c3po42.de/ti-monitor/install.ps1 | iex
```

Das Script:
- Laedt TI-Monitor nach `C:\TI-Monitor` herunter
- Installiert Python-Abhaengigkeiten (fastapi, uvicorn, httpx)
- Startet das Dashboard
- Oeffnet den Browser automatisch

### Manuelle Installation

1. Dateien nach `C:\TI-Monitor` kopieren
2. PowerShell oeffnen, in das Verzeichnis wechseln:
   ```powershell
   cd C:\TI-Monitor
   pip install -r requirements.txt
   python main.py
   ```
3. Browser oeffnet sich automatisch unter `http://localhost:8443`

### Port-Konflikt

Falls Port 8443 bereits belegt ist, wechselt TI-Monitor automatisch auf Port 8444. Die Meldung erscheint in der Konsole.

---

## 2. Ersten Konnektor hinzufuegen

1. Dashboard im Browser oeffnen: `http://localhost:8443`
2. Auf **"Konnektor hinzufügen"** klicken (oder das + Symbol)
3. Folgende Daten eingeben:

| Feld | Beispiel | Pflicht |
|---|---|---|
| Name | KoCoBox Haupthaus | Ja |
| IP-Adresse | 192.168.1.100 | Ja |
| Standort | IKK Haupthaus | Nein |
| Profil | KoCoBox MED+ / RISE Konnektor / Generisch TLS | Ja |
| Port | 9443 fuer KoCoBox, 8443 fuer RISE, 443 fuer Generisch TLS | Nein |

4. Speichern — der erste Check wird sofort ausgefuehrt
5. Die Status-LED zeigt das Ergebnis:
   - **Gruen** = Konnektor erreichbar
   - **Rot** = Konnektor nicht erreichbar
   - **Grau** = Noch kein Check durchgefuehrt

### Woher bekomme ich die IP-Adresse?

Die IP-Adresse der KoCoBox MED+ finden Sie:
- In der Netzwerk-Dokumentation Ihrer Klinik
- Ueber das CGM-Konfigurationstool
- Im DHCP-Server Ihrer IT-Abteilung
- Standard-Port der KoCoBox ist **9443**
- Standard-Port der RISE-Management-Oberflaeche ist **8443**

---

## 3. Das Dashboard verstehen

### Status-Uebersicht (oben)

Die Statistik-Leiste zeigt auf einen Blick:
- **Gesamt** — Anzahl konfigurierter Konnektoren
- **Online** — Aktuell erreichbare Konnektoren
- **Offline** — Nicht erreichbare Konnektoren

### Konnektor-Karten

Jede Karte zeigt:

| Element | Bedeutung |
|---|---|
| Status-LED | Gruen = online, Rot = offline |
| Name | Frei gewaehlter Name des Konnektors |
| Standort | Klinik-Standort |
| Profil | Herstellerprofil fuer die passende Prueflogik |
| IP:Port | Netzwerkadresse |
| Antwortzeit | Letzte Response-Time in Millisekunden |
| Zertifikat | SSL-Ablaufdatum und Aussteller |
| Timeline | 30 Punkte = letzte 30 Checks als Mini-Balkendiagramm |

### Timeline (30-Punkt-Verlauf)

Die Timeline zeigt die letzten 30 Check-Ergebnisse als farbige Punkte:
- **Gruen** = Konnektor war erreichbar
- **Rot** = Konnektor war nicht erreichbar

So erkennen Sie Ausfallmuster (z.B. naechtliche Wartungsfenster oder wiederkehrende Probleme).

### Verbindungsstatus (oben rechts)

Das Badge zeigt, ob die Live-Verbindung zum TI-Monitor-Server steht:
- **Gruen "Verbunden"** = SSE-Verbindung aktiv, Updates kommen live
- **Rot "Getrennt"** = Verbindung verloren, Seite neu laden

---

## 4. Konnektoren verwalten

### Bearbeiten

Klicken Sie auf das Bearbeiten-Symbol einer Konnektor-Karte. Aenderbare Felder: Name, IP, Standort, Profil, Port, Aktiviert/Deaktiviert.

### Deaktivieren

Deaktivierte Konnektoren werden nicht mehr gepollt, bleiben aber in der Konfiguration erhalten. Nuetzlich fuer geplante Wartungen.

### Loeschen

Entfernt den Konnektor komplett inkl. Historie. Diese Aktion kann nicht rueckgaengig gemacht werden.

### Sofort-Check

Ueber den Check-Button auf einer Karte wird sofort ein einzelner Check ausgefuehrt — unabhaengig vom Polling-Intervall.

### Netzwerksuche

Ueber den Button **"Netzwerksuche"** neben dem Pruefintervall kann TI-Monitor das lokale Netzwerk nach passenden Geraeten durchsuchen.

1. CIDR pruefen oder eintragen, z.B. `192.168.1.0/24`
2. **Suchen** starten
3. Treffer pruefen und **"Uebernehmen"** klicken
4. Standort, Passwoerter oder PINs ergaenzen und speichern

Die Suche ist auf lokale/private IPv4-Netze begrenzt und scannt maximal 512 Hosts. Erkannt werden KoCoBox MED+, RISE Konnektoren, ORGA-/Kartenterminal-Hinweise und generische TLS-Endpunkte.

### KoCoBox-Managementschnittstelle einbinden (optional)

Wenn der TI-Monitor sich auf der **KoCoBox-Managementschnittstelle** (das ist die `koco-root`-Web-UI auf Port 9443) anmelden darf, liefert er deutlich mehr als nur "online/offline". Diese Detailfunktion gibt es nur fuer das Profil **KoCoBox MED+**; RISE wird ueber Management-Port und `connector.sds` geprueft:

- Liste **aller Karten** an dieser KoCoBox: eGK, HBA, SMC-B, SMC-KT mit ICCSN, Slot, Kartenterminal-Hostname, Kartenbesitzer und **Ablaufdatum**
- Liste aller **registrierten Kartenterminals** (kann zur Auto-Befuellung der Terminal-Sektion genutzt werden)
- Liste der **Konnektor-eigenen Zertifikate** (gSMC-K, NK-VPN, SIS) mit Ablauf
- **Firmware-Version**, Hardware, Krypto-Status (RSA/ECC), Uptime
- Anzahl Fehler/Warnungen aus dem Protokollierungsdienst

**So aktivieren:**

1. Konnektor bearbeiten (Stift-Symbol)
2. **KoCoBox Benutzer** = `koco-root` (Default)
3. **KoCoBox Passwort** = das Klinik-Passwort fuer den `koco-root`-Account
4. Schalter **"Karten/Terminals/Zertifikate auslesen"** aktivieren
5. Speichern

Beim naechsten Polling-Zyklus loggt sich TI-Monitor an, scraped die 5 Dienste und zeigt:

- **Counter-Chips** auf der Konnektor-Karte: "12 Karten · 7 Terminals · 4 Zertifikate"
- **Alarm-Chips** wenn etwas auflaeuft: "3 <30 Tage" (rot) oder "5 <90 Tage" (gelb)
- **Klinik-weiten Alarm-Banner** ganz oben, der die Alarme aller KoCoBoxen aufsummiert

Der Banner ist die wichtigste Anzeige — wenn dort steht **"3 Karten laufen in <30 Tagen ab"**, hast du die Beschaffung in 2-3 Wochen vergessen, und mindestens eine Praxis kann demnaechst keine eGK mehr lesen.

### Detailansicht oeffnen

Auf einer KoCoBox-Karte mit aktivem Scrape erscheint der **"Details"**-Button. Klick oeffnet ein groesseres Modal mit 4 Tabs:

- **Karten** — Tabelle aller Karten, **sortiert nach Ablauf aufsteigend** (kuerzeste Restlaufzeit oben). Faerbung: rot <30 Tage, gelb <90 Tage. Spalten: Slot, Typ (eGK/HBA/SMC-B/SMC-KT), Terminal, Besitzer, ICCSN-Suffix, Version, Ablauf.
- **Kartenterminals** — Liste der von der KoCoBox erkannten Terminals. Wenn ein Terminal noch nicht im TI-Monitor erfasst ist, gibt es einen Button **"uebernehmen"** — der wechselt direkt ins Terminal-Hinzufuegen-Modal mit vorausgefuellten Feldern. Admin-Passwort und SMC-B-PIN muessen noch manuell eingetragen werden.
- **Zertifikate** — Konnektor-eigene Zertifikate mit Ablauf, ebenfalls sortiert.
- **System** — Firmware, Hardware, Krypto-System, Uptime, Protokoll-Zaehler.

Der Button **"Jetzt scrapen"** im Detail-Modal triggert einen Sofort-Refresh, ohne auf den naechsten Polling-Zyklus zu warten.

### Was passiert, wenn die Anmeldung scheitert?

Falls KoCoBox-Login fehlschlaegt (falsches Passwort oder Pfad-Discovery findet keinen Login-Endpoint), werden die Counter-Chips ausgeblendet und das Detail-Modal zeigt einen Hinweis. **Der Erreichbarkeits-Check bleibt davon unberuehrt** — die Konnektor-Karte zeigt weiterhin online/offline. Es geht nur die Detail-Information verloren.

### Sicherheit

Das `koco-root`-Passwort liegt **verschluesselt** in `config.json` (Fernet, Schluessel maschinengebunden). Der Account hat im Default `SuperAdmin`-Rechte. **Wir benutzen die Session ausschliesslich lesend** — keine Aenderungen, keine Karten-Aktivierung, keine PIN-Manipulation auf Konnektor-Ebene. Das ist Absicht: regulatorisch heikel und mit Klinik-Praxis kollidierend.

> Idealerweise legt die IT-Abteilung der Klinik einen separaten Read-Only-Account an. Wenn das die KoCoBox-Firmware unterstuetzt, einfach beim Anlegen den entsprechenden Benutzernamen statt `koco-root` eintragen.

---

## 4a. Kartenterminals (ORGA) verwalten

Unter den Konnektoren befindet sich die zweite Sektion **"Kartenterminals"**. Hier werden ORGA 6141 online / ORGA Neo Geraete gepflegt — also die Lesegeraete fuer eGK und SMC-B im Empfangsbereich.

### Terminal hinzufuegen

1. Auf **"Kartenterminal hinzufügen"** klicken
2. Felder ausfuellen:

| Feld | Beispiel | Pflicht |
|---|---|---|
| Name | ikt-smcb-2 | Ja |
| IP-Adresse | 10.120.33.12 | Ja |
| Standort | Anmeldung Raum 2 | Nein |
| Port | 443 (Standard) | Nein |
| Remote Admin Passwort | (das aus dem Login-Bildschirm) | Ja |
| SMC-B PIN | (aus dem Praxiskarten-Briefumschlag) | Nein |
| SMC-B Slot | 1 (Standard) | Nein |
| Auto-Entsperrung | aus / ein | Nein |

3. Speichern — der erste Login + Status-Scrape laeuft sofort.

> **Sicherheitshinweis:** Sowohl Admin-Passwort als auch SMC-B-PIN werden **verschluesselt** in `config.json` abgelegt (Fernet, Schluessel maschinengebunden). Eine Kopie der Datei auf einem anderen PC ist nicht entschluesselbar. Trotzdem: PCs mit TI-Monitor entsprechend zugriffssichern.

### Was zeigt eine Terminal-Karte?

- **Status-LED** — wie beim Konnektor: gruen / rot / grau
- **Produktversion** — z.B. `3.9.2:1.2.0`
- **TLS Konnektor** — `SICCT open` (gruen) oder `closed` (rot)
- **SMC-B PIN** — Badge mit aktuellem Karten-PIN-Status:
  - `verified` (gruen) — Karte freigeschaltet, Praxis kann arbeiten
  - `transport-PIN` (gelb) — Karte hat noch Transport-PIN, muss einmal mit der echten PIN entsperrt werden
  - `blockiert` (rot) — Karte ist gesperrt, manuelle Entblockung mit PUK noetig
  - `keine Karte` (grau) — kein SMC-B im Slot
- **gSMC-KT ECC / RSA** — Ablaufdatum der Geraete-Zertifikate. Gelb bei <90 Tagen, rot bei <30 Tagen. **Wichtig:** Der RSA→ECC-Stichtag der gematik ist 31.12.2025 — RSA-Karten danach abgelaufen heisst **TI-Ausfall**.
- **ICCSN** — letzte 8 Stellen der Kartennummer (vollstaendig im Tooltip)
- **Letzter Check** — Zeit seit letztem Polling-Durchlauf

### SMC-B Online-PIN entsperren

Wenn das Terminal eine Karte mit Transport-PIN oder gar keine eingelegte Karte meldet **und** im Terminal-Eintrag eine SMC-B-PIN hinterlegt ist, erscheint auf der Karte ein Button **"SMC-B entsperren"**. Klick → Bestaetigung → die hinterlegte PIN wird ueber die Remote-PIN-Funktion der ORGA an das Terminal gesendet.

> **Vorsicht:** ORGA-Kartenterminals erlauben nur **3 Falsch-PIN-Versuche**, danach ist die SMC-B blockiert (kostenpflichtige PUK-Entsperrung noetig). Pruefen Sie also einmalig, dass die hinterlegte PIN stimmt — der Button ist kein Spielzeug.

### Auto-Entsperrung (optional)

Schalter im Terminal-Modal. Wenn aktiviert, sendet TI-Monitor automatisch die hinterlegte SMC-B-PIN, sobald der PIN-Status auf `transport` oder `keine Karte` (Karte neu eingelegt) wechselt. **Failsafes:**
- Maximal **1 Auto-Versuch pro Tag pro Terminal**
- **Nie** bei Status `blocked`
- Bei `verified` passiert nichts (Karte ist schon entsperrt)

Typischer Anwendungsfall: Nach Stromausfall oder nach dem Ziehen+Wiedereinsetzen der Karte ist die Praxis morgens sofort arbeitsfaehig, ohne dass jemand manuell die PIN eintippen muss.

### Bearbeiten / Loeschen / Sofort-Check

Wie bei den Konnektoren. Beim Bearbeiten gilt: **Passwort und PIN werden nur ueberschrieben, wenn das Feld neu ausgefuellt wird.** Leer lassen heisst "alten Wert behalten" — das Feld zeigt einen Hinweis "(gespeichert)" oder "(noch keins)".

### Wo bekomme ich Passwoerter/PINs her?

- **Remote Admin Passwort:** Steht im Auslieferungs-Briefumschlag der ORGA bzw. wird beim Konnektor-Onboarding vergeben. Notfalls bei Worldline-Support nachfragen oder Werksreset.
- **SMC-B PIN:** Aus dem Praxiskarten-Briefumschlag der gematik-Kartenherausgabe. **Niemals** weitergeben — das ist die Identitaet der Praxis im TI-Netz.

---

## 5. Einstellungen

### Polling-Intervall

Bestimmt, wie oft alle aktiven Konnektoren geprueft werden.

| Wert | Empfehlung |
|---|---|
| 10 Sekunden | Fuer kritische Systeme, hohe Netzlast |
| 30 Sekunden | **Standard** — guter Kompromiss |
| 60 Sekunden | Fuer stabile Umgebungen |
| 300 Sekunden | Minimale Netzlast, langsame Erkennung |

### Alert-Schwelle (Failure-Counter)

Nach wie vielen aufeinanderfolgenden Fehlern ein Alert ausgeloest wird.

- **Standard: 3** — drei Fehlschlaege hintereinander loesen Alarm aus
- Verhindert Fehlalarme bei kurzen Netzwerk-Aussetzern
- Wird bei jedem erfolgreichen Check zurueckgesetzt

---

## 6. Alerts und Benachrichtigungen

### Browser-Notifications

Bei einem Statuswechsel (online → offline) zeigt TI-Monitor eine Desktop-Benachrichtigung. Voraussetzung:
1. Browser fragt beim ersten Alert nach Berechtigung → **"Erlauben"** klicken
2. Browser darf nicht im "Nicht stören"-Modus sein
3. Funktioniert auch wenn das Dashboard im Hintergrund laeuft

### Beep-Alert

Zusaetzlich zum visuellen Alert ertönt ein akustisches Signal, wenn ein Konnektor ausfaellt. Der Ton kommt aus dem PC-Lautsprecher/Kopfhoerer.

### Wann wird alarmiert?

Ein Alert wird ausgeloest wenn:
1. Der Konnektor vorher **online** war (kein Alert beim ersten Check)
2. Die **Failure-Schwelle** erreicht ist (Standard: 3 aufeinanderfolgende Fehler)
3. Die rote Karten-Animation (pulsierender Rand) zeigt den Ausfall dauerhaft an

---

## 7. SSL-Zertifikate

### Was wird geprueft?

Bei jedem Check liest TI-Monitor automatisch:
- **Ablaufdatum** des SSL-Zertifikats des Konnektors
- **Aussteller** (Issuer) des Zertifikats

### Warum ist das wichtig?

TI-Konnektoren verwenden SSL-Zertifikate fuer die sichere Kommunikation. Abgelaufene Zertifikate fuehren zu:
- Verbindungsfehlern mit Praxisverwaltungssystemen
- Fehlgeschlagenen VSDM-Pruefungen
- TI-Ausfaellen am Standort

### Zertifikats-Warnung

Die Karte zeigt das Ablaufdatum an. Pruefen Sie regelmaessig, ob Zertifikate demnächst ablaufen. Der Austausch muss durch den gematik-Service oder CGM erfolgen.

---

## 8. Persistenz und Daten

TI-Monitor speichert alle Daten lokal in zwei JSON-Dateien:

| Datei | Inhalt |
|---|---|
| `config.json` | Konnektoren-Liste und Einstellungen |
| `history.json` | Check-Ergebnisse (max. 1000 pro Konnektor) |

- **Kein Cloud-Upload** — alle Daten bleiben auf dem lokalen Rechner
- **Kein Datenbank-Server** noetig
- Bei Neuinstallation: `config.json` sichern und ins neue Verzeichnis kopieren

### Backup

Sichern Sie regelmaessig die Datei `C:\TI-Monitor\config.json`. Sie enthaelt alle Konnektoren und Einstellungen. Die History-Datei ist optional — sie wird automatisch neu aufgebaut.

---

## 9. FAQ

**Muss TI-Monitor dauerhaft laufen?**
Ja, idealerweise auf einem Rechner im Klinik-Netzwerk der durchgehend laeuft (z.B. Arbeitsplatz-PC der IT-Abteilung). Bei Neustart muss `python main.py` erneut ausgefuehrt werden.

**Braucht TI-Monitor Internetzugang?**
Fuer den lokalen Health-Check nein. Lizenz- und Updatepruefung verwenden c3po42.de; Konnektor-Checks laufen im lokalen Netzwerk.

**Kann ich TI-Monitor von anderen PCs im Netzwerk oeffnen?**
Ja. TI-Monitor bindet auf `0.0.0.0`, ist also von jedem Rechner im Netzwerk erreichbar unter `http://{IP-des-TI-Monitor-PCs}:8443`.

**Was passiert wenn ich den Browser schliesse?**
TI-Monitor laeuft im Hintergrund weiter (Konsolenfenster). Das Dashboard kann jederzeit wieder geoeffnet werden. Check-Ergebnisse werden weiterhin gespeichert.

**Wie viele Konnektoren kann ich ueberwachen?**
Beliebig viele. Jeder Konnektor wird sequentiell geprueft. Bei 10 Konnektoren und 30s-Intervall dauert ein kompletter Durchlauf ca. 10-20 Sekunden.

**Die Antwortzeit ist sehr hoch — ist das normal?**
Werte unter 500ms sind normal. Hohe Werte (>2000ms) deuten auf Netzwerkprobleme oder Ueberlastung des Konnektors hin.

**Der Konnektor ist erreichbar, wird aber als offline angezeigt?**
Pruefen Sie zuerst das ausgewaehlte Profil. KoCoBox MED+ nutzt `https://{ip}:9443/administration/start.htm`. RISE nutzt `https://{ip}:8443/` und das Dienstverzeichnis `connector.sds` auf 443/80. Ein falsches Profil kann dazu fuehren, dass ein technisch erreichbares Geraet nicht als kompatibler Konnektor erkannt wird.

---

## 10. Troubleshooting

### TI-Monitor startet nicht

| Problem | Loesung |
|---|---|
| `ModuleNotFoundError` | `pip install -r requirements.txt` ausfuehren |
| Port 8443 belegt | Automatischer Fallback auf 8444, oder anderen Dienst auf 8443 beenden |
| Python nicht gefunden | Python 3.10+ installieren und zum PATH hinzufuegen |

### Konnektor wird als offline angezeigt

1. **Ping pruefen:** `ping {IP-des-Konnektors}` im Terminal
2. **Profil pruefen:** KoCoBox MED+ oder RISE Konnektor auswaehlen
3. **Port pruefen:** `Test-NetConnection {IP} -Port 9443` fuer KoCoBox oder `Test-NetConnection {IP} -Port 8443` fuer RISE
4. **Browser-Test KoCoBox:** `https://{IP}:9443/administration/start.htm` direkt im Browser oeffnen
5. **Browser-Test RISE:** `https://{IP}:8443` und `https://{IP}/connector.sds` direkt im Browser oeffnen
6. **Firewall:** Sicherstellen dass die Profil-Ports nicht blockiert werden
7. **VPN/VLAN:** Ist der TI-Monitor-PC im selben Netzwerksegment wie der Konnektor?

### SSL-Zertifikat wird nicht angezeigt

- Der Konnektor muss ein gueltiges (oder selbst-signiertes) SSL-Zertifikat bereitstellen
- TI-Monitor akzeptiert auch selbst-signierte Zertifikate (`verify=False`)
- Bei manchen Konfigurationen kann die Zertifikats-Abfrage fehlschlagen — der Health-Check funktioniert trotzdem

### Live-Updates kommen nicht

1. Browser-Konsole oeffnen (F12) und auf Fehler pruefen
2. Seite neu laden (F5)
3. Sicherstellen dass TI-Monitor noch im Hintergrund laeuft (Konsolenfenster)
4. Adblocker oder Proxy koennten SSE blockieren

### Hohe CPU-Last

- Polling-Intervall erhoehen (z.B. auf 60 oder 120 Sekunden)
- Nicht benoetigte Konnektoren deaktivieren
- History-Datei loeschen wenn sie sehr gross geworden ist

---

## 11. Download und Updates

- **Download-Seite:** https://downloads.c3po42.de/ti-monitor/
- **Installer:** `irm https://downloads.c3po42.de/ti-monitor/install.ps1 | iex`
- Bei Updates: neue Dateien nach `C:\TI-Monitor` kopieren, `config.json` bleibt erhalten
