Dieser Artikel zeigt, wie Messpunkte an egonline per API übertragen und abgerufen werden können
Zweck & Authentifizierung
Diese Dokumentation beschreibt die Schnittstellen add_meter_readings (Messdaten erfassen) und get_meter_readings (Messdaten abrufen). Die API verarbeitet JSON-Daten, prüft Basic Auth und speichert Messwerte in der Datenbank.
1) Messdaten anlegen: add_meter_readings
Endpoint: POST https://web.egonline.ch/Api/add_meter_readings
Header: Content-Type: application/json
Request-Body Parameter
Der Body ist ein JSON-Array mit Messdaten-Objekten.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
serialnumber |
string | ja | Seriennummer des Controllers |
device_id |
string | ja | Geräte-ID (Messpunkt) |
meter_reading |
string / number | ja | Messwert (z. B. kWh) |
date_time |
string | ja | Zeitstempel, Format: YYYY-MM-DD HH:MM:SS |
type |
string | ja | import oder export |
customer |
string | ja | Kundenname / Bezeichner |
Beispiel (JSON Request Body)
[
{
"serialnumber": "504F94A0B2BD",
"device_id": "Wohnung_1",
"meter_reading": "63.750",
"date_time": "2026-02-14 23:45:00",
"type": "import",
"customer": "Firma XY"
},
{
"serialnumber": "504F94A0B2BD",
"device_id": "Wohnung_2",
"meter_reading": "127.245",
"date_time": "2026-02-15 00:00:00",
"type": "import",
"customer": "Firma XY"
},
{
"serialnumber": "504F94A0B2BD",
"device_id": "Wohnung_1",
"meter_reading": "352.564",
"date_time": "2026-02-14 00:45:00",
"type": "export",
"customer": "Firma XY"
}
]
Verarbeitung (Kurzfassung)
- Nur POST ist erlaubt (sonst Statuscode
405). - Fehlt ein Pflichtfeld, wird der entsprechende Datensatz übersprungen.
- Pro Gerät wird der Zeitraum der gelieferten Daten ermittelt. Bestehende Einträge in diesem Zeitraum werden in der Datenbank gelöscht und anschliessend durch die neuen Daten ersetzt.
Mögliche Server-Antworten (HTTP Statuscodes)
- 201: Import erfolgreich
- 400: Ungültiges JSON oder ungültige Authorization
- 401: Missing Basic Auth header
- 403: Invalid username or password
- 405: Only POST allowed
- 500: Database error
cURL Beispiel
curl -u <username>:<password> -H "Content-Type: application/json" \
-d @data.json https://web.egonline.ch/Api/add_meter_readings
2) Messdaten abrufen: get_meter_readings
Endpoint: GET https://web.egonline.ch/Api/get_meter_readings/{serial}/{start}/{end}
URL-Parameter
| Parameter | Pflicht | Beschreibung |
|---|---|---|
serial |
ja | Seriennummer (serial_number) |
start |
ja | Startdatum, Format: YYYY-MM-DD (nur Datum) |
end |
ja | Enddatum, Format: YYYY-MM-DD (nur Datum) |
Beispiel-Request
GET https://web.egonline.ch/Api/get_meter_readings/504F94A0B2BD/2026-02-01/2026-03-14
Antwort & Hinweise
Die Antwort ist ein JSON-Array mit folgenden Feldern pro Datensatz: serial_number, device_id, date_time, type, meter_reading. Die Daten sind nach device_id und Zeit aufsteigend sortiert.
- Nur GET ist erlaubt (sonst
405). - Bei fehlenden Parametern:
400. - Wenn keine Daten vorhanden sind:
204(No data found). - Limit: max. 10’000 Datensätze pro Abruf.
cURL Beispiel
curl -u <username>:<password> \
"https://web.egonline.ch/Api/get_meter_readings/504F94A0B2BD/2026-02-01/2026-03-14"