Thema: Wie werden Daten im JSON-Format, die auf einem externen Server bereitliegen oder per API bereitgestellt werden (typisch hierfür sind z.B. Wetterdaten), innerhalb von Home Assistant mittels eigenem Sensor abgerufen und weiterverarbeitet.
Daten im JSON-Format sind grundsätzlich am simpelsten gezielt anzusprechen bzw. zu verarbeiten. Wir gehen in diesem Beispiel von folgenden Daten aus:
{"Haus":{"Etage_1":{"Wohnung_1_1":"42 Quadratmeter","Wohnung_1_2":"30 Quadratmeter"},"Etage_2":{"Wohnung_2_1":"72 Quadratmeter"}},"Kontakt":{"Name":"Alice","Mail":"alice@example.com"}}
Der Übersichtlichkeit halber einmal „deutlicher“ formatiert (wenn Du versuchen möchtest, dieses Beispiel nachzustellen, verwende bitte die obigen Daten ohne unnötige Leerzeichen):
{
"Haus": {
"Etage_1": {
"Wohnung_1_1": "42 Quadratmeter",
"Wohnung_1_2": "30 Quadratmeter"
},
"Etage_2": {
"Wohnung_2_1": "72 Quadratmeter"
}
},
"Kontakt": {
"Name": "Alice",
"Mail": "alice@example.com"
}
}
Als Ziel setzen wir uns hier den Zugriff auf a) die Daten der Wohnungen aus Etage 1, b) den Zugriff auf die Kontaktdaten.
Grundsätzlich arbeiten wir hier mit dem „Rest“-Sensor, generelle Informationen dazu sind hier zu finden: https://www.home-assistant.io/integrations/sensor.rest/
Da wir hier aus einer Ressource (URL, Link, Internetadresse, wie Du es nennen magst) direkt zwei Sensoren erzeugen möchten findet hier die Variante rest:
Anwendung, alternativ wäre auch eine Eingliederung unter sensor:
(oder Auslagerung in sensor.yaml) und dann die Variante - platform: rest
möglich.
Hier zuerst mal der Code für die zu erzeugenden Sensoren, der in die configuration.yaml eingefügt wird:
rest:
- resource: "URL-zu-den-Daten.json"
sensor:
- name: "Demo JSON Wohnungen Etage 1"
value_template: "{{ value_json.Haus.Etage_1 }}"
- name: "Demo JSON Kontakt"
value_template: "{{ value_json.Kontakt.Name }} - {{ value_json.Kontakt.Mail }}"
Achtung, Neustart notwendig, sonst wird der Sensor nicht angezeigt.
Im ersten Schritt definieren wir, dass alles Folgende unter „rest“ laufen wird und geben dann die zugehörige Adresse an, von der die Daten kommen.
Folgend wird der erste Sensor für die Wohnungen angelegt und benannt, dann werden die auszugebenden Daten ausgewählt. Wichtig ist hier das Stichwort value_json
, damit kann in diesem Kontext immer und grundsätzlich „alles“ angesprochen werden, was als Daten ankommt.
Der Rest ergibt sich eigentlich von selbst, wenn man es mit dem obigen, ansehnlich formatierten Code vergleicht: Wir gehen von „alles“ über „Haus“ zu „Etage_1“ - die ersten gewünschten Daten sind da.
Der zweite Sensor ist ähnlich: Hier in den geschweiften Klammern einmal „alles“, dann „Kontakt“, davon „Name“, dann als reine Textausgabe ein Bindestrich, folgend nochmal in geschweiften Klammern „alles“, dann „Kontakt“, davon „Mail“.
Was die beiden Sensoren nochmal differenziert – wenn Du schon etwas versiert in Home Assistant bist verrät es Dir schon dieser Screenshot der Sensoren:
Die Daten für die Wohnungen sind nach wie vor im JSON-Format, möchtest Du sie also weiter verarbeiten, ziehe direkt den Filter | from_json
in Erwägung oder lege noch weitere Sensoren an, mit denen Du weiter „in die Tiefe“ gehst. Die Daten für den Kontakt hingegen sind im „string“-Format, da wir damit „auf der letzten Ebene“ der Daten gelandet sind.