Afvalwijzer

Afvalwijzer

2 december 2022 19 Door Ivo

Weer vergeten op de afvalwijzer te kijken wanneer het papier aan de straat moest staan 🤔.
Dat moet anders kunnen. Ontvang een WhatsApp bericht of andere notificatie.

Dit werkt alleen in Nederland. 
Update 15-10-2025

HACS

Installeer de integratie Afvalwijzer en frontend auto-entities. Die vind je gewoon in de HACS lijsten.
Er zijn veel afvalverwerkers ondersteund.
Onder andere:
mijnafvalwijzer, afvalstoffendienstkalender (all), rova, ACV, almere, areareiniging, avalex, avri, BAR, hellendoorn, meerlanden, meppel, RAD, twentemilieu, waardlanden, westland, ximmio, reinis, alkmaar, alphenaandenrijn, berkelland, blink, cranendonck, cyclus, DAR, denhaag, gad, hvc, lingewaard, middelburgngen, montfoort, peelenmaas, prezero, purmerend, RWM, schouwenand, spaarnelanden, sudwestfryslan, suez, venray, voorschoten, waalre, ZRD, eemsdelta (iCalendar), RD4, deafvalapp

Na installatie start je Home Assistant opnieuw op.

Intergratie toevoegen:

  1. Ga naar InstellingenApparaat & diensten pagina in Home Assistant.
  2. Klik op Integratie toevoegem aen zoek naarAfvalwijzer.
  3. Volg de instructie op het scherm om het te voltooien.
    • Vul de postcode, huisnummer, en de andere velden.

Plaatjes als icoontjes

De plaatjes sla je op in de www map, ik heb een aantal plaatjes die je gratis kunt downloaden.

customize.yaml aanpassen

sensor.afvalwijzer_pmd:
  entity_picture: /local/pmd.png
  friendly_name: PMD
sensor.afvalwijzer_takken:
  entity_picture: /local/takken.png
  friendly_name: Takken
sensor.afvalwijzer_restafval:
  entity_picture: /local/rest.png
  friendly_name: Rest
sensor.afvalwijzer_papier:
  entity_picture: /local/papier.png
  friendly_name: Papier
sensor.afvalwijzer_kerstbomen:
  entity_picture: /local/kerst.png
  friendly_name: Kerst
sensor.afvalwijzer_gft:
  entity_picture: /local/gft2.png
  friendly_name: GFT


sensor.afvalwijzer_today:
  friendly_name: Vandaag
sensor.afvalwijzer_tomorrow:
  friendly_name: Morgen
sensor.afvalwijzer_next_item:
  friendly_name: Next pickup item
sensor.afvalwijzer_next_in_days:
  friendly_name: Next pickup in days
input_boolean.waste_reminder:
  icon: mdi:reminder  

afvalwijzer

Herstart Home Assistant en om bovenstaande icons in de LoveLace te krijgen gebruik je de volgende kaart-code.

type: custom:auto-entities
card:
  type: glance
filter:
  include:
    - entity_id: sensor.afvalwijzer_gft
    - entity_id: sensor.afvalwijzer_papier
    - entity_id: sensor.afvalwijzer_pmd
    - entity_id: sensor.afvalwijzer_restafval
    - entity_id: sensor.afvalwijzer_takken
sort:
  method: state
  attribute: Days_until
  reverse: false

Automation

Wil jij berichten krijgen op de dag voordat het afval aan de straat moet staan?

Pas nogmaals de configuration.yaml aan.

input_boolean:
  waste_moved:
    name: Waste has been moved
    initial: 'off'
    icon: mdi:delete-empty
  waste_reminder:
    name: Waste reminder enabled
    initial: 'on'

Maak 3 automations aan

alias: Reset waste notification trigger: – platform: state entity_id: input_boolean.waste_moved to: “on” for: hours: 12 action: – service: input_boolean.turn_off entity_id: input_boolean.waste_moved – service: input_boolean.turn_on entity_id: input_boolean.waste_reminder

