Home Assistant Anleitungen how to… Benachrichtigung bei günstigem Spritpreis

Ich hatte ja bereits beschrieben, wie du dir in Home Assistant die aktuellen Spritpreise anzeigen lassen kannst. Das reichte mir jedoch nicht, so dass ich mir nun folgende Automation gebaut habe:

Ich erhalte immer dann eine Telegram-Nachricht (der Kanal zur Benachrichtigung ist natürlich jedem selbst überlassen), wenn der aktuelle Spritpreis bei der bei uns in der Nähe in der Regel am günstigsten Tankstelle unterhalb des Durchschnitt-Preises der vergangenen 14 Tage liegt.

Aber der Reihe nach! 🙂

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

Mit der bereits erwähnte Integration von Tankerkönig [offizielle Webseite von Tankerkönig], kannst du dir ja relativ einfach den aktuellen Spritpreis in Home Assistant anzeigen lassen. Dieser Preis alleine, sagt allerdings natürlich nur relativ wenig aus, wenn man nicht regelmäßig an Tankstellen vorbeifährt, und somit in etwa ein Gefühl für die aktuellen Spritpreise hat.

Darüber hinaus „zwingt“ einen die Tankerkönig-Integration alleine, immer wieder zu gucken, wie denn der aktuelle Preis ist.

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

Follow Home Assistant
( 442 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!

Deutlich smarter wäre es da doch, wenn Home Assistant dich automatisch informieren könnte, sobald der Spritpreis unter ein gewisses Niveau fällt.

Für mich ist dieses Niveau der Durschnitts-Preise der letzten 14 Tage. Der Zeitraum ist natürlich beliebig gewählt und jeder kann da anderer Meinung sein. Immer dann, wenn nun also der aktuelle Spritpreis für E10 unter diesen Durchschnittspreis der letzten 14 Tage fällt, erhalte ich von Home Assistant eine Benachrichtigung.

Hierfür musst du jedoch zusätzlich zu der Tankerkönig-Integration noch ein wenig kreativ werden, um an den Durchschnittspreis der letzten 14 Tage zu gelangen. Ich habe dies wie folgt gelöst:

Über die Tankerkönig-API rufe ich alle 5 Minuten die aktuellen Preise ab und speichere diese in einer separaten MySQL-Datenbank. Der Aufruf der aktuellen Preise kann wie folgt aussehen:

https://creativecommons.tankerkoenig.de/json/list.php?lat=50.9&lng=7.2&rad=4&sort=dist&type=all&apikey=DEIN_KEY

Die durch den API-Aufruf erhaltenen Preise speichere ich, wie gesagt, in einer separaten MySQL-Datenbank ab.

Ebenfalls alle 5 Minuten rufe ermittle ich dann den benötigten Durchschnittspreis. Dies kann in MySQL wie folgt aussehen:

SELECT AVG(e10) as AVG_e10, MAX(e10) as MAX_e10, MIN(e10) as MIN_e10, count(e10) as datapoints FROM `gfp_prices` WHERE u_id = '8ab00df0' AND updated > DATE_SUB(NOW(), INTERVAL 14 DAY)

Neben dem Durchschnittspreise ermittle ich auch noch den maximalen und minimalen Preis, sowie die Anzahl der zugrunde liegenden Datenpunkte.

Das Ergebnis dieses SQL-Query stelle ich dann als JSON-Datensatz bereit, so dass ich die Daten von Home Assistant einlesen lassen kann. Wie man in Home Assistant JSON-Daten einliest, habe ich ja bereits beschrieben. Der konkrete Aufruf könnte wie folgt aussehen:

- platform: rest
  resource: https://die-URL.zu/deinen/fuel_stats.php
  authentication: basic
  username: "NAME"
  password: "Passwort"
  scan_interval: 15
  name: "fuel_stats"
  json_attributes:
    - "avg_e10"
    - "max_e10"
    - "min_e10"
    - "datapoints"

- platform: template
  sensors:
    fuel_stats_avg_e10:
      friendly_name: "AVG E10"
      entity_id: sensor.fuel_stats
      unit_of_measurement: '€'
      value_template: "{{ state_attr('sensor.fuel_stats', 'avg_e10') }}"
- platform: template
  sensors:
    fuel_stats_max_e10:
      friendly_name: "MAX E10"
      entity_id: sensor.fuel_stats
      unit_of_measurement: '€'
      value_template: "{{ state_attr('sensor.fuel_stats', 'max_e10') }}"
- platform: template
  sensors:
    fuel_stats_min_e10:
      friendly_name: "MIN E10"
      entity_id: sensor.fuel_stats
      unit_of_measurement: '€'
      value_template: "{{ state_attr('sensor.fuel_stats', 'min_e10') }}"

- platform: template
  sensors:
    fuel_stats_datapoints:
      friendly_name: "Fuel-Stats Datapoints"
      entity_id: sensor.fuel_stats
      value_template: "{{ state_attr('sensor.fuel_stats', 'datapoints') }}"

Als Ergebnis erhalte ich die Entitäten

  • fuel_stats_avg_e10
  • fuel_stats_max_e10
  • fuel_stats_min_e10
  • fuel_stats_datapoints

mit welchen ich nun wie gewohnt in/mit Home Assistant „arbeiten“ kann.

Ich habe nun folgende Automation, welche mich bei Unterschreitung des Durchschnitts-Preise per Telegram kurz informiert:

- alias: "Tankempfehlung"
  trigger:
    platform: numeric_state
    entity_id: sensor.tankerkoenig_jaeger_overath_e10
    below: sensor.fuel_stats_avg_e10
  action:
  - service: notify.telegram
    data_template:
      title: "Tankempfehlung"
      message: "Der aktuelle Spritpreis ist {{ states.sensor.tankerkoenig_jaeger_overath_e10.state }}, bei einem Durchschnittspreis von {{ states.sensor.fuel_stats_avg_e10.state }}. Tiefstpreis: {{ states.sensor.fuel_stats_min_e10.state }}"

Zugegeben, das ganze ist noch nicht ganz ausgereift, aber für „an einem Nachmittag entstanden“ finde ich es schon recht nützlich. Insbesondere, da ich nun aktiv auf einen tendenziell guten Spritpreis hingewiesen werde, ohne, dass ich hierauf immer wieder überprüfen muss!

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