Karty wizualizacji pogody lub alertów pogodowych

Poniżej print screeny z integracji z Burze.dzis.net: czy jest możliwość dopasowania tego do istniejącej czcionki, rozmiaru karty bo wygląda to trochę “za duże”:

albo inny pomysł jak zrobić coś podobnego z dodatkowymi kolejnymi atrybutami np. do kiedy obowiązuje ostrzeżenie? Sorry ale w kwestii wizualizacji danych jest zielony jak pietruszka, po prostu tego nie czuję a jak wiadomo, że oprócz tego, że działa musi jeszcze ładnie wyglądać :wink:

Cześć! Jestem twórcą wyżej wymienionego projektu MeteoalarmCard. Aktualnie karta nie wspiera żadnych customizacji, nie możesz edytować rozmiaru czcionki ani innych typowo wglądowych rzeczy.

To że nie zdecydowałem się na wyświetlanie innych atrybutów to zabieg celowy. Zamysłem projektu jest mała, prosta i minimalistyczna karta. Jakiekolwiek fajerwerki wizualne są ograniczone do minimum.

Jeśli macie jakieś problemy albo pytania to możecie śmiało pisac tutaj albo zrobić nowy issue.

4 polubienia

Nie używając żadnej niestandardowej karty, posługując się kartą “entity-filter”, która jest integralną częścią HA i odpowiednio modyfikując jej wygląd można uzyskać coś takiego:

burze

1 polubienie

Ciekawie wygląda. Sporo danych. Mógłbyś podzielić się kodem tej karty?

Ładnie to wygląda, pytanie czy w przypadku poziomu 2 (level=2) tło będzie czerwone tylko dla wybranej encji? Pytam bo dzisiaj miałem taki przypadek: temperatura poziom=1, burza poziom=2. Należałoby także ładnie podzielić string: deszcz od 41 do 70 mm/wiatr w porywach od 91 do 110 km/h/grad od 2 do 5 cm na osobne linie:

deszcz od 41 do 70 mm
wiatr w porywach od 91 do 110 km/h
grad od 2 do 5 cm

Jak dodać kolejny argument to (do kiedy)?

Kod karty wygląda następująco:

type: conditional
conditions:
  - entity: binary_sensor.grupa_burze_dzis_net
    state: 'on'
card:
  type: entity-filter
  entities:
    - entity: binary_sensor.burze_dzis_net_heat_warning
      type: attribute
      attribute: description
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 14px;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Poziom: ";
              color: white;
              font-size: 12px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'level')}}";
              color: black;
              font-size: 12px;
            }
        style: |
          :host {
            --paper-item-icon-color: yellow;
          }
    - entity: binary_sensor.burze_dzis_net_frost_warning
      type: attribute
      attribute: description
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 14px;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Poziom: ";
              color: white;
              font-size: 12px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'level')}}";
              color: black;
              font-size: 12px;
            }
        style: |
          :host {
            --paper-item-icon-color: white;
          }
    - entity: binary_sensor.burze_dzis_net_wind_warning
      type: attribute
      attribute: description
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 14px;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Poziom: ";
              color: white;
              font-size: 12px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'level')}}";
              color: black;
              font-size: 12px;
            }
        style: |
          :host {
            --paper-item-icon-color: grey;
          }
    - entity: binary_sensor.burze_dzis_net_precipitation_warning
      type: attribute
      attribute: description
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 14px;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Poziom: ";
              color: white;
              font-size: 12px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'level')}}";
              color: black;
              font-size: 12px;
            }
        style: |
          :host {
            --paper-item-icon-color: #00afff;
          }
    - entity: binary_sensor.burze_dzis_net_storm_warning
      type: attribute
      attribute: description
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 14px;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Poziom: ";
              color: white;
              font-size: 12px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'level')}}";
              color: black;
              font-size: 12px;
            }
        style: |
          :host {
            --paper-item-icon-color: #00afff;
          }
    - entity: binary_sensor.burze_dzis_net_storms_nearby
      type: attribute
      attribute: distance
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 14px;
            }
            .text-content.pointer:not(.info)::before {
              content: "Odległość:";
              color: white;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Kierunek: ";
              color: white;
              font-size: 12px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'direction')}}";
              color: black;
              font-size: 12px;
            }
        style: |
          :host {
            --paper-item-icon-color: #00afff;
          }
    - entity: binary_sensor.burze_dzis_net_tornado_warning
      type: attribute
      attribute: description
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 14px;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Poziom: ";
              color: white;
              font-size: 12px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'level')}}";
              color: black;
              font-size: 12px;
            }
        style: |
          :host {
            --paper-item-icon-color: black;
          }
  state_filter:
    - 'on'
  card:
    type: entities
    title: Burze.dziś.net
    card_mod:
      style: |
        ha-card .card-header {
          font-size: 25px;
          color: white;
        }
        ha-card {
          color: black;
          --mdc-icon-size: 40px;
          font-size: 18px;
          background: #ffd200;
        }

