Files
bf-infra/docs/handoff-20260904-tp25-konsole-n-clients.md
Christoph Emsenhuber 70afb165b7 TP25: Klick-Konsole auf N Clients + Pin-UI
Die Konsole (docs/tp6-marker/server.py) war beim Multi-Pin-Umbau nicht
mitgezogen worden: hartkodiert auf 2 Clients, pinnte ueber die alte
Gegen-AP-Automatik. Jetzt:

- Client-Liste aus geraete.txt (schreibt tp25-walk-messung.sh), Fallback
  auf die zwei alten MACs fuer Alt-Laeufe.
- Kein eigenes SSH mehr: je Client letzte Zeile von sampler-<name>.csv
  (AP/Signal) + Ping-Verlust aus walk-ping-<name>.csv.
- N Client-Karten; Alarm, wenn ein gepinnter Client nirgends haengt.
- Pin-UI: je Client AP/Band waehlen, set/off/verify via tp25-pin-multi.sh
  (POST /pinmulti). Alte 2-Client-Automatik (entscheide/pin_setzen/auto)
  entfernt; tp25-pin-s22.sh liefert nur noch die map.
- tp25-runde.sh loest beim Aufraeumen den Multi-Pin statt des S22-Pins.

Doku: Ist-Stand-Block + Quick-Index + Messwerkzeug-Bullets nachgezogen,
neuer Handoff 2026-09-04.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-04 14:18:07 +02:00

4.2 KiB

Handoff 2026-09-04 — TP25: Klick-Konsole auf N Clients + Pin-UI

Kurz: Die Klick-Konsole (docs/tp6-marker/server.py, Port 3031) war beim Multi-Pin-Umbau (2026-09-04, tp25-pin-multi.sh + TP25_PHONES) nicht mitgezogen worden — sie zeigte weiter hartkodiert zwei Clients (iPhone/S22) und pinnte ueber die alte Gegen-AP-Automatik. Jetzt ist sie auf N Clients generalisiert und hat eine Pin-UI: Signal/AP/Ping-Verlust je Client live, Pinnen band-genau direkt in der Konsole. Die alte 2-Client-Automatik ist entfernt.

Was umgebaut wurde

docs/tp6-marker/server.py (Hauptumbau):

  • Client-Liste aus Datei statt hartkodiert: geraete() liest geraete.txt aus dem Laufverzeichnis (schreibt tp25-walk-messung.sh, eine Zeile name|ip|mac je Client). Fallback auf die zwei alten MACs fuer Alt-Laeufe.
  • Kein eigenes SSH mehr in der Konsole: der beobachter()-Thread (2 MACs per SSH, beide-telefone.csv) ist raus. Stattdessen liest die Konsole je Client die letzte Zeile von sampler-<name>.csv (sta_iface, sta_signal) und den juengsten Ping-Verlust aus walk-ping-<name>.csv (leeres ms = Verlust). Eine SSH-Session weniger gegen den Core-SPOF.
  • N Client-Karten statt der festen iPhone/S22-Zeile: Name, AP (via ap_map()), Signal dBm, Ping-Verlust der letzten ~30 s. Alarm, wenn ein gepinnter Client sta_iface == "absent" ist → „ HAENGT NIRGENDS — nicht weitergehen" (Nachfolger des alten S22-Alarms).
  • Pin-UI (Karte „Pinnen (Multi-Pin)"): je Client ein <select> mit frei / apX/5GHz / apX/2,4GHz (Ziele aus ap_map() abgeleitet) plus drei Aktionen:
    • „Pin setzen" → baut TP25_PINSPEC="name|mac|ap|band;…" aus den Nicht-frei-Auswahlen und ruft bash docs/tp25-pin-multi.sh set im Thread.
    • „Pin loesen" → bash docs/tp25-pin-multi.sh off.
    • „verify" → bash docs/tp25-pin-multi.sh verify, Ausgabe als Statuszeile. Neuer Endpunkt POST /pinmulti (analog zum alten /pin).
  • Entfernt: IPHONE_MAC/S22_MAC, _live/_auto, entscheide(), pin_lesen()/ pin_setzen() (via tp25-pin-s22.sh), die ap1/ap2/auto-Buttons und der PIN_SH-Aufruf. tp25-pin-s22.sh bleibt als Skript erhalten (liefert map), wird aber von der Konsole nicht mehr zum Pinnen aufgerufen.

docs/tp25-runde.sh:

  • aufraeumen() loest jetzt tp25-pin-multi.sh off statt tp25-pin-s22.sh off (Kommentar angepasst: die Konsole pinnt nicht mehr automatisch).

Bedienung (Messablauf)

bash docs/tp25-runde.sh [name]        # Konsole (3031) + Messung, Adresse fuer das Telefon
  1. Am Telefon die Konsole oeffnen, einmal irgendwo tippen (schaltet den Signalton frei).
  2. In der Konsole pinnen: je Client AP/Band waehlen, „Pin setzen". Clients ohne Ziel bleiben frei (das Skript raeumt vorher alle TP25-PINM-*-Regeln ab).
  3. Losgehen. 🚶 beim Losgehen, 📍 beim Stehenbleiben, Raum antippen. Alarm = ein gepinnter Client haengt nirgends.
  4. „⏹ Aufzeichnung stoppen" (oder Ctrl-C im Terminal). Der Wrapper loest den Multi-Pin beim Beenden.

Auswertung: python3 docs/tp25-gehweg-auswertung.py --dir docs/messdaten/tp25-runde-<name>

Was noch offen ist (braucht die Geraete vor Ort)

  • Live-Test mit N Geraeten im Netz (Plan-Verifikation Schritt 3): TP25_PHONES="…" bash docs/tp25-runde.sh test → N Karten sichtbar, pinnen → bash docs/tp25-pin-multi.sh verify zeigt die Regeln, gehen/Raeume/stoppen → Auswertung liefert die Raumtabelle mit N Geraeten.
  • Aufraeumen (Schritt 4): nach dem Lauf bash docs/tp25-pin-multi.sh off — keine TP25-PINM-*-Regeln am Manager zurueck.

Statisch verifiziert (ohne Geraete): AST-Parse ok, keine stale Referenzen auf die alte Automatik, Smoke-Render mit 2 Test-Clients ok, bash -n auf allen drei Shell-Skripten ok.

Gotchas (unveraendert, aus CLAUDE.md)

  • cap-wifiN-Karte wandert bei jedem Rejoin — tp25-walk-messung.sh friert sie als ap-map.txt im Messlauf ein; die Konsole beschriftet daraus.
  • Registration-Table nur am Manager — die Sampler (tp6-monitor-core.sh) fragen den Core ab, nicht die CAPs.
  • sshpass -e, nie -p — gilt weiter fuer alle Skripte, die den Core ansprechen.