Ein einfacher Advertising-Beacon beantwortet nur eine Frage: “Wo ist dieses Tag?”. Fuegen Sie einen Sensor hinzu — Temperatur, Feuchtigkeit, Beschleunigung, Licht — wird dieselbe Hardware zu einem verteilten Messknoten, der “Wie ist der Zustand hier, und hat sich etwas geaendert?” beantwortet. Dieser Artikel behandelt die Engineering-Entscheidungen hinter Sensor-Beacons: wie man Sensoren anbindet, wie man Messwerte in die 31-Byte-Werbenutzlast packt, wie die Abtastrate die Batterielebensdauer treibt und wie die On-Device-Schwellenwertslogik einen dummen Sender in einen Edge-Detektor verwandelt.

1. Warum Sensor-Beacons anders sind

Ein reines Positions-Beacon sendet eine feste Nutzlast in festem Intervall. Sein Stromverbrauch ist deterministisch und seine Firmware trivial. Ein Sensor-Beacon muss:

1. Den Sensor aus dem Schlaf wecken (oder in einem Low-Power-Abtastmodus halten)

2. Einen Messwert erfassen ueber I2C/SPI, was Millisekunden dauert und Sensor-Ruhestrom verbraucht

3. Den Wert verarbeiten (Filterung, Kalibrierung, Schwellenwertpruefung)

4. Entscheiden, was gesendet wird — der Rohwert, ein Delta oder nichts

5. Kodieren und werben das Ergebnis

Jeder Schritt fuegt Latenz und Strom hinzu. Das Design-Problem ist die Balance zwischen Messgenauigkeit und Batterielebensdauer, denn das Sensorsubsystem — nicht das Funkmodul — dominiert das Budget, sobald man oefter als ein paar Mal pro Stunde abtastet.

2. Sensor-Schnittstellen und Stromverbrauch

Die meisten Beacon-Sensoren haengen an einem digitalen Bus. Die zwei gaengigen Optionen:

Schnittstelle Speed Typ. Sensorstrom Wake-Latenz Hinweise
I2C 100-400 kHz 1-15 µA idle, 100-500 µA aktiv 1-5 ms 2 Leitungen, adressbegrenzt, leicht teilbar
SPI 1-8 MHz 2-20 µA idle, 200-800 µA aktiv 0,1-1 ms 4 Leitungen, schneller, niedrigere Latenz

Fuer ein Knopfzellen-Beacon ist die dominierende Kosten nicht der Aktivstrom, sondern die Energie pro Probe = (Wake-Latenz + Konvertierungszeit) × Durchschnittsstrom. Ein Feuchtigkeitssensor, der 10 ms bei 300 µA braucht, kostet 3 µC pro Messung. Bei 1 Probe/Stunde sind das 3 µC/h ≈ 0,83 µA im Schnitt — vernachlaessigbar. Bei 1 Probe/Minute sind es 50 µA im Schnitt — jetzt konkurriert es mit dem Funkmodul.

2.1 Gaengige Sensoren und ihre Fussabdruecke

Sensor Typ. Bauteil Bus Aktivstrom Konvertierungszeit Ausgangsbereich
Temperatur TMP117 I2C 3,5 µA 15,5 ms (avg) -0,1 bis 0,2 °C
Feuchtigkeit HDC2080 I2C 300 µA 1,2 ms ±2 % rF
3-Achsen-Beschl. LIS2DH12 I2C/SPI 4 µA (Low-Power) 1 ms ±2/4/8/16 g
Umgebungslicht OPT3001 I2C 1,8 µA 100-800 ms 0,01-83k lux
Druck LPS22HB I2C/SPI 25 µA 13 µs (ODR) ±0,025 hPa
CO2 (NDIR) SCD40 I2C 18 mA (Puls) 0,5-5 s 0-40000 ppm

Der CO2-Sensor sticht heraus: bei 18 mA ist er 1000× der Schlafstrom des Funkmoduls und kann nicht kontinuierlich an einer Knopfzelle laufen. Er ist das kanonische Beispiel, warum die Sensorwahl die Stromarchitektur begrenzt — ein CO2-Beacon braucht eine groessere Zelle oder Kabelstrom.

3. Kodierung von Sensordaten in 31 Bytes

Ein BLE-Werbepaket traegt eine 31-Byte-Nutzlast (Legacy), aufgeteilt in AD-Strukturen: 1 Byte Laenge, 1 Byte Typ, dann Daten. iBeacon nutzt 25 Byte Herstellerdaten; Eddystone-URL nutzt ~20. Das laesst wenig Platz fuer Sensoren.