alias: Mark waste as moved from notification
trigger:
  - platform: event
    event_type: ios.notification_action_fired
    event_data:
      actionName: MARK_WASTE_MOVED
action:
  - service: input_boolean.turn_on
    entity_id: input_boolean.waste_moved
  - service: input_boolean.turn_on
    entity_id: input_boolean.trash_outside

Krijg tussen 18:00 en 23:00 elk uur een melding op je telefoon, in mijn geval via Whatsapp.

alias: Waste has not been moved
trigger:
  - platform: time_pattern
    hours: /1
condition:
  - condition: and
    conditions:
      - condition: state
        entity_id: input_boolean.waste_moved
        state: "off"
      - condition: state
        entity_id: input_boolean.waste_reminder
        state: "on"
      - condition: time
        after: "18:00:00"
        before: "23:00:00"
      - condition: template
        value_template: "{{ states('sensor.afvalwijzer_tomorrow') != 'Geen' }}"
action:
  - service: notify.mobile_app_ #zend het naar een HA App op een telefoon
    data:
      title: Afval
      message: >-
        Het is vandaag - {{ now().strftime("%d-%m-%Y") }}. Afvaltype(n): {{
        states.sensor.afvalwijzer_tomorrow.state }} wordt opgehaald op: {{
        (as_timestamp(now()) + (24*3600)) | timestamp_custom("%d-%m-%Y", True)
        }}!
      data:
        push:
          badge: 0
          category: afval
    enabled: true
  - service: notify.whatsapp  #Callmebot methode
    data:
      title: Afval
      message: >-
        Het is vandaag - {{ now().strftime("%d-%m-%Y") }}. Afvaltype(n): {{
        states.sensor.afvalwijzer_tomorrow.state }} wordt opgehaald op: {{
        (as_timestamp(now()) + (24*3600)) | timestamp_custom("%d-%m-%Y", True)
        }}!
      data:
        push:
          badge: 0
          category: afval

Gebruik je de Gratis WhatsApp Add-on? Dan heb je onderstaande service nodig.

service: whatsapp.send_message
data:
  clientId: default
  to: 316<rest van je nummer>@s.whatsapp.net
  body:
    text: >-
      Het is vandaag - {{ now().strftime("%d-%m-%Y") }}. Afvaltype(n): {{
      states.sensor.afvalwijzer_tomorrow.state }} wordt opgehaald op: {{
      (as_timestamp(now()) + (24*3600)) | timestamp_custom("%d-%m-%Y", True) }}!

Je wilt natuurlijk geen melding krijg voor als de container niet aan de weg hoeft of hij er al staat.
Je zet dan simpel het schuifje aan van “Afval staat al buiten”, de melding krijg je nu niet meer, de sensor wordt na 12 uur automatisch weer uit gezet.

type: entities
entities:
  - entity: input_boolean.waste_reminder
    name: Afval melding staat
  - entity: input_boolean.waste_moved
    name: Afval staat al buiten

Afvalwijzer staat al buiten

Anders geschreven

Heb je liever een tekst als “volgende week maandag” naast de datum sensors?
Plaats onderstaande code in sensor.yaml of onder het kopje sensor, let op de spaties:

