Zum Inhalt springen
Kontakt
Case Study · E-Mobility · Daten

Lade- & Strompreis-App auf Basis von AFIR-/DATEX-II-Daten

Echtzeit-Transparenz für Ladepunkte und Strompreise (iOS & Android), aufgebaut auf offiziellen, AFIR-konformen DATEX-II-Daten. Im Auftrag eines Kunden aus dem E-Mobility-Umfeld.

.NET BackendLive PricingAFIR / DATEX IIKartendaten
Lade- und Strompreis-App von SB-Techworks: Kartenansicht mit Ladepunkten und Live-Preisen
500.000+App-Downloads
24 hAntwort-Zeit (Mo–Fr)
100 %Code-Eigentum bei dir
1Ansprechpartner von Anfrage bis Launch

Die Herausforderung

Die europäische Verordnung über den Aufbau der Infrastruktur für alternative Kraftstoffe (AFIR) verlangt, dass statische und dynamische Daten zu Ladepunkten – Standort, Anschlussart, Leistung, Verfügbarkeit, Ad-hoc-Preis – über offizielle Zugangspunkte bereitstehen. Ausgeliefert werden sie dort nicht als handliche REST-API, sondern – bei den in diesem Projekt angebundenen Quellen – als DATEX-II-Publikationen: ein modellgetriebener europäischer Standard mit tief verschachtelten XML-Strukturen, sehr vielen optionalen Feldern und Unterschieden zwischen Herausgebern und Standardversionen. Wer diese Daten in einer App zeigen will, muss zuerst das Format beherrschen – nicht das Frontend.

Der zweite Punkt ist Menge und Takt. Bestandsdaten kommen typischerweise als vollständige Momentaufnahmen in festen Intervallen, dynamische Statusinformationen deutlich häufiger. Naiv verarbeitet heißt das: bei jedem Durchlauf den kompletten Bestand neu schreiben, ohne zu wissen, was sich überhaupt geändert hat. Große Datenmengen im Backend zu verarbeiten bedeutet hier weniger mehr Rechenleistung als vielmehr: erkennen, was neu ist, und alles andere unangetastet lassen.

Dazu kommt die Semantik. Ein Ladestandort ist eine Hierarchie aus Standort, Station, Ladepunkt und Steckertyp; Identifikatoren müssen über Aktualisierungen hinweg stabil bleiben, sonst springen Punkte auf der Karte oder tauchen doppelt auf. Preisangaben sind selten eine einzige Zahl, sondern setzen sich aus Arbeits-, Zeit- und Grundkomponenten zusammen. Und „Echtzeit“ ist bei fremdbezogenen Daten immer nur so echt wie der Publikationstakt der Quelle – das gehört ins Datenmodell und in die Darstellung, statt weggerundet zu werden.

Der Ansatz

Die Architektur trennt drei Aufgaben sauber: Import, normalisierter Kern, Auslieferung. Der Import holt die DATEX-II-Publikationen der offiziellen Quellen, liest sie streamend statt als komplettes Dokument im Arbeitsspeicher, prüft sie gegen das Schema und übersetzt sie in ein eigenes, schlankes Domänenmodell. Der Standard endet damit an der Systemgrenze – alles dahinter arbeitet mit klaren, eigenen Begriffen.

Als Datenrückgrat dient ein skalierbares .NET-Backend. Die Wahl passt zur Art der Arbeit: schemagetriebenes XML im Dauerbetrieb. Statische Typisierung bildet ein modellgetriebenes Format direkt ab, die XML-Werkzeugkette erlaubt streamendes Lesen auch großer Momentaufnahmen bei flachem Speicherverbrauch, und langlaufende Hintergrunddienste mit geplanten Läufen sind erstklassig unterstützt. Import und Ausliefer-API skalieren getrennt, weil ihre Lastprofile nichts miteinander zu tun haben: der Import läuft stoßweise im Takt der Quellen, die API folgt dem Nutzerverhalten.

Die kontinuierliche Aktualisierung der Marktpreise läuft als eigener Takt neben den Bestandsdaten. Jeder Durchlauf vergleicht gegen den zuletzt bekannten Stand, sodass nur echte Änderungen Folgearbeit auslösen – Schreibzugriffe, Cache-Invalidierung, Aktualisierung der Kartenebene. Jeder Datensatz trägt dabei Herkunft und Zeitstempel mit sich. Das ist keine Kosmetik: Nur so lässt sich in der App ehrlich anzeigen, wie aktuell ein Wert ist, und im Fehlerfall auf Quelle und Zeitpunkt zurückführen, statt im Gesamtsystem zu suchen.