3.1 Die Regel “Anhaengen, nicht ersetzen”

Behalten Sie den Identitaetsrahmen (iBeacon / Eddystone-UID) intakt fuer Positionssysteme und fuegen Sie einen sekundaeren Werberahmen hinzu, der Sensordaten traegt. BLE erlaubt einem Beacon, zwischen mehreren Werberahmen zu wechseln (abwechselnd bei jedem Werbeevent). Ein Gateway, das alle 3 Kanaele ueber einige Sekunden scannt, erfasst beide.

3.2 Eddystone-TLM: der eingebaute Telemetriekanal

Eddystone-TLM ist der standardisierte Weg, Telemetrie zu tragen:

Feld Bytes Inhalt
Version 1 0x00
Batteriespannung 2 1 mV Einheiten, 0-65535
Beacon-Temperatur 2 8,8 Fixed-Point, °C
PDU-Zaehler 4 Lebenspaketzaehler
Betriebszeit 4 0,1 s Einheiten

TLM ist sauber, aber begrenzt: ein Temperaturwert, nur Batterie, keine Feuchte/Beschleunigung. Fuer reichere Daten brauchen Sie einen benutzerdefinierten Herstellerdatenrahmen (MSD).

3.3 Beispiel fuer benutzerdefinierte MSD-Kodierung

Ein kompaktes Layout fuer ein Multi-Sensor-Beacon (Little-Endian):

Byte 0:    Company ID LSB (0x4C fuer Apple, oder Ihre CID)

Byte 1: Company ID MSB

Byte 2: Rahmentyp = 0x50 (Vendor-Sensorrahmen)

Byte 3: Sensor-Bitmap (bit0 temp, bit1 hum, bit2 accel, bit3 licht, bit4 batt)

Byte 4-5: Temperatur, 8,8 Fixed-Point, vorzeichenbehaftet (×256)

Byte 6-7: Feuchtigkeit, 8,8 Fixed-Point (×256)

Byte 8-9: Licht, 10-Bit-Logskala (0-1023 → 0,01-100k lux log)

Byte 10-11:Batterie mV (0-65535)

Byte 12-13:Beschleunigungsbetrag, 8,8 Fixed (g × 256)

Byte 14: Status / Flags (Bewegung erkannt, Schwelle ausgeloest)

Byte 15: Sequenznummer (wrappt 0-255)

Dieser 16-Byte-Rahmen existiert neben einem iBeacon-Identitaetsrahmen mit Platz zu ueber. Die Bitmap erlaubt einem Beacon, fehlende Sensoren wegzulassen und die Nutzlast zu verkleinern. Ein Nur-Temperatur-Beacon sendet Byte 0-7 (8 Byte); ein vollstaendiger Sensorknoten sendet alle 16.

3.4 Komprimierungstricks

  • Delta-Kodierung: Werben Sie die Aenderung seit der letzten Messung, nicht den Absolutwert. Eine Temperatur, die 0,1 °C/Stunde driftet, passt in ein vorzeichenbehaftetes 8-Bit-Delta (±127 × 0,01 °C) statt eines 16-Bit-Absolutwerts.
  • Fixed-Point statt Float: 8,8 Fixed-Point kostet 2 Byte fuer ±127,99 mit 0,004 °C Aufloesung — genug fuer Umweltmonitoring.
  • Logskala Licht: `encoded = round(1023 × log10(lux/0,01) / log10(100000/0,01))` packt 5 Dekaden in 10 Bit.
  • Run-Length-Skip: Wenn sich nichts ueber den Rauschboden hinaus geaendert hat, senden Sie einen Heartbeat-Rahmen alle N Zyklen statt jeden Zyklus.

4. Abtaststrategie und Strombudget

Der groesste Hebel auf die Batterielebensdauer ist wie oft Sie abtasten. Drei Strategien:

4.1 Festes periodisches Abtasten

Am einfachsten: alle T Sekunden abtasten, jede Messung werben.

Durchschnittsstrom ≈ I_radio_adv × duty_adv + I_sensor_avg × (t_sample / T)

Fuer T = 60 s, t_sample = 5 ms, I_sensor_avg = 200 µA: Sensorbeitrag = 200 µA × 5ms/60s = 0,017 µA — vernachlaessigbar. Das Funkmodul (z.B. Schlaf 1 µA, 3 ms bei 15 mA alle 1 s) dominiert mit ~45 µA. Also bei 1/min Abtasten ist der Sensor gratis; pusht man auf 1/s, steigt der Sensorbeitrag auf ~1 µA — noch klein, aber nicht mehr vernachlaessigbar.

