TP25: Gehweg-Messung -- was eine WLAN-Uebergabe wirklich kostet
Die Sampler-Daten zeigen bei jedem AP-/Bandwechsel ~4 s ohne Durchsatz, koennen das aber nicht beweisen: nach einer Neuanmeldung starten die Zaehler der Registration-Table ohnehin bei null. tp25-walk-messung.sh trennt beides, indem es mit 5 Pings/s AUF das Telefon zielt -- Paketverlust ist echte Funkstille, kein Verlust heisst, die 4 Sekunden waren Buchhaltung. Laeuft ohne Call und ohne Last: Core-Sampler im 1-s-Takt plus der Ping, dazu eine Anleitung auf der Klick-Konsole (Gehen/Stehen als Marker). Ein vorheriger Lauf wird beiseitegelegt statt ueberschrieben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
66
docs/tp25-walk-messung.sh
Executable file
66
docs/tp25-walk-messung.sh
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# TP25 — Gehweg-Messung: was kostet eine WLAN-Uebergabe wirklich?
|
||||
#
|
||||
# Beantwortet die Frage, die die Sampler-Daten offen lassen: bei jedem AP-/Bandwechsel steht in
|
||||
# der Registration-Table ~4 s lang kein Durchsatz — aber die Zaehler starten nach einer
|
||||
# Neuanmeldung ohnehin bei null. Ein Ping AUF das Telefon trennt beides:
|
||||
# Paketverlust = echte Funkstille · kein Verlust = die 4 s waren Buchhaltung.
|
||||
#
|
||||
# Braucht KEINEN Call. Misst nur, aendert nichts.
|
||||
#
|
||||
# bash docs/tp25-walk-messung.sh # laeuft bis Ctrl-C bzw. bis "Stoppen" geklickt wird
|
||||
#
|
||||
# Waehrend des Gehens auf der Konsole: 🚶 beim Losgehen, 📍 beim Stehenbleiben.
|
||||
|
||||
set -uo pipefail
|
||||
|
||||
RUN_DIR="${TP6_RUN_DIR:-/private/tmp/claude-501/-Users-christophemsenhuber-dev-bf-network-r6/0d86ebd1-035f-4513-a231-5cca8111ecfd/scratchpad/tp6-run2}"
|
||||
PHONE="${TP25_PHONE_IP:-10.40.10.196}"
|
||||
PHONE_MAC="${TP25_PHONE_MAC:-F2:62:4C:E1:AF:09}"
|
||||
STATE="$RUN_DIR/phase.json"
|
||||
MARKERS="$RUN_DIR/markers.csv"
|
||||
HERE="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
|
||||
mkdir -p "$RUN_DIR"
|
||||
[[ -f "$MARKERS" ]] || echo "ts_epoch,ts_local,marker" > "$MARKERS"
|
||||
|
||||
# Frueheren Lauf beiseitelegen, statt ihn zu ueberschreiben.
|
||||
if [[ -f "$RUN_DIR/sampler.csv" ]]; then
|
||||
ARCHIV="$RUN_DIR/archiv-$(date +%H%M%S)"; mkdir -p "$ARCHIV"
|
||||
for f in sampler.csv markers.csv walk-ping.log ping-dauerlauf.log; do
|
||||
[[ -f "$RUN_DIR/$f" ]] && mv "$RUN_DIR/$f" "$ARCHIV/"
|
||||
done
|
||||
echo "ts_epoch,ts_local,marker" > "$MARKERS"
|
||||
echo "Vorheriger Lauf -> $ARCHIV"
|
||||
fi
|
||||
|
||||
state() {
|
||||
python3 - "$STATE" "$1" <<'PY'
|
||||
import json, os, sys
|
||||
p, inst = sys.argv[1], sys.argv[2]
|
||||
tmp = p + ".tmp"
|
||||
with open(tmp, "w") as fh:
|
||||
json.dump({"mode": "langzeit", "phase": "GEHWEG", "title": "Roaming-Messung läuft",
|
||||
"instruction": inst, "step": 0, "steps": 0, "ends": 0}, fh)
|
||||
os.replace(tmp, p)
|
||||
PY
|
||||
}
|
||||
|
||||
state "Kein Call nötig. <b>🚶</b> drücken, wenn du losgehst, <b>📍</b> wenn du stehen bleibst — und bitte den Weg gehen, den du beim Telefonieren wirklich gehst.<br><br>Ich pinge dein Telefon fünfmal pro Sekunde. Jeder AP- oder Bandwechsel zeigt sich dann als echter Paketverlust: <b>so lange ist der Call wirklich tot.</b><br><br>Am Ende: <b>⏹ Aufzeichnung stoppen</b>."
|
||||
|
||||
# Sampler am Manager (1-s-Takt, feiner als bei der TP6-Messung)
|
||||
bash "$HERE/docs/tp6-monitor-core.sh" --out "$RUN_DIR/sampler.csv" --mac "$PHONE_MAC" --interval 1 \
|
||||
> "$RUN_DIR/sampler.out" 2>&1 & SAMPLER=$!
|
||||
|
||||
# 5 Pings/s auf das Telefon, mit lokalem Zeitstempel je Zeile
|
||||
ping -i 0.2 "$PHONE" | while IFS= read -r l; do
|
||||
printf '%s %s\n' "$(date +%H:%M:%S)" "$l"
|
||||
done > "$RUN_DIR/walk-ping.log" 2>&1 & PINGER=$!
|
||||
|
||||
trap 'kill $SAMPLER $PINGER 2>/dev/null; pkill -f "ping -i 0.2 $PHONE" 2>/dev/null; state "Aufzeichnung gestoppt."; echo; echo "Gestoppt."' EXIT
|
||||
|
||||
echo "Gehweg-Messung laeuft."
|
||||
echo " Funk -> $RUN_DIR/sampler.csv"
|
||||
echo " Ping -> $RUN_DIR/walk-ping.log"
|
||||
while true; do touch "$STATE" 2>/dev/null; sleep 5; done
|
||||
Reference in New Issue
Block a user