Home Assistant Anleitung how to… ‚unavailable‘ bei Sensor-Templates vermeiden

Wer mit Sensor-Templates arbeitet und hierbei auf Daten externer Anbieter zurückgreift (also beispielsweise per Scrape oder REST-Api ermittelte Daten), wir das Problem kennen, dass diese externen Daten punktuell nicht zur Verfügung stehen werden und einem dann das Sensor-Template „zerschießen“.

Statt 1,499€ für den aktuellen Spritpreis, steht dann dort „unavailable“. Dieses unavailable bleibt dann leider so lange bestehen, bis die Daten über die externe Quelle wieder erfolgreich ermittelt werden konnten.

Relativ lange hatte ich mit diesem Problem bei diversen Sensor-Templates zu tun. Ärgerlich war dies für mich immer dann, wenn ich einen dieser Sensoren in Automatisierungen genutzt habe. Diese Automatisierungen liefen dann „amok“, da „unavailable“ oder eben der erste valide Wert nach unavailable den Trigger der Automation auslösen konnte.

Relativ lange habe ich versucht, dies über die Automation, also durch Hinzufügen von Konditionen [Home Assistant: Conditions] irgendwie einzufangen oder zu verhindern. Alle meine Versuche blieben jedoch ohne Erfolg und diverse Automations feuerten immer wieder ihre Action ab, obwohl dies eigentlich nicht gewollt war.

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

Leider viel zu spät erst kam ich auf die Idee, das Problem bereits beim entstehen des Wertes „unavailable“ zu lösen, also in meinen Sensor-Templates beim zuweisen des aktuellen Wertes hierauf zu prüfen.

Anhand des folgenden kleinen Code-Beispiels möchte ich dir zeigen, wie dies mit entsprechenden If-Abfragen und einem kleinen „Trick“ geht, so dass es kein „unavailable“ mehr als Sensor-Wert geben sollte:

- platform: template
  sensors:
    dhl_pin_json:
      friendly_name: "DHL-PIN"
      value_template: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.dhl_json') %}
        {% if state != invalid_value %} 
            {{ state_attr('sensor.dhl_json', 'DHL_PIN') }}
        {% else %}
            {{ states('sensor.dhl_pin_json') }} 
        {% endif %}

Das Code-Beispiel stammt aus meiner Script für die Darstellung der aktuellen DHL Packstation PIN in Home Assistant. Ich lese die DHL-Emails aus, extrahiere die PIN, schreibe diese in eine Datenbank und erzeuge hieraus einen JSON-Datensatz, welcher von Home Assistant „übernommen“ wird.

Dieser JSON-Datensatz beinhaltet die aktuelle PIN, sowie den Timestamp der E-Mail, mit welcher ich die PIN erhalten habe.

Mein Code oben beschreibt nun, wie ich den Sensor „sensor.dhl_pin_json“ über ein Sensor-Template „befülle“. Hierfür prüfe ich, ob der Sensor „sensor.dhl_json“, welcher die kompletten Daten/Attribute des JSON-Aufrufs beinhaltet, nicht den Wert „unavailable“ hat.

Ist also sensor.dhl_json ungleich unavailable, fülle ich den Sensor sensor.dhl_pin_json mit dem Attribut DHL_PIN des Sensors sensor.dhl_json.

Anderenfalls weise ich dem Sensor sensor.dhl_pin_json seinen eigenen Wert zu – also den letzten gültigen Wert!

Sofern es also einmalig einen validen Wert (ungleich unavailable) für meinen Sensor sensor.dhl_pin_json gegeben hat, sollte dieser nicht mehr auf unavailable gesetzt werden – selbst, wenn der JSON-Aufruf tatsächlich nicht erfolgreich gewesen ist!

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

Nichts mehr zu Home Assistant verpassen!

Follow Home Assistant
( 124 Followers )
X

Follow Home Assistant

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

Werbung*
Angebot
Aqara Bewegungsmelder, Benötigt Aqara Hub,...
Aqara Bewegungsmelder, Benötigt Aqara Hub,...*
Sprachsteuerung: Kompatibel mit Apple HomeKit und Alexa für freies Sprechen; Breiterer Erkennungsbereich: Bis zu 22 6 m bei 170° Betrachtungswinkel
26,99 EUR −8,00 EUR 18,99 EUR
Angebot
Shelly Plus H&T Wireless Luftfeuchtigkeit und Temperatur...
Shelly Plus H&T Wireless Luftfeuchtigkeit und Temperatur...*
Shelly Plus H&T WLAN Temperatur- und Feuchtigkeitssensor mit Display
35,59 EUR
Aqara Tür- und Fenstersensor, Erfordert Aqara Hub,...
Aqara Tür- und Fenstersensor, Erfordert Aqara Hub,...*
Sprachsteuerung: Kompatibel mit Apple Home Kit, Alexa für freies Sprechen
16,59 EUR

*= Preis inkl. MwSt., ggf. zzgl. Versandkosten. Letzte Aktualisierung vor 60 Minuten / Affiliate Links / Bilder von der Amazon Product Advertising API. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

Foto des Autors
Autor
Olli
Ca. Mitte 30, seit Windows 3.1 Fan von Computern, Gadgets, Handys und allem, was sich irgendwie programmieren lässt. Ich mag es gerne individuell und möglichst einfach, probiere aber auch gerne neue Dinge sofort aus. :)

Schreibe einen Kommentar

Die folgenden im Rahmen der DSGVO notwendigen Bedingungen müssen gelesen und akzeptiert werden:
Durch Abschicken des Formulares wird dein Name, E-Mail-Adresse und eingegebene Text in der Datenbank gespeichert. Für weitere Informationen wirf bitte einen Blick in die Datenschutzerklärung.