Ich habe mir einen kleinen Küchentimer gebastelt:
Dazu brauchte ich drei Helfer für die Minuten, Sekunden und den Timer sowie eine Dashboard-Karte:
type: custom:stack-in-card
cards:
- type: custom:button-card
entity: timer.kuchentimer
name: 🍳 Küchentimer
show_state: true
show_icon: true
tap_action:
action: none
styles:
card:
- height: 160px
- border-radius: 24px
- padding: 18px
grid:
- grid-template-areas: "\"i n\" \"i s\""
- grid-template-columns: 64px 1fr
- grid-template-rows: min-content 1fr
icon:
- width: 48px
- color: |
[[[
return entity.state === 'active'
? '#4CAF50'
: entity.state === 'paused'
? '#FF9800'
: '#9E9E9E';
]]]
name:
- font-size: 18px
- font-weight: 600
- align-self: end
state:
- font-size: 52px
- font-weight: 700
- align-self: start
- letter-spacing: 2px
state:
- value: active
styles:
card:
- background: rgba(76,175,80,0.12)
- value: paused
styles:
card:
- background: rgba(255,152,0,0.12)
- value: idle
styles:
card:
- background: rgba(120,120,120,0.08)
- type: entities
show_header_toggle: false
entities:
- entity: input_number.kuchentimer_minuten
name: Minuten
- entity: input_number.kuchentimer_sekunden
name: Sekunden
- type: grid
columns: 3
square: false
cards:
- type: custom:button-card
name: Start
icon: mdi:play
styles:
card:
- height: 70px
- border-radius: 14px
- background-color: rgba(76,175,80,0.15)
icon:
- color: "#4CAF50"
tap_action:
action: call-service
service: script.kuchentimer_starten
- type: custom:button-card
name: Pause
icon: mdi:pause
styles:
card:
- height: 70px
- border-radius: 14px
- background-color: rgba(255,152,0,0.15)
icon:
- color: "#FF9800"
tap_action:
action: call-service
service: timer.pause
target:
entity_id: timer.kuchentimer
- type: custom:button-card
name: Reset
icon: mdi:stop
styles:
card:
- height: 70px
- border-radius: 14px
- background-color: rgba(244,67,54,0.15)
icon:
- color: "#F44336"
tap_action:
action: call-service
service: timer.cancel
target:
entity_id: timer.kuchentimer
- type: grid
columns: 4
square: false
cards:
- type: custom:button-card
name: +1 Min
icon: mdi:plus-box-outline
styles:
card:
- height: 55px
- border-radius: 10px
tap_action:
action: call-service
service: input_number.set_value
data:
entity_id: input_number.kuchentimer_minuten
value: |
[[[
return Number(states['input_number.kuchentimer_minuten'].state) + 1;
]]]
- type: custom:button-card
name: +1 Sek
icon: mdi:plus-circle-outline
styles:
card:
- height: 55px
- border-radius: 10px
tap_action:
action: call-service
service: input_number.set_value
data:
entity_id: input_number.kuchentimer_sekunden
value: |
[[[
return Number(states['input_number.kuchentimer_sekunden'].state) + 1;
]]]
- type: custom:button-card
name: +5 Min
icon: mdi:plus-box
styles:
card:
- height: 55px
- border-radius: 10px
tap_action:
action: call-service
service: input_number.set_value
data:
entity_id: input_number.kuchentimer_minuten
value: |
[[[
return Number(states['input_number.kuchentimer_minuten'].state) + 5;
]]]
- type: custom:button-card
name: Clear
icon: mdi:refresh
styles:
card:
- height: 55px
- border-radius: 10px
tap_action:
action: multi-actions
actions:
- action: call-service
service: input_number.set_value
data:
entity_id: input_number.kuchentimer_minuten
value: 0
- action: call-service
service: input_number.set_value
data:
entity_id: input_number.kuchentimer_sekunden
value: 0
- action: call-service
service: timer.cancel
target:
entity_id: timer.kuchentimer
Beim Aussehen habe ich mir von der KI helfen lassen, die witzigerweise noch eine Benachrichtigung “Der Kuchen ist fertig!” vorgeschlagen hat, weil sie sich anscheinend durch den Umlaut in “Küchen” hat verwirren lassen.
Ich vermute, dass das Ganze auch einfacher bzw. eleganter ging, aber es funktioniert; die Spaghetti-Premiere hat eben gut geklappt
. Über eine Automation kriege ich beim Ablauf einen Alarm auf mein Handy:
alias: Benachrichtigung Küchentimer
description: ""
triggers:
- event_type: timer.finished
event_data:
entity_id: timer.kuchentimer
trigger: event
actions:
- data:
message: Der Küchentimer ist abgelaufen!
title: ⏰ Timer fertig
data:
priority: high
ttl: 0
channel: alarm_stream
action: notify.mobile_app_pixel_8
mode: single
