Bubble-Card einstellen ab welchen Wert Farbänderung stattfindet

Finde Bubble-Cards für mein “Übersichts-Dashboard” genial. Habe allerdings noch nicht herrausgefunden wie ich den Wert verändern kann, ab dem sich die Farbe der “Bubble” verändert. ZB. ein Gerät (Heizung) verbraucht im Standby 6 Watt und wenn es arbeitet bedeutend mehr. Durch den Standby- Verbrauch ist die “Bubble” aber ständig blau gefärbt.

Möchte aber in der Übersicht sofort sehen, daß das Gerät arbeitet, also mehr Strom verbraucht als im Standby. Hat da jemand ein Tip für mich?

Danke schon mal.

Du hast mehrere Möglichkeiten:

  1. Du kannst in der Bubble, im Bereich “Styling Options” CSS und JavaScript Code hinterlassen.

Ein einfaches Beispiel wäre zum Beispiel für eine Light Entität: (ich kommentiere mal was wofür ist)

ha-card {
/stellt die Akzentfarbe ein */
  --bubble-accent-color: yellow;
/* stellt die Hintergrundfarbe der bubble ein */
  --bubble-main-background-color: gray;
/* stellt den Hintergrund des Icon Kreises ein. Status ON andere Farbe */
  --bubble-button-icon-background-color: ${
      state === 'on' ? 'lemonchiffon' :
      'silver'
  } !important;
}
/* stellt die Farbe des Icons je nach zustand ein */
.bubble-icon {
  color: ${
      state === 'on' ? 'rgba(255, 157, 0, 1)' :
      '#929292'} !important;
  opacity: 1 !important;
}

Die Farben können nach Geschmack gewählt werden. HEX, RGBA oder Farbnamen ist natürlich egal. (ist nur ein Beispiel)

  1. das oben gezeigte kann in eigene Module ausgelagert werden, damit man nicht in jeder Bubble immer wieder denselben Code setzen muss.

In der Bubble-Card Doku findest du alle nötigen Infos dazu:

  1. oder,… du suchst dir im Module Store ein für dich interessantes Modul aus und installierst es dir dazu. Hier findest du dann auch GUIs die dir die Eingabe eventuell erleichtern können

Vielen Dank, hast Dir ja viel Mühe gemacht. Habe den Code probehalber eingefügt. Aber wo gebe ich denn den Wert ein, ab dem sich die Farbe des Icons ändern soll?

Das Ganze funktioniert immer nach demselben Muster.

ha-card {
  --bubble-main-background-color: ${
      state < 10 ? 'Farbe' :
      state < 20 ? 'Farbe' :
      state <= 30 ? 'Farbe' :
      state >= 40 ? 'Farbe' :
      state === 70 ? 'Farbe' :
      'Sonst Farbe'
  } !important;
}

Welche Zustände deine Entität hat (als String oder Fließkommazahl) kann man ja nicht wissen. Deshalb das Beispiel mit einem Licht und den Zuständen on oder off. Welche Operatoren du verwendest, solltest du ja analog herleiten können. Wenn deine Entität Zahelnwerte als zustand hat, dann wird das obere Beispiel funktionieren. In der Doku findest du auch einige Beispiele.

Wenn du solche individuellen Anpassung machen möchtest, und keine Ahnung von CSS und JS hast, solltest du dein Wissen erweitern. Oder eventuell die Module ausprobieren, Oder du musst mundgerechte Lösungen anfragen, dann solltest du aber auch detailiertere Beispiele liefern, auf die man aufsetzen kann.

Danke, das ist doch schon mal ein Hinweis wie das gehen könnte. Wie gesagt, es soll nur ein Übersichts-Dashboard sein, womit man auf einen Blick sehen kann welche Geräte eingeschaltet sind usw. Ohne großen Schnickschnack ,das kommt vielleicht später :wink: .

Beispiel : die Gartenpumpe ist ja meist aus, der Leistungswert des vorgeschaltetem Shellys in dem Icon wäre dann null und die Icon-Farbe schwarz. Wenn sie arbeitet ist der Leistungswert ca. 800 Watt, dann färbt sich das Icon blau. So ist es von mir gewünscht, die Kartenfarbe soll sich dabei nicht verändern .

Nun ist es aber leider so , daß durch die verbaute Elekrtronik der Wert nicht auf null geht sondern ständig 6 Watt verbraucht werden. Dadurch ist das Icon ständig blau. Suchte also nach einer einfachen Möglichkeit, daß sich das Icon erst bei Leistungswert über diesen 6 Watt einfärbt.

