Harmonogram wywozu śmieci Waste Collection Schedule (mampfes)

osobiście przesiadłem się na WasteCollectionSchedule - jest o tyle lepszy, ze samodzielnie pobiera dane z głównego serwera - warunek jest lepszy, region musi być zawarty w liście obsługiwanych usług…
na ten moment dla Polski jest to:

Poland
Ecoharmonogram / ecoharmonogram.pl
Poznań/Koziegłowy/Objezierze/Oborniki / sepan.remondis.pl
Warsaw / warszawa19115.pl
Wrocław / ekosystem.wroc.pl

REPO => https://github.com/mampfes/hacs_waste_collection_schedule

1 polubienie

Tak, to działa, ale chciałbym mieć to w tym jednym templacie razem z liczeniem dni, a za bardzo nie ogarniam tych templejtów.

@murcin miałem go przez chwilę. Jest okej, no ale nadal wsio masz w jednym kalendarzu.

spróbuj tak

{{ ((state_attr('calendar.smieci','start_time') | as_timestamp - today_at('00:00') | as_timestamp) / 86400) | int }} dni do wywozu śmieci: {{ state_attr('calendar.smieci', 'message') }}
1 polubienie

jeżeli chcesz mogę się podzielić konfiguracją - u mnie wyszło tak jak poniżej (oczywiście przerobione z Carbage Collection).

image

