Scheduler Card - warunkowanie

Korzystacie z tej karty?
Kilka lat temu jej się przyglądałem, z jakiegoś powodu nie użyłem. Teraz jednak wróciłem i uważam ją za przydatną.
To nie jest jakiś skomplikowany instrument, ale podzielę się z Wami pewnym doświadczeniem.
Np. możliwość kolorowania tekstu - niby nic, ale warto wiedzieć że można, wzbogaca to nieco widoczność planu i akcji.

Dla mnie od początku użycia tej karty ważne było pytanie, co znaczy “przedział czasu”, w którym ustawiam załączenie urządzenia. Czy harmonogram ponowi takie załączenie, kiedy w czasie trwania tego okna to urządzenie zostanie wyłączone “z ręki”?
Otóż nie. Co ma dobre i złe strony. No ale ok, jest jak jest.

Natomiast ciekawa jest opcja warunkowania - można uruchomienie urządzenia uzależnić w oparciu o stan innego urządzenia/sensora.

A zatem uruchomienie nastąpi od razu, od początku rozpoczęcia tego przedziału w harmonogramie ale tylko wtedy, kiedy podany warunek jest spełniony.
I tu niezwykle silna rzecz - ten warunek może być stale monitorowany przez harmonogram, więc o o ile on zostanie spełniony nawet później, to harmonogram się wyzwoli.

Przykład użycia?

  • mam zdefiniowany sensor binarny, którego stan “on/off” wyznaczam na podstawie danych wejściowych dwóch podanych godzin (input_datetime) i czujnika natężenia światła.
    Chodzi o to, że chcę np. włączać/wyłączać oświetlenie zewnętrzne, więc podaję godziny np. 16.30-18.00. Ale badam czujnikiem natężenia oświetlenia, czy nie jest za jasno żeby już to oświetlenie włączać.
    Stąd ten binarny sensor przyjmie wartość “on” tylko wtedy, kiedy jest zadane okno czasowe i wartość luxów, jaką sobie też w parametrach ustaliłem.
  • teraz w karcie schedulera ustawiam ten przedział czasowy 16.30-18.00 i warunek uruchomienia “binary_sensor.check_lux_level = 0”. I teraz najważniejsze - przy warunku trzeba wybrać opcję “Ponownie sprawdzaj przy zmianie warunków”. Właśnie ta opcja sprawi, że harmonogram będzie czuwał, zauważy zmianę wartości tego sensora i wtedy wykona działanie wskazane dla tej części harmonogramu.
  • w efekcie światła załączają się mniej więcej o tej porze (między 16:30 a 18), którą zadysponowałem, ale w pewnej różnicy czasu wynikającej z faktycznego poziomu jasności na zewnątrz.

Dokładnie tę samą metodę wykorzystuję tworząc sobie “harmonogram cykliczny”. Ustawiam zadany przedział czasu w harmonogramie, wskazuję jako działanie wykonywanie jakiegoś skryptu.
I znów mam pomocniczy (template) sensor binarny, który co zadany interwał czasu ustawia się na stan “on”. A to zauważa harmonogram, i wykonuje przydzielony mu skrypt.

Poniżej obrazek, jak to u mnie wygląda i przykładowy kod, jak kolorować teksty.

type: custom:scheduler-card
discover_existing: false
include:
  - binary_sensor.harm_warunek_osw_kuchnia_wieczor
  - light.milight_kuchnia
display_options:
  secondary_info:
    - <i><b><h style=color:cyan>{time}</b></i>
  primary_info:
    - <i><b><h style=color:orange>{name} {action}</style></b></i>
title: Kuchnia
2 polubienia

Proszę udostępnij jeszcze kod jednej karty.

Żebym dobrze zrozumiał - co znaczy jednej? Taki przykład już podałem, inne są powtarzalne. Czy interesuje Cię kod tego całego dashboardu?

Np.

To jest ciekawe, że nie wszystko widać i da się konfigurować w yaml.
Dla tej karty, o która pytasz, są zdefiniowane 4 harmonogramy. A w kodzie widać to, co widać

type: custom:scheduler-card
include:
  - switch.shelly1_oswietlenie_domu
discover_existing: false
title: Ośw. wejścia
display_options:
  secondary_info:
    - <i><b><h style=color:cyan>{time}</b></i>
  primary_info:
    - <i><b><h style=color:orange>{name} {action}</style></b></i>
show_header_toggle: true

Dopiero po pewnym czasie się skapnąłem, że mogę definiować sobie nazwę dla każdego z tych harmo osobno (w karcie używaną jako {name} o tutaj:

Tutaj z użyciem card_mod:

type: custom:scheduler-card
include:
  - button
  - input_boolean
  - input_number
  - input_select
  - switch
exclude: []
title: Choinka Balkon
sort_by:
  - state
  - relative-time
display_options:
  primary_info:
    - <i><b><u><h3 style=color:green>{entity}</style></b></i></u>
    - action
  secondary_info:
    - <i><b>Następne uruchomienie</b></i>{relative-time}
    - <i><b>Harmonogram</b></i> {days}
    - additional-tasks
  icon: entity
show_header_toggle: false
card_mod:
  style: |
    :host {
       --card-mod-icon: mdi:weather-sunny;
       --state-icon-color: #FFC107;
       --switch-checked-button-color: #FFC107;
       --switch-checked-track-color: #5d87d4;
    }
    .show-more {
      display: none;
    }
    .card-actions {
      display: none;
    }
    div.card-header {
      display: none;
    }
    div.card-content {
      padding: 8px 10px 0px 10px;
    }
    ha-card div.schedule-row {
      margin: 0;
    }
    ha-card {
      border: 3px solid #7CA870;
      background-color: rgb(93 135 212 / 50%);
    }
    ha-card div.schedule-row .info {
      margin-left: 4px;
    }


1 polubienie

Wciągnąłeś mnie w tę zabawę w kolory :slight_smile:
Poszedłem nieco dalej - kolor tła zależny od statusu harmonogramu (czy jest wł. czy wył.).
Próbowałem chwilę dodać trzeci stan i kolor, tj. “aktualnie w slocie”. Myślałem że oprę się na atrybucie current_slot, ale tu w zasadzie wszędzie mam null co nie zgadza się ze stanem faktycznym. Odpuściłem. Wyróżnienie harmonogramów na te, które są aktywne i na nieaktywne, już mi daje jakiś fun.

type: custom:scheduler-card
include:
  - switch.gniazdko_gabinet_polka
  - binary_sensor.blitz_pomocnik
title: Gniazdko gabinet półka
display_options:
  secondary_info:
    - <i><b><h style=color:cyan>{time}</b></i>
  primary_info:
    - <i><b><h style=color:orange>{name} {action}</style></b></i>
discover_existing: false
show_header_toggle: false
card_mod:
  style: |
    :host {
      --card-mod-icon: mdi:light-flood-down;
      --state-icon-color: #FFC107;
      --switch-checked-button-color: #FFC107;
      --switch-checked-track-color: #5d87d4;
    }

    ha-card {
      border: 3px solid #592F19;
      background: 
        {% if is_state('switch.schedule_354109', 'on') or 
              is_state('switch.schedule_ba95b4', 'on') %} 
          rgb(93 135 212 / 10%) 
        {% else %} 
          #444444 
        {% endif %}
    }

Super. tu masz forum card-mod , na pewno coś tam znajdziesz.

https://community.home-assistant.io/t/card-mod-add-css-styles-to-any-lovelace-card/120744

Tu zanikanie pojawianie się kart co 3sec.

card_mod:
        style: |
          ha-card {
          animation: blinker 3s linear infinite;
          background-color: rgba(249, 180, 45, 0.2) !important;
          }
          @keyframes blinker {
          90% {
          opacity: 0;
          }
alignment: start

@TomBod

1 polubienie

Oj narobiłeś Artur mi zamieszania :slight_smile:

Ta card mod robi już niezłe bajery. Potem mocniej sięgnąłem do custom button card. No tutaj to już kompletne cuda można realizować.
Nawet nie ukrywam, że sięgnąłem po AI - minęły już czasy, że samodzielnie przedzierałem się przez każdy błąd logiczny czy składniowy. Jest dostępne narzędzie - korzystam z niego.

Oto jeden z efektów (kolory coś znaczą - albo temperatura poniżej założeń albo czujnik raportował ostatnio >1h):

Cieszę się że dałem ci motywację. Jak już korzystasz z custom button card to zainteresuje cię
template: gdzie definiuje się wszelkie ustawienia, ikony, wygląd w zdefiniowanym formacie w pliku:

Przed każdą modifikacją trzeba zrobić sobie kopie tego pliku RAW.
Krótki przykład niepełnego kodu:

button_card_templates:
  vertical-divider-grey:
    color_type: blank-card
    styles:
      card:
        - width: 1px
        - color: '#292929'
  alert_button:
    state:
      - value: 'on'
        styles:
          card:
            - box-shadow: 0px 0px 5px 1px var(--primary-color)
    styles:
      card:
        - height: 97px
        - background-color: black
        - border-radius: 10px
        - padding: 5%
        - font-size: 22px
        - box-shadow: 0px 0px 3px 1px var(--state-icon-color)
        - font-variant: small-caps
      grid:
        - grid-template-areas: '"i i" "n n" "s s"'
        - grid-template-columns: 1fr 1fr
        - grid-template-rows: 1fr min-content min-content
      name:
        - font-size: 13px
        - color: White
        - align-self: middle
        - justify-self: middle
        - padding-bottom: 4px
      state:
        - font-size: 15px
      img_cell:
        - justify-content: middle
        - align-items: middle
        - margin: none
      icon:
        - width: 40%
        - margin-top: '-5%'
  count_button:
    show_state: true
    show_name: true
    layout: icon_state_name2nd
    styles:
      grid:
        - grid-template-areas: '"i n" "i s" "i l"'
        - grid-template-columns: 1fr 75%
      card:
        - height: 55px
        - font-size: 22px
        - background-color: black
        - border-radius: 10px
        - box-shadow: 0px 0px 3px 1px var(--state-icon-color)
        - font-variant: small-caps
      icon:
        - color: var(--state-icon-color)
        - width: 60%
      name:
        - font-size: 13px
        - color: White
      state:
        - margin-top: '-30px'
  device_button:

Gdzie potem wykorzystujesz go jako template

type: custom:button-card
template: device
entity: switch.choinka_balkon
name: Urządzenia
icon: mdi:nuke
variables:
  attributes:
    - id: voltage
      icon: mdi:alien
      state: "1x "
      units: Attribute

A nie, to to wiem :slight_smile:
Parę dni temu produkowałem się w tym temacie tutaj: Konfigurowalne buttony Mushroom

Zrobiłem sobie kilka różnych template’ów i szeroko z ich korzystam

Ale cutom button card mnie rozwala - teraz modyfikuję kolejne swoje widoki, ot choćby monitorowania

1 polubienie

Grzybek jest OK
Screenshot - 15.12.2025 , 17_50_42
Poszukaj w HACS


Generuje gotowce Mushroom