4.2 Adaptives / On-Demand-Abtasten

Langsam abtasten (z.B. alle 5 min) fuer den Identitaetsrahmen, aber den Interrupt des Beschleunigungssensors den MCU bei Bewegung wecken lassen. Der Beschleunigungssensor im Wake-on-Motion-Modus zieht ~1-4 µA kontinuierlich, eliminiert aber Funkaktivitaet, bis etwas passiert. Fuer Asset-Tracking, wo Bewegung selten ist, senkt das den Durchschnittsstrom um 10-100×.

4.3 Schwellenwert-Ausgeloeste Burst

Das Beacon bleibt stumm (Deep Sleep, <1 µA), bis ein Wert eine Grenze ueberschreitet — Gefrierer ueber 0 °C, Vibration ueber 2 g, Tuer geoeffnet. Beim Ausloesen:

1. Voll wecken

2. Einen Burst von N Proben bei hoher Rate erfassen (zur Ereignischarakterisierung)

3. Einen Alarmrahmen mit Spitzenwert + Zeitstempel werben

4. Zurueck in Deep Sleep

Das ist das Edge-Intelligence-Muster: Das Beacon entscheidet, *ob* es spricht, nicht nur, *was* es sagt. Der Durchschnittsstrom bricht auf den Schlafboden plus seltene Burstenergie zusammen.

4.4 Strombudget-Rechenbeispiel

Knopfzelle CR2032 = 225 mAh = 810 C. Ziellebensdauer 2 Jahre = 17,5 k Stunden.

Komponente Strom Duty Durchschnitt
nRF52 Schlaf 0,6 µA 99,9% 0,6 µA
Radio adv (3 ms @ 15 mA, 1/2 s) 15 mA 0,6% 90 µA*
Sensorabtastung (5 ms @ 200 µA, 1/min) 200 µA 0,0008% 0,017 µA
Beschl. Wake-on-Motion 2 µA 100% 2 µA
Gesamt (periodisch) ~92,6 µA
Gesamt (Schwelle, 99% stumm) ~2,6 µA

*Das Funkmodul dominiert den periodischen Modus. Umschalten auf Schwellenwertausloesung senkt den Gesamtstrom 35× und verlaengert die Lebensdauer von ~2,5 Jahren auf Jahrzehnte (Zellselbstentladung wird zum Limit).

5. On-Device-Filterung und Trigger-Logik

Jeden Rohwert senden verschwendet Bandbreite und Batterie. Das Beacon sollte filtern:

  • Toter Bereich (Deadband): Nur werben, wenn |Wert − zuletzt_gesendet| > Δ (z.B. 0,3 °C). Unterdrueckt Rausch-Chatter.
  • Gleitender Durchschnitt: 4-8 Proben mitteln, um Einzel-Spikes vor dem Deadband-Vergleich zu toeten.
  • Aenderungsrate: Ausloesen, wenn d(Wert)/dt eine Steigung ueberschreitet (z.B. Temp faellt 5 °C/min = Kompressor defekt).
  • Hysterese: Separate Ein-/Aus-Schwellen (z.B. Alarm bei >0 °C, Freigabe bei <-0,5 °C), um Alarm-Flattern an der Grenze zu vermeiden.

Eine minimale Zustandsmaschine:

Zustand: IDLE

bei Timer-Tick:

v = sensor_lesen()

v_f = tiefpass(v)

if |v_f - zuletzt_gesendet| > deadband:

werben(v_f); zuletzt_gesendet = v_f

if v_f > schwelle_hoch and Zustand == IDLE:

Zustand = ALARM; alarm_werben(v_f, grund=HOCH)

if Zustand == ALARM and v_f < schwelle_niedrig:

Zustand = IDLE; freigabe_werben()

Diese Logik laeuft in <1 ms auf dem nRF52 und kostet vernachlaessigbaren Strom gegenueber dem Funkmodul.

6. Echte Bereitstellungsmuster

6.1 Kuehlkettenueberwachung

Ein Temp+Feuchte-Beacon im Impfstoffkuehler. Alle 5 min abtasten, werben bei Deadband (0,2 °C) oder Schwelle (>8 °C Alarm, <-0,5 °C Freigabe mit Hysterese). Das Gateway protokolliert die Zeitreihe; ein Verstoss loest Push-Benachrichtigung aus. Batterie: CR2477 (1000 mAh) haelt 3+ Jahre bei 5-min-Abtastung.

6.2 Predictive-Maintenance-Vibration

