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.
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.
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: