Auswertung: Ruhezustand von Funkloch trennen -- und der Sideboard-Gang
Ein iPhone mit gesperrtem Display beantwortet ICMP nicht. In der Verlustspalte sieht das exakt aus wie ein Funkloch, und heute haette es fast zu einem falschen Befund gefuehrt: 58 Sekunden Ping-Luecke auf der Terrasse -- bei -53 dBm, 275 Mbps PHY-Rate und weiterlaufenden 3 kbit/s Hintergrundverkehr. Das Geraet war erreichbar, es wollte nur nicht antworten. Die Auswertung markiert solche Luecken jetzt (gutes Durchschnittssignal plus hohe PHY-Rate) und sagt dazu, dass sie NICHT als Funkloch zu lesen sind. Bewertet wird der Durchschnitt des Abschnitts, nicht sein Minimum -- ein einzelner schwacher Sample beim Durchgehen darf den Befund nicht kippen. Dazu die Rohdaten des Gangs mit ap1 am Sideboard. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
30
docs/messdaten/tp25-og-sideboard-20260821/markers.csv
Normal file
30
docs/messdaten/tp25-og-sideboard-20260821/markers.csv
Normal file
@@ -0,0 +1,30 @@
|
||||
ts_epoch,ts_local,marker
|
||||
1787336761,20:26:01,RAUM=Arbeitszimmer
|
||||
1787336769,20:26:09,WALK
|
||||
1787336781,20:26:21,RAUM=Technik OG
|
||||
1787336792,20:26:32,RAUM=Diele OG
|
||||
1787336801,20:26:41,RAUM=Treppe
|
||||
1787336817,20:26:57,RAUM=Wohnzimmer
|
||||
1787336841,20:27:21,RAUM=Küche
|
||||
1787336861,20:27:41,RAUM=Wohnzimmer
|
||||
1787336866,20:27:46,RAUM=Wohnzimmer
|
||||
1787336869,20:27:49,RAUM=Diele UG
|
||||
1787336875,20:27:55,RAUM=Technik OG
|
||||
1787336878,20:27:58,RAUM=Diele UG
|
||||
1787336883,20:28:03,RAUM=Kinderzimmer
|
||||
1787336898,20:28:18,RAUM=Diele UG
|
||||
1787336903,20:28:23,RAUM=Bad
|
||||
1787336920,20:28:40,RAUM=Diele UG
|
||||
1787336922,20:28:42,RAUM=Schlafzimmer
|
||||
1787336942,20:29:02,RAUM=Diele UG
|
||||
1787336946,20:29:06,RAUM=Kinderzimmer
|
||||
1787336963,20:29:23,ARRIVED
|
||||
1787337493,20:38:13,RAUM=Diele UG
|
||||
1787337504,20:38:24,WALK
|
||||
1787337511,20:38:31,RAUM=Treppe
|
||||
1787337523,20:38:43,RAUM=Diele OG
|
||||
1787337548,20:39:08,ARRIVED
|
||||
1787337854,20:44:14,CAM_ON
|
||||
1787337861,20:44:21,RAUM=Terrasse
|
||||
1787337872,20:44:32,WALK
|
||||
1787337904,20:45:04,ARRIVED
|
||||
|
1462
docs/messdaten/tp25-og-sideboard-20260821/sampler.csv
Normal file
1462
docs/messdaten/tp25-og-sideboard-20260821/sampler.csv
Normal file
File diff suppressed because it is too large
Load Diff
7433
docs/messdaten/tp25-og-sideboard-20260821/walk-ping.csv
Normal file
7433
docs/messdaten/tp25-og-sideboard-20260821/walk-ping.csv
Normal file
File diff suppressed because it is too large
Load Diff
@@ -91,15 +91,28 @@ def main():
|
||||
verloren += miss
|
||||
luecke = max(luecke, miss * 0.2)
|
||||
gesamt = (p[-1][1] - p[0][1] + 1) if len(p) > 1 else 0
|
||||
# 🔴 Ruhezustand von Funkloch trennen. Ein iPhone mit gesperrtem Display
|
||||
# beantwortet ICMP nicht — das sieht in der Verlustspalte aus wie ein Funkloch.
|
||||
# Unterscheidbar ist es am Funk: bleibt das Signal gut UND die PHY-Rate hoch,
|
||||
# war das Geraet erreichbar und wollte nur nicht antworten.
|
||||
# (Am 2026-08-21 auf der Terrasse: 58 s Ping-Luecke bei -53 dBm und 275 Mbps.)
|
||||
sig = [int(x["sta_signal"]) for x in r]
|
||||
raten = [int(x["sta_tx_rate"] or 0) for x in r if x.get("sta_tx_rate")]
|
||||
# Bewertet wird der DURCHSCHNITT des Abschnitts, nicht sein Minimum: ein
|
||||
# einzelner schwacher Sample beim Durchgehen darf den Befund nicht kippen.
|
||||
schlaefrig = (luecke >= 3 and sig and (sum(sig) / len(sig)) > -68
|
||||
and raten and (sum(raten) / len(raten)) > 100e6)
|
||||
ifaces = sorted({AP.get(x["sta_iface"], x["sta_iface"]) for x in r if x["sta_iface"]})
|
||||
print("%-16s %5ds %-24s %-18s %s" % (
|
||||
name, stop - start,
|
||||
"%d / %.1f / %d dBm" % (min(sig), sum(sig) / len(sig), max(sig)) if sig else "—",
|
||||
"%d von %d (%.0f %%)" % (verloren, gesamt, 100 * verloren / gesamt) if gesamt else "—",
|
||||
("%.1f s" % luecke) if luecke else "keine"))
|
||||
(("%.1f s ⚠️ eher Ruhezustand" % luecke) if schlaefrig
|
||||
else ("%.1f s" % luecke)) if luecke else "keine"))
|
||||
if ifaces:
|
||||
print("%-16s auf %s" % ("", ", ".join(ifaces)))
|
||||
print("\n⚠️ = Luecke bei gutem Signal und hoher PHY-Rate -> das Geraet war erreichbar und hat")
|
||||
print(" nur nicht geantwortet (iOS-Ruhezustand). Solche Luecken NICHT als Funkloch lesen.")
|
||||
print("\nLesehilfe: eine längste Lücke über ~2 s ist für einen Videocall eine hörbare Unterbrechung,")
|
||||
print("über 10 s ist der Call praktisch tot. Signal unter −70 dBm ist die Zone, in der das passiert.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user