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