Home Assistant REST API mit Power BI Desktop abrufen

Dieser Blogartikel zeigt, wie man mit Power Query Informationen über die REST API von Home Assistant auslesen kann.

Home Assistant bietet eine RESTful-API, über die verschiedene Informationen als JSON encoded objects abgerufen werden können. Für den Zugriff auf die APIs muss im Header die Authorization: Bearer TOKEN vorhanden sein, wobei TOKEN durch deinen eindeutigen Zugriffstoken ersetzt werden muss. „Langlebige Zugangstoken“ erhältst du, in dem du dich mit dem Webbrowser am Home Assistant Frontend anmeldest und dir in deinem Profil einen Langlebigen Zugangstoken erstellen lässt.

Langlebige Zugangstoken in Home Assistants erstellen.

Versuchst du nun direkt mittels Web.Contents auf die API zuzugreifen, erhältst du wahrscheinlich folgende Fehlermeldung:

Unerwarteter Fehler.: Die Blocklänge stimmt nicht mit ihrem Komplement überein.

Unerwarteter Fehler.: Die Blocklänge stimmt nicht mit ihrem Komplement überein.
Details:
 Microsoft.Mashup.Evaluator.Interface.ErrorException: Die Blocklänge stimmt nicht mit ihrem Komplement überein. ---> Microsoft.Mashup.Evaluator.Interface.ErrorException: Die Blocklänge stimmt nicht mit ihrem Komplement überein. ---> Microsoft.Mashup.Evaluator.Interface.ErrorException: Die Blocklänge stimmt nicht mit ihrem Komplement überein. ---> Microsoft.Mashup.Evaluator.Interface.ErrorException: Die Blocklänge stimmt nicht mit ihrem Komplement überein. ---> Microsoft.Mashup.Evaluator.Interface.ErrorException: Die Blocklänge stimmt nicht mit ihrem Komplement überein. ---> System.IO.InvalidDataException: Die Blocklänge stimmt nicht mit ihrem Komplement überein. ---> System.IO.InvalidDataException: Die Blocklänge stimmt nicht mit ihrem Komplement überein.

Um den Fehler zu beheben, musst du zusätzlich zum Bearer TOKEN, den Content-Type „application/json“ und Accept-Encoding „gzip“ angeben.

Mein Aufruf des Endpunktes „/api/history/period/<timestamp>“ sieht damit wie folgt aus.

= Json.Document(
      Web.Contents("http://homeassistant.local:8123",
          [
              RelativePath = "/api/history/period/2024-01-01T00:00:00+00:00",
              Query = [end_time = "2025-01-01T00:00:00+00:00",
                      filter_entity_id="sensor.marcus_bmi,sensor.marcus_body_fat,sensor.marcus_weight_2"],
              Headers = [Authorization="Bearer TOKEN", 
                #"Content-Type"="application/json", 
                #"Accept-Encoding"="gzip"
              ]
           ]))

Mit diesen Aufruf, rufe ich die historischen Sensordaten für die Sensoren marcus_bmi, marcus_body_fat und marcus_weight_2 für die Periode 01.01.2024 bis 01.01.2025 ab.

Leider speichert Home Assistent im Standard die Sensordaten nur für 10 Tage in der Historie. Danach sind die Sensordaten nur noch über die Langzeitstatistik verfügbar, für die es aktuell noch keinen REST API Endpunkt gibt.

Links:

Veröffentlicht von

Marcus Wegener

Marcus Wegener

Marcus Wegener ist Full Stack Power BI & Fabric Engineer und schreibt auf thinkBI über Datenmodellierung, Power BI, Fabric und Business Intelligence als Grundlage besserer Entscheidungen. Im Zentrum steht nicht das Dashboard, sondern die Frage, wie aus fachlichen Anforderungen tragfähige Informationsstrukturen entstehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.