HomematicIP/OpenCCU & Thermostatcards

Ich wollte als Einstand auch mal etwas für andere festhalten :wink:
Mein System lief davor Jahrelang auf ioBroker, aber ich war unzufrieden und wollte was neues ausprobieren. Also ZACK, VM mit ioBroker deaktiviert und HASS OS in eine VM gebügelt.

Kommen wir zum Kern. Hardware, Homematic IP Thermostate, Wandthermostate und Fensterkontakte. Verbunden über USB mit dem Server auf dem Proxmox läuft und den IP RF-USB Stick durchgeschliffen.

Config für OpenCCU konnte ich aus einer DebmaticVM übernehmen. Alles wurde in Home Assistent korrekt eingebunden. > cool!

so sah meine Heizung in ioBroker aus. Ich wollte etwas ähnliches. Also fix mal HACS installiert und rumPROBIERT. Kann sein das ich mich zu blöd anstelle oder einen Punkt übersehe, aber KEINE Card (Better Thermostat/Versatile Thermostat/…) bot mir alle Features die ich wollte, noch schlimmer… Entweder konnte man die Temp. nicht mehr am Wandthermostat/Thermostat selber ändern, oder die UI akzeptiere die Änderung nicht bzw. stelle den alten Wert wieder ein.

Liegt wohl an der Verknüpfung in der CCU das es nicht geht.

Was für ein Gefrickel… Was auf Anhieb funktionierte, war die stinknormale eingebaute Home Assistent Card. Und hier nun das Endergebnis. Das einzige was gebraucht wird ist card_mod!

Eingefügt per card_mod - Luftfeuchtigkeit, ein roter Balken der den Ventilöffnungsgrad anzeigt und eine Visualisierung für offenes Fenster. Evtl. inspiriert es ja jemanden. Hier nun der Code (kann man sicher besser machen, ich hab ChatGPT Code benutzt). Tobt euch gern aus, oder postet Verbesserungen.

type: thermostat
entity: climate.wandthermostat_wohnzimmer
features:
  - type: climate-hvac-modes
  - type: climate-preset-modes
    style: dropdown
card_mod:
  style: |
    ha-card {
      position: relative;
    }

    /* 🔴 Ventilbalken + 💧 Luftfeuchtigkeit */
    ha-card::before {
      content: "'' \A 💧 {{ states('sensor.wandthermostat_wohnzimmer_luftfeuchtigkeit') }}%";
      white-space: pre;
      text-align: center;
      position: absolute;
      bottom: 173px;              /* Balken-Position bleibt */
      left: 50%;
      transform: translateX(-50%);
      font-size: 14px;
      color: var(--secondary-text-color);
      opacity: 0.9;

      width: 200px;
      border: none;
      border-radius: 3px;
      box-sizing: border-box;

      /* 👉 Abstand zwischen Balken und Text steuern */
      line-height: 0.8;           /* kleiner = Text näher am Balken */
      padding-top: 22px;           /* weniger Abstand oben */
      padding-bottom: 0;

      /* 🔴 Balkenfüllung (Ventilöffnungsgrad) */
      background: linear-gradient(
        to right,
        red {{ states('sensor.heizkorperthermostat_wohnzimmer_ventil_offnungsgrad') | int }}%,
        rgba(255,255,255,0.15) {{ states('sensor.heizkorperthermostat_wohnzimmer_ventil_offnungsgrad') | int }}%
      );
      background-repeat: no-repeat;
      background-size: 100% 3px;
      background-position: top center;

      transition: background 0.8s ease;
    }

    /* 🪟 Fensterstatus-Icon oben */
    ha-card::after {
      content: "🪟";
      position: absolute;
      top: 80px;
      left: 50%;
      transform: translateX(-50%);
      font-size: 26px;
      opacity: 0.9;
      color:
        {% if is_state('binary_sensor.fensterkontakt_balkontur', 'on') %}
          var(--info-color);
        {% else %}
          rgba(255,255,255,0.1);
        {% endif %};
      z-index: 5;
      pointer-events: none;
    }

Viel Spaß damit.

5 „Gefällt mir“

Bei Versatile musst du beim VTherm Follow underlying temp change aktivieren, dann geht das.

Aber schön, dass du eine Lösung für dich gefunden hast. Sieht gut aus.

1 „Gefällt mir“