Ponieważ funkcjonuje jako karta warunkowa więc wymaga wyzwalacza, którym tu jest sensor binarny utworzony z grupy wszystkich encji integracji burze.

Jeżeli chodzi o dodawanie informacji z kolejnych atrybutów encji to raczej mija się to z celem bo powoduje, że karta, która i tak już jest mało czytelna, staje się zupełnie nieczytelna. I wynika to niestety głównie z niepotrzebnego natłoku informacji jaki jest dostarczany przez integrację burze. Aczkolwiek jak ktoś chce to może sobie w prosty sposób kartę dopasować do własnych potrzeb. Ja obecnie myślę nad czymś zupełnie innym.

1 polubienie

Jak utworzyć ten wyzwalacz jako sensor?

Np. w pliku groups.yaml coś takiego (nie wiem czy dokładnie tak ma to wyglądać wywnioskowałem z kodu karty), oczywiście ten plik musi być w include (ewentualnie można to też zrobić w pliku configuration.yaml bezpośrednio)

grupa_burze_dzis_net:
  name: Burze.dzis.net - Ostrzeżenie
  entities:
    - binary_sensor.burze_dzis_net_storms_nearby
    - binary_sensor.burze_dzis_net_storm_warning
    - binary_sensor.burze_dzis_net_precipitation_warning
    - binary_sensor.burze_dzis_net_wind_warning
    - binary_sensor.burze_dzis_net_tornado_warning
    - binary_sensor.burze_dzis_net_heat_warning
    - binary_sensor.burze_dzis_net_frost_warning
  all: false
  icon: mdi:alert

Dokumentacja, bo powyższy yaml jest w przestarzałym stylu (jakkolwiek działa)

Grupy teraz można dodawać w GUI

Zrobiłem w pomocnikach, też zadziałało

Edit:

Chcę zrobić własną kartę pogody (jak w załączniku) na potrzeby nawadniania ogrodu.
Potrzebuję zwizualizować opady deszczu w nadchodzących dniach i dlatego potrzebuję wyciągnąć wartości o opadach z sensora pogodowego w HA
Rozumiem, że do tego przyda mi się entity-filter
O ile proste wartości wiem jak wyciągnąć o tyle nie wiem jak wyciągnąć wartość “precipitation” która pojawia się wielokrotnie dla poszczególnych dni. Jak wyciągnąć dla jutra, pojutrza i tak do końca?
Tak sobie w międzyczasie pomyślałem , że może jest możliwość wyciągnięcia wartości dla pierwszego występującego słowa precipitation, dla drugiego występującego precipitation i tak dalej ale czy tak można?
Oto przykład mojego sensora weather.dom"

temperature: 9.2
temperature_unit: °C
humidity: 73
pressure: 1009.5
pressure_unit: hPa
wind_bearing: 315.4
wind_speed: 16.2
wind_speed_unit: km/h
visibility_unit: km
precipitation_unit: mm
forecast:
  - condition: partlycloudy
    datetime: '2023-04-26T10:00:00+00:00'
    wind_bearing: 295.5
    temperature: 9.7
    templow: 3.7
    wind_speed: 24.5
    precipitation: 0.2
  - condition: rainy
    datetime: '2023-04-27T10:00:00+00:00'
    wind_bearing: 284.1
    temperature: 10.4
    templow: 1.9
    wind_speed: 19.4
    precipitation: 0.6
  - condition: cloudy
    datetime: '2023-04-28T10:00:00+00:00'
    wind_bearing: 173.9
    temperature: 14.4
    templow: 2.6
    wind_speed: 14.8
    precipitation: 0.1
  - condition: cloudy
    datetime: '2023-04-29T10:00:00+00:00'
    wind_bearing: 292.8
    temperature: 14
    templow: 8.9
    wind_speed: 19.8
    precipitation: 5.3
  - condition: cloudy
    datetime: '2023-04-30T10:00:00+00:00'
    wind_bearing: 90.4
    temperature: 16.2
    templow: 10.2
    wind_speed: 11.2
    precipitation: 0
attribution: >-
  Weather forecast from met.no, delivered by the Norwegian Meteorological
  Institute.
friendly_name: Forecast Dom

Z góry dzięki za poświęcony czas

Edit:

Pomału buduję szablon. Główny problem wyciągania danych pozostaje ale szablon już istnieje :slight_smile:

Jeśli tylko do wykresu możesz podeprzeć się tym postem.

Jeśli chcesz wartość do automatyzacji możesz zrobić sensor przez template.
Pobaw się w Narzędzia deweloperskie > Szablon
{{ state_attr('weather.dom', 'forecast')[1].precipitation }}

Cześć, mam problem z tym “szablonem” nie pokazuje mi się secendary_info a przez to nie działa styl z hui-generic-entity-row