TutorialRFIDIoTindoor tracking

RFID-Lesegeräte in eine Indoor-Karte integrieren: Schritt für Schritt

Jeden RFID-Reader live auf der 3D-Ladenkarte zeigen: Lesungen in einem kleinen Relay bündeln, per Tabellen-API senden und Reader je Etage nach Status einfärben.

10 Min. LesezeitVeröffentlicht Aktualisiert Von Spatial Map team
3D-Vorschau von Retail Mart Store mit violetten RFID-Reader-Markern an Durchgängen, Aufzügen und Rolltreppen, roten Markern für Offline-Reader und Bestandsbadges an den Regalen

Was Sie bauen

RFID ist in Läden und Lagern seit Jahren ein Arbeitstier, und trotzdem lesen die meisten Teams es noch als durchlaufendes Ereignisprotokoll oder als Zählerraster. Beides sagt Ihnen nicht, welches Rampentor verstummt ist oder ob die Rolltreppen-Reader auf Level 2 überhaupt etwas sehen. Diese Anleitung bringt stattdessen jeden Reader auf den Grundriss. Sie folgt einer echten Demo-Anlage in Spatial Map – jeder Screenshot ist nachvollziehbar.

Die Demo: 85 Reader in einem Laden mit drei Etagen

Das Beispiel ist Retail Mart Store, ein Laden mit drei Etagen (Ground, Level 1, Level 2) im Demo-Workspace Production Corp. Er hat 85 feste Reader: 66 an Türen und Durchgängen zwischen Abteilungen, 9 an Aufzugstüren, 9 an den Enden der Rolltreppen und 1 im Treppenhaus. Jeder Reader ist ein Marker auf der Karte, benannt nach dem Reader – etwa „RFID-G-02 · Office ↔ Receiving / Loading Docks“. Eine Tabelle, Retail Mart · RFID Reader Reads, enthält eine Zeile pro Reader.

85
Reader auf 3 Etagen
61.795
Lesungen heute, alle Reader
69 · 12 · 4
Active · Idle · Offline
18
Felder pro Reader-Zeile
Retail Mart Store im Editor – Reader-Marker an Durchgängen, Aufzügen und Rolltreppen
Spatial-Map-Editor mit dem Grundriss von Retail Mart Store von oben, violetten RFID-Reader-Markern an Abteilungstüren, an den Aufzügen EV 1 und EV 2 und rund um die Rolltreppen im Erschließungskern sowie dem Ebenen-Panel rechts
Spatial-Map-Editor mit dem Grundriss von Retail Mart Store von oben, violetten RFID-Reader-Markern an Abteilungstüren, an den Aufzügen EV 1 und EV 2 und rund um die Rolltreppen im Erschließungskern sowie dem Ebenen-Panel rechts

Wie die Teile zusammenpassen

Feste UHF-Reader melden ihre Lesungen über Edge-Middleware – die LLRP-Schnittstelle des Readers selbst oder das SDK des Herstellers auf einer kleinen Box daneben. Diese Middleware liest Tags hervorragend, hat einer Karte aber nichts Brauchbares zu sagen. Deshalb kommt ein kleines Stück dazwischen: ein Relay, das Ihnen gehört. Es hört der Middleware zu, fasst die Lesungen pro Reader zusammen und schreibt das Ergebnis alle paar Sekunden über die Schreib-API in eine Spatial-Map-Tabelle. Karte und Bericht lesen aus dieser Tabelle.

RFID-Reader → Middleware → Relay → Spatial MapDer Reader meldet EPC-Lesungen an die Edge-Middleware; Ihr Relay zählt sie pro Reader und schickt alle paar Sekunden einen gebündelten JSON-Aufruf an eine Spatial-Map-Tabelle, die offene Karten und Berichte aktualisiert.

Warum zusammenfassen statt jede Lesung weiterzuleiten? Ein belebter Durchgang sieht Hunderte Lesungen pro Minute, viele davon dasselbe Tag an zwei Antennen. Eine Karte kann das nicht sinnvoll zeigen, und die Tabellen-API ist pro Schlüssel begrenzt. Eine Zeile pro Reader – Lesungen heute, in der letzten Stunde, eindeutige Tags, Ein- und Ausgänge, letztes Tag und letzte SKU sowie ein Status – ist genau das, was die Demo-Tabelle enthält und was eine Schichtleitung sehen will. Brauchen Sie stattdessen Positionen pro Tag, funktioniert dasselbe Muster mit einer Zeile pro Tag am zuletzt gesehenen Reader; siehe Echtzeit-Asset-Tracking in Gebäuden.