Hab deinen Code bei mir ausprobiert, funktioniert gut. Ich hab dabei einen kleinen Schönheitsfehler entdeckt, in der Zeile des Ventilbalkens bei content: stehen Anführungszeichen, die werden nicht benötigt, stachen bei mir aber durch die Temperaturanzeige.

Echt? Bei mir nicht. Komisch :smiley: Freut mich das es dir gefällt

@Noosi

habe deinen Code kopiert und versuche die diversen Änderungen anzupassen. Leider ohne Erfolg.

Kannst du noch einmal den Code ohne die Zusätzlichen Infos einstellen?

Danke

type: thermostat
entity: climate.wandthermostat_wohnzimmer
features:
  - type: climate-hvac-modes
  - style: icons
    type: climate-preset-modes
card_mod:
  style: |
    ha-card {
      position: relative;
    }

    ha-card::before {
      content: "'' \A 💧 {{ states('sensor.wandthermostat_wohnzimmer_luftfeuchtigkeit') }}%";
      white-space: pre;
      text-align: center;
      position: absolute;
      bottom: 215px;
      left: 50%;
      transform: translateX(-50%);
      font-size: 14px;
      color: var(--secondary-text-color);
      opacity: 0.9;

      width: 200px;
      border: none;
      border-radius: 3px;
      box-sizing: border-box;

      line-height: 0.8;           
      padding-top: 22px;      
      padding-bottom: 0;

      background: linear-gradient(
        to right,
        red {{ states('sensor.heizkorperthermostat_wohnzimmer_ventil_offnungsgrad') | int }}%,
        rgba(255,255,255,0.15) {{ states('sensor.heizkorperthermostat_wohnzimmer_ventil_offnungsgrad') | int }}%
      );
      background-repeat: no-repeat;
      background-size: 100% 3px;
      background-position: top center;

      transition: background 0.8s ease;
    }

    ha-card::after {
      content: "🪟";
      position: absolute;
      top: 120px;
      left: 50%;
      transform: translateX(-50%);
      font-size: 26px;
      opacity: 0.9;
      color:
        {% if is_state('binary_sensor.fensterkontakt_balkontur', 'on') %}
          var(--info-color);
        {% else %}
          rgba(255,255,255,0.1);
        {% endif %};
      z-index: 5;
      pointer-events: none;
    }
      ha-icon-button { display: none !important; }
    ha-state-control-climate-temperature:
      $: |
        .label:nth-of-type(2) { display: none !important; }

      .title {
        font-size: 24px !important;
      }        

So ist es bei mir im Einsatz, hab nur die Grid informationen entfernt. Bitte beachten das die Entität Ventilöffnungsgrad normal nicht aktiv ist, man muss sie in den Settings des Thermostat aktivieren!

@Noosi

Danke für die Info. So sieht es gerade aus. Das Icon für geöffnetes Fenster ist verdeckt. Ventilöffnung funktioniert.

Anfangs haben die WOchenprogramme nichts angezeigt, jetzt geht es.Auf dem Screenshot noch nicht geändert.

Deine “Boost” + 4 Punkte kann ich mir nur durch andere Heizpresets erklären, bei mir ist dort nur “Boost” oder kein Boost. Was die Position des Icons/Text angeht bezieht sich bei mir die Position auf die Kartengröße die durch ein Grid bestimmt wird. Mein Tablet hat 1920x1200 was sich in ein Grid aufteilt von

Das erfordert sonst ein wenig “Handarbeit” für die Position des Textes / Icons

hier nochmal die ganze karte (mit gridposition und kommentaren)

type: thermostat
entity: climate.wandthermostat_arbeitszimmer
features:
  - type: climate-hvac-modes
  - style: icons
    type: climate-preset-modes
view_layout:
  grid-area: az
