Gestire la raccolta differenziata tramite la domotica Home Assistant

5 minuti di lettura
SCOPI DEL PROGETTO:
  • Definire dei sensori virtuali che segnalino quanto manca, in giorni, alla raccolta differenziata
  • Livello di difficoltà: basso
  • Costo: nullo
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.
Revisione progetto: 1.2

Abstract

La crescente e benedetta sensibilità rispetto ai temi ambientali sta lentamente ma inesorabilmente cambiando le nostre abitudini quotidiane, a partire, senza dubbio, dall’introduzione della raccolta differenziata, spesso in modalità di raccolta porta a porta. Trattandosi di un tema “casalingo”, è naturale pensare come la domotica personale possa intervenire per rendere l’esperienza di raccolta e smaltimento più efficiente, sopratutto rispetto al ricordarci i diversi giorni di raccolta – specialmente in caso di pianificazioni particolarmente articolate.

Riciclo

In questo progetto vedremo come, tramite l’adozione del componente custom “Garbage Collection”, sia possibile definire presso Home Assistant, dei sensori virtuali che indichino agli utilizzatori della domotica basata su questo HUB personale quanti giorni manchino alla raccolta di questa o di quella tipologia di rifiuto.

Il componente è piuttosto semplice da utilizzare e al contempo piuttosto flessibile: non solo consente di definire sensori settimanali, ma anche di diversa natura, ovvero con una ciclicità temporale anche molto specifica (nel caso per esempio raccolte mensili in un dato giorno del mese, o altre casistiche).

Assunti

Per questo progetto assumeremo la presenza di un’entità di tipo “Notifications” chiamata notify.marco e di un’altra, analoga, derivante dall’integrazione di Amazon Echo (Alexa) come Media Player (e quindi come sistema di notifica), chiamata media_player.alexa.

Utilizzeremo queste due entità come elementi per definire delle automazioni di notifica a fronte dell’avvicinarsi delle giornate di raccolta.

Installazione

Trattandosi di un custom component (quindi non incluso ufficialmente sull’HUB), prima di poterne sfruttare le funzionalità è necessario installarlo. Per farlo è possibile utilizzare sia la modalità manuale (non descritta in questo progetto) sia quella – molto facilitata – via HACS.

Per farlo è necessario che HACS sia stato, ovviamente, precedentemente installato su Home Assistant. Una volta ottenuto accesso al pannello di HACS, effettuare una ricerca nel suo store cercando nello specifico il componente “Garbage Collection“.

Una volta identificato, provvedere al installarlo:

Home Assistant - HACS - Garbage Collection installation

Dopodiché provvedere ad un riavvio di Home Assistant.

Sensori

Ipotizziamo dunque che ci si trovi nella situazione esemplificativa di una raccolta porta a porta la quale preveda:

  • la raccolta della carta il martedì e il sabato;
  • la raccolta della frazione indifferenziata il lunedì e il venerdì;
  • la raccolta della frazione biodegradabile/compostabile il lunedì e il mercoledì;
  • la raccolta della plastica, il martedì e il sabato;
  • la raccolta dei materiali ingombranti, il primo e il terzo sabato del mese.

Per definire i sensori aggiungeremo dunque in configurazione, nella sezione dedicata ai “Sensor“, delle voci di questo tipo:

garbage_collection:
  sensors:
  - name: "Indifferenziato"
    frequency: "weekly"
    verbose_state: true
    collection_days:
    - mon
    - fri
  - name: "Bio"
    frequency: "weekly"
    verbose_state: true
    collection_days:
    - mon
    - wed
  - name: "Carta"
    frequency: "weekly"
    verbose_state: true
    collection_days:
    - tue
    - sat
  - name: "Plastica e metallo"
    frequency: "weekly"
    verbose_state: true
    collection_days:
    - tue
    - sat
  - name: "Rifiuti ingombranti"
    frequency: "monthly"
    collection_days: "sat"
    verbose_state: true
    monthly_day_order_number:
    - 1
    - 3

Configurazione la quale, dopo il riavvio necessario di Home Assistant, genererà delle entità così chiamate:

  • sensor.indifferenziato
  • sensor.bio
  • sensor.carta
  • sensor.plastica_e_metallo
  • sensor.rifiuti_ingombranti

rappresentati, presso il frontend Lovelace di Home Assistant, per esempio così:

Home Assistant - Garbage Collector sample

Come si nota, gli stati delle entità visualizzano il tempo rimanente alle prossime raccolte (la foto è stata scattata mercoledì 9 ottobre 2019).

