Energie Schnee

Dachflächen und Potenzial über eine Schnittstelle

Eine Adresse hineingeben, alle Dachflächen des Anwesens herausbekommen: Modulmenge, Leistung, Ausrichtung, Neigung und die Verschattung im 5-Punkt-Verfahren. Gedacht für Agenten und Chatbots, die für einen Benutzer eine erste Einschätzung brauchen.

Steckbrief

Basisadressehttps://energie.schnee.co.at/api/v1
FormatJSON, UTF-8. Feldnamen ohne Umlaute, Werte und Texte mit.
AnmeldungKopfzeile X-API-Key. Doku und Lastprofile brauchen keinen Schlüssel.
AbdeckungÖsterreich, Deutschland, Schweiz. Die Dachanalyse braucht ein amtliches Höhenmodell, das nicht überall vorliegt.
DauerEin Lauf dauert etwa zehn bis neunzig Sekunden. Deshalb zwei Schritte: anlegen, dann abfragen.
GrenzenJe Konto: 20 Analysen je Stunde, 900 Statusabfragen je Stunde, 40 Aufrufe je Stunde auf dem Ein-Aufruf-Weg /analyse, dort samt Nachfragen.
Maschinenlesbaropenapi.json und AGENT.md

Der kurze Weg für Chatbots

Viele Chatbots können ausschließlich eine Adresse aufrufen, also weder POST senden noch eine eigene Kopfzeile setzen. Für sie erledigt ein einziger Aufruf alles:

https://energie.schnee.co.at/api/v1/analyse
    ?schluessel=es_...
    &name=Testprojekt
    &adresse=Musterweg 1, 4840 Musterort
    &jahresverbrauch_kwh=6000
    &lastprofil=H0

Der erste Aufruf legt das Projekt an und startet die Analyse, Antwort 202 mit zustand: läuft. Derselbe Aufruf nach der Zahl von Sekunden aus dem Feld erneut_in_s liefert das Ergebnis mit zustand: fertig. Auf diesem Weg zählt jede Abfrage gegen die Grenze von 40 Aufrufen je Stunde. Es wird kein zweites Projekt angelegt, egal wie oft aufgerufen wird. Der Schlüssel steht dabei in der Adresse und damit im Zugriffs­protokoll jedes Rechners dazwischen. Wer Kopfzeilen setzen kann, nimmt den Weg darunter.

Der reguläre Ablauf in zwei Schritten

Zuerst wird ein Projekt angelegt. Das startet die Analyse und antwortet sofort. Danach wird der Stand abgefragt, bis er auf fertig steht. Wie lange zwischen zwei Abfragen zu warten ist, steht in der Antwort selbst, im Feld erneut_in_s und in der Kopfzeile Retry-After.

1. Projekt anlegen

curl -X POST https://energie.schnee.co.at/api/v1/projekte \
  -H "X-API-Key: es_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Beispielhof",
    "adresse": "Musterweg 1, 4840 Vöcklabruck",
    "jahresverbrauch_kwh": 4500,
    "lastprofil": "H0"
  }'

Antwort 202:

{
  "projekt_id": 42,
  "name": "Beispielhof",
  "zustand": "läuft",
  "analyse_url": "https://energie.schnee.co.at/api/v1/projekte/42/dachanalyse",
  "hinweis": "Die Dachanalyse läuft. Frage \"analyse_url\" ab, bis \"zustand\" auf \"fertig\" steht."
}

2. Ergebnis abholen

curl https://energie.schnee.co.at/api/v1/projekte/42/dachanalyse -H "X-API-Key: es_..."

Solange gerechnet wird, kommt 202 mit Fortschritt. Am Ende 200 mit allen Flächen:

Scheitert der Lauf, weil der Geodienst nicht antwortet, wird er mit POST auf dieselbe Adresse erneut angestoßen. Ein zweites Projekt an derselben Adresse ist ja nicht möglich, das bestehende bleibt.

{
  "projekt_id": 42,
  "jahresverbrauch_kwh": 4500,
  "lastprofil": "H0",
  "flaechen": [
    {
      "id": 1,
      "name": "Dachfläche 1",
      "gebaeude": 0,
      "grundflaeche_m2": 73.3,
      "dachflaeche_m2": 89.5,
      "neigung_grad": 35.0,
      "azimut_grad": -38.5,
      "firsthoehe_m": 7.63,
      "module_moeglich": 18,
      "leistung_moeglich_kwp": 7.2,
      "module_empfohlen": 12,
      "leistung_empfohlen_kwp": 4.8,
      "ertrag_kwh_pro_kwp": 1142,
      "ertrag_enthaelt_verschattung": true,
      "empfohlen": true,
      "verschattung": {
        "verfahren": "5-Punkt",
        "verlust_mittel_pct": 3.4,
        "messpunkte": [
          {"punkt": "center", "lat": 48.05986, "lon": 13.60314, "verlust_pct": 2.9}
        ]
      },
      "umriss": {"type": "Polygon", "coordinates": [[[13.6031, 48.0598]]]}
    }
  ],
  "zusammenfassung": {
    "flaechen_anzahl": 20,
    "grundflaeche_m2": 1491,
    "dachflaeche_m2": 1830.4,
    "module_moeglich": 333,
    "leistung_moeglich_kwp": 133.2,
    "empfehlung_kwp": 10.3,
    "auslegung_kwp": 10.4,
    "spez_ertrag_kwh_kwp": 1084
  },
  "wirtschaftlichkeit": {
    "verfuegbar": false,
    "url": "https://energie.schnee.co.at/module/photovoltaik?project_id=42",
    "anmeldung_noetig": true
  }
}

Die Felder einer Dachfläche

