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?
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
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 😉
Produktempfehlungen
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
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