Spiegazione dei campi disponibili per la configurazione:

platfom(Obbligatorio) Deve necessariamente essere “Garbage_collection“.
collection_days(Obbligatorio) Giorni, indicati in inglese e con tre lettere: “mon“, “tue“, “wed“, “thu“, “fri“, “sat“, “sun
frequency(Opzionale) Frequenza di raccolta, espressa in inglese, scelta tra questi elementi: “weekly“, “even-weeks“, “odd-weeks” “every-n-weeks” o “monthly“. Default: “weekly“.
name(Opzionale) Nome del sensore. Default: “garbage_collection“.
first_month(Opzionale) Primo mese in cui viene effettuata la raccolta, espresso in tre lettere e in inglese (eg. “jan“).
last_month(Opzionale) Ultimo mese in cui viene effettuata la raccolta, espresso in tre lettere e in inglese (eg. “dec“).
monthly_day_order_number
(Opzionale) Indica quale giorno del mese ricorre la raccolta. Se per esempio collection_days contiene “sat” e questo parametro viene impostato a 2, la raccolta avverrà il secondo sabato del mese.
 period(Opzionale) Si utilizza in abbinamento al parametro “frequency” impostato a “every-n-weeks“: indica le “n” settimane ogni quanto avviene la raccolta.
first_week(Opzionale) Prima settimana dell’anno dalla quale parte la raccolta (1-53).
excude_dates(Opzionale) Lista di date da escludere in formato  “yyyy-mm-dd“.
include_dates(Opzionale) Lista di date da includere in formato  “yyyy-mm-dd“.
icon_normal(Opzionale) Icona del sensore. Default “mdi:trash-can
icon_today(Opzionale) Icona del sensore in occorrenza del giorno di raccolta. Default “mdi:delete-restore
icon_tomorrow(Opzionale) Icona del sensore in occorrenza del giorno precedente di raccolta. Default “mdi:delete-circle
verbose_state(Opzionale) Quando impostato a true, il sensore riporta nello stato la prossima data prevista di raccolta. In caso di false (default), visualizza un numero intero rappresentate il numero di giorni mancanti (0 per il giorno di raccolta).

Notifiche

Ovviamente questo paragrafo non sarà risolutivo: scegliere quando (e se) venire allertati rispetto al giorno di raccolta è una scelta personale. Ci limiteremo quindi a spiegare tecniche di notifica, ma la personalizzazione sarà a carico proprio (come sempre, alla fine).

Come sappiamo le automazioni di Home Assistant si basano sul cambio di stato di una o più entità impostate quali trigger dell’automazione/i. Le entità definite tramite “Garbage Collection” contengono un attributo (“days“) il quale contiene il numero di giorni rimanenti alla raccolta; utilizzando i passaggi di stato di questo attributo possiamo innescare delle notifiche classiche e/o degli annunci da parte del nostro smart speaker (o altro).

Un’automazione tipo potrebbe essere la seguente:

automation:
  alias: "Notifica ritiro biodegradabile"
  trigger:
    platform: numeric_state
    entity_id: sensor.bio
    value_template: "{{ state.attributes.days }}"
    below: 1
  condition: []
  action:
    service: notify.famiglia
    data:
      title: "Domotica"
      message: "Attenzione: domani è giorno di ritiro frazione biologica."

oppure, nel caso si voglia far parlare Alexa:

automation:
  alias: "Notifica ritiro biodegradabile"
  trigger:
    - platform: numeric_state
      entity_id: sensor.carta
      value_template: "{{ state.attributes.days }}"
      below: 1
    - platform: numeric_state
      entity_id: sensor.bio
      value_template: "{{ state.attributes.days }}"
      below: 1
  condition: []
  action:
    service: notify.alexa
    data:
      target: media_player.alexa
      data:
        type: announce
        method: spoken
      message: "Attenzione: domani è giorno di ritiro frazione {{ trigger.from_state.attributes.friendly_name }}."

In questa seconda automazione abbiamo anche colto l’occasione di utilizzare più sensori come trigger, in modo da poter scrivere un’unica automazione anziché una per ogni sensore. Ovviamente anche il messaggio di notifica è stato adeguato per segnalare la raccolta prevista corretta.

Ovviamente il cambio di stato avviene ogni giorno alla mezzanotte, orario non proprio adatto per farsi notificare l’eventuale, prossima raccolta differenziata. In caso si preferisca essere allertati ad un altro orario – oppure su trigger specifici – sarà necessario adottare un blocco action diverso, il quale interpreti lo stato del/dei sensori e notifichi quel che si crede.


Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Please comment below