Weg hineinAktualitätGeeignet, wenn
Schreib-API der Tabelle (POST /rows/bulk)Sekunden – offene Karten laden neu, sobald geschrieben wirdSie ein Relay neben der Middleware betreiben können. Der empfohlene Weg.
Pull from a REST API (Tab API & access der Tabelle)Etwa eine Minute – der Server fragt per Timer abDie Middleware Zähler pro Reader bereits über einen REST-Endpunkt liefert.
Upload fileBei jedem UploadSie nur einen täglichen CSV- oder Excel-Export der Zähler haben.

Schritt 1 – Tabelle und API-Schlüssel anlegen

  1. 1
    Tabelle anlegen

    Öffnen Sie Tables → Create new table, vergeben Sie einen Namen (die Demo nutzt „Retail Mart · RFID Reader Reads“) und wählen Sie die Art RFID tag. Die vorgeschlagenen Standardspalten sind nur ein Ausgangspunkt: Benennen Sie sie um, ändern Sie den Typ oder entfernen Sie sie, passend zu dem, was Ihr Relay sendet.

  2. 2
    Eine Zeile pro Reader

    Legen Sie ein Textfeld `reader_id` mit Required und Unique an, dann `reader_name`, `floor`, `reader_type`, `status`, die Ganzzahl-Zähler (`reads_today`, `reads_last_hour`, `unique_tags_today`, `in_count_today`, `out_count_today`, `alerts_today`), `last_read_at` als Datum/Uhrzeit, `last_tag_epc`, `last_sku`, `last_direction`, `rssi_dbm`, `firmware` und `elevation_m`. Jeder Schreibvorgang wird gegen dieses Schema geprüft.

  3. 3
    Schlüssel erstellen

    Geben Sie im Tab API & access der Tabelle einen Schlüsselnamen ein und klicken Sie auf Create key. Der Schlüssel beginnt mit `sgv_tbl_` und wird nur einmal angezeigt – legen Sie ihn direkt in den Secrets des Relays ab. Ein Schlüssel schreibt nur in diese eine Tabelle; geben Sie jedem Relay einen eigenen, damit Sie einen widerrufen können, ohne die anderen zu stören. Schlüssel anlegen können Owner und Admins.

  4. 4
    Basis-URL kopieren

    Derselbe Tab listet die 12 Endpunkte mit curl-Beispielen zum Kopieren. In Produktion lautet die Basis `https://app.spatialmap.io/api/v1/public/tables`; der Schlüssel bestimmt die Tabelle, daher steht keine Tabellen-ID im Pfad.

Create new table – Art wählen, dann Felder gestalten
Seite Create new table mit dem Feld Table name, der Artauswahl (Polygon / area, Circle, Marker / POI, Asset (mobile), Camera, Sensor, Shipment, RFID tag, Streaming / batch replay) und der Feldliste mit Field label, API key, Type und den Regeln Required / Unique
Seite Create new table mit dem Feld Table name, der Artauswahl (Polygon / area, Circle, Marker / POI, Asset (mobile), Camera, Sensor, Shipment, RFID tag, Streaming / batch replay) und der Feldliste mit Field label, API key, Type und den Regeln Required / Unique

Schritt 2 – Das Relay schreiben

Das Relay umfasst ein paar Dutzend Zeilen in der Sprache Ihrer Wahl. Abonnieren Sie die Lese-Ereignisse der Middleware (LLRP-Reports oder den Callback des SDK), führen Sie einen kleinen Zähler pro Reader im Speicher und senden Sie per Timer – alle 5 bis 10 Sekunden reicht völlig – alle geänderten Reader in einem gebündelten Aufruf. Nutzen Sie die Reader-ID als `entityKey`, damit jeder Aufruf die vorhandene Zeile aktualisiert, statt eine neue anzulegen.