- platform: template
  sensors:
    papier_dagen_tot_afhaal:
      attribute_templates:
        numeric_days: "{{ state_attr('sensor.afvalinfo_papier', 'days_until_collection_date') }}"
      value_template: >
        {%- set sensor  = 'sensor.afvalinfo_papier' %}
        {%- set collection_date = as_local(as_datetime(state_attr(sensor, 'year_month_day_date'))).date() %}
        {%- set days = ['maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag' ] %}
        {%- set days_until = state_attr(sensor, 'days_until_collection_date') %}
        {% set ws = (days_until / 7) | int %}
        {% set w = 'een' if ws < 1 else ws %}
        {% set wk = 'week' if w < 2 else 'weken' %}
        {%- if days_until <= 1 %}
          {{ ['Vandaag', 'Morgen'][days_until] }}
        {%- elif days_until < 7 - now().isoweekday() %}
          {{ days[collection_date.weekday()] | title }}
        {%- elif days_until < 14 - now().isoweekday() %}
          {{ 'Volgende week ' ~ days[collection_date.weekday()] }}
        {%- else %}
          {{ days[collection_date.weekday()] | title }} over {%- if w == 1 %} {{'een'}}{% else %} {{ w }}{%- endif %} {{ wk }}
        {%- endif %}
      friendly_name: Dagen tot papier
    restafval_dagen_tot_afhaal:
      attribute_templates:
        numeric_days: "{{ state_attr('sensor.afvalinfo_restafval', 'days_until_collection_date') }}"
      value_template: >
        {%- set sensor  = 'sensor.afvalinfo_restafval' %}
        {%- set collection_date = as_local(as_datetime(state_attr(sensor, 'year_month_day_date'))).date() %}
        {%- set days = ['maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag' ] %}
        {%- set days_until = state_attr(sensor, 'days_until_collection_date') %}
        {% set ws = (days_until / 7) | int %}
        {% set w = 'een' if ws < 1 else ws %}
        {% set wk = 'week' if w < 2 else 'weken' %}
        {%- if days_until <= 1 %}
          {{ ['Vandaag', 'Morgen'][days_until] }}
        {%- elif days_until < 7 - now().isoweekday()  %}
          {{ days[collection_date.weekday()] | title }}
        {%- elif days_until < 14 - now().isoweekday()  %}
          {{ 'Volgende week ' ~ days[collection_date.weekday()] }}
        {%- else %}
          {{ days[collection_date.weekday()] | title }} over {%- if w == 1 %} {{'een'}}{% else %} {{ w }}{%- endif %} {{ wk }}
        {%- endif %}
      friendly_name: Dagen tot restafval
    gft_dagen_tot_afhaal:
      attribute_templates:
        numeric_days: "{{ state_attr('sensor.afvalinfo_gft', 'days_until_collection_date') }}"
      value_template: >
        {%- set sensor  = 'sensor.afvalinfo_gft' %}
        {%- set collection_date = as_local(as_datetime(state_attr(sensor, 'year_month_day_date'))).date() %}
        {%- set days = ['maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag' ] %}
        {%- set days_until = state_attr(sensor, 'days_until_collection_date') %}
        {% set ws = (days_until / 7) | int %}
        {% set w = 'een' if ws < 1 else ws %}
        {% set wk = 'week' if w < 2 else 'weken' %}
        {%- if days_until <= 1 %}
          {{ ['Vandaag', 'Morgen'][days_until] }}
        {%- elif days_until < 7 - now().isoweekday() %}
          {{ days[collection_date.weekday()] | title }}
        {%- elif days_until < 14 - now().isoweekday() %}
          {{ 'Volgende week ' ~ days[collection_date.weekday()] }}
        {%- else %}
          {{ days[collection_date.weekday()] | title }} over {%- if w == 1 %} {{'een'}}{% else %} {{ w }}{%- endif %} {{ wk }}
        {%- endif %}
      friendly_name: Dagen tot GFT
    pbd_dagen_tot_afhaal:
      attribute_templates:
        numeric_days: "{{ state_attr('sensor.afvalinfo_pbd', 'days_until_collection_date') }}"
      value_template: >
        {%- set sensor  = 'sensor.afvalinfo_pbd' %}
        {%- set collection_date = as_local(as_datetime(state_attr(sensor, 'year_month_day_date'))).date() %}
        {%- set days = ['maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag' ] %}
        {%- set days_until = state_attr(sensor, 'days_until_collection_date') %}
        {% set w = (days_until / 7) | int  %}
        {% set wk = 'week' if w < 2 else 'weken' %}
        {%- if days_until <= 1 %}
          {{ ['Vandaag', 'Morgen'][days_until] }}
        {%- elif days_until < 7 - now().isoweekday() %}
          {{ days[collection_date.weekday()] | title }}
        {%- elif days_until < 14 - now().isoweekday() %}
          {{ 'Volgende week ' ~ days[collection_date.weekday()] }}
        {%- else %}
          {{ days[collection_date.weekday()] | title }} over {%- if w == 1 %} {{'een'}}{% else %} {{ w }}{%- endif %} {{ wk }}
        {%- endif %}
      friendly_name: Dagen tot plastic