FeldBedeutung
grundflaeche_m2Die Fläche in der Draufsicht, wie sie aus dem Luftbild gemessen wird.
dachflaeche_m2Die geneigte Fläche. Sie ist um den Kosinus der Neigung größer und das Maß, auf das Module passen.
neigung_gradDachneigung aus dem 1-Meter-Höhenmodell.
azimut_gradAusrichtung. 0 ist Süden, negative Werte drehen nach Osten, positive nach Westen.
firsthoehe_mHöhe des höchsten Punktes der Fläche über dem Gelände.
module_moeglichModule, die geometrisch daraufpassen. Gerechnet wird in der gemessenen Dachebene, mit Randabstand und ohne Aufbauten. Beide Ausrichtungen werden probiert, je Gebäude gewinnt die vollere.
module_empfohlenModule aus der Auslegung nach dem gesendeten Jahresverbrauch. Belegt werden die ertragreichsten Flächen zuerst.
ertrag_kwh_pro_kwpJahresertrag je installiertem Kilowatt-Peak. Enthält bereits den Rundumhorizont dieser Stelle, den Schneeverlust nach Marion und den Systemverlust der Anlage.
ertrag_enthaelt_verschattungImmer true. Der Verlust darunter ist eine Auskunft, kein Faktor. Wer ihn noch einmal abzieht, rechnet die Verschattung doppelt.
verschattungVerlust in Prozent an fünf Messpunkten: die vier Ecken und die Mitte der Fläche. Dasselbe Verfahren, das die Anwendung intern detail nennt. Kann null sein, wenn keine Messpunkte vorliegen.
umrissDer Flächenumriss als GeoJSON-Polygon nach RFC 7946, WGS84, Reihenfolge Länge vor Breite.

Standardlastprofile

Das Lastprofil wird geprüft und zum Projekt gespeichert. Gerechnet wird damit heute in der Anwendung, nicht in der Schnittstelle. Für die Flächenauswahl zählt vorerst allein der Jahresverbrauch. Abrufbar auch unter /api/v1/lastprofile.

KennungBezeichnungGruppe
L0 Landwirtschaft allgemein Landwirtschaft
L1 Landwirtschaft mit Milchwirtschaft Landwirtschaft
L2 Sonstige Landwirtschaft Landwirtschaft
H0 Vorgabe Haushalt Haushalt
G0 Gewerbe allgemein Gewerbe
G1 Werktags 8-18 Uhr Gewerbe
G2 Abends mit Ladenbeleuchtung Gewerbe
G3 Durchlaufend Gewerbe
G4 Laden/Friseur Gewerbe
G5 Bäckerei mit Backstube Gewerbe
G6 Wochenendbetrieb Gewerbe

Fehler und was zu tun ist

Jede Fehlerantwort trägt einen unveränderlichen code zum Verzweigen, eine meldung für den Menschen davor und unter tu den nächsten Schritt.

StatusCodeWas zu tun ist
401schluessel_fehltSchlüssel in der Kopfzeile X-API-Key senden.
401schluessel_ungueltigSchlüssel prüfen oder in der Anwendung einen neuen anlegen.
400lastprofil_unbekanntEine Kennung aus der Tabelle oben senden. Die erlaubten stehen im Feld erlaubt.
404adresse_nicht_gefundenSchreibweise prüfen, Straße, Hausnummer, Postleitzahl und Ort mitsenden.
404adresse_nicht_eindeutigEs wurde etwas gefunden, aber an einem anderen Ort oder mit anderer Postleitzahl. Die Fundstellen stehen in fehler.gefunden. Nachfragen, welche gemeint ist, und keine auf gut Glück nehmen.
409projekt_besteht_bereitsAn dieser Adresse besteht bereits ein eigenes Projekt. Kein neues anlegen, sondern das bestehende verwenden. Seine Adressen stehen in der Antwort.
202kein FehlerDie Analyse läuft noch. Der Abstand bis zur nächsten Abfrage steht im Feld erneut_in_s und in der Kopfzeile Retry-After. Steht wartet auf true, hat die Rechnung noch nicht begonnen.
404analyse_fehltDas Ergebnis ist nach einem Tag verfallen. Kein neues Projekt anlegen, sondern die Analyse mit POST auf dieselbe Adresse erneut anstoßen.
415inhaltstyp_falschKopfzeile Content-Type: application/json setzen.
429ratengrenzeZu viele Anfragen. Die Wartezeit steht in fehler.tu und in der Kopfzeile Retry-After.
503dienst_ueberlastet, dienst_nicht_erreichbarDer Geodienst antwortet gerade nicht. Etwa eine Minute warten und die Analyse mit POST auf dieselbe Adresse erneut anstoßen.
422kein_dachAn dieser Stelle gibt es kein auswertbares Dach. Adresse prüfen.
503analyse_abgebrochenDer Lauf wurde unterbrochen, etwa durch einen Neustart des Dienstes. Einmal neu anstoßen.
500analyse_fehlgeschlagen, interner_fehlerErneut anstoßen. Bleibt es dabei, die Projektkennung melden.

Grenzen und Pflichten

Schlüssel bekommen

Nach der Anmeldung im Modul Schnittstelle unter https://energie.schnee.co.at/module/api lässt sich ein Schlüssel anlegen. Er wird genau einmal angezeigt und danach nur noch als Abdruck gespeichert. Ein verlorener Schlüssel lässt sich nicht wiederherstellen, wohl aber widerrufen und neu anlegen. Gezählt wird je Konto, mehrere Schlüssel erhöhen die Grenzen also nicht.

Ein Konto gibt es über den kostenlosen Testzugang auf der Startseite, der Betreiber schaltet frei.