Bin nicht so der große Programmierer und schon stolz HA überhaut bis hierher zu laufen bekommen zu haben. :wink: Danke für deine Geduld mit mir.

type: custom:bubble-card
card_type: button
button_type: name
entity: sensor.gartenpumpe_power
sub_button:
  - entity: sensor.gartenpumpe_power
    show_attribute: true
    show_state: true
button_action:
  tap_action:
    action: none
tap_action:
  action: none
grid_options:
  columns: 12
  rows: 1
show_icon: false
force_icon: true
show_state: false
scrolling_effect: true
show_name: true
name: Gartenpumpe
icon: mdi:fan
styles: ""

Bild_2025-10-14_143342481

Also den kleinen Bereich , der hier blau ist, meine ich. Wie auch immer er genannt wird (Icon ?)

Das sollte kein Problem sein.

Da dürfte das schon reichen in deiner Bubble und Styling Options:

.bubble-sub-button {
  background-color: ${
    state > 6.0 ? 'blue' :
    'black'
  } !important;
}

Der Leistungswert steht jetzt wie du siehst auf größer 6.0 Watt. Wenn du den Wert anders haben möchtest einfach austauschen. Wenn der Filter nicht zutrifft, dann wird der SubButton Schwarz gefärbt.

Prima, genau was ich gesucht habe. Vielen Dank :blush:

Doch noch eine Frage: wie mache ich das bei mehreren Sub-Buttons ? Nach dem Code-einfügen ändert sich die Farbe aller Buttons. Geht das auch für einzelne Buttons ?

type: custom:bubble-card
card_type: button
button_type: name
name: Venus
icon: mdi:battery-plus-variant
sub_button:
  - entity: sensor.lilygo_venus_1_ac_power
    show_state: true
  - entity: sensor.lilygo_venus_1_battery_state_of_charge
    show_state: true
  - entity: sensor.lilygo_venus_2_ac_power
    show_state: true
  - entity: sensor.lilygo_venus_2_battery_state_of_charge
    show_state: true
  - entity: sensor.lilygo_venus_3_ac_power
    show_state: true
  - entity: sensor.lilygo_venus_3_battery_state_of_charge
    show_state: true
rows: "1"
card_layout: large-2-rows
grid_options:
  columns: 9
  rows: 1

Du kannst jeden Sub-Button einzeln direkt ansprechen.

z.B. so:

.bubble-sub-button-1 {
  background-color: ${
    state > 6.0 ? 'blue' :
    'black'
  } !important;
}

.bubble-sub-button-2 {
  background-color: ${
    state > 100.0 ? 'blue' :
    'black'
  } !important;
}

.bubble-sub-button-3 {
  background-color: ${
    state < 88 ? 'blue' :
    'black'
  } !important;
}

usw…

Es wird dabei die Nummer des angelegten Sub-Buttons verwendet.

Prima, funktioniert. Danke

Da häng ich mich mal mit rein :wink:

Wie wird der „State“ definiert ?

Ich hätte eine float variable „Sensor.min_temp“

Bei < 19grad soll die Farbe Blau sein, sonst grau

Kleiner Tipp von meiner Seite …
Nimm die “rows” bei den grid-options raus. Die “rows” nur über die Bubble-Card direkt konfigurieren. Das verhindert die Fehlermeldung in der Bubble-Card-UI.

1 „Gefällt mir“

Ich glaube ich muss mein Problem genauer beschreiben :wink:

Ich hab eine Bubble Card welche zu einem einzigen Symbol reduziert ist..

Kreisumrandung mit Symbol in der Mitte:

Ziel ist es die Außenumrandung als Indikator für minimale Temperatur im Haus und das Symbol für maximale Temperatur im Haus zu haben. Beim Klick auf das Icon soll dann die Registerkarte Temperatur geöffnet werden, in der ich alle Details sehen kann ..

Dank der Hilfe hier kann ich den Background in Abhängigkeit der Entität (sensor.min_thermostat_temp) einfärben (Achtung sobald der erste “State” erfüllt ist, wird die Farbe gesetzt .. sprich wären die Bedingungen andersrum.. dann bleibt es bei lightblue, auch wenn die Temp. unter 18 rutscht)

Nun würde ich aber gerne die Farbe des Icons in Abhängigkeit einer anderen Entität haben, nämlich “max_thermostat_temp”. Geht das ?

type: custom:bubble-card
card_type: button
card_layout: normal
entity: sensor.min_thermostat_temp
button_type: switch
name: ""
show_icon: true
icon: mdi:thermometer
scrolling_effect: false
show_name: false
grid_options:
  columns: 2
  rows: 1
