@olli Hallo Olli mein Problem ist dass nicht der richtige sensor als Message gesendet wird. Da ich ja verschiedene Sensoren habe, wie du in den „conditions“ siehst. Im Code habe ich Beispielhaft mal den Bio Sensor eingefügt. Wie kann man jetzt in der Messge den korrekten Sensor ermitteln? Den „mode:single“ entferne ich.Das ist mir nicht aufgefallen weil die Automation noch nicht aktiv war. Vielen Dank dafür.
@silverwing Versuch mal folgenden Code als Teil deiner Message:
{% set morgen=(now().date() + timedelta(days=1))| string %}
{% if morgen == (states.sensor.biomull_abholung.attributes|list)[0] %} Biomüll
{% elif morgen == (states.sensor.restmull_abholung.attributes|list)[0] %} Restmüll
{% elif morgen == (states.sensor.papiermull_abholung.attributes|list)[0] %} Papier
{% elif morgen == (states.sensor.gelbe_tonne_abholung.attributes|list)[0] %} Gelbe Tonne
{% endif %}
Kannst du mir bitte einen Screenshot aus den Entwicklerwerkzeugen inkl. Spalte Attribute von den Müll-Sensoren geben, wenn mein Code-Vorschlag Probleme macht? Ich bin mir nicht ganz sicher, ob ich dein Setup richtig verstanden habe.
@olli Hallo Olli dein Code-Vorschlag funktioniert hervorragend !!.
Vielen Dank
@silverwing Perfekt, so muss das sein! ![]()
Vielen Dank für das Feedback!
Hallo Olli,
ich habe WCS auch installiert, die Automation soweit auch hinbekommen, das sie zumindest beim manuellen auslösen eine Nachricht aufs Handy schickt.
Jedoch beim durchlaufen ohne manuellen Anstubser bleibt das Handy still.
Mein Code sieht folgendermaßen aus:
trigger: time
at: "15:30:00"
{{ (now().date + timedelta(days=1)) | string == (states.sensor.nachster_abfuhrtermin.attributes|list)[0] }}
action: notify.mobile_app_sm_s901b
metadata: {}
data:
message: >-
Morgen wird folgender Müll abgeholt: {{
(states.sensor.naechster.attributes.values()|list)[0] }}!
Wo kann da der Hase im Pfeffer liegen?
Hi @marcus !
Kannst du bitte die vollständige Automation als YAML bereitstellen (also im Pflegedialog auf die 3 Punkte oben rechts und im Kontextmenü „In YAML bearbeiten“ auswählen und dann den kompletten YAML-Code hier einfügen bitte)?
Hallo Olli,
hier der ganze Code:
alias: Benachrichtigung Abfuhrtermin
description: ""
triggers:
- trigger: time
at: "17:45:00"
conditions:
- condition: template
value_template: >-
{{ (now().date + timedelta(days=1)) | string ==
(states.sensor.nachster_abfuhrtermin.attributes|list)[0] }}
actions:
- action: notify.mobile_app_sm_s901b
metadata: {}
data:
message: >-
Morgen wird folgender Müll abgeholt: {{
(states.sensor.naechster.attributes.values()|list)[0] }}!
- action: notify.mobile_app_pixel_6a
metadata: {}
data:
message: >-
Morgen wird folgender Müll abgeholt: {{
(states.sensor.naechster.attributes.values()|list)[0] }}!
mode: single
Scheinbar habe ich die Lösung gefunden:
alias: Benachrichtigung Abfuhrtermin
description: ""
triggers:
- trigger: time
at: "19:12:00"
conditions:
- condition: template
value_template: >-
{{ (now().date() + timedelta(days=2)) | string ==
(states.sensor.naechster.attributes|list)[0] }}
actions:
- action: notify.mobile_app_sm_s901b
metadata: {}
data:
message: >-
Morgen wird folgender Müll abgeholt: {{
(states.sensor.naechster.attributes.values()|list)[0] }}!
- action: notify.mobile_app_pixel_6a
metadata: {}
data:
message: >-
Morgen wird folgender Müll abgeholt: {{
(states.sensor.naechster.attributes.values()|list)[0] }}!
date um () ergänzt.
@marcus Ja, date() ist eine Funktion und da müssen die Klammern. Top, dass du es lösen konntest!
Servus, hoffe hier kann mir jemand helfen, ich habe die “Waste Collection Schedule” installiert. Die Sensoren zeigen aber nichts an, wahrscheinlich ist meine yaml falsch, ich komm aber nicht dahinter was.
Hier die Daten von der ics. Datei
Und hier meine yaml:
waste_collection_schedule:
sources:
- name: ics
args:
file: „local/abfall.ics“ # Das ‚local‘ zeigt auf deinen ‚www‘ Ordner
sensor:
- platform: waste_collection_schedule
name: Restmuell_Tage
details_format: „upcoming“
value_template: ‚{{ value.daysTo }}‘
types:- ‚Restmülltonne‘
- platform: waste_collection_schedule
name: Papiertonne_Tage
details_format: „upcoming“
value_template: ‚{{ value.daysTo }}‘
types:- ‚Papiertonne‘
- platform: waste_collection_schedule
name: Biotonne_Tage
details_format: „upcoming“
value_template: ‚{{ value.daysTo }}‘
types:- ‚Biotonne‘
Bei Zustände wird immer “unknown” angezeigt.
Könnte bitte jemand drüber schauen und bitte sagen was ich falsch eingegeben habe? Hab die yaml mit KI erstellt, da ich ehrliche gesagt nicht so bewandert bin in diesen Themen.
Wäre um Hilfe dankbar…![]()
Spannende Frage! Ich habe das selbst mit lokaler ICS-Datei über WCS noch nicht umgesetzt, plane es aber tatsächlich auch gerade.
Hast du dir die Doku hierzu schon angeschaut: hacs_waste_collection_schedule/doc/source/ics.md at master · mampfes/hacs_waste_collection_schedule · GitHub
Auf Anhieb fallen mir bei dem KI-Code die sehr auffälligen Anführungszeichen auf. Eigentlich sollte das immer ‘abc‘ oder “abc” sein.
Ich hoffe morgen selbst dazu zu kommen, mir das für mein Setup anschauen zu können.
VG Olli
Servus, danke schonmal für die Antwort. Habs jetzt aber doch hinbekommen, ich hab mir bei youtube nochmal ein Video dazu angeschaut und nun klappt es. ![]()
Magst du das Video hier teilen? Ich will das bei mir nämlich tatsächlich selbst gerade ändern.
Hallo,
ich nutze auch den „hacs_waste_collection_schedule“ mit aber leicht abgewandelter Karte
Hier die Karte. Diese habe ich nicht selbst entwickelt. Ich habe diese ursprünglich von
Wenn man alles ausfüllt bekommt man relativ am Ende den Code für die Karte
War aber nicht ganz das was ich wollte. Z.B. war die Schriftgröße oder Größe der Icons über alle Mülltonnen verteilt. Die Mülltonnen hatten eine feste Reihenfolge,…
Hab dann mal ChatGPT genutzt die Karte etwas zu optimieren
und dabei ist das folgende herausgekommen
Dazu brauch ihr die decluttering-card
Unter „Raw-Konfigurationseditor“:
Den folgenden Code einfügen
button_card_templates:
waste_picture:
show_entity_picture: true
show_state: false
show_name: false
size: var(--waste-icon-size)
styles:
card:
- border: none
- background: transparent
- padding: 1em 0 0 0
entity_picture:
- height: var(--waste-icon-max-height)
- max-height: var(--waste-icon-max-height)
- width: auto
- max-width: var(--waste-icon-size)
- object-fit: contain
state:
- operator: template
value: |
[[[
return entity.state === "Morgen";
]]]
styles:
entity_picture:
- animation: blink 1s linear infinite
waste_date:
show_name: false
show_icon: false
show_state: true
styles:
state:
- font-family: var(--waste-font-family)
- font-size: var(--waste-font-size)
card:
- border: none
- padding: 0
waste_state:
show_name: true
show_icon: false
show_state: true
styles:
name:
- font-family: var(--waste-font-family)
- color: var(--primary-color)
- font-size: var(--waste-font-size)
state:
- font-family: var(--waste-font-family)
- font-size: var(--waste-font-size)
card:
- border: none
- padding: 0 0 1em 0
decluttering_templates:
waste_column:
card:
type: vertical-stack
cards:
- type: custom:button-card
template: waste_picture
entity: "[[waste_entity]]"
entity_picture: "[[waste_picture]]"
- type: custom:button-card
template: waste_date
entity: "[[waste_date_entity]]"
- type: custom:button-card
template: waste_state
entity: "[[waste_entity]]"
Hier die eigentliche Karte.
Achtung! Ihr müsst unter custom:auto-entities eure Sensoren und URLs zu den Bildern anpassen.
Die Mülltonnen werden sortiert nach dem Abholdatum der jeweiligen Tonne angezeigt.
type: custom:vertical-stack-in-card
card_mod:
style: |
ha-card {
border-radius: 10px;
--waste-header-font-size: 1em;
--waste-font-size: 0.9em;
--waste-icon-size: 50%;
--waste-icon-max-height: 80px;
--waste-font-family: "Arial Rounded MT", Arial, sans-serif;
}
cards:
- type: custom:button-card
entity: sensor.waste_collection_schedule_mullabholung_morgen
show_icon: false
show_name: false
show_state: true
styles:
state:
- font-size: var(--waste-header-font-size)
- font-family: var(--waste-font-family)
- color: var(--primary-color)
- white-space: normal
- word-break: break-word
- visibility: |
[[[
return entity.state === "none"
? "hidden"
: "visible";
]]]
card:
- background: transparent
- border: none
- padding-bottom: 0
- type: custom:auto-entities
card_param: cards
show_empty: false
card:
type: grid
columns: 3
square: false
filter:
template: |
{% set waste_items = [
{
'entity': 'sensor.waste_collection_schedule_biomuell',
'date_entity': 'sensor.waste_collection_schedule_biomuell_datum',
'picture': '/local/muell/gruen.png'
},
{
'entity': 'sensor.waste_collection_schedule_papier',
'date_entity': 'sensor.waste_collection_schedule_papier_datum',
'picture': '/local/muell/blau.png'
},
{
'entity': 'sensor.waste_collection_schedule_gelber_sack',
'date_entity': 'sensor.waste_collection_schedule_gelber_sack_datum',
'picture': '/local/muell/gelb.png'
},
{
'entity': 'sensor.waste_collection_schedule_sperrmuell',
'date_entity': 'sensor.waste_collection_schedule_sperrmuell_datum',
'picture': '/local/muell/sperrabfall.png'
},
{
'entity': 'sensor.waste_collection_schedule_restmuell',
'date_entity': 'sensor.waste_collection_schedule_restmuell_datum',
'picture': '/local/muell/schwarz.png'
},
{
'entity': 'sensor.waste_collection_schedule_sondermuell',
'date_entity': 'sensor.waste_collection_schedule_sondermuell_datum',
'picture': '/local/muell/sperrabfall.png'
}
] %}
{% set ns = namespace(items=[]) %}
{% for item in waste_items %}
{% set date_value = states(item.date_entity) %}
{% if date_value | regex_match('^\d{2}\.\d{2}\.\d{4}$') %}
{% set timestamp = as_timestamp(
strptime(date_value, '%d.%m.%Y')
) %}
{% else %}
{% set timestamp = 9999999999 %}
{% endif %}
{% set ns.items = ns.items + [{
'entity': item.entity,
'date_entity': item.date_entity,
'picture': item.picture,
'timestamp': timestamp
}] %}
{% endfor %}
[
{% for item in ns.items | sort(attribute='timestamp') %}
{
"type": "custom:decluttering-card",
"template": "waste_column",
"variables": [
{
"waste_entity":
"{{ item.entity }}"
},
{
"waste_date_entity":
"{{ item.date_entity }}"
},
{
"waste_picture":
"{{ item.picture }}"
}
]
}{% if not loop.last %},{% endif %}
{% endfor %}
]
Hier noch den Code für den Helper „waste_collection_schedule_mullabholung_morgen“
Achtung ist
if is_state('calendar.haus', 'on')
enthalten. Die müsst ihr noch entfernen.
{# ('Sperrmuell', 'SAMMLUNG', states.sensor.waste_collection_schedule_sperrmuell.state), #}
{# ('Gruenabfall', 'SAMMLUNG', states.sensor.waste_collection_schedule_gruenabfall.state), #}
{# ('Sondermuell', 'SAMMLUNG', states.sensor.waste_collection_schedule_sondermuell.state) #}
{%- set SENSORSTATE = [
('Biomuell', 'TONNE', states.sensor.waste_collection_schedule_biomuell.state),
('Papier', 'TONNE', states.sensor.waste_collection_schedule_papier.state),
('GelberSack', 'TONNE', states.sensor.waste_collection_schedule_gelber_sack.state),
('Restmuell', 'TONNE', states.sensor.waste_collection_schedule_restmuell.state)
] %}
{%- set DAY = 'Morgen' %}
{%- set SACKS = namespace(values=[]) %}
{%- set TONNEN = namespace(values=[]) %}
{%- set SAMMLUNGEN = namespace(values=[]) %}
{# Trenne Einträge basierend auf der zweiten Spalte #}
{%- for ITEM in SENSORSTATE %}
{%- if ITEM[1] == 'SACK' and ITEM[2] == DAY %}
{%- set SACKS.values = SACKS.values + [' den ' ~ ITEM[0]] %}
{%- elif ITEM[1] == 'TONNE' and ITEM[2] == DAY %}
{%- set TONNEN.values = TONNEN.values + [' die ' ~ ITEM[0]] %}
{%- elif ITEM[1] == 'SAMMLUNG' and ITEM[2] == DAY %}
{%- set SAMMLUNGEN.values = SAMMLUNGEN.values + [' die ' ~ ITEM[0]] %}
{%- endif %}
{%- endfor %}
{# Nur ausgeben, wenn calendar.haus eingeschaltet ist #}
{%- if is_state('calendar.haus', 'on') %}
{%- if SACKS.values | length > 0
or TONNEN.values | length > 0
or SAMMLUNGEN.values | length > 0 %}
Du musst {{ DAY | lower }}
{%- for ITEM in SACKS.values %}
{%- if not loop.first %}
{%- if loop.last %} und
{%- else %},
{%- endif %}
{%- endif %}
{{- ITEM }}
{%- endfor %}
{%- if SACKS.values | length > 0 %}
Sack
{%- endif %}
{%- if TONNEN.values | length > 0
and SACKS.values | length > 0
and SAMMLUNGEN.values | length > 0 %},
{%- elif TONNEN.values | length > 0
and SACKS.values | length > 0
and SAMMLUNGEN.values | length == 0 %}, sowie
{%- endif %}
{%- for ITEM in TONNEN.values %}
{%- if not loop.first %}
{%- if loop.last %} und
{%- else %},
{%- endif %}
{%- endif %}
{{- ITEM }}
{%- endfor %}
{%- if TONNEN.values | length > 0 %}
Tonne
{%- endif %}
{%- if SAMMLUNGEN.values | length > 0
and (TONNEN.values | length > 0 or SACKS.values | length > 0) %}, sowie
{%- endif %}
{%- for ITEM in SAMMLUNGEN.values %}
{%- if not loop.first %}
{%- if loop.last %} und
{%- else %},
{%- endif %}
{%- endif %}
{{- ITEM }}
{%- endfor %}
{%- if SAMMLUNGEN.values | length > 0 %}
Sammlung
{%- endif %} rausstellen!
{%- else %}
Du musst {{ DAY | lower }} keine Tonne rausstellen.
{%- endif %}
{%- endif %}



