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 Anwendungsentwickler für Business Intelligence und erstellt Lösungen, mit denen sich große Datenmengen schnell analysieren lassen. Kunden nutzen seine Lösungen, um die Vergangenheit zu analysieren, die Gegenwart zu steuern und die Zukunft zu planen, um damit mehr Erfolg zu generieren. Dabei ist seine einzigartige Kombination aus Wissen und Auffassungsgabe ein Garant für ihren Erfolg.

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.