thats my card, which has been posted above, more than a few times.
I did adapt it somewhat, so here goes the last version Ive been using for quite some time now.
type: custom:mod-card
card_mod:
style: |
:host {
--stack-card-margin: 0px;
}
card:
type: vertical-stack
cards:
- type: custom:button-card
name: Volgende ophaaldata
template: button_default_title
hold_action:
action: navigate
navigation_path: >
[[[ return window.location.pathname.split('/')[2] == 'calendar'
? '/ui-overview/home_summary' : null; ]]]
- type: custom:hui-element
card_type: markdown
card_mod:
style: |
ha-card.type-markdown {
box-shadow: none;
}
content: >
<font color={{states('sensor.trash_color')}}><ha-icon icon= {{'mdi:delete-alert' if states('sensor.afvalwijzer_today') != 'Geen' else 'mdi:delete-outline'}}> </ha-icon></font> Vandaag, {{states('sensor.vandaag')}}: <font color= {{states('sensor.trash_color')}}>**{{states('sensor.afvalwijzer_today')|capitalize}}</font>**
<font color={{states('sensor.trash_next_color')}}><ha-icon icon= {{states('sensor.trash_next_icon')}}> </ha-icon></font> Volgende afval-ophaal over **<font color={{states('sensor.trash_next_color')}}>{{states('sensor.afvalwijzer_next_in_days')}}</font>** {{'dag' if states('sensor.afvalwijzer_next_in_days') == '1' else 'dagen'}} op:
<ha-icon icon= 'mdi:delete-alert'> </ha-icon> {{states('sensor.volgende_afval_ophaal_dag')}}: **<font color={{states('sensor.trash_next_color')}}>{{states('sensor.afvalwijzer_next_type')|capitalize}}</font>**
- type: horizontal-stack
cards:
- type: picture-entity
card_mod:
style: |
ha-card {
box-shadow: none;
animation: {% if is_state('persistent_notification.trash_notification_today','notifying') and
states('sensor.afvalwijzer_today') != 'Geen' %} blink 2s linear infinite;
{% else %} none
{% endif %}
}
@keyframes blink {
100% {opacity: 0;}
}
entity: sensor.afvalwijzer_today
name: Vandaag
show_state: false
state_image: &state_image
gft: /local/afvalwijzer/gft.png
papier: /local/afvalwijzer/papier.png
restafval: /local/afvalwijzer/restafval.png
plastic: /local/afvalwijzer/plastic.png
Geen: /local/afvalwijzer/kliko_geen.png
unknown: /local/afvalwijzer/kliko_geen.png
- type: picture-entity
card_mod:
style: |
ha-card {
box-shadow: none;
animation: {% if is_state('persistent_notification.trash_notification_tomorrow','notifying') and
states('sensor.afvalwijzer_tomorrow') != 'Geen' %} blink 2s linear infinite;
{% else %} none
{% endif %}
}
@keyframes blink {
100% {opacity: 0;}
}
entity: sensor.afvalwijzer_tomorrow
name: Morgen
show_state: false
state_image: *state_image
- type: picture-entity
entity: sensor.afvalwijzer_day_after_tomorrow
card_mod:
style: |
ha-card {
box-shadow: none;
}
name: Overmorgen
show_state: false
state_image: *state_image
- type: custom:auto-entities
card:
type: entities
filter:
exclude:
- entity_id: sensor.afvalwijzer*next*
- entity_id: sensor.afvalwijzer*to*
include:
- entity_id: sensor.afvalwijzer_*
options:
type: custom:template-entity-row
image: >
{% set type = config.entity.split('afvalwijzer_')[1] %}
/local/afvalwijzer/{{type}}.png
state: >
{% set trash = config.entity %}
{% set today = state_attr(trash,'is_collection_date_today') %}
{% set future = state_attr(trash,'days_until_collection_date') %}
{% if future is none or
(is_state(trash,'Geen') and future == 0) %} Tba
{% else %}
{{as_timestamp(strptime(states(trash),'%d-%m-%Y'))
|timestamp_custom('%-d %b')}}
{% endif %}
secondary: >
{% set trash = config.entity %}
{% set today = state_attr(trash,'is_collection_date_today') %}
{% set future = state_attr(trash,'days_until_collection_date') %}
{% if future is none or
(is_state(trash,'Geen') and future == 0) %} Nog niet gepubliceerd
{% else %}
{% set count = state_attr(trash,'days_until_collection_date')|int(default=0) %}
{% set day = as_timestamp(strptime(states(trash),'%d-%m-%Y'))
|timestamp_custom('%A') %}
{% set dagen =
{'Monday': 'Maandag',
'Tuesday': 'Dinsdag',
'Wednesday': 'Woensdag',
'Thursday': 'Donderdag',
'Friday': 'Vrijdag',
'Saturday': 'Zaterdag',
'Sunday': 'Zondag'} %}
{% set dag = dagen[day] if day in dagen else day %}
{% set unit = 'dag' if count == 1 else 'dagen' %}
{% if count >= 28 %} {% set phrase = dag + ' over 4 weken' %}
{% elif count >= 21 %} {% set phrase = dag + ' over 3 weken' %}
{% elif count >= 14 %} {% set phrase = dag + ' over 2 weken' %}
{% elif count >= 7 %} {% set phrase = 'Volgende week ' + dag %}
{% elif count >= 3 %} {% set phrase = 'komende ' + dag %}
{% elif count == 2 %} {% set phrase = dag + ', overmorgen' %}
{% elif count == 1 %} {% set phrase = 'morgen, ' + dag %}
{% else %} {% set phrase = 'Vandaag, ' + dag %}
{% endif %}
{{phrase}} {% if count != 0 %} ({{count}} {{unit}}) {% endif %}
{% endif %}
sort:
method: attribute
attribute: days_until_collection_date
numeric: true
entities:
- type: custom:fold-entity-row
head:
type: section
label: Automations
card_mod:
style: |
.label {
margin-left: 0px;
}
group_config:
state_color: true
padding: 0
entities:
- entity: input_boolean.trash_reminder
secondary_info: last-changed
- entity: input_boolean.trash_outside
secondary_info: last-changed
# - type: divider
- entity: automation.afval_vandaag
name: Notify vandaag
secondary_info: last-triggered
- entity: automation.afval_morgen
name: Notify morgen
secondary_info: last-triggered
any button_card_template used, you can find in my ‘Gists’ section