card_mod:
  style: |
    ha-card {
      position: relative;
    }

    /* 🔴 Ventilbalken + 💧 Luftfeuchtigkeit */
    ha-card::before {
      content: "'' \A 💧 {{ states('sensor.wandthermostat_arbeitszimmer_luftfeuchtigkeit') }}%";
      white-space: pre;
      text-align: center;
      position: absolute;
      bottom: 215px;              /* Balken-Position bleibt */
      left: 50%;
      transform: translateX(-50%);
      font-size: 14px;
      color: var(--secondary-text-color);
      opacity: 0.9;

      width: 200px;
      border: none;
      border-radius: 3px;
      box-sizing: border-box;

      /* 👉 Abstand zwischen Balken und Text steuern */
      line-height: 0.8;           /* kleiner = Text näher am Balken */
      padding-top: 22px;           /* weniger Abstand oben */
      padding-bottom: 0;

      /* 🔴 Balkenfüllung (Ventilöffnungsgrad) */
      background: linear-gradient(
        to right,
        red {{ states('sensor.heizkorperthermostat_arbeitszimmer_ventil_offnungsgrad') | int }}%,
        rgba(255,255,255,0.15) {{ states('sensor.heizkorperthermostat_arbeitszimmer_ventil_offnungsgrad') | int }}%
      );
      background-repeat: no-repeat;
      background-size: 100% 3px;
      background-position: top center;

      transition: background 0.8s ease;
    }

    /* 🪟 Fensterstatus-Icon oben */
    ha-card::after {
      content: "🪟";
      position: absolute;
      top: 120px;
      left: 50%;
      transform: translateX(-50%);
      font-size: 26px;
      opacity: 0.9;
      color:
        {% if is_state('binary_sensor.fensterkontakt_arbeitszimmer', 'on') %}
          var(--info-color);
        {% else %}
          rgba(255,255,255,0.1);
        {% endif %};
      z-index: 5;
      pointer-events: none;
    }
    ha-icon-button { display: none !important; }
    ha-state-control-climate-temperature:
      $: |
        .label:nth-of-type(2) { display: none !important; }
      .title {
        font-size: 24px !important;
      }        
1 „Gefällt mir“

Vielen Dank. Du bist ja fast so schnell wie der Schall.:grinning_face_with_smiling_eyes:

Werde jetzt noch ein wenig mit den Einstellungen rumspielen.

Du hast mir sehr geholfen. Danke

Kein Problem, bin in der Logistik auf der Arbeit und wenn gerade kein LKW unterwegs ist hab ich Zeit zum surfen ^^

@Noosi

Die Karte sieht jetzt so aus.

Über der Feuchtigkeitsanzeige steht noch was Undefiniertes, bin noch am suchen.

Die Schrift oben (Heizungsgruppe Computerzimmer) möchte ich verkleinern oder weglassen.

Un jetzt noch eine Bitte. Kann man eventuell oben neben dem Fenstersymbol noch ein Rolladensymbol einfügen?

das wird aus diesem bereich kommen…

ha-card::before {
      content: "'' \A 💧 {{ states('

Mußte da ein wenig tricksen um den abstand zu bekommen, vergleich mal die Linie für die Ventilanzeige. Bei mir ist sie mittig zwischen den Temp. Dadurch rückt das " hinter die 21.5°C und die Luftfeutigkeit sieht auch besser aus etwas weiter oben.

Kommt nicht aus meiner Feder, kann hier nix testen auf der Arbeit. ChatGPT meint

  .title {
    font-size: 28px !important;   /* ← Textgröße Raumname */
    font-weight: 600;             /* optional: kräftiger */
    line-height: 1.2;
    margin-bottom: 6px;           /* Abstand nach unten */
    text-align: center;           /* optional */
  }

das würde “passen”.
Ich bin noch neu in der Home Assistant Umgebung. So wie es aussieht liegt ein grosser Teil der Card im sogenannten Shadow-DOM und ist nur schwer erreichbar für Modifikationen. Card mod kommt da nur über den Umweg mit ::before { und ::after { ran. Wenn Du irgendwas in Richtung eines 2. Icons haben willst, muss es direkt im Code abgefragt werden. Evtl. hat ja jemand eine Idee um sowas zu managen. “Mein” Code ist sicher auch nicht das optimum, aber er erreicht das was ich wollte.

Ich muss ja sagen, dass mir die Darstellung im ioBroker deutlich besser gefällt als diese Kreisdarstellung im HA. Gibt es da echt keine Alternativen?

Sorry für die Frage, aber ich bin auch erst vor zwei, drei Wochen vom ioBroker auf den HA umgestiegen. vis war schon cool, aber eben auch sehr zeitaufwändig in der Konfiguration. Was ich bisher so von den HA-Dashboards gesehen habe, hat mich leider nicht wirklich überzeugt. Ist mir alles zu verspielt und mit viel zu viel Platzverschwendung. Ich mag es eher in Matrixform und nüchtern.

Installiere Dir (über HACS) Mushroom. Da ist auch eine Clima-Karte dabei.
Hier mal ein kleines Beispiel:

1 „Gefällt mir“

Sieht bei mir so aus, mit HA-Standard Karten realisiert.

1 „Gefällt mir“