REST-API Beispiele


Inhaltsverzeichnis


Beispiel für den Abruf von Verbrauchsdaten

Um auf einfache Weise Daten aus EnergieMonitor abzufragen kann man über Excel die REST-API ansprechen.

Hierfür kann man über die Registerkarte Daten in der Gruppe Daten abrufen und transformieren den Menüpunkt Daten abrufen auswählen, danach Aus anderen Quellen eine Leere Abfrage anklicken.

Verbrauchsdaten_abrufen.png

Jetzt öffnet sich die der Power Query-Editor in diesem kann man in der Gruppe Abfrage den Erweiterten Editor öffnen um die REST-API Schnittstellen ansprechen.

Erweiterter_Editor.png

Excel Beispiel Code mit Kommentare

Um die den genauen Aufruf abzufragen kann über OpenAPI die Aufruf Parameter abfragen, das unten dargestellte Beispiel kann vom tatsächlichen Aufruf abweichen.
Dieses Beispiel wurde mit der Excel Version 2608 erzeugt.

let
    // Url der EnergieMonitor Instanz
    BaseUrl = "http://interwatt:9050",
    ApiKey = "API-KEY",

    Response = Web.Contents(
        BaseUrl,
        [
            // GUID der Organisationseinheit kann man über die
            // Webschnittstelle ermitteln
            RelativePath = "v1/orgUnit/574B6CA9-8BF2-4EFB-8672-034E7FEE200A/units/consumption",
            Query = [
                startLocal = "1999-12-31T23:00:00Z",
                endLocal = "2001-12-31T23:00:00Z"
            ],
            Headers = [
                #"X-API-KEY" = ApiKey,
                Accept = "application/x-ndjson"
            ],
            Timeout = #duration(0, 0, 5, 0)
        ]
    ),

    Lines = Lines.FromBinary(
        Response,
        QuoteStyle.None,
        false,
        65001
    ),

    NonEmptyLines = List.Select(
        Lines,
        each Text.Trim(_) <> ""
    ),

    JsonObjects = List.Transform(
        NonEmptyLines,
        each Json.Document(Text.ToBinary(_, TextEncoding.Utf8))
    ),

    ColumnNames = {
        "grandparentOrgUnitName",
        "parentOrgUnitName",
        "orgUnitName",
        "energySiteName",
        "energySiteForeignKey",
        "energySiteIdentPrefix",
        "unitName",
        "unitForeignKey",
        "unitIdentPrefix",
        "unitUuid",
        "consumptionType",
        "consumptionTypeId",
        "periodStartLocal",
        "period",
        "value",
        "measurementStatus",
        "measurementUnit",
        "isWeatherNormalized"
    },

    Output = Table.FromRecords(
        JsonObjects,
        ColumnNames,
        MissingField.UseNull
    )
in
    Output