Auf der Client-Seite sprechen iOS und Android kein DATEX II, sondern eine bewusst schmale API. Kartenabfragen laufen ausschnittsbezogen über einen räumlichen Index und werden je nach Zoomstufe zusammengefasst, damit die übertragene Datenmenge an den sichtbaren Ausschnitt gekoppelt ist und nicht an die Größe des Gesamtbestands. Echtzeitdaten in einer Mobile App heißen deshalb nicht, alles ans Gerät zu schicken, sondern pro Ansicht genau das Nötige – aus vorbereiteten Lesemodellen, die auch dann antworten, wenn eine Originalquelle gerade nicht erreichbar ist.

Was entstanden ist

  • Marktpreise in Echtzeit
  • Kontinuierliche Aktualisierung
  • Ladepunkte auf der Karte
  • Offizielle AFIR-/DATEX-II-Datenbasis
  • Skalierbares .NET-Backend

Technische Entscheidungen

.NET für den Import statt schlankem Skript-Stack

Node oder Python wären für einen Prototyp schneller gewesen, Go für reine Durchsatzarbeit sparsamer. Entschieden wurde .NET, weil die Hauptlast schemagetriebenes XML im Dauerbetrieb ist: typisierte Modelle aus dem Schema, streamendes Parsen großer Momentaufnahmen und langlaufende Hintergrunddienste sind dort keine Fremdkörper, sondern Standardwerkzeug. Der Preis ist ein größerer Laufzeit-Fußabdruck als bei einem kompakten Go-Binary – und aus Schemata generierte Modellklassen, die unhandlich groß werden.

Eigenes Domänenmodell statt DATEX II bis in die App

Die Alternative wäre gewesen, das Standardmodell bis in API und App durchzureichen: weniger Mapping-Code, formal standardnah. Stattdessen übersetzt eine Schicht am Systemrand einmalig in eigene Begriffe, sodass Unterschiede zwischen Quellen und Versionswechsel des Standards im Import gefangen bleiben und alles dahinter unberührt lassen. Der Preis: Diese Übersetzung muss gepflegt werden, und selten genutzte Standardfelder fallen bewusst heraus – wer sie später braucht, muss die Schicht nachziehen.

Periodisch abholen und diffen statt Push bis ins Gerät

Naheliegend wäre, Statusänderungen direkt bis aufs Endgerät zu pushen. Nur ist die Aktualität durch den Publikationstakt der Quelle gedeckelt, nicht durch den Transportweg – ein Push macht Daten nicht frischer, als sie veröffentlicht werden. Geplantes Abholen mit Änderungserkennung ist dafür wiederholbar, nachvollziehbar und übersteht den Ausfall einer Quelle. Der Preis ist eine bauartbedingte Verzögerung, die in der Oberfläche als Stand-Zeitpunkt sichtbar gemacht statt als „live“ verkauft wird.

Vorberechnete Lesemodelle statt Abfragen auf dem Rohbestand

Die App direkt gegen den normalisierten Bestand abfragen zu lassen, wäre ein Datenpfad weniger und stets maximal aktuell. Für Kartenansichten hätte es aber pro Ausschnitt teure Geo-Abfragen bedeutet, deren Kosten mit dem Bestand wachsen. Stattdessen werden Lesemodelle beim Import fortgeschrieben und ausschnitts- sowie zoomabhängig ausgeliefert. Der Preis sind zusätzlicher Speicher und eine zweite Wahrheit, die konsequent invalidiert werden muss – dafür bleiben Antwortzeiten von Bestandsgröße und Quellenlast unabhängig.

Tech-Stack

.NET BackendLive PricingAFIR / DATEX IIKartendaten

Ergebnis

Im Auftrag eines Kunden aus dem E-Mobility-Umfeld umgesetzt; das .NET-Backend läuft im Dauerbetrieb auf standardkonformer DATEX-II-Basis. Kundenspezifische Kennzahlen bleiben vertraulich – maßgeblich ist die verlässliche, skalierbare Datenverarbeitung im Hintergrund.

Was das für ähnliche Projekte bedeutet