Ein Beschleunigungs-Beacon an einem Motor verschraubt. Im Wake-on-Motion erfasst es 1-kHz-Vibrationsbuerste nur, wenn der Motor laeuft. RMS-Beschleunigung ueber ein Fenster zeigt Lagerverschleiss. Wochenuebergreifender RMS-Trendvergleich (im Gateway berechnet) sagt Ausfall vor Bruch voraus. Strom: Die 2 µA Idle des Beschleunigungssensors dominieren; CR2032 haelt 1-2 Jahre.

6.3 Smart-Building-Belegung

Ein Licht+PIR- (oder mmWave-) Beacon in jedem Raum. Lichtpegel + passives IR geben Praesenz ohne Kameras. Das Beacon wirbt nur Belegungszustandsaenderungen (Eintritt/Austritt), nicht kontinuierliches lux. Durchschnittsstrom dominiert vom PIR-Ruhestrom ~5 µA — ein AA-Pack haelt Jahre.

7. Gateway-seitige Ueberlegungen

Das Gateway muss den benutzerdefinierten MSD-Rahmen verstehen. Praktische Punkte:

  • Alle 3 Kanaele scannen: Sensorrahmen wechseln mit Identitaetsrahmen; beide zu erfassen braucht Multikanal-Verweildauer ≥2-3 Werbeintervalle.
  • Bitmap parsen: Nur vorhandene Sensoren dekodieren; unbekannte Rahmentypen graceful ignorieren.
  • Sequenznummern handhaben: Verpasste Rahmen (Luecke in seq) erkennen, um unzuverlaessige Links zu markieren.
  • Zeitreihe speichern: In InfluxDB/TimescaleDB schreiben; das Beacon selbst haelt keinen Verlauf.
  • Kalibrierungs-Offset: Gerätespezifische Kalibrierkonstanten serverseitig anwenden (jeder Sensor hat Bias).

8. Fallstricke

  • I2C-Bus-Lockup: Ein Sensor, der einen Takt verpasst, kann SDA niedrig halten und den Bus einfrieren. Fuegen Sie bei jedem Wake eine Recovery-Sequenz hinzu (SCL 9× toggeln, STOP senden).
  • Kaltstart-Offset: TMP117 braucht 15,5 ms Durchschnittskonvertierung; zu schnelles Abtasten liefert veraltete Daten. t_conv respektieren.
  • Batteriespannung als Temperaturproxy: Viele Beacons melden V_batt, aber unter Last faellt die Spannung — Batterie nur nach Ruheperiode messen fuer Genauigkeit.
  • RH-Kondensation: HDC2080 liest 100 % rF bei Kondensation; das Gateway sollte anhaltendes 100 % rF als Fehler markieren, nicht als gueltigen Wert.
  • Werbekollision: Hinzufuegen eines Sensorrahmens verdoppelt die Airtime; bei hoher Beacon-Dichte steigt die Kollisionswahrscheinlichkeit (siehe Kollisionsartikel). Halten Sie den Sensorrahmen kurz und bei separatem Werbeintervall, wenn moeglich.

9. Design-Checkliste

  • [ ] Sensoren waehlen, deren Strom in die Zelle passt (18-mA-CO2 an Knopfzelle vermeiden)
  • [ ] Sekundaeren Werberahmen nutzen; Identitaetsrahmen fuer Position behalten
  • [ ] Mit Fixed-Point + Bitmap packen; langsame Drift delta-kodieren
  • [ ] Deadband + Hysterese setzen, um Chatter zu unterdruecken
  • [ ] Schwelle/Wake-on-Motion vor festem schnellem Abtasten bevorzugen
  • [ ] I2C-Bus-Recovery bei jedem Wake hinzufuegen
  • [ ] MSD-Layout dokumentieren, damit Gateway es parsen kann
  • [ ] Batteriemodell gegen gemessenen Schlafstrom pruefen, nicht Datenblatt-Typ

10. Fazit

Ein Sensor-Beacon ist ein Edge-Geraet, kein bloßer Sender. Der Engineering-Wert liegt in den on-device getroffenen Entscheidungen: wann abzutasten, wann zu schweigen und welche minimalen Bytes zu senden. Mit Fixed-Point-Packing, bitmap-getriebener Nutzlast, Deadband-Filterung und schwellenwertausgeloesten Buersten kann ein Knopfzellen-Beacon Jahre lang Umgebungszustand melden und spricht nur, wenn es wichtig ist.

Das Funkmodul war nie der Flaschenhals — Sensorsstrom und Abtastrate sind es. Gestalten Sie die Wake-Logik zuerst; der Werbekodierer ist der einfache Teil.

Comments

No comments yet. Why don’t you start the discussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert