Abfallkalender aufsteigend sortieren

@Osorkon
Das sieht cool aus. Endlich einmal ein gelber Sack
Ich brauche nur Restmüll und gelber Sack
Würdest du die Icons und den Code verraten
Danke Helmut

Hier mal den Code für die Markdown Karte.
Bedarf aber denke ich, einer kleinen Erläuterung.

Hier wird der Sensor definiert, der im weiteren Verlauf, einfach als variable aufgerufen wird. Also der Sensor, der die Termine und den Typ als Liste führt.

{% set sensor = "sensor.abfallnaechster" %} 

Bei euch heisst er vielleicht sensor.next_waste_collection_type oder auch ganz anders.

Im Prinzip wird die ganze Liste Durchgegangen angefangen mit dem Listen Index [0]
Für den ersten Listen Eintrag und dann mit [1] für den zweiten Listen Eintrag usw.
So erfolgt die Sortiereung.

Am ende dann noch die Zeilen, die die Abholung in Tagen ausgibt.
Auch wieder generisch ermittelt. Über den Namen von Typ. Das heißt bei Papier,
wird der Sensor sensor.papier und beim Restmüll, der Sensor sensor.restmuell aufgerufen. D.h. bei mir heißen die Sensoren genau so wie der Typ.

{% set sensor = ((states[sensor].attributes.values()  | list)[0]) |
      replace(" ","") | replace("ü","ue") |lower %} ##### <center>{{
      states.sensor[sensor].state }}</center>

Der Komplete code für die Raster Karte mit 4 Markdown Karten, sieht dann bei mir so aus.

square: true
type: grid
cards:
  - type: markdown
    content: >
      {% set sensor = "sensor.abfallnaechster" %} # {%
      if((states[sensor].attributes.values() | list)[0]) =='Papier' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/blau.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[0]) =='Bioabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/bio.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[0]) =='Restmüll' %}  
      <font
      color="yellow"><center>![Image](/local/bilder/trash/restmuell.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[0]) =='Gelber Sack'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/gelbersack.png)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[0]) =='Gartenabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/garten.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[0])
      =='Problemstoffsammlung' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/schadstoffe.svg)</center></font>
      {% endif %}

      {% set sensor = ((states[sensor].attributes.values()  | list)[0]) |
      replace(" ","") | replace("ü","ue") |lower %} ##### <center>{{
      states.sensor[sensor].state }}</center>
  - type: markdown
    content: >
      {% set sensor = "sensor.abfallnaechster" %} #{% if
      ((states[sensor].attributes.values() | list)[1]) =='Papier' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/blau.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[1]) =='Bioabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/bio.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[1]) =='Restmüll' %}  
      <font
      color="yellow"><center>![Image](/local/bilder/trash/restmuell.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[1]) =='Gelber Sack'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/gelbersack.png)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[1]) =='Gartenabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/garten.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[1])
      =='Problemstoffsammlung' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/schadstoffe.svg)</center></font>
      {% endif %}

      {% set sensor = ((states[sensor].attributes.values()  | list)[1]) |
      replace(" ","") | replace("ü","ue") |lower %} ##### <center>{{
      states.sensor[sensor].state }}</center>
  - type: markdown
    content: >
      {% set sensor = "sensor.abfallnaechster" %} # {% if
      ((states[sensor].attributes.values() | list)[2]) =='Papier' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/blau.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[2]) =='Bioabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/bio.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[2]) =='Restmüll' %}  
      <font
      color="yellow"><center>![Image](/local/bilder/trash/restmuell.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[2]) =='Gelber Sack'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/gelbersack.png)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[2]) =='Gartenabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/garten.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[2])
      =='Problemstoffsammlung' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/schadstoffe.svg)</center></font>
      {% endif %}

      {% set sensor = ((states[sensor].attributes.values()  | list)[2]) |
      replace(" ","") | replace("ü","ue") |lower %} ##### <center>{{
      states.sensor[sensor].state }}</center>
  - type: markdown
    content: >
      {% set sensor = "sensor.abfallnaechster" %} # {% if
      ((states[sensor].attributes.values() | list)[3]) =='Papier' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/blau.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[3]) =='Bioabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/bio.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[3]) =='Restmüll' %}  
      <font
      color="yellow"><center>![Image](/local/bilder/trash/restmuell.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[3]) =='Gelber Sack'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/gelbersack.png)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[3]) =='Gartenabfall'
      %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/garten.svg)</center></font>

      {% elif ((states[sensor].attributes.values() | list)[3])
      =='Problemstoffsammlung' %}   <font
      color="yellow"><center>![Image](/local/bilder/trash/schadstoffe.svg)</center></font>
      {% endif %}

      {% set sensor = ((states[sensor].attributes.values()  | list)[3]) |
      replace(" ","") | replace("ü","ue") |lower %} ##### <center>{{
      states.sensor[sensor].state }}</center>