De bovenstaande code heb ik voor afvalwijzer bijgewerkt en aangepast, de basis komt van de user Toppe op Tweakers

Ook van die sensors kun je het logo aanpassen in de customize.yaml

sensor.gft_dagen_tot_afhaal:
  entity_picture: /local/gft2.png
sensor.papier_dagen_tot_afhaal:
  entity_picture: /local/papier.png
sensor.pmd_dagen_tot_afhaal:
  entity_picture: /local/pmd.png
sensor.restafval_dagen_tot_afhaal:
  entity_picture: /local/rest.png

afvalwijzer

Hoe heb ik het toegevoegd

Hieronder zie je een gifje van mijn venster. Het scherm is geoptimaliseerd voor op de mobiele telefoon.
Het prullebak knopje is de input_boolean.waste_moved, deze stopt natuurlijk ook de automation.
Onder de gif de code.
Desktop

 

type: markdown
content: >
  # Hallo {{ user }} ❤️


  Het is vandaag {% set months = ["januari", "februari", "maart", "april",
  "mei", "juni",

  "juli", "augustus", "september", "oktober", "november", "december"] %} {% set
  month = months[now().month -1] %}{% set days = ["maandag", "dinsdag",
  "woensdag", "donderdag", "vrijdag",

  "zaterdag", "zondag"]  %} {% set day = days[now().weekday()] %} {{ day + ' ' +
  now().strftime('%-d') + ' ' + month }} en het is  {{ (states('sensor.time'))
  }}



  {% if "gft" in states('sensor.afvalwijzer_tomorrow') and
  is_state('input_boolean.waste_moved','off') %} Vanavond de groenebak aan de
  straat zetten. Staat het er al? klik op onderstaande knop. {% endif %}

  {% if "papier" in states('sensor.afvalwijzer_tomorrow') and
  is_state('input_boolean.waste_moved','off') %} Vanavond het oudpapier aan de
  straat zetten. Staat het er al? klik op onderstaande knop. {% endif %}

  {% if "pmd" in states('sensor.afvalwijzer_tomorrow') and
  is_state('input_boolean.waste_moved','off') %} Vanavond het plastic aan de
  straat gooien. Hangen ze al aan de paal? klik op onderstaande knop. {% endif
  %}

  {% if "rest" in states('sensor.afvalwijzer_tomorrow') and
  is_state('input_boolean.waste_moved','off') %} Vanavond kan de grijze
  container aan de straat. Staat het er al? klik op onderstaande knop. {% endif
  %}

  {% if "takken" in states('sensor.afvalwijzer_day_after_tomorrow') %}
  Overmorgen worden de takken opgehaald! Maak bundels en gooi morgen aan de
  straat.{% endif %}

  {% if "takken" in states('sensor.afvalwijzer_day_tomorrow') and
  is_state('input_boolean.waste_moved','off') %} Gooi die bundels aan de staat!
  Hangen ze al aan de paal? Klik op de knop{% endif %}
text_only: true


De afvalknop:
De andere knop is voor Alarmo.

type: entity
show_name: false
show_state: false
show_icon: true
entity: input_boolean.waste_moved
show_entity_picture: false
visibility:
  - condition: and
    conditions:
      - condition: state
        entity: sensor.afvalwijzer_tomorrow
        state_not: geen
      - condition: state
        entity: input_boolean.waste_moved
        state: "off"
tap_action:
  action: toggle