Tankerkönig - Probleme mit Markdown Card

Finde ich gut. Wenn man mit Jinja, HTML und Markown Sprache umgehen kann, finde ich eine Markdownkarte besser weil individuell gestaltbarer.

Damit hast Du ja auch Dein Ursprungsproblem gelöst:

Aus

{% for entity in expand('group.benzinpreise') | sort(attribute='state') | map(attribute='entity_id') | map('string')  | list %}

wurde

{% for entity in (expand('sensor.benzinpreise') | sort(attribute='state'))[0:6] | map(attribute='entity_id') | map('string') | list %}

Ich hätte getippt, daß ersteres auch funktioniert weil ein sort auch ohne Klammern geht und das nur die ersten 6 genommen werden ist nur effizienteres Beiwerk.

1 „Gefällt mir“

Hallo und danke für die Idee!
Damit die if Abfrage nicht für jeden Tankstellen Brand erweitert werden muss habe ich das ganze mal etwas angepasst. Im regex_search können weitere Brands für die ein Logo vorliegt erweitert werden. Im Beispiel sind “star”, “avia” und “shell”. Der Dateiname ist dann z.B. “star.png” oder “avia.png”.
Außerdem habe ich aus “Die Tankstelle ist geschlossen” ein “Preis: -” gemacht ist dann etwas einheitlicher aber funktioniert auch ohne die Anpassung :smiley:

Code:

type: markdown
content: >-
  # Super E5:
  {% for entity in (expand('sensor.fuel_super') | sort(attribute='state'))[0:6] | map(attribute='entity_id') | map('string') | list %}
    {% set brand = state_attr(entity, "brand") | slugify("_") | lower %}
    {% if brand | regex_search("^star|avia|shell|bavaria_petrol$") %}
    ![Image](/local/img/{{ brand }}.png)
    {% endif %}
    {{state_attr(entity, "friendly_name")}}
    {% set superpreis = states(entity) %}
    {% if superpreis != 'unknown' %}
    ## Preis: {{ '%.3f' | format(superpreis | float) }} €
    {% else %}
    ## Preis: -
    {% endif %}
  *** {% endfor%}

Bis auf eine Tankstelle klappt es ganz gut. Schwierigkeiten gibt es bei Brand ‘Bavaria Petrol’ - hier wird das Icon nicht gefunden. Gibt es dafür eine Lösung?

Nun habe ich in der Beschreibung zur Markdown Karte gelesen, dass man durch ‚* List‘ oder ‚- List‘ bzw. ‚· List‘ eine fortlaufende Nummerierung einbauen kann.
Hast du eine Idee, wie das zu realisieren ist?

Das Icon unter /local/img/bavaria_petrol.png ablegen

1 „Gefällt mir“

Komisch, das habe ich jetzt mehrfach versucht, es funktioniert bei mir nicht.

Vielleicht auch ohne _ oder mit anderem Verbindungszeichen. Schau mal wie die anderen Icons benannt sind bzw wie die Entität zu Bavaria Petrol heißt

Ich hab den markdown code angepasst. Ein Leerzeichen wird nun durch einen underscore “_” ersetzt. Somit sollte aus “Bavaria Petrol” nun “bavaria_petrol.png” werden. Das kam bei meinen Tankstellen nicht vor. :slight_smile:
Im Filter müsste dann auch “bavaria_petrol” ergänzt werden.

1 „Gefällt mir“

@sascha89
kannst du den neuen Code mal kurz hier rein stellen?

Hatte den Code direkt im alten Beitrag angepasst damit der nächste direkt die neue Version hat :+1:

Bei mir klappt es nicht, schau selbst

Foto_vom_2024-12-26_um_14-34-24

Ich habe sogar einen Neustart gemacht und die Seite neu geladen.

Ergänz bitte einmal die brand Zeile dass dort die folgenden zwei Zeilen stehen:

{% set brand = state_attr(entity, "brand") | replace(" ", "_") | lower %}
{{ brand }}

