Add EcoVacs dashboard as YAML-mode

Convert storage-mode dashboard to dashboards/ecovacs.yaml. Preserves
all button-card templates, room queue buttons, conditional controls,
vacuum map, and settings panel exactly as configured in the UI.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 15:36:39 +02:00
parent 44c9af8678
commit b35c709650
2 changed files with 265 additions and 0 deletions
+258
View File
@@ -0,0 +1,258 @@
button_card_templates:
vacuum_service:
color: "var(--text-color)"
entity: vacuum.obi_wan_cleanobi
tap_action:
action: call-service
service_data:
entity_id: vacuum.obi_wan_cleanobi
lock:
enabled: "[[[ return variables.enabled ]]]\n"
exemptions: []
styles:
card:
- height: 80px
lock:
- color: var(--primary-text-color)
state:
- operator: template
value: "[[[ return variables.enabled ]]]\n"
styles:
card:
- color: var(--disabled-text-color)
vacuum_room:
color: "var(--text-color)"
variables:
lock_enabled: "[[[ return ['cleaning', 'paused'].includes(states['vacuum.obi_wan_cleanobi'].state) ]]]\n"
state:
- operator: template
value: "[[[ return variables.lock_enabled && entity.state == 0 ]]]\n"
styles:
card:
- color: var(--disabled-text-color)
- styles:
card:
- background-color: var(--primary-color)
operator: ">="
value: 1
styles:
card:
- font-size: 12px
grid:
- position: relative
custom_fields:
order:
- display: "[[[\n if (entity.state == \"0\")\n return \"none\";\n return \"block\";\n]]]\n"
- position: absolute
- left: 5%
- top: 5%
- height: 20px
- width: 20px
- font-size: 20px
- font-weight: bold
- line-height: 20px
custom_fields:
order: "[[[ return entity.state ]]]\n"
tap_action:
action: call-service
service: script.deepbot_room_queue
service_data:
queue: input_text.deebot_obi_wan_cleanobi_queue
lock:
enabled: "[[[ return variables.lock_enabled ]]]\n"
exemptions: []
views:
- title: Obi-Wan Cleanobi
cards:
- type: vertical-stack
cards:
- type: custom:vacuum-card
entity: vacuum.obi_wan_cleanobi
stats:
default:
- entity_id: sensor.obi_wan_cleanobi_main_brush_lifespan
unit: "%"
subtitle: Hauptbürste
- entity_id: sensor.obi_wan_cleanobi_side_brushes_lifespan
unit: "%"
subtitle: Seitenbürsten
- entity_id: sensor.obi_wan_cleanobi_filter_lifespan
unit: "%"
subtitle: Filter
cleaning:
- entity_id: sensor.obi_wan_cleanobi_area_cleaned
unit:
subtitle: Geputzte Fläche
- entity_id: sensor.obi_wan_cleanobi_cleaning_duration
unit: Minuten
subtitle: Reinigungsdauer
show_status: true
show_toolbar: false
compact_view: false
- type: custom:button-card
color: auto-no-temperature
name: Räume zum Putzen auswählen
styles:
card:
- font-size: 18px
- height: 30px
name:
- color: var(--primary-color)
- type: horizontal-stack
cards:
- type: custom:button-card
template: vacuum_room
entity: sensor.deebot_obi_wan_cleanobi_queue_wohnzimmer1
icon: mdi:sofa
name: Wohnzimmer
tap_action:
service_data:
room: wohnzimmer1
- type: custom:button-card
template: vacuum_room
entity: sensor.deebot_obi_wan_cleanobi_queue_kuche1
icon: mdi:stove
name: Küche
tap_action:
service_data:
room: kuche1
- type: custom:button-card
template: vacuum_room
entity: sensor.deebot_obi_wan_cleanobi_queue_flur1
icon: mdi:foot-print
name: Flur
tap_action:
service_data:
room: flur1
- type: horizontal-stack
cards:
- type: custom:button-card
template: vacuum_room
entity: sensor.deebot_obi_wan_cleanobi_queue_buro1
icon: mdi:desk
name: Büro
tap_action:
service_data:
room: buro1
- type: custom:button-card
template: vacuum_room
entity: sensor.deebot_obi_wan_cleanobi_queue_badezimmer1
icon: mdi:shower-head
name: Bad
tap_action:
service_data:
room: badezimmer1
- type: vertical-stack
title: Settings
cards:
- type: entities
entities:
- entity: switch.obi_wan_cleanobi_continuous_cleaning
- entity: select.obi_wan_cleanobi_water_flow_level
- entity: switch.obi_wan_cleanobi_clean_preference
- type: horizontal-stack
cards:
- type: conditional
conditions:
- entity: vacuum.obi_wan_cleanobi
state_not: cleaning
- entity: vacuum.obi_wan_cleanobi
state_not: paused
card:
type: custom:button-card
template: vacuum_service
icon: mdi:play
name: Start
tap_action:
action: call-service
service: script.deepbot_clean
variables:
enabled: "[[[ \n return ((!states['input_text.deebot_obi_wan_cleanobi_queue'].state || \n states['input_text.deebot_obi_wan_cleanobi_queue'].state.length === 0)\n && ['docked', 'idle', 'error', 'returning'].includes(entity.state))\n]]]\n"
- type: conditional
conditions:
- entity: vacuum.obi_wan_cleanobi
state: cleaning
card:
type: custom:button-card
color: auto
icon: mdi:pause
name: Pause
tap_action:
action: call-service
service: vacuum.pause
service_data:
entity_id: vacuum.obi_wan_cleanobi
styles:
card:
- height: 80px
- background-color: "var(-color)"
- type: conditional
conditions:
- entity: vacuum.obi_wan_cleanobi
state: paused
card:
type: custom:button-card
color: auto
icon: mdi:play-pause
name: Weiter
tap_action:
action: call-service
service: vacuum.start
service_data:
entity_id: vacuum.obi_wan_cleanobi
styles:
card:
- height: 80px
- background-color: "var(-color)"
- type: custom:button-card
template: vacuum_service
icon: mdi:stop
name: Stop
tap_action:
service: vacuum.stop
variables:
enabled: "[[[ \n return !(['cleaning', 'paused', 'returning'].includes(entity.state))\n]]]\n"
- type: horizontal-stack
cards:
- type: custom:button-card
template: vacuum_service
icon: mdi:home-map-marker
name: Zurück zur Ladestation
tap_action:
service: vacuum.return_to_base
variables:
enabled: "[[[ \n return ['docked', 'returning'].includes(entity.state)\n]]]\n"
- type: custom:button-card
color: auto
icon: mdi:map-marker
name: Lokalisieren
tap_action:
action: call-service
service: vacuum.locate
service_data:
entity_id: vacuum.obi_wan_cleanobi
styles:
card:
- height: 80px
- background-color: "var(-color)"
- type: picture-entity
entity: image.obi_wan_cleanobi_map
show_state: false
show_name: false
camera_view: auto
tap_action:
action: none
hold_action:
action: none