Karte (Hintergrundfarbe) nach Öffnungstand des Thermostat einfärben

Micha65

Member
Hallo
ich suche eine Möglichkeit, im Dashboard die Hintergrundfarbe einer Karte entsprechend des Öffnungstand des Thermostat zu ändern.
zB.
rot 66-100%
orange 33-65%
gelb 1-32%
weiß 0%
Hat da jemand einen Lösungsansatz?
Danke Micha
 
Batteriefarben zweckentfremdet für Temperatur:
YAML:
type: custom:mushroom-template-card
primary: Kü {{ states(entity) }}°C
secondary: |2-
   {{ states("sensor.thermostat_kuche_temperatur") }}°C - {{
    states("sensor.thermostat_kueche_valve_state") }}%
entity: sensor.t1_temperature
icon: mdi:pot-steam
layout: horizontal
tap_action:
  action: more-info
icon_color: |
  {% set battery_level = states(entity) %}
  {% if battery_level < '15' %}
    blue
  {% elif battery_level < '17' %}
    teal
  {% elif battery_level < '18' %}
    green
  {% elif battery_level < '19' %}
    light-green
  {% elif battery_level < '20' %}
    lime
  {% elif battery_level < '21' %}
    yellow
  {% elif battery_level < '22' %}
    amber
  {% elif battery_level < '24' %}
    orange
  {% elif battery_level < '27' %}
    deep-orange
  {% else %}
    red
  {% endif %}
multiline_secondary: false
fill_container: true
card_mod:
  style: |
    ha-card {
      {% set battery_level = states(config.entity) %}
      {% if battery_level < '15' %}
        background: rgba(var(--rgb-blue),0.30);
      {% elif battery_level < '17' %}
        background: rgba(var(--rgb-teal),0.30);
      {% elif battery_level < '18' %}
        background: rgba(var(--rgb-green),0.30);
      {% elif battery_level < '19' %}
        background: rgba(var(--rgb-green),0.30);
      {% elif battery_level < '20' %}
        background: rgba(var(--rgb-lime),0.30);
      {% elif battery_level < '21' %}
        background: rgba(var(--rgb-yellow),0.30);
      {% elif battery_level < '22' %}
        background: rgba(var(--rgb-amber),0.30);
      {% elif battery_level < '24' %}
        background: rgba(var(--rgb-orange),0.30);
      {% elif battery_level < '27' %}
        background: rgba(var(--rgb-deep-orange),0.30);
      {% elif battery_level == 'unknown' %}
        background: rgba(var(--rgb-secondary-text-color),0.30);
      {% else %}
        background: rgba(var(--rgb-red),0.5);
      {% endif %}
    }
 
Hallo u5zzug vielen Dank für dein Beispiel.

Ich hab noch ein paar Fragen dazu.
Vorweg, ich bin nicht der Programmierer, eher der Probierer :)
gerade die Syntax fällt mir recht schwer.

0.
Diesen Code gebe ich direkt in der Karte unter "Code-Editor anzeigen" ein?

1.
type: custom:mushroom-template-card
- Dazu muss ich mittels HACS mushroom installiert haben?

2.
primary: Kü {{ states(entity) }}°C
- Das sagt mir nichts, was bedeutet "primary" und "Kü"

3.
secondary: |2-
- Was bedeutet "secondary" und "|2-"
4.
{{ states("sensor.thermostat_kuche_temperatur") }}°C - {{
- Hier ist der Sensor des Thermostaten aus der Küche gemeint, der die Temperatur ausgibt?

5.
states("sensor.thermostat_kueche_valve_state") }}%
- Hier ist der Sensor des Thermostaten aus der Küche gemeint, der den Öffnungstand ausgibt?

6.
entity: sensor.t1_temperature
- Das verstehe ich nicht, welcher Sensor soll das sein?

7.
{% set battery_level = states(entity) %}
- Hier wird die Variable "battery_level" gesetzt? Auf was?
- Dadurch wird das Icon bei x% auf Farbe xy gesetzt?

8.
{% set battery_level = states(config.entity) %}
- Was wird aber hier gesetzt?
- Wird hier der Hintergrund bei x% auf Farbe xy gesetzt?

Sorry für die vielen Fragen.
Danke Micha
 
https://github.com/piitaya/lovelace-mushroom/blob/main/docs/cards/template.md
Du kannst als Text ausgeben lassen, was du willst. Ich will Ventilstände und Temperaturen sehen. Natürlich musst du meine Sensoren durch deine ersetzen.
Kü ist das Kürzel für Küche, T1 ein Temperatursensor und 7. und 8. beziehen sich auf den Status der inr in der Karte angegebenen Entität (Thermometer).
Probier es halt aus.
Du brauchst auch card mod, für die Hintergrunsdfarbe.
 
Hallo und Danke für die Antworten.
Hab es soweit hinbekommen, nur ich wollte es noch etwas anders.
Der Hintergrund soll sich entsprechend der Ventilöffnung färben, aber
der angezeigte Wert soll die Temperatur anzeigen, nicht die Ventilöffnung.
Da habe ich leider noch nichts gefunden.

Bildschirm­foto 2023-01-25 um 22.41.18.png

