Spis Treści

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).

dodaj integracje local calendar

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.

local calendar wpisy

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.

dodanie wydarzenia local calendar

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.

wyzwalacz powiadomienie o wywozie

akcje powiadomienie o wywozie

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.

uruchom automatyzacje

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 multiple

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.

Tematy które mogą Cię zainteresować:

Subscribe
Powiadom o
guest
14 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
Zobacz wszystkie komentarze
Rafal
Rafal
1 rok temu

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.

Adam
Adam
1 rok temu
Reply to  smartinhome.pl

niestety nie dział u mnie albo coś zle robie

Adam
Adam
1 rok temu
Reply to  Rafal

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

Adam
Adam
1 rok temu
Reply to  smartinhome.pl

Tak w dniu wywozu zmienia kolor ale dzień przed niestety nie

Adam
Adam
1 rok temu
Reply to  smartinhome.pl

Dzięki wielkie już działa jak powinno

Krzysztof
Krzysztof
1 rok temu

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?

Arut
Arut
1 rok temu

Ś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.

Zrzut-ekranu-2024-05-29-122324
Last edited 1 rok temu by Arut
Andrzej
Andrzej
1 rok temu

Jak moge to powiekszyc?
Bo chce to wyswietlic na tablecie na scianie

Nick
Nick
3 miesięcy temu

A nikt nie może zrobić pooprostu przypomniena w kalendarzu co 2 tygodnie z wysłąniem info na telefon?

Najnowsze Wpisy

Reklama

Najnowsze Recenzje