styles: |
  .bubble-button-background {
    opacity: 1 !important;
    background-color: ${
      state < 18.0 ? 'darkblue' :
      state < 19.5 ? 'lightblue' :
      'lightgrey' } !important;
  }
  .bubble-icon {
    opacity: 1 !important;
    color: ${
      state === 'aus' ? 'orangered' :'grey'} !important;
  }
  .bubble-sub-button{
    background-color: ${state === 'on' ? 'orange' :'orange'} !important;
  }
  .bubble-button-background {
    height: 50px !important;
    width: 50px !important;
  }
  .bubble-button-card-container {
    background: white;
  }
tap_action:
  navigation_path: /dashboard-temperature
  action: navigate
double_tap_action:
  action: none
button_action:
  tap_action: {}
  double_tap_action: {}
hold_action:
  action: none


Hi,

das geht durchaus.

Wenn du eine andere Entität ansprechen willst als in der Bubble als Entität verwendet wird, dann musst du die direkt ansprechen. $state bezieht sicht immer auf die verwendete Entität:

zum Beispiel so könntest du deine Entität ansprechen:

.bubble-icon {
    opacity: 1 !important;
    color: ${hass.states['Deine_Entität'].state === 'aus' ? 'orangered' :'grey'} !important;
}

prima … das klappt :slight_smile:

Vielen Dank

(damit könnte / müsste ich mal mein Dashboard aufräumen… ich hab das bislang immer über „Sichtbarkeit“ gelöst .. geht ..ist aber „Murks“)

Ich komme nicht weiter

Ich möchte aus einer Climate-Entität (Thermostat homematic IP) das Attribut „temperature“ nehmen um die Farbe des Sub-Buttons zu definieren (Sub-Button 2) . Wenn Soll-Temp (Attribute “temperature”) < 21 dann …

type: custom:bubble-card
card_type: climate
card_layout: normal
button_type: slider
sub_button:
  - entity: climate.hometaic_ip_access_point_kuche
    icon: mdi:swi
    name: ""
    show_background: false
    background-clor: green ! important;
    show_state: false
    select_attribute: preset_modes
    show_attribute: true
    attribute: preset_mode
    show_icon: false
  - entity: climate.hometaic_ip_access_point_kuche
    show_state: false
    show_attribute: true
    attribute: current_temperature
    show_icon: false
    state_background: false
    show_background: false
name: Küche Test
icon: mdi:pot-steam-outline
scrolling_effect: false
styles: |
  .bubble-icon-container {
    opacity: 1 !important;
    background: ${
      hass.states['binary_sensor.hometaic_ip_access_point_fenster_und_turkontakt_3'].state === 'off' ? 'white' :
      'orange'} !important;
   }
  .bubble-sub-button-1 {
    background-color: white !important;
  }
  .bubble-icon {
    opacity: 1 !important;
    color: ${state === 'aus' ? 'white' :'grey'} !important;
  }
  .bubble-sub-button-2 {
    background-color: ${
      state_attr('climate.hometaic_ip_access_point_kuche', 'temperature') <21 ? 'lightblue' :
      'pink' } !important;
  }
  .bubble-sub-button-3 {
  background-color: white !important
  }
entity: climate.hometaic_ip_access_point_kuche

Du kannst weder YAML noch JINJA 2 in der Karte (Styles) verwenden. Nur CSS und JavaScript geht… Das was du da verwendest ist eher Jinja2 :slight_smile:

Versuchs mal so:

.bubble-sub-button-2 {
    background-color: ${
      hass.states['climate.hometaic_ip_access_point_kuche'].attributes.temperature < 21 ? 'lightblue' :
      'pink' } !important;
  }

Du musst die Entität eigentlich nicht nochmal aufführen, wenn es dieselbe ist, wie die in der Karte verwendete. Dabei reicht [entity]. Macht aber auch nicht kaputt

btw… heißt es wirklich hometaic_ip_point_kuche?

1 „Gefällt mir“

Prima das funktioniert :slight_smile:

Danke !!

Kann ich eigentlich auch eine Abfrage

Wenn Bedingung 1 (Fensterkontakt zu) UND Bedingung 2 dann Farbe xy machen ?

Und ja der Sensor heist in HA leider so .. liegt daran, dass ich den in der Homeatic App als Küche angelegt habe. In der HA-Integration macht er dann den sensor draus …

Kannst du auch machen… ist dann aber ein State. Du kannst soviele Eventualitäten einbauen wie die Entität Stati hat.

.CSS-KLASSE {
  background-color: ${
    state === 'open' ? 'blue' :
    state === 'closed' ? 'green' :
    state === 'status3' ? 'red' :
    state === 'status4' ? 'purple' :
    'black'
  } !important;
}

