Home Assistant Forum Romania
Notificare gunoi - Printable Version

+- Home Assistant Forum Romania (https://hass-forum.ro)
+-- Forum: Home Assistant (https://hass-forum.ro/forumdisplay.php?fid=5)
+--- Forum: Configurări / senzori / script-uri (https://hass-forum.ro/forumdisplay.php?fid=8)
+--- Thread: Notificare gunoi (/showthread.php?tid=3)



Notificare gunoi - Andrei - 06-19-2025

Cu toții am pățit-o: e vineri seara, te așezi liniștit la un film, și brusc îți amintești că trebuie scos gunoiul. Ca să nu mai uiți niciodată, iată o automatizare simplă și eficientă în Home Assistant care îți spune exact când e momentul să scoți gunoiul menajer sau reciclabil.

[Image: IMG_3135.jpeg]

Ce face această funcție?

În exemplul de mai jos, acest template sensor, se activează (on) doar într-un interval precis:
  • Vineri după ora 18:30 – adică atunci când te pregătești de weekend și e momentul perfect să scoți gunoiul;
  • Sâmbătă dimineața până la ora 10:00 – dacă ai uitat cu o seară înainte, mai ai o șansă înainte să vină mașina de gunoi.
Codul folosește Jinja2 pentru a verifica ziua și ora curentă și decide dacă senzorul ar trebui să fie on sau off. E ideal pentru a declanșa notificări pe telefon, LED-uri colorate sau orice alt reminder smart ai prin casă.

Code:
- sensor:
    - name: "Gunoi Menajer"
      state: >
        {% set today = now().weekday() %}
        {% set hour = now().hour %}
        {% set minute = now().minute %}

        {% if (today == 4 and (hour > 18 or (hour == 18 and minute >= 30))) or (today == 5 and hour < 10) %}
          on
        {% else %}
          off
        {% endif %}

Code:
now().weekday()
 
returnează ziua săptămânii (0 = luni, 1 = marți, …, 4 = vineri, 5 = sâmbătă).

Code:
hour
 
și 

Code:
minute

 sunt ora curentă.

Să zicem că la tine se scoate gunoiul marți seara, după ora 20:00, și vrei ca senzorul să rămână activ și miercuri dimineața până la 08:30.
Atunci modifici codul așa:

Code:
- sensor:
    - name: "Gunoi Menajer"
      state: >
        {% set today = now().weekday() %}
        {% set hour = now().hour %}
        {% set minute = now().minute %}

        {% if (today == 1 and (hour > 20 or (hour == 20 and minute >= 0)))
           or (today == 2 and (hour < 8 or (hour == 8 and minute <= 30))) %}
          on
        {% else %}
          off
        {% endif %}

[b]Modifici doar:[/b]
  • Code:
    today == X
     → unde 

    Code:
    X
     e ziua dorită (ex: marți = 1)
  • Code:
    hour
     și 

    Code:
    minute
     → ora de început și de sfârșit a perioadei active

Dacă gunoiul menajer are un program clar săptămânal, pentru reciclabil lucrurile devin un pic mai complicate — poate vine [b]o dată la două săptămâni[/b], în anumite zile, la ore diferite. Dar cu un mic truc în Home Assistant, poți face un senzor care ține minte tot pentru tine.
Senzorul acesta se activează (on) doar [b]în zilele în care vine gunoiul reciclabil[/b], după cum urmează:
  • La un [b]interval de 14 zile[/b], calculat de la o dată de referință (ex: 6 februarie 2025);
  • Se aprinde [b]marți după ora 17:00[/b] (ca să-ți aduci aminte să scoți containerul);
  • Rămâne activ [b]până miercuri la ora 11:00[/b], ca să te asiguri că nu uiți nici dimineața.

Code:
- sensor:
    - name: "Gunoi Reciclabil"
      state: >
        {% set start = '2025-02-06' %}
        {% set days_since = (now().date() - strptime(start, '%Y-%m-%d').date()).days %}
        {% set cycle_day = (days_since // 14) * 14 == days_since %}
        {% set today = now().weekday() %}
        {% set hour = now().hour %}

        {% if cycle_day and ((today == 1 and hour >= 17) or (today == 2 and hour < 11)) %}
          on
        {% else %}
          off
        {% endif %}

Cum funcționează?
  • Code:
    start
     e data de la care începe ciclul de 14 zile.
  • Code:
    days_since
     calculează câte zile au trecut.
  • Code:
    cycle_day
     verifică dacă [b]astăzi e o zi „activă”[/b] în acel ciclu (ex: exact la 14, 28, 42 de zile etc.).
  • Verifică dacă suntem în intervalul:
    • [b]Marți seara după 17:00[/b], sau
    • [b]Miercuri dimineața până la 11:00[/b].

Cum modifici zilele și orele?

Foarte simplu:
  • Vrei să schimbi [b]ziua de început[/b]? Modifici linia: 

    Code:
    {% set start = '2024-02-06' %}
  • Vrei alt [b]interval (ex: la 10 zile)?[/b] Schimbi 

    Code:
    14
     în: 

    Code:
    {% set cycle_day = (days_since // 10) * 10 == days_since %}
  • Schimbi ziua și ora în condiția de la final:

    Code:
    ((today == 1 and hour >= 17) or (today == 2 and hour < 11))
     Aici 

    Code:
    1
     e marți, 

    Code:
    2
     e miercuri — poți pune 

     pentru luni, 

    Code:
    3
     pentru joi etc.

Dacă mai ai și alte tipuri de colectare (bio, voluminoase, sticlă etc.), poți face senzori similari pentru fiecare. Home Assistant le ține minte pe toate fără să uiți nimic.

Automatizare

Code:
alias: Alertă - gunoi menajer
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.gunoi_menajer
    to: "on"
conditions: []
actions:
  - action: notify.notify
    metadata: {}
    data:
      message: Nu uitați să scoateți gunoiul menajer.
      title: Gunoi menajer
mode: single

Ce poți face mai departe?

Poți conecta senzorul la:
  • notificări pe telefon sau smartwatch 
  • aprinderea unei lumini LED colorate 
  • un mesaj pe ecranul TV sau display LCD 



RE: [Senzor] Notificare gunoi - NeluBe - 06-23-2025

Deoarece la mine nu există nici o regulă doar anual transmite primăria zilele când se ridică gunoiul eu am creat 3 calendare locale (menajer, reciclabil, textile) unde am adăugat datele de ridicare a gunoiului, am creat în Helpers niște template senzori pe care-i afișez și unde arată căte zile sunt până la ridicare gunoi și data. Apoi automatizări (pentru fiecare) să mă anunțe dimineața la 08.00 că trebuie să scot containerul.
senzori
{% set start = state_attr('calendar.gunoi_menajer', 'start_time') %}
{% set summary = state_attr('calendar.gunoi_menajer', 'message') or '' %}
{% if start and 'menajer' in summary | lower %}
{{ ((as_timestamp(start) - now().timestamp()) / 86400) | round(0) }}
{% else %}
-1
{% endif %}

card
type: vertical-stack
cards:
- type: custom:mushroom-template-card
primary: Menajer
icon: mdi:trash-can
icon_color: red
secondary: >
{% set state = states('sensor.zile_pana_la_gunoi_menajer') %} {% if state
is not none and state != 'unknown' and state != 'unavailable' %}
{% set days = state | int %}
{% set start_time = state_attr('calendar.gunoi_menajer', 'start_time') %}
{% set date_obj = as_datetime(start_time) %}
{% set formatted_date = date_obj.strftime('%d.%m.%Y') %}

{% if days == -1 %}
Nu este programat
{% elif days == 0 %}
Astăzi! ({{ formatted_date }})
{% elif days == 1 %}
Mâine ({{ formatted_date }})
{% else %}
{{ days }} zile ({{ formatted_date }})
{% endif %}
{% else %}
Nu este programat
{% endif %}
card_mod:
style: |
ha-card {
background-color: |
{% set state = states('sensor.zile_pana_la_gunoi_menajer') %}
{% if state is not none and state != 'unknown' and state != 'unavailable' %}
{% set days = state | int %}
{% if days == 0 %}
#ffeb3b;
{% elif days <= 2 %}
#ffc107;
{% elif days <= 7 %}
#2196f3;
{% else %}
#8bc34a;
{% endif %}
{% else %}
#9e9e9e;
{% endif %}
color: black;
border-radius: 12px;
padding: 16px;
font-weight: 500;
}


RE: [Senzor] Notificare gunoi - Andrei - 06-24-2025

Buna completare. Multumim de share Smile