bash·Reader-Zeilen gebündelt upserten (POST /rows/bulk)
curl -X POST https://app.spatialmap.io/api/v1/public/tables/rows/bulk \
  -H "Authorization: Bearer $SPATIALMAP_TABLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "rows": [
      {
        "entityKey": "RFID-G-02",
        "payload": {
          "reader_id": "RFID-G-02",
          "reader_name": "RFID-G-02 · Office ↔ Receiving / Loading Docks",
          "floor": "Ground",
          "reader_type": "Gate",
          "status": "Active",
          "reads_today": 590,
          "reads_last_hour": 56,
          "unique_tags_today": 288,
          "in_count_today": 294,
          "out_count_today": 296,
          "last_read_at": "2026-10-08T09:25:12Z",
          "last_tag_epc": "E2801121130DB42AB66C7A7B",
          "last_sku": "SKU-339201 Frozen Peas 1kg",
          "last_direction": "Out",
          "alerts_today": 2,
          "elevation_m": 2.4
        }
      },
      {
        "entityKey": "RFID-L1-15",
        "payload": {
          "reader_id": "RFID-L1-15",
          "reader_name": "RFID-L1-15 · Escalator 2 top · L1",
          "floor": "Level 1",
          "reader_type": "Escalator",
          "status": "Idle",
          "reads_today": 525,
          "reads_last_hour": 29,
          "unique_tags_today": 220,
          "in_count_today": 261,
          "out_count_today": 264,
          "last_read_at": "2026-10-08T09:25:49Z",
          "last_tag_epc": "E280115AC002CF6117A1B75B",
          "last_sku": "SKU-509112 LED TV 55in",
          "last_direction": "Out",
          "alerts_today": 0,
          "elevation_m": 6.067
        }
      }
    ]
  }'

`POST /rows` und `POST /rows/bulk` sind Upserts: Der gesendete Payload wird zum vollständigen Zustand der Zeile, senden Sie also immer die ganze Zeile. Um nur ein Feld zu ändern – etwa einen Reader auf Offline zu setzen, wenn sein Heartbeat ausbleibt –, nutzen Sie `PATCH`; das führt die Änderung mit dem gespeicherten Payload zusammen.

bash·Ein Feld eines Readers ändern (PATCH /rows/{key})
curl -X PATCH https://app.spatialmap.io/api/v1/public/tables/rows/RFID-G-01 \
  -H "Authorization: Bearer $SPATIALMAP_TABLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"Offline"}'

Kein Relay? Zwei andere Wege

  • Pull from a REST API – tragen Sie im Tab API & access der Tabelle die URL der Middleware, ein Intervall (im Formular mindestens 30 Sekunden), das Feld für den Zeilenschlüssel, den JSON-Pfad zu den Einträgen, nötige Header und die Feldzuordnung ein und klicken Sie auf Start polling. Ein serverseitiger Worker führt das etwa einmal pro Minute aus, auch wenn niemand eine Karte offen hat. Jede Abfrage liest bis zu 1.000 Zeilen aus einer Antwort von höchstens 10 MB.
  • Upload file – für Läden, die nur tägliche Zählerstände exportieren. Fügen Sie unter Integrations → Add integration → Upload file eine CSV-, Excel-, JSON- oder GeoJSON-Datei hinzu und nutzen Sie Re-import für den Export des nächsten Tages.

Die Karten- und Berichtsschritte unten bleiben gleich, egal wie die Daten ankommen. Die API-Referenz steht unter Tables, ein komplettes Beispiel unter Push rows with the table write API.

Schritt 3 – Die Reader auf die Karte bringen

Jeder Reader braucht einen Marker an seiner echten Position: an einer Tür, neben einer Aufzugstür, oben oder unten an einer Rolltreppe. Setzen Sie sie mit dem Werkzeug Marker auf der richtigen Etage und geben Sie jedem Marker genau den Namen, den Ihr Relay in `reader_name` schreibt. Dieser Name ist im nächsten Schritt der Join-Schlüssel – kopieren Sie ihn, statt ihn abzutippen. In einem mehrstöckigen Laden legen Sie zuerst Etagen, Aufzüge und Rolltreppen an – Multi-floor store with escalators and lifts zeigt dasselbe Retail-Mart-Layout.

Ein ausgewählter Marker – sein Name ist das, worauf die Datenverknüpfung abgleicht
Editor von Retail Mart Store mit ausgewähltem Marker Consulting Room; das Seitenpanel zeigt die Aktionen Move, Fit, Duplicate, Delete und Edit linked data, einen Bearing-Regler und eine Symbolauswahl mit Suche über mehr als 1.700 Symbole, während violette Reader-Marker Aufzüge und Rolltreppen umgeben
Editor von Retail Mart Store mit ausgewähltem Marker Consulting Room; das Seitenpanel zeigt die Aktionen Move, Fit, Duplicate, Delete und Edit linked data, einen Bearing-Regler und eine Symbolauswahl mit Suche über mehr als 1.700 Symbole, während violette Reader-Marker Aufzüge und Rolltreppen umgeben

