Kapazität und Wiederverbindung von BLE-Gateways mit mehreren Sensoren testen

Die Antwort auf „Wie viele BLE-Sensoren unterstützt ein Gateway?“ braucht eine zugehörige Lastbeschreibung. Zehn Sensoren mit einer Meldung pro Minute sind ein anderes Problem als zehn Geräte mit Datenbursts alle 20 Millisekunden. Eine belastbare Kapazitätsspezifikation benennt Funk- und Softwaregrenzen, weist die Datenaktualität unter geforderter Last nach und misst die Erholung, wenn mehrere Sensoren gleichzeitig verschwinden.

Zwischen verbundener Erfassung und Advertising-Erfassung wählen

Ein verbundenes GATT-Gateway hält Verbindungen, abonniert Characteristics und kann Konfigurationsbefehle senden. Ein Advertising-Empfänger hört verbindungslose Meldungen mit. Bluetooth Mesh verwendet ein weiteres Kommunikations- und Provisionierungsmodell. Diese Architekturen unterscheiden sich bei Discovery, Zustellung und Sicherheit; ihre Knotenzahlen sind nicht austauschbar.

Beginnen Sie mit einem Geräteverzeichnis: Protokoll- und Firmware-Version, Meldungsformat, Abtastfrequenz, Burstlänge, Verbindbarkeit, Pairing-Anforderungen und zulässiges Datenalter. Entscheiden Sie, ob fehlende historische Messwerte nachgeliefert werden müssen oder der neueste Messwert genügt. Bei Advertising-Erfassung müssen auf Anwendungsebene zudem Authentizität, Duplikatunterdrückung und Replay-Behandlung definiert werden, sofern der Einsatz dies verlangt.

Obeitas Fallbeschreibung des ausgelieferten ESP32-Wi-Fi- und Bluetooth-Gateways beschreibt unterschiedliche Wi-Fi- und SIG-Mesh-Richtungen. Sie bietet hilfreichen Architekturkontext, liefert aber keine gemessene Kapazität für verbundene GATT-Sensoren. Ein GATT-Gateway benötigt eine eigene Validierung der Endgeräte und Last.

Harte Verbindungsgrenzen von nutzbarer Kapazität trennen

Prüfen Sie den konkreten Chip, die Controller-Firmware, den Host-Stack, die SDK-Version und die Build-Konfiguration. Host-Verbindungsobjekte, Controller-Verbindungen, ACL-Puffer, Bond-Speicher und Anwendungswarteschlangen besitzen unterschiedliche Grenzen. Das Erhöhen eines Parameters beseitigt die anderen Grenzen nicht.

Als konkretes, versionsgebundenes Beispiel nennt Espressifs ESP-IDF-v6.0.3-Mehrverbindungsleitfaden für ESP32 jeweils neun gleichzeitige Verbindungen für ESP-NimBLE und ESP-Bluedroid, mit entsprechenden Host-Einstellungen und passender Controller-Einstellung. Das ist eine Implementierungsobergrenze, keine garantierte Sensorzahl für jede Last oder jeden Chip der ESP32-Familie. Auch Zephyr stellt CONFIG_BT_MAX_CONN bereit. Prüfen Sie die Dokumentation der tatsächlich eingesetzten Produktversion. Quellen: Espressifs Mehrverbindungsleitfaden und Zephyr-GAP-Shell-Dokumentation.

Bei einem Linux-Gateway belegen mehr RAM oder eine schnellere CPU keine höhere Grenze des Funkcontrollers. Erfassen Sie USB-/UART-Controllermodell, Firmware, Kernel und BlueZ-Version. Halten Sie Notification-Callbacks kurz: Daten prüfen und einreihen; Datenbankschreibzugriffe und Uplink-Arbeit außerhalb des Bluetooth-Callback-Pfads ausführen.

Ein Verkehrsbudget mit gemessener Reserve aufstellen

Berechnen Sie zunächst die Anwendungsbytes. Als Dimensionierungsbeispiel erzeugen acht Sensoren mit jeweils einem 16-Byte-Datensatz bei 5 Hz insgesamt 640 Byte pro Sekunde vor Protokoll-Overhead. Diese Rechnung ist keine Funkdurchsatzprognose. Paketaustausch, leere Verbindungsereignisse, Bestätigungen, Wiederholungen, Scannen und Planung benötigen zusätzliche Zeit.

Eine nützliche erste Abschätzung ist die Summe der geschätzten Sendezeit eines Verbindungsereignisses jeder Verbindung, jeweils geteilt durch ihr Verbindungsintervall. Lassen Sie Reserve für Scannen, Wiederverbindung und Uplink-Koexistenz. Diese Abschätzung ist weder eine Bluetooth-Planungsgarantie noch ein Ersatz für Messungen: überlappende Ereignisse, Controller-Strategie und eintreffende Bursts können auch bei scheinbar großzügigem Durchschnittsbudget Fehler verursachen.

