title: Overblik path: home icon: mdi:home cards: # 🌤️ Vejr + dato + sol - type: vertical-stack cards: - type: weather-forecast entity: weather.norgardsvej show_forecast: true - type: glance columns: 5 show_icon: true show_name: true show_state: true entities: - entity: sensor.dato name: Dato icon: mdi:calendar - entity: sensor.solopgang name: Sol op icon: mdi:weather-sunset-up - entity: sensor.solnedgang name: Sol ned icon: mdi:weather-sunset-down - entity: binary_sensor.arbejdsdag name: I dag icon: mdi:briefcase - entity: binary_sensor.arbejdsdagimorgen name: I morgen icon: mdi:briefcase-outline # 👨👩👧👦 Familien – tryk for at toggle syg/rask - type: grid columns: 4 square: false cards: - type: custom:button-card entity: person.daniel_schusler_dethlefsen name: Daniel show_name: true show_state: false show_label: true show_icon: false show_entity_picture: true label: > [[[ const s = entity.state; const sick = states['input_select.daniel_status'] && states['input_select.daniel_status'].state === 'syg'; const loc = s === 'home' ? 'Hjemme' : s === 'not_home' ? 'Ude' : s; return sick ? loc + ' · Syg' : loc; ]]] styles: card: - padding: 8px 4px - border: > [[[ return states['input_select.daniel_status'] && states['input_select.daniel_status'].state === 'syg' ? '2px solid rgba(220,50,50,0.8)' : '2px solid transparent'; ]]] - border-radius: 12px entity_picture: - width: 60px - height: 60px - border-radius: 50% - object-fit: cover - filter: > [[[ return states['input_select.daniel_status'] && states['input_select.daniel_status'].state === 'syg' ? 'grayscale(100%)' : 'none'; ]]] name: - font-size: 12px - font-weight: 600 - padding-top: 6px - color: > [[[ return states['input_select.daniel_status'] && states['input_select.daniel_status'].state === 'syg' ? 'rgb(220,50,50)' : 'var(--primary-text-color)'; ]]] label: - font-size: 10px - color: var(--secondary-text-color) - padding-bottom: 2px tap_action: action: call-service service: input_select.select_option service_data: entity_id: input_select.daniel_status option: > [[[ return states['input_select.daniel_status'] && states['input_select.daniel_status'].state === 'syg' ? 'hjemme' : 'syg'; ]]] hold_action: action: more-info entity: person.daniel_schusler_dethlefsen - type: custom:button-card entity: person.claus_dethlefsen name: Claus show_name: true show_state: false show_label: true show_icon: false show_entity_picture: true label: > [[[ const s = entity.state; const sick = states['input_select.claus_status'] && states['input_select.claus_status'].state === 'syg'; const loc = s === 'home' ? 'Hjemme' : s === 'not_home' ? 'Ude' : s; return sick ? loc + ' · Syg' : loc; ]]] styles: card: - padding: 8px 4px - border: > [[[ return states['input_select.claus_status'] && states['input_select.claus_status'].state === 'syg' ? '2px solid rgba(220,50,50,0.8)' : '2px solid transparent'; ]]] - border-radius: 12px entity_picture: - width: 60px - height: 60px - border-radius: 50% - object-fit: cover - filter: > [[[ return states['input_select.claus_status'] && states['input_select.claus_status'].state === 'syg' ? 'grayscale(100%)' : 'none'; ]]] name: - font-size: 12px - font-weight: 600 - padding-top: 6px - color: > [[[ return states['input_select.claus_status'] && states['input_select.claus_status'].state === 'syg' ? 'rgb(220,50,50)' : 'var(--primary-text-color)'; ]]] label: - font-size: 10px - color: var(--secondary-text-color) - padding-bottom: 2px tap_action: action: call-service service: input_select.select_option service_data: entity_id: input_select.claus_status option: > [[[ return states['input_select.claus_status'] && states['input_select.claus_status'].state === 'syg' ? 'hjemme' : 'syg'; ]]] hold_action: action: more-info entity: person.claus_dethlefsen - type: custom:button-card entity: person.anne_schusler_dethlefsen name: Anne show_name: true show_state: false show_label: true show_icon: false show_entity_picture: true label: > [[[ const s = entity.state; const sick = states['input_select.anne_status'] && states['input_select.anne_status'].state === 'syg'; const loc = s === 'home' ? 'Hjemme' : s === 'not_home' ? 'Ude' : s; return sick ? loc + ' · Syg' : loc; ]]] styles: card: - padding: 8px 4px - border: > [[[ return states['input_select.anne_status'] && states['input_select.anne_status'].state === 'syg' ? '2px solid rgba(220,50,50,0.8)' : '2px solid transparent'; ]]] - border-radius: 12px entity_picture: - width: 60px - height: 60px - border-radius: 50% - object-fit: cover - filter: > [[[ return states['input_select.anne_status'] && states['input_select.anne_status'].state === 'syg' ? 'grayscale(100%)' : 'none'; ]]] name: - font-size: 12px - font-weight: 600 - padding-top: 6px - color: > [[[ return states['input_select.anne_status'] && states['input_select.anne_status'].state === 'syg' ? 'rgb(220,50,50)' : 'var(--primary-text-color)'; ]]] label: - font-size: 10px - color: var(--secondary-text-color) - padding-bottom: 2px tap_action: action: call-service service: input_select.select_option service_data: entity_id: input_select.anne_status option: > [[[ return states['input_select.anne_status'] && states['input_select.anne_status'].state === 'syg' ? 'hjemme' : 'syg'; ]]] hold_action: action: more-info entity: person.anne_schusler_dethlefsen - type: custom:button-card entity: person.andreas_schusler_dethlefsen name: Andreas show_name: true show_state: false show_label: true show_icon: false show_entity_picture: true label: > [[[ const s = entity.state; const sick = states['input_select.andreas_status'] && states['input_select.andreas_status'].state === 'syg'; const loc = s === 'home' ? 'Hjemme' : s === 'not_home' ? 'Ude' : s; return sick ? loc + ' · Syg' : loc; ]]] styles: card: - padding: 8px 4px - border: > [[[ return states['input_select.andreas_status'] && states['input_select.andreas_status'].state === 'syg' ? '2px solid rgba(220,50,50,0.8)' : '2px solid transparent'; ]]] - border-radius: 12px entity_picture: - width: 60px - height: 60px - border-radius: 50% - object-fit: cover - filter: > [[[ return states['input_select.andreas_status'] && states['input_select.andreas_status'].state === 'syg' ? 'grayscale(100%)' : 'none'; ]]] name: - font-size: 12px - font-weight: 600 - padding-top: 6px - color: > [[[ return states['input_select.andreas_status'] && states['input_select.andreas_status'].state === 'syg' ? 'rgb(220,50,50)' : 'var(--primary-text-color)'; ]]] label: - font-size: 10px - color: var(--secondary-text-color) - padding-bottom: 2px tap_action: action: call-service service: input_select.select_option service_data: entity_id: input_select.andreas_status option: > [[[ return states['input_select.andreas_status'] && states['input_select.andreas_status'].state === 'syg' ? 'hjemme' : 'syg'; ]]] hold_action: action: more-info entity: person.andreas_schusler_dethlefsen # 🪟 Gardiner - type: grid columns: 6 square: false cards: - type: button name: "" icon: mdi:blinds-open tap_action: action: call-service service: scene.turn_on target: entity_id: scene.alle_lidt_nede - type: button name: "" icon: mdi:blinds tap_action: action: call-service service: scene.turn_on target: entity_id: scene.n22_alt_ned - type: button name: "" icon: mdi:blinds-horizontal tap_action: action: call-service service: scene.turn_on target: entity_id: scene.morgen - type: button name: "" icon: mdi:window-shutter tap_action: action: call-service service: scene.turn_on target: entity_id: scene.syd_ned_venstre_halvt_ned - type: button name: "" icon: mdi:television-ambient-light tap_action: action: call-service service: scene.turn_on target: entity_id: scene.n22_tv - type: button name: "" icon: mdi:silverware-fork-knife tap_action: action: call-service service: scene.turn_on target: entity_id: scene.n22_spisetid # 🧹 Støvsuger - type: horizontal-stack cards: - type: custom:button-card entity: sensor.roborock_last_clean_end_compact show_icon: false show_name: true show_state: true name: Sidst kørt tap_action: action: none hold_action: action: none styles: card: - padding: 8px name: - font-size: 11px - color: var(--secondary-text-color) - padding-bottom: 4px state: - white-space: normal - word-break: break-word - line-height: 1.2 - font-size: 13px - text-align: center - type: button name: Køkken icon: mdi:floor-plan tap_action: action: call-service service: button.press target: entity_id: button.roborock_s8_pro_ultra_kokken_bryggers - type: button name: Syd icon: mdi:floor-plan tap_action: action: call-service service: button.press target: entity_id: button.roborock_s8_pro_ultra_syd - type: button name: Mop icon: mdi:floor-plan tap_action: action: call-service service: button.press target: entity_id: button.roborock_s8_pro_ultra_vac_followed_by_mop - type: button name: Gå til dock icon: mdi:home-import-outline tap_action: action: call-service service: vacuum.return_to_base target: entity_id: vacuum.roborock_s8_pro_ultra # 🏎️ Plæneklipper - type: horizontal-stack cards: - type: custom:button-card entity: input_datetime.ploeneklipper_sidst_koert show_icon: false show_name: true show_state: true name: Sidst klippet tap_action: action: none styles: card: - padding: 8px name: - font-size: 11px - color: var(--secondary-text-color) - padding-bottom: 4px state: - white-space: normal - word-break: break-word - line-height: 1.2 - font-size: 13px - text-align: center - type: button name: Klip icon: mdi:robot-mower tap_action: action: call-service service: lawn_mower.start_mowing target: entity_id: lawn_mower.husqvarna_automower - type: button name: Stop icon: mdi:home-import-outline tap_action: action: call-service service: lawn_mower.dock target: entity_id: lawn_mower.husqvarna_automower # � Vanding - type: horizontal-stack cards: - type: vertical-stack cards: - type: custom:button-card entity: sensor.vanding_sidst_vandet_compact show_icon: false show_name: true show_state: true name: Sidst vandet tap_action: action: none hold_action: action: none styles: card: - padding: 8px name: - font-size: 11px - color: var(--secondary-text-color) - padding-bottom: 4px state: - white-space: normal - word-break: break-word - line-height: 1.2 - font-size: 13px - text-align: center - type: button name: Smart vanding icon: mdi:sprinkler-variant entity: script.vanding_hojbed_skiftevis tap_action: action: toggle - type: custom:button-card entity: sensor.vanding_liter_i_dag_total show_icon: false show_name: false show_state: false tap_action: action: none hold_action: action: none custom_fields: info: | [[[ const n = (id) => { const s = states[id]; return s ? Math.round(parseFloat(s.state) || 0) : 0; }; const total = n('sensor.vanding_liter_i_dag_total'); const rows = [ ['Ærter', n('sensor.vanding_liter_hb1')], ['Kartofler', n('sensor.vanding_liter_hb2')], ['Rabarber', n('sensor.vanding_liter_hb3')], ['Drivhus', n('sensor.vanding_liter_drivhus')], ['Kapillær', n('sensor.vanding_liter_kapillaer')], ]; const list = rows.map(r => `