/** * Gemeinsame WLAN-Empfangsbewertung (RSSI in dBm). * * Vorher gab es drei Kopien mit unterschiedlichen Schwellen: `iptest/+page.svelte` * und `wifi/+page.svelte` hatten je eine eigene `rssiColor()` (beide -55/-70, * zufällig gleich), UND `wifi/+page.svelte` hatte zusätzlich eine `rssiLabel()` * mit eigenen, davon abweichenden Schwellen (-55/-65/-75) — derselbe Messwert * konnte je nach Stelle unterschiedlich benannt werden. Diese Funktion ist jetzt * die einzige Stelle, die entscheidet. * * Schwellen orientieren sich an gängigen WLAN-Planungswerten: ab -55 dBm * exzellent, ab -67 dBm noch zuverlässig für Video/Voice, ab -75 dBm gerade * noch brauchbar (Web/E-Mail), darunter unzuverlässig. */ import type { MeasureStatus } from '../types'; export interface RssiRating { label: string; colorClass: string; /** Ampel-Bewertung — 0 ok, 1 warn, 2 fail */ status: MeasureStatus; } export function rssiRating(rssi: number | undefined | null): RssiRating { if (rssi == null) return { label: '—', colorClass: 'text-zinc-500', status: 1 }; if (rssi >= -55) return { label: 'sehr gut', colorClass: 'text-emerald-400', status: 0 }; if (rssi >= -67) return { label: 'gut', colorClass: 'text-emerald-400', status: 0 }; if (rssi >= -75) return { label: 'mäßig', colorClass: 'text-amber-400', status: 1 }; return { label: 'schwach', colorClass: 'text-red-400', status: 2 }; }