Inhaltsübersicht

Climkit API

Nicolas Vodoz Aktualisiert von Nicolas Vodoz

Die Climkit Developer API ermöglicht registrierten und autorisierten Entwicklern den Abruf von Zähler- und Energiedaten von autorisierten Climkit-Standorten.

Um sich zu registrieren, müssen Entwickler die Datenzugriffsrechte vom Anlagenbesitzer und von Climkit SA einholen.

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

Die API-Zugangsdaten unterscheiden sich von den Anmeldeinformationen für das persönliche Konto im Climkit-Portal.

Die Zugangsdaten dürfen nur vom registrierten Entwickler verwendet werden. Kollegen und Mitarbeiter müssen einen individuellen Antrag stellen, um ihre eigenen Zugriffsrechte zu erhalten.

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

1. Authentifizierung

Die Climkit API verwendet JSON Web Tokens (https://jwt.io/introduction/) zur Sicherung des Datentransports.

Nach der Anmeldung des Benutzers mit seinen Anmeldeinformationen (Benutzername und Passwort) erhält dieser ein 15 Minuten gültiges Token, das ihm den Zugriff auf autorisierte Ressourcen ermöglicht.

URL: /auth

Methode: POST

Auth erforderlich: NEIN

Authentifizierung über Benutzername-Passwort zur Erlangung eines Zugriffstokens
          Parameters (POST)
          ----------
          username: str
              Der API-Benutzername
          password: str
              Das API-Passwort
          
          Rückgabe
          -------
              {
                  'access_token': <str: Ihr-Zugriffstoken>,
                  'valid_until': {$date: <int: Epochenzeit in Millisekunden>},
              }

2. Standorte

Alle Standorte

Die Liste aller Standorte.

URL: /all_installations

Methode: GET

Auth erforderlich: JA mit einem gültigen Token

Anfragelimite: 1/Sekunde

Parameters (GET)
          ----------
          Kein Parameter
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          -------
          Die Liste aller Standorte, dargestellt als Liste von Objekten.

Informationen zu einem Standort

Die Parameter eines spezifischen Standorts.

URL: /installation_infos/<site_id>

Methode: GET

Auth erforderlich: JA mit einem gültigen Token

Anfragelimite: 1/Sekunde

Parameters (GET)
          ----------
          site_id: str
              Die Objekt-ID des Standort
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          -------
          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>

Methode: GET

Auth erforderlich: JA mit einem gültigen Token

Anfragelimite: 1/Sekunde

Parameters (GET)
          ----------
          site_id: str
              Die Objekt-ID des Standorts
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          ----------
          Die Liste der Zähler, dargestellt als Liste von Objekten:
          
          [
              {
                  'id': <str, das die ID des Zählers darstellt>
                  'type': {'electricity', 'heating', 'cold_water', 'hot_water'},
                  'name': <str>,
                  'mode': {'consumption', 'production', 'introduction', 'battery'},
                  'prim_ad': <int>,
                  'is_rule_meter': <boolean>
              },
              ...
          ]

Validierte Standortdaten für einen Zählertyp

Die validierten Zeitreihendaten des Standorts für einen bestimmten Zählertyp, z. B. den gesamten Stromverbrauch oder die PV-Produktion des Standorts.

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

Methode: POST

Auth erforderlich: JA mit einem gültigen Token

Anfragelimite: 1/Sekunde

Parameters (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'
          
          Parameters (POST)
          ----------
          t_s: str, optional
              Das isoformatierte Datum, das den Startzeitpunkt der Zeitreihe darstellt, zeitzonenunabhängig in UTC
          t_e: str, optional
              Das isoformatierte Datum, das den Endzeitpunkt der Zeitreihe darstellt, zeitzonenunabhängig in UTC
          *sampling_frequency: {'15T', 'H', 'D', 'M', 'Y'}, optional
              Die Abtastfrequenz der zurückgegebenen Datenliste
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          -------
          Die validierten Zeitreihendaten des Standorts für einen bestimmten Zählertyp, dargestellt als Liste von Objekten:
          
          [
              {
                  'conso_total': <Gesamtverbrauch des Standorts>,
                  'prod_total': <Gesamt-Stromerzeugung des Standorts (PV), falls der Typ Strom ist>,
                  'from_ext': <Gesamtverbrauch des Standorts aus dem Netz, falls der Typ Strom ist>,
                  'self': <Gesamtverbrauch des Standorts aus PV, falls der Typ Strom ist>,
                  'to_ext': <Gesamtstromexport des Standorts ins Netz, falls der Typ Strom ist>,
                  'timestamp': <Zeitstempel am Ende der gemessenen Periode, wenn sampling_frequency 15T ist, sonst Beginn der Periode>
              },
              ...
          ]

Validierte Daten eines spezifischen Zählers

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

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

Methode: POST

Auth erforderlich: JA mit einem gültigen Token

Anfragelimite: 1/Sekunde

Parameters (GET)
          ----------
          site_id: str
              Die ID des Standorts
          meter_id: str
              Die ID des Zählers
          
          Parameters (POST)
          ----------
          t_s: str, optional
              Das isoformatierte Datum, das den Startzeitpunkt der Zeitreihe darstellt, zeitzonenunabhängig in UTC
          t_e: str, optional
              Das isoformatierte Datum, das den Endzeitpunkt der Zeitreihe darstellt, zeitzonenunabhängig in UTC
          sampling_frequency: {'15T', 'H', 'D', 'M', 'Y'}, optional
              Die Abtastfrequenz der zurückgegebenen Datenliste
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          -------
          Die validierten Zeitreihen-Zählerdaten für den ausgewählten Zeitraum, dargestellt als Liste von Objekten:
          
          [
              {
                  'total': <Gesamtverbrauch. Wenn der Typ Strom ist, gilt total = self + ext>,
                  'self': <Gesamtverbrauch aus PV, wenn der Typ Strom ist>,
                  'ext': <Gesamtverbrauch aus dem Netz, wenn der Typ Strom ist>,
                  'timestamp': <Zeitstempel am Ende der gemessenen Periode, wenn sampling_frequency 15T ist, sonst Beginn der Periode>
              },
              ...
          ]

Rohdaten eines spezifischen Zählers

Die Rohdaten, inkrementell (Zählerstand) oder differentiell (Intervall einer Lastkurve), in Zeitreihenform eines Zählers für den ausgewählten Zeitraum, direkt vom Zähler ohne Validierung. Nur für physische Zähler verfügbar, nicht für Regelzähler.

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

Methode: POST

Auth erforderlich: JA mit einem gültigen Token

Anfragelimite: 1/Sekunde

Parameters (GET)
          ----------
          site_id: str
              Die ID des Standorts
          meter_id: str
              Die ID des Zählers
          
          Parameters (POST)
          ----------
          t_s: str, optional
              Das isoformatierte Datum, das den Startzeitpunkt der Zeitreihe darstellt, zeitzonenunabhängig in UTC
          t_e: str, optional
              Das isoformatierte Datum, das den Endzeitpunkt der Zeitreihe darstellt, zeitzonenunabhängig in UTC
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          -------
          Die rohen Zeitreihen-Zählerdaten für den ausgewählten Zeitraum, dargestellt als Liste von Objekten:
          
          [
              {
                  'en_im': <Stromimport-Zählerindex, wenn der Typ Strom ist>,
                  'en_ex': <Stromexport-Zählerindex, wenn der Typ Strom ist>,
                  'heat_energy_kwh': <thermischer Energieindex, wenn der Typ Heizung oder Kühlung ist>,
                  'vol_m3': <Wasservolumenindex, wenn der Typ kaltes Wasser oder warmes Wasser ist>,
                  'timestamp': <Zeitstempel am Ende der gemessenen Periode>
              },
              ...
          ]

4. Sensoren

Alle Sensoren eines Standorts abrufen

URL: /<site_id>/sensors_list

Methode: GET

Auth erforderlich: JA mit einem gültigen Token

Parameters (URL)
          ----------
          site_id: str
          Die ID des Standort
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          -------
          array_like
          
          Die Liste der Sensorinformationen, formatiert wie folgt:
          
          [
              {
                  'id': <str, das ein ObjectID darstellt>
                  'name': <str>,
                  'type': <str, der den Typ der gemessenen Größe beschreibt>,
                  'unit': <str, der die Einheit der gemessenen Größe beschreibt>,
                  'model': <str, der das Modell des Sensors beschreibt>
              },
              ...
          ]

Zeitreihendaten für einen spezifischen Sensor abrufen

Ruft die Zeitreihen eines Sensors für einen bestimmten Zeitraum ab. Wenn kein Zeitraum angegeben ist, werden die neuesten Daten zurückgegeben. t_s ist in Abhängigkeit vom Benutzer/Standort begrenzt.

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

Methode: GET

Auth erforderlich: JA mit einem gültigen Token

Anfragelimite: 1/Sekunde

Parameters (URL)
          ----------
          site_id: str
              Die ID des Standort
          sensor_id: str
              Die ID des Sensorobjekts
          
          Parameters (GET)
          ----------
          t_s: str, optional
              Das isoformatierte Datum, das den Startzeitpunkt der angeforderten Zeitreihe darstellt, zeitzonenunabhängig in UTC
          t_e: str, optional
              Das isoformatierte Datum, das den Endzeitpunkt der angeforderten Zeitreihe darstellt, zeitzonenunabhängig in UTC
          
          Header
          ----------
          Content-Type: 'application/json'
          Authorization: 'Bearer {Ihr-Zugriffstoken}'
          
          Rückgabe
          -------
          array_like
          
          Die Zeitreihendaten des Sensors für den ausgewählten Zeitraum, dargestellt als Liste von Objekten:
          
          [
              {
                  'timestamp': <int timestamp>,
                  'value': <float, int>
              },
              ...
          ]

Wie haben wir abgeschnitten?

API-Schnittstelle des Gateways

Kontakt