ESL-Tags über die API mit Artikeln verbinden
Der Planogramm ist aktualisiert. Die Preise stimmen im ERP, stimmen in der Vorlage für das Regaletikett, stimmen im Produktstamm. Und trotzdem zeigt ein Gang drei Stunden später noch den alten Preis – weil das elektronische Regaletikett an dieser Regalposition noch mit dem Artikel verbunden ist, der dort früher lag. Jemand muss mit einem Handheld durch den Gang laufen, das Tag scannen, den Artikel scannen und das ein paar hundert Mal wiederholen.
Dieser manuelle Zuordnungsschritt ist das letzte Stück Regaletikettierung, das sich der Automatisierung widersetzt. Das muss nicht sein. Mit der ESL Binding API im Next Generation Label Printing System (LPSNG) können Sie ESL-Tags programmatisch mit Artikeln verknüpfen, Artikeldaten über eine herstellerneutrale JSON-Schnittstelle an die Displays übertragen und einen Scanner nur dann in die Hand nehmen, wenn wirklich etwas schiefgelaufen ist.
Dieser Artikel führt Sie durch die Automatisierung von Anfang bis Ende: das einmalige Setup, die Pipeline, die die Verknüpfung übernimmt, was zu überwachen ist und wie Sie sie zuverlässig halten.
Einmaliges Setup: Ihre ESL-Umgebung vorbereiten
Das machen Sie einmal pro Filiale, Basisstation oder MDE-Einheit (Mobile Data Entry). Alles danach ist ein geplanter Job.
1. Registrieren Sie Ihr externes System
LPSNG verwendet ein vereinfachtes OAuth2-Registrierungsprotokoll: Sie verbinden ein externes System – eine ESL-Basisstation, eine Handheld-MDE-Einheit, einen Middleware-Dienst – mit einer einzigen URL. LPSNG verwaltet den Token-Austausch hinter dieser Registrierung, sodass Sie keinen OAuth2-Client von Grund auf implementieren müssen.
In der Praxis bedeutet das, dass Ihre Integrationskonfiguration eine Registrierungs-URL und eine Anmeldeinformation enthält, keine Token-Refresh-State-Machine:
# lpSng-integration.yaml
esl:
registration_url: "https://lpsng.rsj.de/..." # from your LPSNG registration
client_id: "${LPSNG_CLIENT_ID}"
client_secret: "${LPSNG_CLIENT_SECRET}" # keep in a secret store, not in git
store_id: "store-0417"
Bewahren Sie diese Werte in einem Secret Manager auf. Die Registrierung ist der eine Schritt, bei dem ein Fehler teuer rückgängig zu machen ist.
2. Stellen Sie sicher, dass die Hardware erreichbar ist
Ihre ESL-Tags müssen installiert und in Reichweite ihrer Basisstation oder ihres Gateways sein, bevor ein API-Aufruf erfolgreich sein kann. Wenn Sie CATIC-ESL-Hardware betreiben, folgen Sie den CATIC-Installationsanweisungen – Antennenplatzierung und Tag-Adressierung sind die beiden Dinge, die am häufigsten zu „die API hat funktioniert, aber im Regal hat sich nichts geändert" führen.
3. Bestätigen Sie Ihren Display-Update-Pfad
Display-Inhalte werden über die herstellerneutrale JSON-Dateischnittstelle (ESLSEND) aktualisiert. Das ist der Teil, der architektonisch relevant ist: Die Payload ist JSON, kein proprietäres Binärformat, sodass Ihre Integration nicht an einen Tag-Hersteller geschweißt ist. Die Implikationen haben wir in What a Vendor-Neutral ESL Interface Means for Developers behandelt.
4. Richten Sie LPSNG auf Ihre Artikeldaten aus
Der Verknüpfungsschritt braucht etwas, womit er verknüpfen kann. LPSNG kann Excel-Dateien als Daten- und Lookup-Dateien verwenden, ein Google-Sheets-Add-on für Teams, die in Tabellenkalkulationen leben, oder Ihr ERP als vorgelagerte Quelle. Die Verknüpfungslogik selbst ist das egal – sie braucht einen stabilen Schlüssel (SKU oder EAN) und die Felder, die Sie auf dem Display haben möchten.
Wenn Sie es auf die harte Tour wollen, können Sie ESLSEND-JSON-Dateien von Hand erstellen und den OAuth2-Token-Austausch selbst durchführen. Der verwaltete Workflow von LPSNG existiert, damit Sie das nicht müssen.
Die automatisierte Pipeline: Tags mit Artikeln verknüpfen
Hier ist der Ablauf, Schritt für Schritt.
Schritt 1 — Den Verknüpfungsprozess auslösen
Die ESL Binding API ist ein Webdienst, der speziell für MDE-Einheiten ohne Webinterface entwickelt wurde: Ein Handheld kann ihn aufrufen, ein Cron-Job kann ihn aufrufen, ein Webhook kann ihn aufrufen. Ein Verknüpfungslauf beginnt mit einer HTTP-Anfrage.
curl -X POST "$LPSNG_BASE/binding/jobs" \
-H "Authorization: Bearer $LPSNG_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"store_id": "store-0417",
"source": "erp-sync-2026-10-18",
"mode": "reconcile"
}'
Der genaue Pfad und die Parameter stehen in der Dokumentation der Webdienst-Schnittstelle; wichtig ist, dass ein Verknüpfungslauf ein Job ist, den Sie einreichen, keine Sitzung, die Sie durchsitzen.
Schritt 2 — LPSNG Artikel Tag-IDs zuordnen lassen
Dies ist der Schritt, der den Scanner ersetzt. LPSNG nimmt Artikelbezeichner (SKU, EAN) aus Ihrer Datenquelle und gleicht sie mit ESL-Tag-IDs ab, wobei es die dem System bereits bekannte Beziehung zwischen Tag und Regalposition nutzt. Ihr Code muss nie wissen, welches physische Tag über welchem Regal hängt.
Wenn Sie den Abgleich selbst steuern, ist die Schleife klein:
import os, requests
BASE = os.environ["LPSNG_BASE"]
HEADERS = {"Authorization": f"Bearer {os.environ['LPSNG_TOKEN']}"}
def reconcile(store_id: str, items: list[dict]):
"""items: [{"sku": "...", "ean": "...", "price": "...", "name": "..."}]"""
resp = requests.post(
f"{BASE}/binding/jobs",
headers=HEADERS,
json={"store_id": store_id, "items": items, "mode": "reconcile"},
timeout=30,
)
resp.raise_for_status()
return resp.json()["job_id"]
Schritt 3 — Artikeldaten an die Displays übertragen
Sobald ein Tag verknüpft ist, aktualisiert LPSNG das ESL-Display mit den artikelspezifischen Werten, die Sie liefern – Preis, Name, Barcode, was auch immer das Layout verwendet – über die ESLSEND-JSON-Schnittstelle. Eine minimale Payload sieht ungefähr so aus (das vollständige Schema finden Sie in den ESL-Schnittstellendokumenten):
{
"esl_id": "TAG-0042-1188",
"item": {
"sku": "SKU-88213",
"ean": "4012345678901",
"name": "Organic Coffee 500g",
"price": "8.49"
}
}
Da das Format herstellerneutral ist, ist ein späterer Wechsel der Tag-Hardware eine Deployment-Frage, keine Neuimplementierung.
Schritt 4 — Die Etiketten drucken, die noch gedruckt werden müssen
Manche Dinge bleiben physisch: Werbe-Regalsprecher, Regalrandstreifen, Kartonetiketten. Diese können aus denselben Artikeldaten gerendert werden, denn die Webdienst-API von LPSNG kann Druckaufträge einreichen und einzelne Etiketten als PDF oder PNG rendern, und der Standalone Player kann aus derselben Paket-plus-Daten-Eingabe PDF, PNG, JSON, Druckaufträge oder ESL-Updates ausgeben. Eine Datenquelle, zwei Ausgabekanäle.
Das Ganze als geplanter Workflow
Ein nächtlicher Abgleich ist normalerweise ausreichend:
# crontab: every night at 02:15, after the ERP export lands
15 2 * * * /usr/local/bin/python /opt/esl/sync.py --store store-0417 >> /var/log/esl-sync.log 2>&1
# sync.py (sketch)
items = load_from_erp() # or read the Excel/Sheets export
job_id = reconcile("store-0417", items)
wait_for_job(job_id) # poll LPSNG for job status
handle_failures(job_id) # retry or flag
Cron ist in Ordnung. Ein Webhook von Ihrem ERP ist besser – er verknüpft Tags in dem Moment, in dem sich Preise ändern, statt Stunden später.
Überwachung und Fehlerbehandlung
Automatisierung, die Sie nicht sehen können, ist Automatisierung, der Sie nicht vertrauen können.
- Verfolgen Sie Jobs in der Job-Queue. Die Job-Queue von LPSNG ist Teil der Kernfunktionalität in jeder Edition. Verknüpfungsläufe und Display-Updates erscheinen dort, und fehlgeschlagene Jobs werden zur Überprüfung protokolliert.
- Wiederholen, nicht in Panik geraten. Wenn ein Tag nicht erreichbar ist, gibt die API einen Fehler zurück. Konfigurieren Sie Wiederholungslogik für vorübergehende Fehler (ein Tag, das vorübergehend außer Reichweite ist) und markieren Sie den Rest für einen Menschen.
- Beobachten Sie die Tag-Gesundheit. Batterie- und Signalstatus sind über die ESL-Schnittstelle sichtbar. Durch Polling finden Sie das Tag, das nächste Woche sterben wird, statt das, das bereits gestorben ist.
- Alarmieren Sie auf Ihrer Seite. Pollen Sie den LPSNG-Webdienst auf Job-Status und leiten Sie Fehler in das weiter, was Sie bereits für Alarmierung verwenden. Sie brauchen keinen zweiten Monitoring-Stack.
- Halten Sie einen manuellen Fallback bereit. Wenn ein Tag nicht erreichbar bleibt, verknüpfen Sie es manuell in der LPSNG-Weboberfläche neu, sobald es wieder online ist. Dieselbe Plattform verwaltet sowohl den automatisierten als auch den manuellen Pfad, sodass es keinen Split-Brain zwischen beiden gibt.
Eine einfache Statusabfrage:
curl -s "$LPSNG_BASE/jobs/$JOB_ID" \
-H "Authorization: Bearer $LPSNG_TOKEN" | jq '{status, failed: [.results[] | select(.status=="failed")]}'
Best Practices für zuverlässige ESL-Automatisierung
- Halten Sie Bezeichner sauber. Ihr ERP-Schlüssel und Ihr ESL-Schlüssel sollten dieselbe Zeichenkette sein, an einer Stelle generiert. Die meisten „Binding failed"-Tickets sind in Wahrheit „SKU hat das Format geändert"-Tickets.
- Bleiben Sie bei der JSON-Schnittstelle. Herstellerneutrale Payloads machen Hardware-Wechsel zu einer Deployment-Aufgabe. Außerdem funktioniert dieselbe Payload-Struktur über Filialen hinweg.
- Testen Sie zuerst in der Staging-Umgebung. Ein Verknüpfungslauf gegen eine Testfiliale fängt Mapping-Fehler ab, bevor sie 400 Tags in einem echten Gang treffen.
- Rotieren Sie Anmeldeinformationen. Bewahren Sie OAuth2-Anmeldeinformationen und Refresh-Tokens in einem Secret Manager auf, dokumentieren Sie, wem sie gehören, und rotieren Sie nach Plan.
- Erwägen Sie Edge-Deployment. Für Filialen mit instabiler Konnektivität läuft die Embedded Edition als vollständiges LPSNG auf einem Einplatinencomputer wie einem Raspberry Pi, sodass Verknüpfungsjobs lokal ausgeführt und synchronisiert werden, sobald die Verbindung steht.
- Überprüfen Sie Barcodes, bevor Sie sie übertragen. Eine falsche EAN auf einem Display ist schlimmer als ein veralteter Preis – siehe How to Verify Barcodes Before Printing Labels.
FAQ
Muss ich Code schreiben, um ESL-Tags mit Artikeln zu verbinden?
Nicht unbedingt. LPSNG bietet eine Webdienst-API und einen verwalteten Workflow, der über einfache HTTP-Anfragen ausgelöst werden kann. Für die vollständige Automatisierung werden Sie jedoch wahrscheinlich Skripte schreiben, die die ESL Binding API aufrufen. Die herstellerneutrale JSON-Schnittstelle (ESLSEND) macht die Integration in Ihre bestehenden Systeme unkompliziert.
Kann ich die ESL Binding API mit jeder ESL-Hardware verwenden?
Die ESL Binding API ist herstellerneutral konzipiert und verwendet eine JSON-Dateischnittstelle (ESLSEND) zur Aktualisierung von ESL-Displays. Sie kann mit verschiedenen ESL-Hardware-Geräten arbeiten, solange diese das JSON-Format unterstützen. LPSNG bietet außerdem spezifische Installationsanweisungen für CATIC-ESL-Hardware.
Wie handhabt LPSNG die Authentifizierung für externe Systeme?
LPSNG verwendet ein vereinfachtes OAuth2-Registrierungsprotokoll. Sie verbinden Ihr externes System (wie eine MDE-Einheit) mit einer einzigen URL, und LPSNG verwaltet den Token-Austausch. Das erspart es, OAuth2 in jeder Integration von Grund auf zu implementieren.
Was passiert, wenn ein ESL-Tag während eines Updates offline geht?
Wenn ein Tag nicht erreichbar ist, gibt die API einen Fehler zurück. Die Job-Queue von LPSNG protokolliert den Fehler, und Sie können Wiederholungslogik konfigurieren oder Alarme erhalten. Für kritische Updates können Sie das Tag manuell über die LPSNG-Weboberfläche neu verknüpfen, sobald es wieder online ist.
Fazit: Einmal automatisieren, kontinuierlich profitieren
ESL-Tags über die API mit Artikeln zu verbinden, entfernt den Gang-durchlaufen-Schritt aus Ihrem Prozess. Sie reichen einen Verknüpfungsjob ein, LPSNG gleicht Ihre Artikelbezeichner mit Tag-IDs ab, und die Displays werden über eine JSON-Schnittstelle aktualisiert, die Sie nicht an einen Hardware-Hersteller bindet. Preise bleiben zwischen Planogramm-Änderungen korrekt, statt abzudriften, bis es jemandem auffällt.
Der praktische Weg ist der verwaltete: Registrieren Sie jede Filiale mit einer einzigen URL, lassen Sie das Next Generation Label Printing System den Token-Austausch und die Job-Verfolgung übernehmen und beschränken Sie Ihren eigenen Code auf den Teil, der wirklich Ihrer ist – zu entscheiden, welche Artikel wohin gehören.
Beginnen Sie mit der Lektüre der ESL-Schnittstellendokumentation und der ESL Binding API-Referenz. Prototypisieren Sie dann gegen die Cloud Edition, oder laden Sie die Embedded Edition herunter, wenn der Verknüpfungsjob vom ersten Tag an in der Filiale laufen soll.
Verwandte Beiträge
- What a Vendor-Neutral ESL Interface Means for Developers
- Cloud Label Printing Software Pricing: What to Look For
- How to Verify Barcodes Before Printing Labels
