Open Charge Map
Der Node fragt die Open Charge Map API nach Ladestationen für Elektrofahrzeuge in einem Rechteck, einem Umkreis oder einem Verwaltungsgebiet ab und gibt jede Station als Objekt nach dem Smart Data Model EVChargingStation aus. Er eignet sich für Ladeinfrastruktur-Karten, Auslastungsanalysen und die Übernahme der Stationen in einen NGSI-LD Context Broker.
- Node-Typ
- openchargemap
- Paket
- @htag/node-red-contrib-hypertegrity-transportation
- Eingänge / Ausgänge
- 1 / 1
- Datenquelle
- Open Charge Map API v3 (API-Schlüssel erforderlich)
Wofür Sie den Node verwenden
Open Charge Map (OCM) ist eine weltweite, gemeinschaftlich gepflegte Datenbank für Ladestationen von Elektrofahrzeugen. Der Node holt die Stationen eines Gebiets aus der OCM-API und bringt die wichtigsten Angaben (Standort, Adresse, Betreiber, Anzahl der Ladepunkte, Anschlüsse, Status) in ein einheitliches Format, das sich direkt für Smart-City-Dashboards oder einen Context Broker nutzen lässt.
Typische Einsatzfälle sind:
- Ladeinfrastruktur-Karte einer Kommune mit allen öffentlich bekannten Ladestationen.
- Bestandsabgleich zwischen den eigenen Ladesäulen-Verzeichnissen und dem OCM-Datenbestand.
- Mobilitätsdashboards, die Ladepunkte zusammen mit Sharing-Angeboten und ÖPNV anzeigen.
So funktioniert der Node
Auslösen
Eine eingehende Nachricht startet den Abruf. Der Node fragt die API nicht von selbst ab.
Abfragen
Für jeden konfigurierten Filterbereich sendet der Node eine GET-Anfrage an https://api.openchargemap.io/v3/poi mit Ihrem API-Schlüssel, maximal 1500 Treffer je Anfrage.
Bündeln
Die Antworten aller Bereiche werden anhand der OCM-ID zusammengeführt, damit überlappende Bereiche keine Duplikate erzeugen.
Umwandeln und ausgeben
Jede Station wird in ein EVChargingStation-Objekt gemappt; alle Objekte verlassen den Node als ein Array in msg.payload.
Ergebnis: Ein Array von EVChargingStation-Objekten mit Standort, Adresse und Anschlussdaten für den NGSI-LD Builder.
Der Node ist triggerbasiert. Kombinieren Sie ihn mit einem Inject-Node, der zum Beispiel einmal täglich oder stündlich auslöst. Die Stammdaten von Ladestationen ändern sich selten; Statusangaben in OCM werden von der Community und von Datenlieferanten gepflegt und sind nicht in Echtzeit.
Konfiguration
Der Bearbeitungsdialog hat zwei Registerkarten: Bereichsfilter und Settings.
Registerkarte „Settings“
| Feld | Typ | Standard | Bedeutung |
|---|---|---|---|
| Name | Text | leer | Anzeigename des Nodes im Flow. |
| API Schlüssel | Passwort (Credential, Pflicht) | leer | Ihr Open Charge Map API-Schlüssel. Wird verschlüsselt im Credentials-Store gespeichert und als Parameter key an die API übergeben. |
| User Agent (Email) | Text (Pflicht) | leer | Kennung Ihrer Anwendung, in der Regel eine Kontakt-E-Mail-Adresse, wie von OCM gefordert. Wird als Parameter client und als HTTP-Header User-Agent gesendet. |
Registerkarte „Bereichsfilter“
| Feld | Typ | Standard | Bedeutung |
|---|---|---|---|
| Gebietssuche | Suchfeld | leer | Sucht über Nominatim nach Städten, Landkreisen oder Stadtteilen. Ein Treffer mit Grenzpolygon wird als Filter vom Typ Polygon übernommen; die Koordinaten werden auf fünf Nachkommastellen gerundet. |
| Filterbereich (Karte) | Leaflet-Karte mit Zeichenwerkzeugen | Deutschland-Übersicht | Zeichnen Sie ein Rechteck (Bounding Box) oder einen Kreis (Umkreis). Vorhandene Formen lassen sich auf der Karte verschieben und anpassen. |
Aktive Filter (locations) | Liste | leer | Zeigt die gespeicherten Filter: Rechteck mit Nord/Süd/West/Ost-Grenzen, Punkt mit Breite, Länge und bearbeitbarem Radius in Metern, oder Polygon mit Ortsname. Einträge lassen sich entfernen. |
Über den Dialog wird ein Filterbereich festgelegt.
Registrieren Sie sich kostenlos bei openchargemap.org und erzeugen Sie in Ihrem Profil einen API-Schlüssel. OCM verlangt für den Zugriff einen Schlüssel und eine identifizierbare Anwendungskennung; daher sind beide Felder Pflicht. Für hohe Abrufvolumen gelten die Fair-Use-Bedingungen von OCM.
Eingang
Der Eingang dient ausschließlich als Auslöser. Der Node wertet keine Nachrichteneigenschaften aus; alle Parameter stammen aus der Konfiguration. Die eingehende Nachricht wird mit neuem payload weitergesendet, andere Eigenschaften bleiben erhalten.
| Eigenschaft | Typ | Bedeutung |
|---|---|---|
msg.payload | beliebig | Jeder Wert löst den Abruf aus. Der Inhalt wird nicht ausgewertet. |
Ausgang
msg.payload ist ein Array von EVChargingStation-Objekten. Ohne konfigurierten Filterbereich ist das Array leer und der Node gibt eine Warnung aus.
[
{
"id": "urn:ngsi-ld:EVChargingStation:OCM-123456",
"type": "EVChargingStation",
"name": "Parkhaus Rathaus",
"description": "Zugang ueber die Einfahrt Marktstrasse",
"location": {"type": "Point", "coordinates": [7.7689, 49.4447]},
"address": {
"streetAddress": "Marktstrasse 1",
"addressLocality": "Beispielstadt",
"postalCode": "67655",
"addressCountry": "DE"
},
"capacity": 4,
"operator": "Stadtwerke Beispielstadt",
"Connections": [{"ID": 987, "ConnectionTypeID": 25, "PowerKW": 22, "Quantity": 2}],
"status": "Operational",
"contactPoint": {"url": "https://www.stadtwerke-beispielstadt.de"},
"usageType": "Public",
"usageCost": "0,49 EUR/kWh",
"dateLastVerified": "2026-08-12T09:30:00Z",
"dataQualityLevel": 3,
"dataProvider": {"name": "Open Charge Map Contributors", "url": "https://openchargemap.org", "license": "Licensed under Creative Commons Attribution ShareAlike 4.0"},
"dateLastStatusUpdate": "2026-09-30T18:05:00Z"
}
]
| Feld | Bedeutung |
|---|---|
id | urn:ngsi-ld:EVChargingStation:OCM- gefolgt von der OCM-ID der Station. |
type | Immer EVChargingStation. |
name | Titel der Station aus AddressInfo.Title, ersatzweise „Unknown Station“ mit ID. |
description | Allgemeine Bemerkungen (GeneralComments), falls vorhanden. |
location | GeoJSON-Punkt [Länge, Breite]. |
address | Straße, Ort, Postleitzahl und Ländercode (ISO) aus AddressInfo. Leere Teilfelder entfallen. |
capacity | Anzahl der Ladepunkte (NumberOfPoints). |
operator | Name des Betreibers (OperatorInfo.Title). |
Connections | Unveränderte OCM-Liste der Anschlüsse mit Steckertyp, Leistung in kW und Anzahl. |
status | Betriebsstatus laut OCM (StatusType.Title), zum Beispiel „Operational“. |
contactPoint | Website des Betreibers, falls vorhanden. |
usageType, usageCost | Nutzungsart (öffentlich, privat, …) und Kostenangabe als Freitext. |
dateLastVerified, dateLastStatusUpdate | Zeitpunkte der letzten Prüfung und der letzten Statusänderung in OCM. |
dataQualityLevel | OCM-Qualitätsstufe des Datensatzes. |
dataProvider | Name, Website und Lizenz des Datenlieferanten; ohne Angabe der Text Open_Charge_Map. |
Texte werden für die Weiterverarbeitung bereinigt: Umlaute und ß werden zu ae, oe, ue, ss umgeschrieben, runde Klammern sowie die Zeichen <, >, ", ', = und ; entfernt. Felder ohne Wert entfallen.
Beispiel-Flow
Das Paket bringt einen Beispiel-Flow mit. Sie importieren ihn in Node-RED über Menü → Importieren → Beispiele → @htag/node-red-contrib-hypertegrity-transportation → openchargemap. Alternativ laden Sie die Datei openchargemap.json herunter und importieren sie über Menü → Importieren. API-Schlüssel, User Agent und Filterbereich tragen Sie nach dem Import ein.
Inject
Ein Inject-Node löst den Abruf manuell oder in einem festen Intervall aus.
Open Charge Map
Der Node fragt die Ladestationen im konfigurierten Bereich ab und gibt sie als EVChargingStation-Array aus.
Debug
Ein Debug-Node zeigt das Array in der Seitenleiste an.
Beispiel-Flow als JSON anzeigen
[
{"id": "tab1", "type": "tab", "label": "Openchargemap", "disabled": false, "info": ""},
{"id": "inject1", "type": "inject", "z": "tab1", "name": "", "props": [{"p": "payload"}], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 140, "y": 160, "wires": [["ocm1"]]},
{"id": "ocm1", "type": "openchargemap", "z": "tab1", "name": "", "locations": [], "userAgent": "", "x": 330, "y": 160, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "EvChargingStations", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 590, "y": 160, "wires": []}
]
Status und Fehler
| Anzeige | Bedeutung |
|---|---|
| Blauer Punkt „Daten werden abgerufen...“ | Die Anfragen an die OCM-API laufen. |
| Grüner Punkt „12 Stationen gefunden“ | Der Abruf ist abgeschlossen; die Zahl nennt die ausgegebenen Stationen. |
| Roter Ring „Konfiguration fehlt“ | API-Schlüssel oder User Agent fehlen. Der Node meldet zusätzlich einen Fehler und sendet keine Nachricht. |
| Roter Ring „Fehler“ | Eine Anfrage ist fehlgeschlagen. Die Fehlermeldung enthält die Antwort der API (zum Beispiel bei ungültigem Schlüssel) oder die Netzwerkfehlermeldung. |
| Warnung „No location filter configured for Open Charge Map“ | Es ist kein Filterbereich konfiguriert. Der Node sendet ein leeres Array. |
Fehler werden über node.error gemeldet und können mit einem Catch-Node abgefangen werden.
Hinweise
- API-Schlüssel und Nutzungsbedingungen: Open Charge Map stellt die API kostenlos bereit, verlangt aber einen API-Schlüssel und eine identifizierbare Anwendungskennung. Beachten Sie die Nutzungsbedingungen und die Lizenz der Daten (Namensnennung von Open Charge Map und den jeweiligen Datenlieferanten, siehe Feld
dataProvider). - Trefferlimit: Jede Anfrage liefert höchstens 1500 Stationen (
maxresults). Für sehr große Gebiete teilen Sie den Bereich besser in mehrere Nodes auf. - Metrische Einheiten: Der Radius eines Umkreises wird im Dialog in Metern bearbeitet und an die API in Kilometern übergeben. Ladeleistungen in
Connectionssind in kW angegeben. - Editor-Dienste: Die Gebietssuche nutzt Nominatim, die Karte lädt Leaflet und OSM-Kartenkacheln aus dem Internet.
- Personenbezogene Daten: OCM-Datensätze können in
GeneralCommentsoder bei privaten Ladepunkten (usageType) Angaben enthalten, die auf Privatpersonen schließen lassen, etwa Adressen von Wohngebäuden. Prüfen Sie vor der Veröffentlichung, ob Sie Stationen mit nicht-öffentlicher Nutzungsart ausfiltern. - Ausgabeformat: Das Objekt orientiert sich am Smart Data Model
EVChargingStation, enthält aber zusätzlich das unveränderte OCM-FeldConnections. Die vollständige NGSI-LD-Entität entsteht im nachgelagerten NGSI-LD Builder.