Messen Sie ausgehandeltes Verbindungsintervall, Peripheral Latency, Überwachungszeitlimit, PHY, ATT-MTU und Link-Layer-Datenlänge. Eine größere ATT-MTU garantiert weder längere Link-Layer-Pakete noch mehr Pakete in jedem Ereignis. Ein längeres Verbindungsintervall kann die Planung erleichtern, aber Latenz oder Burst-Pufferbedarf verschlechtern. Ändern Sie Parameter anhand eines Aktualitätsziels, nicht anhand einer pauschalen Einstellung für „maximalen Durchsatz“.

Sensorgruppen führen über Funk- und Softwaregrenzen eines Gateways zur Uplink-Speicherung; sechs Wiederverbindungszustände definieren die Bereitschaft.
Abbildung 1. Die Gateway-Kapazität hängt vom gesamten Erfassungspfad ab. Prüfen Sie den Wiederverbindungsautomaten und bewerten Sie zugestellte Daten, Erholungszeit und Ressourcenverhalten.

Die Wiederverbindung als begrenzten Zustandsautomaten auslegen

Verfolgen Sie jeden Sensor getrennt durch Discovery, Verbindung, Sicherheit, Service-Auflösung, Abonnement und Streaming. „Verbunden“ ist nicht der Bereitschaftszustand. Ein sinnvolles Bereitschaftskriterium ist der erste gültige und korrekt zugeordnete Anwendungsmesswert nach dem Abonnement.

DISCOVER -> CONNECT -> SECURE -> RESOLVE -> SUBSCRIBE -> STREAM
failure  -> RELEASE_RESOURCES -> BACKOFF -> DISCOVER

# Illustrative full-jitter backoff, seconds:
delay = random_uniform(0, min(60, 2 ** min(attempt, 6)))
# Reset attempt after a defined healthy-stream interval.
# Limit simultaneous connection/setup attempts globally.

Die obigen Zeitwerte sind Designbeispiele, keine vorgeschriebenen BLE-Einstellungen. Geben Sie jedem Zustand ein Zeitlimit, einen Abbruchpfad und einen Ursachencode. Begrenzen Sie Wiederholungen bei Fehlern, die Eingreifen erfordern, etwa inkompatiblen Protokollversionen oder wiederholten Authentifizierungsfehlern. Zeigen Sie einen handlungsfähigen Fehler an, statt unbegrenzt mit voller Geschwindigkeit weiterzuversuchen.

Geben Sie nach einem Abbruch veraltete Handles und Callback-Registrierungen angemessen frei, brechen Sie überholte Arbeit ab und stellen Sie erforderliche Sicherheit und Abonnements wieder her. Erhalten Sie eine dauerhafte Identität über unterstützte Bonding-/Privacy-Mechanismen oder eine authentifizierte Anwendungskennung. Behandeln Sie eine wechselnde private Adresse nicht automatisch als dauerhaft neuen Sensor. Verwenden Sie unter BlueZ die unterstützte Notification-Schnittstelle und behandeln Sie deren dokumentierte Fehler. Siehe BlueZ-GATT-API.

Verwenden Sie Startkennungen und Messwertsequenzen, um Neustarts, Lücken und Duplikate zu unterscheiden. Speichern Sie dauerhaft nur den Zustand, den die Wiederherstellungsvereinbarung des Produkts erfordert. Ein Gateway-Neustart während der Übertragung zurückgestauter Daten darf alte Messwerte nicht stillschweigend zu Live-Daten umetikettieren.

Konkurrenz und Fehler unter voller Verbindungsbelastung testen

Bei gemeinsam genutztem Funk konkurrieren BLE-Erfassung und Wi-Fi-Verkehr um Funkressourcen. Espressif dokumentiert prioritätsbasierte Koexistenz und Änderungen der Planung je nach Wi-Fi-Zustand. Testen Sie sowohl einen gleichmäßigen Uplink als auch Wi-Fi-Scans und Wiederverbindungen; eine ruhige Laborverbindung deckt diese Bedingungen nicht ab. Beachten Sie den ESP32-Koexistenzleitfaden und anschließend die entsprechende Dokumentation für das gewählte SDK und den Chip.

Verwenden Sie Seriengehäuse, geplante Antennenposition und Stromversorgung. Variieren Sie unterstützte Sensorzahlen und Melderaten und wiederholen Sie dann die Prüfung an der vorgesehenen Betriebsgrenze mit kontrollierter Dämpfung oder repräsentativer Anordnung. RSSI allein ist kein Bestehenskriterium. Behalten Sie eine Vergleichsgruppe mit starkem Signal bei, damit Warteschlangen- oder CPU-Fehler von Funkproblemen getrennt werden können.