columns: 4

Die einzelnen Sensoren für die unterschiedlichen Typen, sind bei mir so aufgebaut.
Bsp. Papier Sensor:

  - platform: waste_collection_schedule
    name: waste_collection_papier
    details_format: upcoming
    value_template: >-
      {% if value.daysTo == 0 %}
        Heute
      {% elif value.daysTo == 1 %}
        Morgen
      {% else %}
        in {{value.daysTo}} Tagen{% endif %}
    types:
      - Papier

Gruß
Osorkon

2 „Gefällt mir“

@Osorkon
Herzlichen Dank. Das ist ja eine Doktorarbeit
Das muß ich mir wirklich in Ruhe ansehen
Gruß
Helmut

2 „Gefällt mir“

Könntest du eventuell so ein kleines HOWTo bauen? :slight_smile:

Wieso nicht so etwas ?

Sieht super aus. Kannst Du vielleicht den Code mit uns teilen?

Für den Button auf der Startseite

type: custom:mushroom-template-card
primary: 'Nächster Abfall-Termin: {{states(''sensor.abfallallgemeinto'')}}'
secondary: >-
  {{states('sensor.abfallallgemeinweekday') }} den
  {{states('sensor.abfallallgemeindate') }}

  {{states('sensor.abfallallgemeinname') }}
icon: mdi:trash-can
entity: sensor.abfallallgemein
icon_color: |-
  {% if is_state('sensor.abfallallgemeinname', 'Restmüll') %}
    green
  {% elif is_state('sensor.abfallallgemeinname', 'Gelber Sack') %}
    amber
  {% elif is_state('sensor.abfallallgemeinname', 'Papiertonne') %}
    blue
  {% else %}
    pink
  {% endif %}
tap_action:
  action: navigate
  navigation_path: /dashboard-abfallkalender/termine
hold_action:
  action: none
double_tap_action:
  action: none
picture: |-
  {% if is_state('sensor.abfallallgemeinname', 'Restmüll') %}
    /local/abfall/tonne-gruen330.png
  {% elif is_state('sensor.abfallallgemeinname', 'Gelber Sack') %}
    /local/abfall/sack-gelb.png
  {% elif is_state('sensor.abfallallgemeinname', 'Papiertonne') %}
    /local/abfall/tonne-blau330.png
  {% else %}
    /local/abfall/tonne-rot330.png
  {% endif %}
multiline_secondary: true
card_mod:
  style: |
    ha-card {
    {% if states('sensor.abfallallgemeinto2') | float < 1 %}
    --ha-card-background: red;
    {% elif states('sensor.abfallallgemeinto2') | float < 2 %}
    --ha-card-background: pink;
    {% else %}
    --ha-card-background: transparent;
    {% endif %}
    }

und die Unterseite

## Nächste Abfalltermine:
***
{% set ns = namespace(x=[]) %}
{% for entity in expand('sensor.gruppe_abfall') %}
{% set ns.x = ns.x + [{"name": entity.name, "state": entity.state | int(0)}] %}
{% endfor %}
{% for entity in ns.x | sort(attribute='state') -%}
### in {{ entity.state }} Tagen am {% if 'Papier' in (entity.name) %} {{states('sensor.abfallpapiertonnedate')}}
{% elif 'Rest' in (entity.name) %} {{states('sensor.abfallrestmuelldate')}}
{% elif 'Gelber' in (entity.name) %}  {{states('sensor.abfallgelbersackdate')}}
{% endif %}
{% if 'Papier' in (entity.name) %} 
  ## ![Image](/local/abfall/tonne-blau51.png) {{(entity.name)}}
{% elif 'Rest' in (entity.name) %} 
  ## ![Image](/local/abfall/tonne-gruen50.png) {{(entity.name)}}
{% elif 'Gelber' in (entity.name) %} 
  ## ![Image](/local/abfall/sack-gelb50.png) {{(entity.name)}}
{% endif %}
***
{% endfor %}

Bilder kannst Du dir ja selbst auswählen.
Bei Fragen einfach noch mal anschreiben.