Inhaltsübersicht

Climkit API

Nicolas Vodoz Aktualisiert von Nicolas Vodoz

Die Entwickler-API von Climkit ermöglicht registrierten und autorisierten Entwicklern den Zugriff auf Zähl- und Energiedaten von autorisierten Climkit-Standorten.

Um sich zu registrieren, müssen Entwickler die Zugriffsrechte für die Daten vom Eigentümer der Einrichtung und von Climkit SA einholen.

Zugriffsanforderungen für die API sind an service@climkit.io zu richten.

Die Zugangsinformationen für die API unterscheiden sich von den Anmeldedaten für das persönliche Konto im Climkit-Portal.

Die Zugangsinformationen dürfen nur von dem registrierten Entwickler verwendet werden. Kollegen und Mitarbeiter müssen eine individuelle Anfrage stellen, um eigene Zugriffsrechte zu erhalten.

API-Endpunkt: https://api.climkit.io/api/v1

1. Authentifizierung

Die Climkit-API verwendet JSON Web Tokens (https://jwt.io/introduction/), um den Informationsfluss abzusichern.

Sobald der Benutzer sich mit seinen Anmeldeinformationen (Benutzername und Passwort) angemeldet hat, erhält er ein 15 Minuten gültiges Token, das ihm den Zugriff auf autorisierte Ressourcen ermöglicht.

URL: /auth

Method: POST

Auth erforderlich: NEIN

Authentifizierung über Benutzername-Passwort zur Erlangung eines Zugangstokens

Parameter (POST)
----------
username: str
Der API-Benutzername
password: str
Das API-Passwort

Gibt zurück
-------
{
'access_token': <str: dein-zugangstoken>,
'valid_until': {'$date': <int: epoch-time-in-milliseconds>},
}

2. Standorte

Alle Standorte

Die Liste aller Standorte.

URL: /all_installations

Method: GET

Auth erforderlich: Ja mit einem gültigen Token

Anforderungsgrenze: 1/Sekunde

Parameter (GET)
----------
Kein Parameter

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
-------
Die Liste aller Standorte, präsentiert als Liste von Objekten.

Informationen zu einem Standort

Die Parameter eines spezifischen Standorts.

URL: /installation_infos/<site_id>

Method: GET

Auth erforderlich: Ja mit einem gültigen Token

Anforderungsgrenze: 1/Sekunde

Parameter (GET)
----------
site_id: str
Die Objekt-ID des Installationsstandorts

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
-------
Die Parameter des Standorts:

{
'site_ref': <str>,
'name': <str>,
'address': {
'street_name': <str>,
'street_number': <str>,
'city': <str>,
'postal_code': <int>
},
'creation_date': <datetime isoformat str>,
'latitude': <float>,
'longitude': <float>,
'timezone': <str>,
}

3. Zähler

Alle Zähler eines Standorts

Die Liste aller Zähler eines Standorts.

URL: /meter_info/<site_id>

Method: GET

Auth erforderlich: Ja mit einem gültigen Token

Anforderungsgrenze: 1/Sekunde

Parameter (GET)
----------
site_id: str
Die Objekt-ID des Standorts

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
----------
Die Liste der Zähler, präsentiert als Liste von Objekten:

[
{
'id': <str, das die id des Zählers repräsentiert>
'type': {'electricity', 'heating', 'cold_water', 'hot_water'},
'name': <str>,
'mode': {'consumption', 'production', 'introduction', 'battery'},
'prim_ad': <int>,
'is_rule_meter': <boolean>
},
...
]

Die validierten Daten des Standorts für einen Zählertyp

Die validierten Zeitdaten des Standorts für einen spezifischen Zählertyp, z. B. den gesamten Stromverbrauch oder die Photovoltaikproduktion des Standorts.

URL: /site_data/<site_id>/<meter_type>

Method: POST

Auth erforderlich: Ja mit einem gültigen Token

Anforderungsgrenze: 1/Sekunde

Parameter (GET)
----------
site_id: str
Die Objekt-ID des Standorts
meter_type: str
Der Typ der Zählerdaten:
'electricity', 'heating', 'cooling', 'cold_water', 'hot_water' oder 'charge_point'

Parameter (POST)
----------
t_s: str, optional
Das isoformatierte Datum/Zeit, das den Startmoment der Zeitreihe angibt, tz-naiv in UTC
t_e: str, optional
Das isoformatierte Datum/Zeit, das den Endmoment der Zeitreihe angibt, tz-naiv in UTC
*sampling_frequency: {'15T', 'H', 'D', 'M', 'Y'}, optional
Die Abtastrate der zurückgegebenen Datenliste

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
-------
Die validierten Zeitdaten der Website für einen spezifischen Zählertyp, präsentiert als Liste von Objekten:

[
{
'conso_total': <gesamtverbrauch am Standort>,
'prod_total': <gesamtstromproduktion (PV) am Standort, wenn der Typ Strom ist>,
'from_ext': <gesamtverbrauch vom Netz, wenn der Typ Strom ist>,
'self': <gesamtverbrauch vom Solar-PV, wenn der Typ Strom ist>,
'to_ext': <gesamtstrom, der ins Netz eingespeist wird, wenn der Typ Strom ist>,
'timestamp': <Zeitstempel am Ende des gemessenen Zeitraums, wenn die Abtastrate 15T ist, ansonsten der Anfang des Zeitraums>
},
...
]

Die validierten Daten eines spezifischen Zählers

Die validierten Zeitdaten eines Zählers für den ausgewählten Zeitraum.

URL: /meter_data/<site_id>/<meter_id>

Method: POST

Auth erforderlich: Ja mit einem gültigen Token

Anforderungsgrenze: 1/Sekunde

Parameter (GET)
----------
site_id: str
Die ID des Standorts
meter_id: str
Die ID des Zählers

Parameter (POST)
----------
t_s: str, optional
Das isoformatierte Datum/Zeit, das den Startmoment der Zeitreihe angibt, tz-naiv in UTC
t_e: str, optional
Das isoformatierte Datum/Zeit, das den Endmoment der Zeitreihe angibt, tz-naiv in UTC
sampling_frequency: {'15T', 'H', 'D', 'M', 'Y'}, optional
Die Abtastrate der zurückgegebenen Datenliste

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
-------
Die validierten Zeitdaten des Zählers für den ausgewählten Zeitraum, präsentiert als Liste von Objekten:

[
{
'total': <gesamtverbrauch. Wenn der Typ Strom ist, dann total = self + ext>,
'self': <gesamtverbrauch von Solar-PV, wenn der Typ Strom ist>,
'ext': <gesamtverbrauch vom Netz, wenn der Typ Strom ist>,
'timestamp': <Zeitstempel am Ende des gemessenen Zeitraums, wenn die Abtastrate 15T ist, ansonsten der Anfang des Zeitraums>
},
...
]

Die Rohdaten eines spezifischen Zählers

Die Rohdaten, inkrementell (Zählerindex) oder differenziell (Intervall einer Kostenkurve), in Zeitreihe eines Zählers für den ausgewählten Zeitraum, direkt vom Zähler ohne Validierung. Verfügbar nur für physische Zähler und nicht für Regelzähler.

URL: /meter_data_raw/<site_id>/<meter_id>

Method: POST

Auth erforderlich: Ja mit einem gültigen Token

Anforderungsgrenze: 1/Sekunde

Parameter (GET)
----------
site_id: str
Die ID des Standorts
meter_id: str
Die ID des Zählers

Parameter (POST)
----------
t_s: str, optional
Das isoformatierte Datum/Zeit, das den Startmoment der Zeitreihe angibt, tz-naiv in UTC
t_e: str, optional
Das isoformatierte Datum/Zeit, das den Endmoment der Zeitreihe angibt, tz-naiv in UTC

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
-------
Die Rohdaten des Zählers für den ausgewählten Zeitraum, präsentiert als Liste von Objekten:

[
{
'en_im': <Zählerindex für Stromimport, wenn der Typ Strom ist>,
'en_ex': <Zählerindex für Stromexport, wenn der Typ Strom ist>,
'heat_energy_kwh': <thermischer Energieindex, wenn der Typ Heizung oder Kühlung ist>,
'vol_m3': <Wasserindex, wenn der Typ kaltes Wasser oder heißes Wasser ist>,
'timestamp': <Zeitstempel am Ende des gemessenen Zeitraums>
},
...
]

4. Sensoren

Alle Sensoren eines Standorts abrufen

URL: /<site_id>/sensors_list

Method: GET

Auth erforderlich: Ja mit einem gültigen Token

Parameter (URL)
----------
site_id: str
Die ID des Installationsstandorts

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
-------
array_like

Die Liste der Sensorinformationen formatiert wie folgt:

[
{
'id': <str, das eine ObjectID darstellt>
'name': <str>,
'type': <str, das den Typ der gemessenen Größe beschreibt>,
'unit': <str, das die Einheit der gemessenen Größe beschreibt>,
'model': <str, das das Modell des Sensors beschreibt>
},
...
]

Zeitreihendaten für einen spezifischen Sensor abrufen

Ruft die Zeitreihendaten eines Sensors für einen bestimmten Zeitraum ab. Wenn kein Zeitraum angegeben ist, werden die letzten Daten zurückgegeben. t_s ist je nach Benutzer/Standort begrenzt.

URL: /<site_id>/sensor_data/<sensor_id>

Method: GET

Auth erforderlich: Ja mit einem gültigen Token

Anforderungsgrenze: 1/Sekunde

Parameter (URL)
----------
site_id: str
Die ID des Installationsstandorts
sensor_id: str
Die ID des Sensorobjekts

Parameter (GET)
----------
t_s: str, optional
Das isoformatierte Datum/Zeit, das den Startmoment der angeforderten Zeitreihe angibt, tz-naiv in UTC
t_e: str, optional
Das isoformatierte Datum/Zeit, das den Endmoment der angeforderten Zeitreihe angibt, tz-naiv in UTC

Header
----------
Content-Type: 'application/json'
Authorization: 'Bearer {dein-zugangstoken}'

Gibt zurück
-------
array_like

Die Zeitreihendaten des Sensors im ausgewählten Zeitraum als Liste von Objekten:

[
{
'timestamp': <int timestamp>,
'value': <float, int>
},
...
]

Wie haben wir abgeschnitten?

Lokale API des Gateways

Kontakt