Szenario Fehlereinspeisung Erforderliche Beobachtung
Stabile Kapazität Aktive Sensorzahl und Melderate bis zur angegebenen Grenze erhöhen Aktualität je Sensor, Zustellquote eindeutiger Werte, Warteschlangenspitze und CPU-/Speichertrend
Synchronisierter Burst Alle Sensoren gleichzeitig melden lassen Hohe Latenzperzentile, Überlaufverhalten und Fairness
Ausfall eines Knotens Einen Sensor außer Reichweite bringen oder aus- und einschalten Erkennungs- und Erholungszeit; übrige Knoten bleiben im Zielbereich
Wiederverbindungssturm Alle Sensoren oder das Gateway neu starten Erster und letzter wiederhergestellter Strom, Einrichtungsparallelität und Wiederholungsverteilung
Uplink-Konkurrenz Wi-Fi-Scan, Wiederverbindung und dauerhafte Übertragung BLE-Lücken und Erholung bei begrenzten Warteschlangen
Uplink-Ausfall Server oder Netzwerkpfad blockieren Speichergrenze, Überlaufalarm und Nachlieferungszählung
Gemischte Versionen und Sicherheit Unterstützte Versionen und abgelehnte Zugangsdaten kombinieren Korrekte Zustände je Gerät ohne Benachteiligung gesunder Teilnehmer
Langzeitlauf Fehler über einen Zeitraum wiederholen, der erforderliche Betriebszyklen abdeckt Keine Ressourcenlecks, festhängenden Zustände oder unerklärlichen Datenverluste

Abnahme anhand nutzbarer Daten definieren

Legen Sie Bestehensgrenzen vor dem Test fest. Eine beispielhafte Spezifikation könnte ein 99. Perzentil des Messwertalters unter zwei Sekunden, eine definierte Zustellquote eindeutiger Messwerte und die Wiederherstellung aller erreichbaren Sensoren innerhalb eines vereinbarten Zeitfensters verlangen. Das sind beispielhafte Anforderungen, keine berichteten Ergebnisse. Ein langsamer Sensor mit einem Messwert pro Minute braucht ein anderes Aktualitätsziel.

Definieren Sie den Nenner: erwartete, im Messfenster erzeugte Messwerte, im Sensor gespeicherte Messwerte und zur Übertragung berechtigte Messwerte sind unterschiedliche Größen. Zählen Sie Duplikate getrennt von eindeutig zugestellten Messwerten. Dokumentieren Sie, wie bekannte Offline-Zeiten das Ziel beeinflussen. Erfassen Sie auch Erfolgsquote beim ersten Versuch und Verhalten des schlechtesten Knotens, damit Gesamtdurchschnitte keinen benachteiligten Sensor verdecken.

Messen Sie das Messwertalter ab dem Erfassungszeitstempel des Sensors nur, wenn die Uhren synchronisiert sind oder Versatz und Drift begrenzt sind. Andernfalls melden Sie die Verzögerung vom Gateway-Empfang bis zum Uplink getrennt und kennzeichnen das Ende-zu-Ende-Alter als unbekannt. Verwenden Sie eine monotone Uhr für lokale Zustandsdauern und erfassen Sie die vollständige Fehlerzeitachse: Ausfall, Erkennung, Verbindung, Abonnement und erster gültiger Messwert.

Die tatsächlich ausgefallene Schicht untersuchen

  • Verbindungen stehen, aber Daten fehlen: Prüfen Sie Service-Auflösung, Abonnementstatus, Berechtigungen und Datenerzeugung im Sensor.
  • Nur höhere Sensorzahlen scheitern: Prüfen Sie Controller-Grenzen, Puffermangel, Ereignisplanung und globale Einrichtungsparallelität.
  • Der Fehler folgt auf Uplink-Aktivität: Vergleichen Sie Wi-Fi-Koexistenzspuren, Callback-Dauer und Warteschlangenwachstum.
  • Ein fehlerhafter Sensor verzögert alle anderen: Prüfen Sie gemeinsame Sperren, seriell ausgeführte unbegrenzte Wiederholungen und Warteschlangenfairness.
  • Wiederverbindung gelingt nur nach Neustart: Suchen Sie nach verlorenen Verbindungsobjekten, veralteten Callbacks und Zuständen ohne Zeitlimit-Ausgang.

Eine nützliche Projektbeschreibung umfasst Sensormuster, Firmware-Versionen, Verkehrsprofile, Topologie, Uplink-Verhalten und numerische Abnahmeziele. Obeitas Gateway-Integrationsservice bietet einen passenden Rahmen zur Eingrenzung dieser Arbeit. Das Ergebnis sollte ein versionierter Kapazitätsbereich und Wiederherstellungsbericht für die gewählte Konfiguration sein, belegt durch Protokolle. Architekturkontext bietet die zugehörige Fallbeschreibung des ausgelieferten ESP32-Wi-Fi- und Bluetooth-Gateways. Die Zahlenbeispiele und der Testplan dieses Artikels sind keine Messergebnisse aus diesem Fall.

Ähnliche Beiträge