Somit sollte der Name dort angezeigt werden. (also zB. bavaria_petrol) womit man dann auf den Namen für das icon schließen kann. Die Zeile kann nach dem debuggen dann wieder entfernt werden.

1 „Gefällt mir“

Alles super, so hat es funktioniert - Problem gelöst.

Hast du denn auch noch eine Idee zur ‘fortlaufenden Nummerierung’, die ich weiter oben erwähnt habe?

Hab den Code oben angepasst nun werden alle Sonderzeichen entfernt und Leerzeichen durch Underscore ersetzt. Nun sollten alle Tankstellen einfach integrierbar sein!

{% set brand = state_attr(entity, "brand") | replace(" ", "_") | lower %}
Neu:
{% set brand = state_attr(entity, "brand") | slugify("_") | lower %}

Bzgl. der fortlaufenden Nummerierung. Die Optionen in Markdown sind für Listen gedachte. Also einfach:

  1. a
  2. b
  3. c
    oder
  • a
  • b
  • c

Habe es kurz mal ausprobiert mit dem folgenden bekommst du die aktuelle Iteration. Damit könnte man vor der Tankstelle die Nummer in der Liste anzeigen. War das die Frage oder habe ich das falsch verstanden?

{{ loop.index }}

Das war die Frage, momentan habe ich nur ein kleines Problem mit der Umsetzung. Du bist mir halt um einiges voraus…

Ah, jetzt, jaaah - hervorragend, es funktioniert!

Für alle, die es nachbauen wollen

Code:

# Super E5: {% for entity in (expand('sensor.benzinpreise') | sort(attribute='state'))[0:8] | map(attribute='entity_id') | map('string') | list %}
    
  {% set brand = state_attr(entity, "brand") | replace(" ", "_") | lower %}
  {% set brand = state_attr(entity, "brand") | slugify("_") | lower %}
  {{ loop.index }}.)
  {% if brand | regex_search('^aral|bavaria_petrol|esso|jet|markant|shell$') %}
  ![Image](/local/img/{{ brand }}.png)
  {% endif %}
  {{state_attr(entity, "friendly_name")}}
  {% set superpreis = states(entity) %}
  {% if superpreis != 'unknown' %}
  ## Preis: {{ '%.3f' | format(superpreis | float) }} €
  {% else %}
  ## zur Zeit geschlossen
  {% endif %}
*** {% endfor%}

Ergebnis:

# Super E5: {% for entity in (expand('sensor.benzinpreise') | sort(attribute='state'))[0:8] | map(attribute='entity_id') | map('string') | list %}
    
  {% set brand = state_attr(entity, "brand") | slugify("_") | lower %}
  {% if brand | regex_search('^aral|bavaria_petrol|esso|jet|markant|shell$') %}
  ![Image](/local/img/{{ brand }}.png)
  {% endif %}
  {{ loop.index }}.) {{state_attr(entity, "friendly_name")}}
  {% set superpreis = states(entity) %}
  {% if superpreis != 'unknown' %}
  ## Preis: {{ '%.3f' | format(superpreis | float) }} €
  {% else %}
  ## zur Zeit geschlossen
  {% endif %}
*** {% endfor%}

Ich denke so ist es etwas übersichtlicher/platzsparender. Habe auch die überflüssige Zeile entfernt.

Kleine Ergänzung noch wenn man bei der Helper Group den Type auf Minimum setzt bekommt man ein Badge für den aktuell günstigsten Spritpreis on Top.
image

1 „Gefällt mir“

Du hast es ja echt drauf, das muss man dir lassen :+1:

Vielen Dank für das Lob :sweat_smile:
Funktioniert natürlich nicht nur für das Badge sondern auch für eine normale Kachel.

Du steckst doch auch richtig im Thema!

Deshalb habe ich auch ein wenig Hoffnung, dass du hierzu auch eine Meinung hast:

https://community.simon42.com/t/tankdressen-sortiert-anzeigen/41965