Home Assistant Anleitung how to… JSON-Daten einlesen

Ich hatte in einem anderen Beitrag schon einmal รผber die Mรถglichkeit gesprochen, Webseiten-Inhalte von Home Assistant zu scrapen. Letztlich ist dies aber fรผr den von mir in diesem konkreten Fall gewรผnschten Daten-Input nicht wirklich effizient.

Also habe ich die benรถtigten/gewรผnschten Daten als JSON bereitgestellt, und lasse diese nun von Home Assistant automatisch einlesen. Der Vorteil von JSON-Daten gegenรผber dem Scrapen?

Home Assistant: How to... Kurzanleitungen und Nรผtzliches fรผr Home Assistant!

Zum einen kann man beim JSON-Abruf festlegen, wie regelmรคฮฒig die Daten geladen werden sollen. Wenn ich also weiฮฒ, dass sich die Daten maximal einmal pro Stunde รคndern werden, reicht es vollkommen, auch nur einmal pro Stunde den JSON-Abruf auszufรผhren. 

Darรผber hinaus ist es natรผrlich deutlich eleganter strukturierte Daten abzurufen, anstelle den eher als Quick&Dirty zu bezeichnenden Weg des Scrapens zu gehen ๐Ÿ˜‰

Um JSON-Daten in Home Assistant zu nutzen, benรถtigst du natรผrlich im JSON-Format bereitgestellte Daten (;)) und folgenden Code:

Du magst Home Assistant? Dann abonniere kostenlos meine Beitrรคge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 424 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklรคrung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders รผberlegen!

- platform: rest
  authentication: basic
  username: "EIN_USERNAME"
  password: "EIN_PASSWORD"
  scan_interval: 60
  resource: https://link.zu/deiner/json/datei.php
  name: "My Quotes"
  json_attributes:
    - "person"
    - "quote"
- platform: template
  sensors:
    myquote_person:
      friendly_name: "Quote-Person"
      value_template: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.my_quotes') %}
        {% if state != invalid_value %} {{ state_attr('sensor.my_quotes', 'person') }}
        {% else %}Meister Yoda
        {% endif %}
- platform: template
  sensors:
    myquote_quote:
      friendly_name: "Quote-Quote"
      value_template: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.my_quotes') %}
        {% if state != invalid_value %} {{ state_attr('sensor.my_quotes', 'quote') }}
        {% else %}Tu es oder tu es nicht. Es gibt kein Versuchen!
        {% endif %}

In diesem Code habe ich sogar einen Fallback eingebaut, falls die JSON-Daten einmal nicht verfรผgbar sein sollten, damit der Home Assistant Sensor nicht „unavailable“ ist, sondern einen Dummy-Wert erhรคlt. Inwiefern dies fรผr deinen konkreten Anwendungszweck sinnvoll oder mรถglich ist, musst du natรผrlich selbst bewerten!

Du kannst den Code natรผrlich nach deinem Bedarf anpassen. Die URL musst du auf jeden Fall anpassen. Der Intervall hรคngt davon ab, wie oft sich die Daten รคndern kรถnnen. 

Ich wรผrde den Abruf nich unnรถtig oft ausfรผhren lassen, da dies natรผrlich letztlich wieder Arbeit ist, die Home Assistant verrichten muss. Und unnรถtige Arbeit sollten wir nun wirklich jedem Ersparen ๐Ÿ˜‰

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

2 Gedanken zu „Home Assistant Anleitung how to… JSON-Daten einlesen“

  1. Sorry habe versehent geklickt:

    Hallo Oli,

    kรถnnte ich dich um Hilfe bitten bzgl. Json?

    Ich wรผrde gerne den Beregner in Home Assitant als Bedingung je Regenprognose ein oder ausgeschalten lassen. Dazu stellt der lokale Wetterdienst folgende Abfrage zur Verfรผgung:

    https://data.civis.bz.it/de/dataset/southtyrolean-weatherservice-weatherdistricts/resource/aaf363af-7dad-423a-a137-662c57fd74b4

    Ich wรผrde folgenden Wert benรถtigen: $.forecasts[0].rainTo

    sollte der nicht 0 sein dann soll der Beregner nicht einschalten

    kรถnntest du mir helfen das script zu erstellen?

    MfG

    Philipp

    Antworten
    • Hi Philipp,

      hast du denn den Wert bereits als value_template in Home Assistant verfรผgbar?

      Wenn ja, ist es ja eigentlich nur noch eine simple Automation, die bspw. zu einer fixen Uhrzeit รผberprรผft, ob das value_template > ist (also Kondition) und nur in diesem Fall den Beregner auslรถst.

      VG

      Olli

      Antworten

Schreibe einen Kommentar