state funktioniert nur wenn du die Hauptentität der Karte nimmst. Sonst musst du die mittels

hass.states['ENTITÄT'].state

direkt ansprechen.

Bei nem Attribut der Hauptentität reicht zum Beispiel auch

hass.states[entity].attributes.GEWÜNSCHTES_ATTRIBUT

(entity) ist hier kein Platzhalter

Edit: Eventuell falsch verstanden..

Soweit ich das verstehe ist das keine “oder” Verknüpfung, sondern eine if, elif, elif, elif, else…

Verknüpfung mit UND ist im JS “&&”. Oder ist “||“

Ich weiß nicht ob das in der Bubble-Card erlaubt ist. Das geht z.B. in der Button-Card.

.CSS-KLASSE {
  background-color: ${
    state === 'open' ? 'blue' && state === 'closed' ? 'blue' :
    'black'
  } !important;
}

oder

.CSS-KLASSE {
  background-color: ${
    state === 'open' && state === 'closed' ? 'blue' :
    'black'
  } !important;
}

Keine Ahnung wie der Syntax da aussehen müsste. Hab ich noch nicht benötigt. Versuchs doch mal…

1 „Gefällt mir“

Danke.. damit muss ich in Ruhe mal rumprobieren, da ich mit meiner Lösung so noch nicht zufrieden bin. Die States untereinander sind aus meiner Meinung auch if, elsif .. d.h. sobald ein Kriterium erfüllt ist, dann wird der Wert gesetzt, fertig mit der Abfrage :slight_smile:

Es ergibt sich aber eine weitere Frage ..

Mit dem YAML Code unten ergibt sich

  • Fenster ist zu, daher ist die bubble um den Kochtopf weiß (nicht orange)
  • Soll Temperatur (18°) ist kleiner als Warnwert (19.5°), daher ist der Topf Blau (nicht grau oder dunkelblau)
  • Die “Ist Temperatur” ist mit 19.6°C über dem Warnwert (19.5), daher ist das Bubble weiß .. nicht lightblue

So weit so gut (oder schlecht)

Ich würde gerne den Sub-Button 3 abhängig vom Sollwert einfärben. Geht aber nicht .. Sub Button 3 ist rechts. Soll-Temperatur in der Mitte und Verstellung rechts / links ..

=> hat jemand es geschafft diesen (!) Sub-Button einzufärben ?

type: custom:bubble-card
card_type: climate
card_layout: normal
button_type: slider
sub_button:
  - entity: climate.hometaic_ip_access_point_kuche
    icon: mdi:swi
    name: ""
    show_background: false
    background-clor: green ! important;
    show_state: false
    select_attribute: preset_modes
    show_attribute: true
    attribute: preset_mode
    show_icon: false
  - entity: climate.hometaic_ip_access_point_kuche
    show_state: false
    show_attribute: true
    attribute: current_temperature
    show_icon: false
    state_background: false
    show_background: false
name: Küche
icon: mdi:pot-steam-outline
scrolling_effect: false
styles: |
  .bubble-icon-container {
    opacity: 1 !important;
    background: ${
      hass.states['binary_sensor.hometaic_ip_access_point_fenster_und_turkontakt_3'].state === 'off' ? 'white' :
      'orange'} !important;
   }
  .bubble-sub-button-1 {
    background-color: white !important;
  }
  .bubble-icon {
    opacity:1 !important;
    color: ${
      hass.states['climate.hometaic_ip_access_point_kuche'].attributes.temperature > hass.states['input_number.room_max_limit'].state ? 'red' :
      hass.states['climate.hometaic_ip_access_point_kuche'].attributes.temperature > hass.states['input_number.room_max_warning'].state ? 'orange' :
      hass.states['climate.hometaic_ip_access_point_kuche'].attributes.temperature < hass.states['input_number.room_min_limit'].state ? 'darkblue' :
      hass.states['climate.hometaic_ip_access_point_kuche'].attributes.temperature < hass.states['input_number.room_min_warning'].state ? 'blue' :
      'grey'} !important;
  }
  .bubble-sub-button-2 {
    background-color: ${
      hass.states['climate.hometaic_ip_access_point_kuche'].attributes.current_temperature < hass.states['input_number.room_min_warning'].state ? 'lightblue' :
      hass.states['climate.hometaic_ip_access_point_kuche'].attributes.current_temperature > hass.states['input_number.room_max_limit'].state ? 'orange' :
      'white' } !important;
  }
  .bubble-sub-button-3 {
    background-color: green !important
  }
entity: climate.hometaic_ip_access_point_kuche