Bei Vorhaben, die auf offiziellen Datenstandards aufsetzen, liegt der Aufwand fast nie dort, wo er im Angebot vermutet wird. Die Oberfläche ist der überschaubare Teil; die Arbeit steckt in Parsing, Normalisierung, stabiler Identität und Änderungserkennung. Sinnvoll ist deshalb, sehr früh mit echten Publikationen zu arbeiten statt nur mit der Spezifikation – Abweichungen zwischen dokumentiertem Modell und tatsächlich geliefertem Inhalt sind bei standardisierten Quellen der Normalfall, nicht die Ausnahme.

Der zweite verallgemeinerbare Punkt betrifft den Begriff Echtzeit. Gemeint ist bei fremdbezogenen Daten praktisch immer „so aktuell wie die Quelle“ – das früh zu klären, erspart Architekturentscheidungen, die diese Grenze zu überlisten versuchen. Ein System, das Herkunft und Stand jedes Werts mitführt, ist im Betrieb deutlich ruhiger: Meldungen über vermeintlich falsche Daten lassen sich auf eine Quelle und einen Zeitpunkt zurückführen, statt zur Suche im Gesamtsystem zu werden.

Häufige Fragen

Was ist DATEX II und warum ist es für Ladeinfrastruktur relevant?

DATEX II ist der europäische, modellgetriebene Standard für den Austausch von Verkehrs- und Mobilitätsdaten; für Energie- und Ladeinfrastruktur gibt es entsprechende Publikationsformate. Relevant wird er durch AFIR: Daten zu Ladepunkten sollen über offizielle Zugangspunkte verfügbar sein, und dort liegen sie in diesem Format – nicht als hauseigene REST-API je Betreiber. Wer diese Daten nutzen will, muss den Standard verarbeiten können.

Wie lassen sich große DATEX-II-Datenmengen verarbeiten, ohne dass der Speicher volläuft?

Entscheidend ist streamendes Parsen statt vollständiger Dokumente im Arbeitsspeicher: Datensätze werden einzeln gelesen, übersetzt und weitergereicht. Dazu kommt Änderungserkennung gegen den zuletzt bekannten Stand, damit nur Deltas geschrieben werden statt des kompletten Bestands. Import und Ausliefer-API laufen getrennt, sodass ein großer Importlauf die Antwortzeiten der App möglichst wenig beeinflusst.

Wie aktuell sind Preis- und Verfügbarkeitsdaten in einer solchen App wirklich?

Genau so aktuell, wie die Quelle sie veröffentlicht – ein Backend kann Daten nicht frischer machen, als sie geliefert werden. Sinnvoll ist deshalb, den Stand pro Datensatz mitzuführen und in der Oberfläche sichtbar zu machen. Das ist kein Eingeständnis von Schwäche, sondern verhindert falsche Erwartungen im Moment der Nutzung an der Ladesäule.

Warum ein .NET-Backend für Datenintegration dieser Art?

Weil die Arbeit schemagetrieben und dauerhaft ist: typisierte Modelle passen zu einem modellbasierten Standard, die XML-Werkzeugkette ist ausgereift, und langlaufende Hintergrunddienste sind gut unterstützt. Für kurzlebige, kaltstartempfindliche Funktionen wäre ein schlankerer Stack die bessere Wahl – bei permanent laufender Importlast fällt dieser Nachteil nicht ins Gewicht.

Was treibt bei so einem Projekt den Aufwand – die App oder das Backend?

Das Backend, und zwar deutlich. Die App zeigt Karte, Liste und Details; die Komplexität liegt in Anbindung, Formatinterpretation, Normalisierung, stabiler Identität über Aktualisierungen hinweg und im Betrieb. Wer den Aufwand nach Anzahl der Bildschirme schätzt, unterschätzt solche Projekte systematisch.

Lässt sich eine solche Datenbasis auch ohne eigene App nutzen?

Ja. Import- und Normalisierungsschicht sind vom Endgerät unabhängig – die mobile App ist nur einer von mehreren möglichen Konsumenten. Auf demselben normalisierten Bestand können ebenso eine Web-Ansicht, ein internes Auswertungs-Dashboard oder eine eigene Schnittstelle aufsetzen, ohne die Datenanbindung ein zweites Mal zu bauen.

Ähnliches Projekt geplant?

SB-Techworks entwickelt individuelle Apps für iOS und Android – vom MVP bis zur skalierbaren Business-App, direkt aus der Entwicklung. Du bekommst innerhalb von 24 Stunden (Mo–Fr) eine ehrliche Einschätzung zu Machbarkeit und Kosten.

Kostenlose Einschätzung anfordern  App entwickeln lassen →