Guten Abend zusammen,
Ihr kennt das: Wenn man sich einmal an einer Idee festgebissen hat, will man davon nicht mehr loslassen. So geht es mir gerade beim Styling meines Dachboards.
Inspiriert durch das Soft UI Theme habe ich eine angepasste Version davon für mich erstellt. Die normalen Karten lassen sich auch ganz gut anpassen (z.T. über card-mod). Nur die Cover-Card macht mir echt Bauchschmerzen. Umgesetzt ist sie schon mal, auch mit schönen Effekten versehen, wenn sich die Rollade öffnet oder schließt. Spielerei, ich weiß, aber mir gefällts
Und so sieht sie aus:
Was ich ums Verrecken nicht hinbekomme, ist die drei Buttons dezidiert ansteuern zu können, um über sie die Cover-typischen Funktionen auszulösen.
Hier der Code der Karte:
type: custom:button-card
entity: cover.dachfensterrolladen_1
name: Dachfenster I
icon: mdi:window-shutter
size: 50px
show_state: true
show_label: true
tap_action:
action: none
styles:
card:
- width: 430px
- height: 125px
- padding: 10px
grid:
- grid-template-areas: "\"i l\" \"n n\" \"s s\""
- grid-template-columns: 165px 250px
- grid-template-rows: 50px 30px 16px
- gap: 3px
img_cell:
- justify-content: start
- align-self: start
- text-align: start
- margin: 0px 1px 1px 10px
label:
- width: 220px
- height: 106px
- justify-content: start
- align-self: start
- text-align: start
- font-size: 50px
- padding: 0px 0px 0px 0px
name:
- justify-self: start
- align-self: center
- padding: 0px 1px 1px 10px
- font-size: 20px
state:
- justify-self: start
- align-self: center
- padding: 0px 1px 1px 10px
- font-size: 14px
label: >
<div style="display: flex; justify-content: space-evenly; align-items: center;
width: 100%; height: 100%;">
<button style="width: 55px; height: 55px; margin: 10px; border: 1px solid var(--button-border-color); border-radius: 50%; background: linear-gradient(145deg, #191919, #1e1e1e); color: var(--button-text-color); cursor: pointer; box-shadow: 5px 5px 6px #111111, -5px -5px 6px #272727;"
tap-action='{"action": "call-service", "service": "cover.open_cover", "service_data": {"entity_id": "cover.dachfensterrolladen_1"}}'>
<ha-icon icon="mdi:arrow-up" style="width: 24px; height: 24px; color: white;"></ha-icon>
</button>
<button style="width: 55px; height: 55px; margin: 10px; border: 1px solid var(--button-border-color); border-radius: 50%; background: linear-gradient(145deg, #191919, #1e1e1e); color: var(--button-text-color); cursor: pointer; box-shadow: 5px 5px 6px #111111, -5px -5px 6px #272727;"
tap-action='{"action": "call-service", "service": "cover.stop_cover", "service_data": {"entity_id": "cover.dachfensterrolladen_1"}}'>
<ha-icon icon="mdi:pause" style="width: 24px; height: 24px; color: white;"></ha-icon>
</button>
<button style="width: 55px; height: 55px; margin: 10px; border: 1px solid var(--button-border-color); border-radius: 50%; background: linear-gradient(145deg, #191919, #1e1e1e); color: var(--button-text-color); cursor: pointer; box-shadow: 5px 5px 6px #111111, -5px -5px 6px #272727;"
tap-action='{"action": "call-service", "service": "cover.close_cover", "service_data": {"entity_id": "cover.dachfensterrolladen_1"}}'>
<ha-icon icon="mdi:arrow-down" style="width: 24px; height: 24px; color: white;"></ha-icon>
</button>
</div>
state:
- value: open
styles:
card:
- border-style: solid
- border-width: 0px
- border-color: var(--border-active-color)
- box-shadow: >-
var(--box-active-glow), var(--soft-ui-button-up),
var(--soft-ui-frame-up)
- background: var(--ha-card-background-pressed)
- animation: glow-once 2s 1
icon:
- filter: drop-shadow(0 0 0.3rem rgb(14 154 182 / 95%))
- color: var(--icon-open-color)
name:
- color: var(--name-open-color)
state:
- color: var(--state-open-color)
- opacity: 0.8
- value: opening
styles:
card:
- box-shadow: var(--soft-ui-button-up), var(--soft-ui-frame-up)
- box-shadow: >-
var(--box-active-glow), var(--soft-ui-button-up),
var(--soft-ui-frame-up)
- background: var(--ha-card-background-pressed)
- animation: glow-pulse 2s infinite
icon:
- color: var(--icon-opening-color)
name:
- color: var(--name-opening-color)
state:
- color: var(--state-opening-color)
- opacity: 0.8
- value: closing
styles:
card:
- box-shadow: var(--soft-ui-button-up), var(--soft-ui-frame-up)
- box-shadow: >-
var(--box-active-glow), var(--soft-ui-button-up),
var(--soft-ui-frame-up)
- background: var(--ha-card-background-pressed)
- animation: glow-pulse 2s infinite
icon:
- color: var(--icon-closing-color)
name:
- color: var(--name-closing-color)
state:
- color: var(--state-closing-color)
- opacity: 0.8
- value: closed
styles:
card:
- box-shadow: var(--soft-ui-button-up), var(--soft-ui-frame-up)
- background: var(--ha-card-background-pressed)
- animation: glow-once 2s 1
icon:
- color: var(--icon-closed-color)
name:
- color: var(--name-closed-color)
state:
- color: var(--state-closed-color)
- opacity: 0.8
- value: unavailable
styles:
card:
- box-shadow: var(--soft-ui-button-up), var(--soft-ui-frame-up)
- box-shadow: >-
var(--box-active-glow), var(--soft-ui-button-up),
var(--soft-ui-frame-up)
- background: var(--ha-card-background-pressed)
- animation: red-glow-pulse 2s infinite
icon:
- color: var(--icon-unavailable-color)
name:
- color: var(--name-unavailable-color)
state:
- color: var(--state-unavailable-color)
- opacity: 0.8
card_mod:
style: |
@keyframes glow-pulse {
0% {
box-shadow: 0 0 10px #8af0ff;
}
50% {
box-shadow: 0 0 20px #8af0ff;
}
100% {
box-shadow: 0 0 10px #8af0ff;
}
}
@keyframes glow-once {
0% {
box-shadow: 0 0 0 #0fff52;
}
50% {
box-shadow: 0 0 20px #0fff52;
}
100% {
box-shadow: 0 0 0 #0fff52;
}
}
@keyframes red-glow-pulse {
0% {
box-shadow: 0 0 10px rgba(255, 0, 0, 0.5);
}
50% {
box-shadow: 0 0 20px rgba(255, 0, 0, 0.8);
}
100% {
box-shadow: 0 0 10px rgba(255, 0, 0, 0.5);
}
}
Hat jemand eine Idee, wo ich falsch abgebogen bin?
Viele Grüße
Martin