Gå til indhold
← Alle indlæg

Et Tado-varmedashboard med card_mod, der faktisk er værd at se på

5 Tado-zoner i Home Assistant med Mushroom-klimakort, CSS-animation på de zoner, der varmer, og sænket temperatur ved fravær, der faktisk virker.

7. marts 2025
Et Tado-varmedashboard med card_mod, der faktisk er værd at se på

Tados integration er en af de bedste i HA lige fra start: den er indbygget, så der skal ikke bruges HACS. Du skal have Tados Internet Bridge og en Tado-konto. Tilføj integrationen, log ind, og alle zoner dukker op som climate.*-entiteter med fuld understøttelse. Status opdateres på under fem sekunder. Det virker bare.

Selve varmen var altså nem. Det interessante var at få dashboardet til at fortælle noget med et enkelt blik.

Animationen, der trækker vejret

Problemet med 5 klimakort i et gitter er, at de ser ens ud, uanset om varmen kører eller ej. Temperaturen står der, den ønskede temperatur står der, tilstanden står der. Men man kan ikke se, hvilke zoner der får kedlen til at fyre.

Jeg tilføjede en CSS-animation med keyframes via card_mod, som kun er aktiv, når attributten hvac_action er heating:

type: custom:mushroom-climate-card
entity: climate.zone_stue
card_mod:
  style: |
    :host {
      {% if state_attr('climate.zone_stue', 'hvac_action') == 'heating' %}
      animation: breathe 3s ease-in-out infinite;
      {% endif %}
    }
    @keyframes breathe {
      0%, 100% { filter: drop-shadow(0 0 4px rgba(255, 100, 0, 0.3)); }
      50%       { filter: drop-shadow(0 0 14px rgba(255, 100, 0, 0.75)); }
    }

Aktive zoner pulserer med en varm orange glød. De andre står stille. I et gitter med 5 zoner kan man med det samme se, hvilke rum der bruger energi.

En gæst spurgte, om huset trak vejret. Det føltes rigtigt.

Kopiér blokken til hver zone, og skift entitets-id'et. Jinja2 i card_mod beregnes, når kortet tegnes, så hvert kort selv afgør, om det skal animeres.

Layout

Fem kort i et gitter med 2 kolonner via custom:layout-card (HACS), pakket ind i et glas-custom:stack-in-card (HACS) og med card_mod (HACS) til animationerne:

type: custom:stack-in-card
card_mod:
  style: |
    ha-card {
      background: rgba(255,255,255,0.05) !important;
      backdrop-filter: blur(15px) !important;
      border: 1px solid rgba(255,255,255,0.10) !important;
      box-shadow: 0 8px 32px rgba(0,0,0,0.3) !important;
      border-radius: 28px !important;
    }
    ha-card::before { display: none !important; }
cards:
  - type: custom:layout-card
    layout_type: custom:grid-layout
    layout:
      grid-template-columns: 1fr 1fr
      grid-gap: 8px
      padding: 8px
    cards:
      - type: custom:mushroom-climate-card
        entity: climate.zone_stue
        show_temperature_control: true
        card_mod:
          style: |
            :host {
              {% if state_attr('climate.zone_stue', 'hvac_action') == 'heating' %}
              animation: breathe 3s ease-in-out infinite;
              {% endif %}
            }
            @keyframes breathe {
              0%, 100% { filter: drop-shadow(0 0 4px rgba(255,100,0,0.3)); }
              50%       { filter: drop-shadow(0 0 14px rgba(255,100,0,0.75)); }
            }
      # gentag for hver zone

show_temperature_control: true giver plus- og minusknapper direkte på kortet. En lille ting, men det betyder, at man kan justere en zone uden at navigere nogen steder hen.

Lavere temperatur, når ingen er hjemme

Når alle har forladt huset, sænkes alt til 17 °C. Når nogen kommer hjem, skifter zonerne tilbage til auto, så Tados egen tidsplan tager over:

alias: Tado — Væk nedsætning
trigger:
  - platform: state
    entity_id: group.husstandsmedlemmer
    to: not_home
action:
  - repeat:
      for_each:
        - climate.zone_stue
        - climate.zone_kontor
        - climate.zone_sovevarelse
        - climate.zone_badevarelse
        - climate.zone_gang
      sequence:
        - service: climate.set_temperature
          target:
            entity_id: "{{ repeat.item }}"
          data:
            temperature: 17

alias: Tado — Gendan ved hjemkomst
trigger:
  - platform: state
    entity_id: group.husstandsmedlemmer
    to: home
action:
  - repeat:
      for_each: [climate.zone_stue, climate.zone_kontor, climate.zone_sovevarelse,
                 climate.zone_badevarelse, climate.zone_gang]
      sequence:
        - service: climate.set_hvac_mode
          target:
            entity_id: "{{ repeat.item }}"
          data:
            hvac_mode: auto

Jeg bruger det i stedet for Tados egen geofencing, fordi min registrering af, hvem der er hjemme, kombinerer telefonens GPS, sporing af enheder i UniFi og en person.*-entitet. Det er mere pålideligt end Tados app alene, som af og til beslutter, at jeg er gået, når jeg bare er i haven.

Åbne vinduer

Tado registrerer åbne vinduer i selve hardwaren: termostaten måler et pludseligt temperaturfald og sætter selv varmen på pause i den zone. HA viser det via binary_sensor.zone_*_window.

Jeg tilføjede en besked, når et vindue har stået åbent i mere end 20 minutter, mens varmen er tændt. Badeværelset er den sædvanlige synder. Den automation har sandsynligvis sparet mere på varmeregningen end noget andet, jeg har bygget med Tado.

alias: Tado — Åbent vindue advarsel
trigger:
  - platform: state
    entity_id:
      - binary_sensor.zone_stue_window
      - binary_sensor.zone_badevarelse_window
    to: "on"
    for:
      minutes: 20
condition:
  - condition: template
    value_template: >
      {{ state_attr(trigger.entity_id | replace('binary_sensor.', 'climate.') | replace('_window', ''), 'hvac_action') == 'heating' }}
action:
  - service: notify.alle_enheder
    data:
      title: "Vindue åbent — varmen kører"
      message: >
        {{ trigger.entity_id
           | replace('binary_sensor.zone_','')
           | replace('_window','')
           | replace('_',' ')
           | title }} har stået åbent i 20 minutter.

Nye indlæg direkte i din RSS-læser: følg med via RSS I Google-søgning: vælg szimnau.dk som foretrukken kilde