jeszcze walczę aby z automatu wyłuskał listę argumentów (atrybutów !) jako listę po kliknięciu, bo aktualnie wygląda to źle… więc może ktoś podpowie jak wyciągnąć z auto-entities parametry atrybutów question:


                  type: custom:auto-entities
                  card:
                    type: entities
                    card_mod:
                      style: >
                        ha-card {text-align: left; --ha-card-background:
                        transparent; 
                  filter:
                    template: |-
                      {% set sensor_SET = 'sensor.smieci_wywozy' -%}
                      {%- for attribute_SET in states[sensor_SET].attributes -%}
                        {{
                          {
                            'type': 'attribute',
                            'entity': sensor_SET,
                            'secondary_info': 'last-changed',
                            'attribute': attribute_SET,
                            'name': attr|capitalize|replace("_"," ")
                          }
                        }},
                      {%- endfor %}
                  sort:
                    method: state
                    reverse: true
                    count: 8

zmienna z argumentami (atrybutami ! )wygląda tak:

Masz na myśli Atrybuty ?

Tak dokładnie - atrybuty. Sorry :wink: mój błąd.

EDIT - HAHA udało się :stuck_out_tongue: tak trochę przez przypadek, ale może się komuś przyda:

poniżej wpis wrzucamy ręcznie do pliku dashboard ( w dokumentacji custom:button-card opisane co i jak)

button_card_templates:
  wywoz_smieci:
    template:
      - ta_rozmycie
      - ta_powiekszenie
    type: custom:button-card
    show_entity_picture: true
    tap_action:
      action: fire-dom-event
      browser_mod:
        service: browser_mod.popup
        data:
          right_button: OK
          content:
            type: custom:button-card
            name: Najbliższe wywozy śmieci
            entity: sensor.smieci_wywozy
            icon: mdi:truck-cargo-container
            custom_fields:
              lista:
                card:
                  type: custom:auto-entities
                  card:
                    type: entities
                    card_mod:
                      style: >
                        ha-card {text-align: left; --ha-card-background:
                        transparent; 
                  filter:
                    template: |-
                      {% set sensor_SET = 'sensor.smieci_wywozy' -%}
                      {%- for attribute_SET in states[sensor_SET].attributes -%}
                        {{
                          {
                            'type': 'attribute',
                            'entity': sensor_SET,
                            'attribute': attribute_SET,
                            'name': attribute_SET
                          }
                        }},
                      {%- endfor %}
                  sort:
                    count: 8
            styles:
              name:
                - font-size: 150%
                - padding: 20px
              card:
                - padding: 2px 20px 2px 20px
              icon:
                - height: 80%
              grid:
                - grid-template-areas: ' "n " "i " "lista"'
                - grid-template-rows: min-content 30% min-content
            state:
              - value: Dzisiaj
                color: rgba(255, 214, 10, 1)
                styles:
                  card:
                    - box-shadow: 0 0 0.95rem 0.2rem deepskyblue
                    - border: solid 1px deepskyblue
              - value: Jutro
                color: rgb(222, 95, 16)
                styles:
                  card:
                    - border: solid 1px orange
    custom_fields:
      dni: |
        [[[ return `${entity.state}` ]]]
    name: >
      [[[ return
      entity.attributes.friendly_name.slice(7).charAt().toUpperCase()+entity.attributes.friendly_name.slice(8)]]]
    styles:
      card:
        - height: 80px
      name:
        - font-size: 85%
        - white-space: normal
      img_cell:
        - height: 100%
      grid:
        - grid-template-areas: '"i" "dni" "n"'
        - grid-template-rows: ifr min-content min-content
      custom_fields:
        dni:
          - color: gray
          - font-size: 75%
    state:
      - value: Dzisiaj
        color: rgba(255, 214, 10, 1)
        styles:
          card:
            - box-shadow: 0 0 0.95rem 0.2rem deepskyblue
            - border: solid 1px deepskyblue
      - value: Jutro
        color: rgb(222, 95, 16)
        styles:
          card:
            - border: solid 1px orange

gotowy dashboard (to już gotowiec do wklejenia w samym dashboardzie tam gdzie chcemy to mieć)

square: false
columns: 4
type: grid
cards:
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_zmieszane
    entity_picture: /local/img/smieci/smieci_zmieszane3.png
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_kuchenne
    entity_picture: /local/img/smieci/smieci_bio2.png
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_selektywne
    entity_picture: /local/img/smieci/smieci_all2.png
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_termin_platnosci
    entity_picture: /local/img/smieci/smieci_zmieszane3.png
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_zielone
    entity_picture: /local/img/smieci/smieci_zielone2.png
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_popiol
    entity_picture: /local/img/smieci/smieci_popiol2.png
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_wielkogabarytowe
    entity_picture: /local/img/smieci/smieci_gabaryt.png
  - type: custom:button-card
    template: wywoz_smieci
    entity: sensor.smieci_choinki
    entity_picture: /local/img/smieci/smieci_choinka3.png

oczywiście musimy mieć skonfigurowane zmienne “sensor.smieci_xxx” przez waste_collection_schedule - gdyby ktoś chciał konfigurację zmiennych to również podsyłam (oczywiście trzeba zaadoptować pod swoje):
to jako osobny plik waste_collection_schedule.yaml w folderze “integrations” oczywiście dopisany dopisek w configuration.yaml dla homeassistant:

homeassistant:
   packages:    !include_dir_named integrations
  # WASTE COLLECTION => integrations/waste_collection_schedule.yaml
  - platform: waste_collection_schedule
    name: Śmieci następny wywóz
    details_format:
      appointment_types
      # All
  - platform: waste_collection_schedule
    name: Śmieci wywozy
    details_format: appointment_types
    leadtime: "3"
    value_template: " {{ value.daysTo }} dni"
    types:
      - Metale i plastik
      - Odpady zmieszane
      - Popiół
      - Zielone
      - Choinki
      - Bio
      - Odpady wielkogabarytowe
      - Terminy płatności

      # METALE I PLASTIK
  - platform: waste_collection_schedule
    name: Śmieci selektywne
    details_format: appointment_types
    leadtime: "3"
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Metale i plastik
      # ODPADY ZMIESZANE
  - platform: waste_collection_schedule
    name: Śmieci zmieszane
    details_format: appointment_types
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Odpady zmieszane
      # POPIÓŁ
  - platform: waste_collection_schedule
    name: Śmieci popiół
    details_format: appointment_types
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Popiół
      # ZIELONE
  - platform: waste_collection_schedule
    name: Śmieci zielone
    details_format: appointment_types
    leadtime: "3"
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Zielone
      # CHOINKI
  - platform: waste_collection_schedule
    name: Śmieci choinki
    details_format: appointment_types
    leadtime: "3"
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Choinki
      # KUCHENNE
  - platform: waste_collection_schedule
    name: Śmieci kuchenne
    details_format: appointment_types
    leadtime: "3"
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Bio
      # ODPADY WIELKOGABARYTOWE
  - platform: waste_collection_schedule
    name: Śmieci wielkogabarytowe
    details_format: appointment_types
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Odpady wielkogabarytowe
      # TERMINY PŁATNOŚCI
  - platform: waste_collection_schedule
    name: Śmieci termin płatności
    details_format: appointment_types
    value_template: "{% if value.daysTo == 0 %}Dzisiaj{% elif value.daysTo == 1 %}Jutro{% else %} {{value.daysTo}} dni{% endif %}"
    types:
      - Terminy płatności
2 polubienia

Też miałem taki plan, ale Wrocław ma istotne niedoróbki.

Napisz proszę co gdzie wpisałeś - nazwy plików, nietypowe edycje, etc. Nie dla każdego jest to jasne i oczywiste.

Oczywiście :slight_smile: - uzupełniam posta powyżej:)

Może jeszcze jaśniej?

Co to znaczy? Gdzie to jest dashboard “w samym dashboardzie”? I czym się różni dashboard z #1 od tego w #2? Bo określasz to tak samo a zapewne chodzi o różne rzeczy.

Trzecie jest jasne.
Ot, może opisz kroki jakie robisz u siebie aby tok postępowania był zrozumiały i jasny.

Zrób sobie backup całości HA i opracuj technikę jak z niego odzyskać konfigurację w CLI jeśli całkowicie rozwalisz sobie GUI.

Najlepiej zrób sobie dodatkowy dashboard w celach treningowych (w Zarządzaj Dashboardami), a dopiero potem modyfikuj, ten, którego faktycznie używasz.

dash_1_2023-05-17_22-25
dash_2_2023-05-17_22-25

No ok, patrzyłem tu, ale tu jest inna składnia, od lewej bez wcięcia jest na samej górze tylko, potem z myślnikami - których tu w przykładzie nie ma… Dlatego dopytuję bo się domyślam że źle patrzę i jest jakiś krok który pomijam próbując się domyśleć co i jak… Ja mam takie wpisy jako karty (chodzi o strukturę), nijak pierwszy blok danych tu nie pasuje.


Tak więc ewidentnie coś źle robię… ale tyle rozumiem z opisu.

Składnia jest ta sama (jak w każdym YAMLu), a o wcięcia musisz zadbać.

@murcin używa rozszerzeń lovelace, więc musisz usiąść do ich dokumentacji (tam jest naprawdę wyjaśnione dlaczego składnia pozornie wygląda inaczej).

Sugeruję takie rzeczy instalować z HACS (bo po ręcznej instalacji nie wygrzebiesz się z problemów z aktualizacjami).

Ale co zainstalować, co wyedytować to już muszę się sam domyślić. To jest właśnie słabość ogromnej ilości opisów do HA. Niby oczywiste, a jednak nie…

Przysiądę w weekend, może uda mi się coś z tego kodu zrozumieć. Dziękuję za chęć pomocy. Jak mi się uda to rozkminić to spróbuję dokładniejszy opis zrobić.

No jeśli linki to mało, to ja jestem o wiele za głupi by pomóc…

masz w ogóle HACS?

Wydzieliłem ten wątek by komponent niestandardowy “WasteCollectionSchedule” (by mampfes) miał własny wątek

ale mówiłeś, że nie możesz dać rady z dashboardem… a tam (przez @murcin) jest wykorzystany kolejny komponent niestandardowy (tym razem w formie rozszerzenia lovelace, więc konfiguruje się go w lovelace, który obecnie nazywa się “dasboard” i może zawierać wiele dashboardów - ale spaprali terminologię… kiedyś było jaśniej). Link do repo jest w moim poprzednim poście, ale informacja co instalować już była wcześniej:


To jest HA, ale to co Cię interesuje to nie jest HA.
Generalnie wszystko co jest w HACS (ale nie tylko tam!), to nie jest HA tylko komponenty niestandardowe i mogą w nich obowiązywać inne reguły konfiguracji, ponadto one modyfikują działanie HA.
Polecam przejrzeć wymagania wstępne do instalacji HACS i się nad nimi głęboko zastanowić.

Chcesz używać komponentów niestandardowych, to musisz się opierać na ich dokumentacji.

Doskonale rozumiem co piszesz. Jednak właśnie - sam kod bez wyjaśnienia co, gdzie, jak niewiele jest wart. Do tego używanie niestandardowych rozwiązań - jak ktoś niezaznajomiony z HA ma “wpaść” co, gdzie i jak żeby zadziałało? Stąd moje pytania, nic złośliwego. Dlatego tak mi zależy aby opisać co doinstalowujemy, jak i co edytujemy (konkretna ścieżka do pliku, czy dodajemy czy zastępujemy, etc) w sposób który zrozumie każdy.

To całe “waste schedule” jako dodatek ponoć już przestało być wspierane bo ha zaczął harmonogramy wspierać natywnie, no super - ale nagle 90% tutoriali można o kant d*** podłuc, a to co się pojawia - tak jak tu - napisane jest w sposób mało zrozumiały. Do tego ten dodatek służy do zbierania danych z serwisów on-line, my rozmawiamy chyba o czymś lokalnym? Google prowadzi uparcie do repozytorium które pisze o zakończeniu wsparcia. Dlatego tak ważne są konkretne informacje bez potrzeby błądzenia w google i domyślania się o co chodziło autorowi.
Oczywiście - chwała autorowi że się dzieli, ale suchy opis bez dokładnego opisu postępowania sprawi że to będzie kolejna “śmieciowata” ciekawostka. Z tego właśnie powodu linux wciąż szoruje po dnie statystyk - bo co z tego że programy potrafią cuda kiedy 90% dokumentacji i tutoriali niczego tak naprawdę nie wyjaśnia.

A gdzie znalazłeś taką informację ? Możesz podać jej źródło ? Póki co wsparcia już nie otrzyma Garbage-Collection z powodu, o którym piszesz.

End of Support
Home Assistant has introduced local calendars in 2022, in the 2023.1 release they added an option for different recurent events. With this, most of the functionality of this custom helper is supported natively. So I will end developing and supporting this helper in 2023.

No i na tym dodatku oparte było ogrom tutoriali dotąd dostępnych. Skoro nie ma informacji w opisie to szukamy w google, google zwraca takie kwiatki i powstaje bałagan w głowie i błędne wnioski. Dlatego tak ważny jest dokładny opis który nie pozostania pola domysłom.

Ot, proszę - dodawanie karty custom card z hacs. Dodatek dodany, ale co dalej? W dokumentacji napisano że:

Installation and tracking with hacs

  1. Make sure the HACS component is installed and working.
  2. Search for button-card and add it through HACS
  3. Add the configuration to your ui-lovelace.yaml

resources: - url: /hacsfiles/button-card/button-card.js type: module

  1. Refresh home-assistant.

Super, pliku ui-lovelace.yaml się nie doszukałem, UI Lovelace Card - #3 by finity - Dashboards & Frontend - Home Assistant Community tu też mieli ten problem i gimnastyki sporo i tak naprawdę nie wiadomo czy to ruszyło…

Chciałeś zainstalować waste a opierałeś się na garbage po co robisz sobie bałagan naucz się rozróżniać trąbkę od puzonu czytaj dokumentację dodatku czy komponentu, który Ciebie interesuje i dotyczy a nie rób na chybił trafił a nuż się uda.

To wykonujesz jak się nie zainstalowało i chcesz ręcznie dodać pliki z repozytorium, jak instalujesz z repo to samo się zazwyczaj dodaje.

Ale przeczytaj raz jeszcze powyższe - to jest właśnie instalacja przez hacs gdzie napisano że trzeba dodać ręcznie wpis do ui-lovelace którego nie mam u siebie. Kurde, różne dokumentacje czytamy?

Jak dotąd filmiki na youtube opierały się na garbage który przestał być wspierany bo funkcjonalność jest teraz natywnie w HA. Nie przyszło mi do głowy że to różne rozwiązania - też dodatek ale inny, mimo że niby powinno być natywnie, groch z kapustą. Ale - tak prowadzi google, dlatego tak naciskam na dokładny opis co i jak instalujemy, co i jak edytujemy, itd…