Prosty i przyjemny harmonogram wywozu odpadów w Twoim Home Assistant. Dzięki integracji Local Calendar zrobisz swój własny kalendarz odbioru odpadów. Mało tego, Twój własny harmonogram przypomni Ci dzień przed odbiorem odpadów, powiadomieniem na telefon. Nie raz zdarzyło mi się zapomnieć wystawić kosz poza posesję, człowiek ma za dużo spraw już chyba na głowie lub się starzeje. Dzięki Home Assistant i integracji Local Calendar postanowiłem stworzyć swój własny hormonogram wraz z powiadomieniem na telefon. Niestety w moim miejscu zamieszkania hormonogram to zwykła kartka, odbiorca odpadów nie wystawia żadnej aplikacji. Z pomocą przychodzi Local Calendar. Trzeba poświęcić raz w roku 10 minut na wprowadzenie wydarzeń do kalendarza w HA, ale myślę, że dla zapominalskich warto te 10 minut poświęcić. W dalszej części postu, postaram się opisać najprościej jak się tylko da, krok po kroku jak to u mnie wygląda.
Tworzenie kalendarza.
Jeśli nie masz zainstalowanej integracji Local Calendar, przejdź do Ustawienia -> Urządzenia oraz usługi -> Dodaj Integrację (1) w polu wyszukiwania, wpisz „local calendar” (2). Następnie kliknij w znalezioną integrację (3).
W kolejnym okienku możemy już podać nazwę naszych pierwszych odpadów, w moim przypadku to odpady zmieszane. Oczywiście zatwierdzamy nazwę naszego kalendarza. Jeśli będziesz trzymał się mojego nazewnictwa poszczególnych odpadów, to później będziesz miał z górki.
Teraz przejdź do Ustawienia -> Urządzenia oraz usługi -> Local Calendar. Dodaj Wpisy do kalendarza jak na poniższym screenie, oczywiście możesz odpady nazwać po swojemu.
Kolejnym krokiem będzie dodanie Wydarzeń do kalendarza. Czyli nic innego jak daty wywozu naszych odpadów. W tym celu przejdź do kalendarza (1) i dodaj wydarzenie (2). Czynność powtarzamy dla każdych z odpadów z osobna. Ważne, aby nazewnictwo (3) oraz kalendarz (4) zgadzał się odpadami, które wprowadzamy. Osobiście ustawiam parametr wydarzenia na cały dzień (5), jeśli ustawisz inny, zapamiętaj godzinę, przyda Ci się to w powiadomieniach.
Wywóz odpadów – powiadomienie.
Po utworzeniu kalendarzy i wydarzeń naszych odpadów można już w łatwy sposób uzyskać powiadomienie na telefon. Ważne, aby telefon był dodany do naszego Home Assistant oraz zalogowany do chmury np. NabuCasa. Bez tego nie otrzymamy powiadomienia na telefon. Osobiście automatyzację z powiadomieniem o wywozie odpadów ustawiłem dzień przed, aby zdążyć, wystawić kosz poza posesję.
Utwórz automatyzację: Ustawienia – > Automatyzacje oraz sceny -> Utwórz automatyzację – Utwórz nową automatyzację. Uzupełnij jak na poniższym screenie i zapisz automatyzację. Parametr title, jak i message to już kwestia Twojej wyobraźni, tak samo parametr w zdarzeniu a dokładnie czas, który powiadomi Cię przed danym wydarzeniem. W moim przypadku ustawiłem na 6 godzin, czyli od północy (godzina rozpoczęcia wydarzenia) odejmie 6 godzin i mnie o tym powiadomi. Czynność powtarzamy dla każdego z rodzajów odpadów.
Gdy już dodasz wszystkie rodzaje odpadów, automatyzację trzeba uruchomić. Wróć się na główną stronę Automatyzacje. Kliknij trzy kropki (1) przy danej automatyzacji i uruchom (2). W teorii powiadomienie powinno wyświetlić się na Twoim telefonie, uznaj to za test.
Odpady na Dashboard
Dodatkową opcją jest wyświetlanie naszych wywozów na dashboard. Może to być przydane do podglądu, zamiast na przykład powiadomień. Użyłem dwóch popularnych wtyczek do wizualnego powiadomienia – wyświetlenia naszych odpadów. Wtyczki jakie użyłem to Mushroom oraz Multiple Entity Row, wtyczki do pobrania z HACS (jak zainstalować HACS).
MUSHROOM
Po zainstalowaniu wtyczki/dodatku wystarczy, że wkleisz kod, pod warunkiem, że trzymałeś się mojego nazewnictwa. Przejdź do edycji Dashboard i Dodaj Kartę. Zjedź na sam dół dostępnych kart i znajdź kartę Edytor konfiguracji YAML. Wklej poniższy kod.
type: vertical-stack
title: Odpady Mushroom Template Card
cards:
- type: custom:mushroom-template-card
primary: Odpady BIO
secondary: |2-
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.odpady_bio', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
|
{{ as_timestamp(strptime(state_attr('calendar.odpady_bio', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
icon: mdi:bio
entity: calendar.odpady_bio
double_tap_action:
action: none
hold_action:
action: none
tap_action:
action: more-info
icon_color: '{{ ''green'' if is_state(''calendar.odpady_bio'',''on'') else '''' }}'
- type: custom:mushroom-template-card
primary: Odpady Zmieszane
secondary: |2-
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.odpady_zmieszane', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
|
{{ as_timestamp(strptime(state_attr('calendar.odpady_zmieszane', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
icon: mdi:delete
entity: calendar.odpady_zmieszane
double_tap_action:
action: none
hold_action:
action: none
tap_action:
action: more-info
icon_color: '{{ ''green'' if is_state(''calendar.odpady_zmieszane'',''on'') else '''' }}'
- type: custom:mushroom-template-card
primary: Odpady Selektywne
secondary: |2-
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.odpady_selektywne', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
|
{{ as_timestamp(strptime(state_attr('calendar.odpady_selektywne', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
icon: mdi:recycle
entity: calendar.odpady_selektywne
double_tap_action:
action: none
hold_action:
action: none
tap_action:
action: more-info
icon_color: '{{ ''green'' if is_state(''calendar.odpady_selektywne'',''on'') else '''' }}'
- type: custom:mushroom-template-card
primary: Odpady Gabaryty
secondary: |2-
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.gabaryty', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
|
{{ as_timestamp(strptime(state_attr('calendar.gabaryty', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
icon: mdi:truck-alert-outline
entity: calendar.gabaryty
double_tap_action:
action: none
hold_action:
action: none
tap_action:
action: more-info
icon_color: '{{ ''green'' if is_state(''calendar.gabaryty'',''on'') else '''' }}'
Można oczywiście dostosować do swoich upodobań ikony wraz z kolorami ikon. W powyższym przykładzie ikona zmienia kolor z jasnoszarego na zielony (green), gdy przypada dzień wywozu danych odpadów. Jeśli chcesz, aby kolor ikony był na przykład czerwony i zmieniał kolor na zielony, gdy wypadanie dzień wywozu przepisz poniższy kod do Twojej konfiguracji, zastępując daną linijkę kodu odpowiedzialną za kolorowe ikony.
icon_color: '{{ ''green'' if is_state(''calendar.odpady_bio'',''on'') else ''red'' }}'
Multiple Entity Row
W tym przypadku musimy utworzyć szablon odpowiedzialny za odliczanie dni oraz wyświetlający datę. W tym celu edytujemy nasz plik configuration.yaml i wklejamy poniższy kod. Zapisuje plik configuration.yaml i przechodzimy do Narzędzia Deweloperskie, odszukaj Encje Komponentu Szablon. Spowoduje to wczytanie wklejonego przez Ciebie szablonu do Home Assistant.
## Szablon do: Odbiór odpadów Local Calendar ##
template:
- sensor:
- name: Wydarzenie Odpady Zmieszane
state: >
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.odpady_zmieszane', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
- name: Wydarzenie Odpady BIO
state: >
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.odpady_bio', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
- name: Wydarzenie Odpady Selektywne
state: >
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.odpady_selektywne', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
- name: Wydarzenie Odpady Gabaryty
state: >
{% set t = now() %}
{% set midnight = today_at() %}
{% set event = state_attr('calendar.gabaryty', 'start_time') | as_datetime | as_local %}
{% set delta = event - midnight %}
{% if delta.days == 0 %}
Dziś
{% elif delta.days == 1 %}
Jutro
{% elif delta.days == 2 %}
Pojutrze
{% else %}
Za {{ delta.days }} dni
{% endif %}
- name: Wydarzenie Odpady Selektywne Data
state: >
{{ as_timestamp(strptime(state_attr('calendar.odpady_selektywne', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
- name: Wydarzenie Odpady BIO Data
state: >
{{ as_timestamp(strptime(state_attr('calendar.odpady_bio', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
- name: Wydarzenie Odpady Zmieszane Data
state: >
{{ as_timestamp(strptime(state_attr('calendar.odpady_zmieszane', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
- name: Wydarzenie Odpady Gabaryty Data
state: >
{{ as_timestamp(strptime(state_attr('calendar.gabaryty', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}
## Koniec # Szablon do: Odbiór odpadów Local Calendar ##
Po zainstalowaniu wtyczki/dodatku przechodzimy do „Edytor konfiguracji YAML” tak samo, jak w przypadku mushroom wklejamy poniższy kod.
type: entities
entities:
- entity: sensor.wydarzenie_odpady_selektywne_data
icon: mdi:recycle
type: custom:multiple-entity-row
name: 'Selektywne: '
state_header: Data
entities:
- entity: sensor.wydarzenie_odpady_selektywne
name: Odbiór
- type: section
- entity: sensor.wydarzenie_odpady_bio_data
icon: mdi:bio
type: custom:multiple-entity-row
name: 'BIO: '
state_header: Data
entities:
- entity: sensor.wydarzenie_odpady_bio
name: Odbiór
- type: section
- entity: sensor.wydarzenie_odpady_zmieszane_data
icon: mdi:trash-can
type: custom:multiple-entity-row
name: 'Zmieszane: '
state_header: Data
entities:
- entity: sensor.wydarzenie_odpady_zmieszane
name: Odbiór
- type: section
- entity: sensor.wydarzenie_odpady_gabaryty_data
icon: mdi:truck-alert-outline
type: custom:multiple-entity-row
name: 'Gabaryty: '
state_header: Data
entities:
- entity: sensor.wydarzenie_odpady_gabaryty
name: Odbiór
title: Multiple Entity Row
Harmonogram wywozu śmieci – alternatywa
Istnieją prostsze rozwiązania wywozu odpadów, pod warunkiem że nasz odbiorca śmieci udostępnia to w aplikacji/stronie internetowej. Świetnym dodatkiem jest Waste Collection Schedule który obsługuje Ecoharmonogram, a w nim jest na prawdę dużo miast i miasteczek. Jeśli znajduje się tam Twoje miasto to śmiało możesz pominąć to co zrobiłeś powyżej. Dodatek sam pobiera terminy wywozów i sam się aktualizuje. Nie wspominając o gotowych encjach. Osobiście sam bym korzystał z takiego dodatku, ale niestety jestem skazany na ręczne dodawanie harmonogramu odpadów.


















Bardzo fajne, ale mam pytanie. Jak ustawic kolor ikony juz dzien przed wywozem. Nie moge sobie poradzic z zakodowaniem warunku zamiast stanu eventu 'on’ na delta.days <= 1.
{{ 'green' if (as_timestamp(state_attr('calendar.odpady_zmieszane', 'start_time')) - as_timestamp(now())) < 86400 else '' }}niestety nie dział u mnie albo coś zle robie
hej i powiedz mi dział ci to bo u mnie nie bardzo a te zaley mi na tym aby kolor był inny dzień wcześniej
U mnie działa. Zamieszczam poniżej cały kod porównaj sobie. A czy w samym dniu wywozu zmienia Ci kolor?
type: custom:mushroom-template-card primary: Recycling secondary: >- {{ states('sensor.event_day_recycling') }} | {{ as_timestamp(strptime(state_attr('calendar.odpady_zmieszane', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%d-%m-%Y') }} icon: mdi:bio multiline_secondary: true fill_container: true entity: calendar.smieci tap_action: action: more-info hold_action: action: none double_tap_action: action: none badge_color: red icon_color: >- {{ 'green' if (as_timestamp(state_attr('calendar.odpady_zmieszane', 'start_time')) - as_timestamp(now())) < 86400 else '' }}Tak w dniu wywozu zmienia kolor ale dzień przed niestety nie
Dzięki wielkie już działa jak powinno
Polecam się na przyszłość 😉
Co naszukałem się, jak ogarnąć śmieci to moje. Dopiero ten wpis okazał się idealny. Dzięki wielkie!
Małe pytanie, jako że bardziej odpowiada mi układ kolumnowy z Multiple Entity Row, skorzystałem z tej konfiguracji. Tyle, że brakuje mi tu funkcjonalności z MUSHROOM, zmieniającej kolor ikony na dzień i/lub w dniu wywozu. Jest taka opcja dla tej wtyczki?
Ciężko powiedzieć na tą chwilę. Ale w wolnym czasie postaram się zagłębić w temat.
Świetny kod. Dziękuję bardzo.
W kalendarzu czasem trzeba zmienić pojedyncze dni — np. jak jest przesunięcie o 1 dzień, bo święto. Po pierwszej zmianie wyskakiwał mi błąd — pomogło przeładowanie kalendarza (błąd już był zgłaszany u autora kalendarza).
Ja u siebie zrobiłem graficznie, bo wolę obrazki 🙂 Dzień wcześniej podświetla mi właściwą frakcję kolorem worka.
Jak moge to powiekszyc?
Bo chce to wyswietlic na tablecie na scianie
Niestety tu raczej nie pomogę, nie mam tabletu nie wiem z jakiej aplikacji do HA na tablecie korzystasz.
A nikt nie może zrobić pooprostu przypomniena w kalendarzu co 2 tygodnie z wysłąniem info na telefon?