Schritt 5 – Live zusehen, dann den Bericht bauen

Speichern Sie die Verknüpfung und öffnen Sie die Anlage in der Preview oder über einen Freigabelink. Jeder Reader-Marker pulsiert jetzt mit seinem Zähler der letzten Stunde, eingefärbt nach Status. Schreibt das Relay, benachrichtigt der Server offene Karten, die diese Ebene sofort neu laden; ein 30-Sekunden-Refresh dient als Sicherheitsnetz. Fahren Sie über einen Reader für den Tooltip, klicken Sie für den vollständigen Datensatz und seine History.

Retail Mart Store in der Preview – Reader nach Status eingefärbt
3D-Vorschau von Retail Mart Store auf einer Straßenkarte mit violetten RFID-Reader-Markern entlang der Durchgänge und um die Rolltreppen, roten Markern an Offline-Readern, Bestandsbadges mit Prozentwerten sowie den Bedienelementen Layers (11/11) und Quality rechts
3D-Vorschau von Retail Mart Store auf einer Straßenkarte mit violetten RFID-Reader-Markern entlang der Durchgänge und um die Rolltreppen, roten Markern an Offline-Readern, Bestandsbadges mit Prozentwerten sowie den Bedienelementen Layers (11/11) und Quality rechts

Für alle, die nicht im Editor arbeiten, hat die Demo auch einen Vollkarten-Bericht: Retail Mart · RFID Live Map. Links steht die Reader-Liste, in der Mitte die Live-Karte des Ladens, und darüber schweben die Zahlen: KPIs für Zeilen, Lesungen heute, Lesungen der letzten Stunde und eindeutige Tags heute, ein By status-Ring und ein Balkendiagramm Reads today by floor. Die Filter Floor, Status und Search grenzen alles gleichzeitig ein – wählen Sie Offline, und Sie haben die Wartungsliste für den Morgen. Siehe Full-map reports.

Retail Mart · RFID Live Map – der Vollkarten-Bericht
Vollkarten-Bericht Retail Mart · RFID Live Map: Reader-Liste links mit den heutigen Lesungen pro Reader, die Ladenkarte in der Mitte, KPI-Karten Rows 85, Total reads today 61,795 und Total reads last hour 6,700 sowie ein Insights-Panel mit einem Ring By status und einem Balkendiagramm Reads today by floor
Vollkarten-Bericht Retail Mart · RFID Live Map: Reader-Liste links mit den heutigen Lesungen pro Reader, die Ladenkarte in der Mitte, KPI-Karten Rows 85, Total reads today 61,795 und Total reads last hour 6,700 sowie ein Insights-Panel mit einem Ring By status und einem Balkendiagramm Reads today by floor

Stolperfallen aus der Praxis

“Schicken Sie der Karte Zustand, keine Ereignisse: eine Zeile pro Reader, alle paar Sekunden aktualisiert, erfasst eine Schichtleitung auf einen Blick.”

Wie es weitergeht

Die Demo legt einige naheliegende Erweiterungen nahe. Fügen Sie eine Stilregel auf `alerts_today` (das Feld „Exit alerts today“) hinzu, damit Durchgänge mit Ausgangsalarmen hervorstechen – das ändert eine Farbe auf Karte und Bericht, verschickt aber keine Benachrichtigung. Kombinieren Sie den Reader-Status mit Regalbeständen und Kühlketten-Sensoren auf denselben Etagen wie in der Lösung für den Einzelhandel, oder konzentrieren Sie sich mit der Diebstahlschutz-Lösung auf Ausgänge und Durchgänge. Für bewegte Assets statt fester Reader lesen Sie Echtzeit-Asset-Tracking in Gebäuden.

Testen Sie die Plattform, auf die Ihre Daten gehören.

Spatial Map verwandelt Tabellen, Sensor‑Streams und CAD‑Zeichnungen in eine lebende 3D‑Ansicht Ihrer Standorte — nichts zu installieren, sieben Tage kostenfrei.

Live ansehen

Weiterlesen