YAML:
type: custom:mushroom-template-card
primary: Küche Thermostat {{ states(entity) }}% geöffnet
entity: sensor.kuche_ik_thermostat_heating
icon: mdi:pot-steam
layout: horizontal
tap_action:
  action: more-info
icon_color: |
  {% set level = states(entity) %}
  {% if level < '1' %}
    green
  {% elif level < '25' %}
    yellow
  {% elif level < '50' %}
    orange
  {% elif level < '75' %}
    deep-orange
  {% else %}
    red
  {% endif %}
multiline_secondary: false
fill_container: true
secondary: ''
card_mod:
  style: |
    ha-card {
      {% set level = states(config.entity) %}
      {% if level < '1' %}
        background: rgba(var(--rgb-green),0.30);
      {% elif level < '25' %}
        background: rgba(var(--rgb-yellow),0.30);
      {% elif level < '50' %}
        background: rgba(var(--rgb-orange),0.30);
      {% elif level < '75' %}
        background: rgba(var(--rgb-deep-orange),0.30);
      {% elif level == 'unknown' %}
        background: rgba(var(--rgb-secondary-text-color),0.30);
      {% else %}
        background: rgba(var(--rgb-red),0.5);
      {% endif %}
    }
 
Du kannst die entities doch nach Lust und Laune austauschen. Dann schrbeist du bei states(config.entity) eben deinen Ventilsensor rein.
 
Ja schon, aber dann reagiert ja die Farbänderung auch auf diese entities.
Mein Ziel ist ja:
Farbänderung bezieht sich auf Öffnungsgrad
Angezeigter Wert bezieht sich auf Temperatur
 
Das ist eine Templatekarte, da kannst du anzeigen lassen, was du willst, Türen, Lichter, Updates...
 
Ja schon, aber dann reagiert ja die Farbänderung auch auf diese entities.
Ist dem so? Wenn Du bei primary: Küche Thermostat {{ states(entity) }}% geöffnet stattdessen primary: Küche Temperatur: {{ states("sensor.kuche_ik_thermostat_temp") }}° (oder wie auch immer Du es genannt hast) reinschreibst, und den Rest nicht anrührst?
 
Hallo,
nun tauch noch ein Problem auf, ich hoffe ich kann es erklären.
YAML:
card_mod:
  style: |
    ha-card {
       {% set level = states(config.entity) %}
       {% if level < '600' %}
         background: rgba(var(--rgb-green),0.30);
       {% elif level < '1000' %}
         background: rgba(var(--rgb-yellow),0.30);
       {% elif level < '1500' %}
         background: rgba(var(--rgb-orange),0.30);
       {% elif level < '2000' %}
         background: rgba(var(--rgb-deep-orange),0.30);
       {% elif level == 'unknown' %}
         background: rgba(var(--rgb-secondary-text-color),0.30);
       {% else %}
         background: rgba(var(--rgb-red),0.5);
       {% endif %}
    }

Entity ist der CO2 Wert, er bewegt sich zwischen 400 und 3000.
Wenn der Wert unter 600 bleibt ist der Background grün,
bis 1000 rot, darüber nur noch grün. Hab das mit einem Helfer durchgespielt
und das Gefühl, immer wenn der Wert über eine Zehnerpotenz geht beginnt er wieder mit grün.
Also zwischen 0-10, 10-100, 100-1000, 1000-10000 ... funktioniert die Farbänderung, aber zB mein CO2 Wert
geht über zwei Zehnerpotenzen 100-1000-10000 (400-3000). Da funktioniert es nicht.
 
Zuletzt bearbeitet:
Sieht aus, als würdest Du Strings miteinander vergleichen, das funktioniert nicht wie wenn man Zahlen miteinander vergleicht.

Nimm mal die Anführungszeichen um die Zahlenwerte weg bei den Vergleichen, eventuell musst Du das set noch um | int ergänzen: {% set level = states(config.entity) | int %}
 
@ Nival
Super, das wars, mit int und ohne ' ' hat es funktioniert. Danke.
Als du das mit den Strings geschrieben hast, fiel es mir wie Schuppen von den Augen 👍
Danke
 
Prima.

Wird so natürlich mit "unknown" scheitern, wenn der Fall eintreten sollte - eventuell noch ne if-Schleife verwenden bezüglich is_number und den Part für unknown ins else bringen:
YAML:
{% set level = states(config.entity %}
{% if is_number(level) %}
  {% set level = level | int %}
  {% if level < 600 %}
    background: rgba(var(--rgb-green),0.30);
  {% elif level < 1000 %}
    background: rgba(var(--rgb-yellow),0.30);
  {% elif level < 1500 %}
    background: rgba(var(--rgb-orange),0.30);
  {% elif level < 2000 %}
    background: rgba(var(--rgb-deep-orange),0.30);
  {% else %}
    background: rgba(var(--rgb-red),0.5);
  {% endif %}
{% else %}
  background: rgba(var(--rgb-secondary-text-color),0.30);
{% endif %}
 
Korrekt, hatte bei mir natürlich nur nen String stehen zum testen und dann beim rüberkopieren nicht aufgepasst :D
 

Zurzeit aktive Besucher

Neueste Beiträge

Letzte Anleitungen

Statistik des Forums

Themen
5.439
Beiträge
53.749
Mitglieder
5.235
Neuestes Mitglied
MichaelS
Zurück
Oben