diff --git a/config/README.md b/config/README.md
index ec5a1656..f303f98a 100755
--- a/config/README.md
+++ b/config/README.md
@@ -21,7 +21,7 @@ Live view of the `config/` directory my production Home Assistant instance loads
### Quick navigation
- You are here: `config/` (configuration root)
- [Repo overview](../README.md) | [Blog](https://www.vcloudinfo.com) | [Issues](https://github.com/CCOSTAN/Home-AssistantConfig/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) | [Diagram](config/www/custom_ui/floorplan/images/branding/Bear-Stone-Docker-Diagram.jpg) | [YouTube](https://youtube.com/vCloudInfo)
-- Directory highlights: [packages](packages), [automation](automation), [script](script), [scene](scene), [templates](templates), [www](www), [custom_components](custom_components)
+- Directory highlights: [packages](packages), [automation](automation), [script](script), [scene](scene), [templates](templates), [dashboards](dashboards), [www](www), [custom_components](custom_components)

@@ -36,6 +36,7 @@ Live view of the `config/` directory my production Home Assistant instance loads
- **Automations (`automation/`)** – event-driven YAML broken out by area or device; the legacy `automations.yaml` remains for UI-created flows.
- **Scripts & scenes (`script/`, `scene/`)** – curated lighting and ambiance logic used by presence, holiday, and seasonal routines.
- **Templates (`templates/`)** – Jinja helpers and speech templates reused by the notify/speech engines.
+- **Dashboards (`dashboards/`)** – YAML-managed Lovelace dashboards and UI resources (generated from storage, then maintained as code).
- **www/ + custom components** – branding assets, floorplans, and any custom components the core install depends on.
### Featured automations by section
diff --git a/config/configuration.yaml b/config/configuration.yaml
index 8845aca4..23203d8c 100755
--- a/config/configuration.yaml
+++ b/config/configuration.yaml
@@ -24,6 +24,36 @@ homeassistant:
default_config:
+# -------------------------------------------------------------------
+# Lovelace (YAML dashboards/resources)
+# Dashboard YAML lives under config/dashboards. Do not edit config/.storage.
+# -------------------------------------------------------------------
+lovelace:
+ resource_mode: yaml
+ resources: !include dashboards/resources.yaml
+ dashboards:
+ lovelace:
+ mode: yaml
+ title: "Overview"
+ icon: mdi:home
+ show_in_sidebar: true
+ require_admin: false
+ filename: dashboards/overview/dashboard.yaml
+ dashboard-infrastructure:
+ mode: yaml
+ title: "Infrastructure"
+ icon: mdi:server-network
+ show_in_sidebar: true
+ require_admin: true
+ filename: dashboards/infrastructure/dashboard.yaml
+ dashboard-kiosk:
+ mode: yaml
+ title: "KIOSK"
+ icon: mdi:tablet-dashboard
+ show_in_sidebar: true
+ require_admin: false
+ filename: dashboards/kiosk/dashboard.yaml
+
config:
cloud:
diff --git a/config/dashboards/README.md b/config/dashboards/README.md
new file mode 100644
index 00000000..b67264a3
--- /dev/null
+++ b/config/dashboards/README.md
@@ -0,0 +1,50 @@
+
+ Dashboards (Lovelace YAML)
+
+
+This folder holds YAML-managed Home Assistant Lovelace dashboards and UI resources.
+
+### Why this exists
+- Home Assistant stores dashboards and resources in `config/.storage/` by default (runtime state).
+- YAML dashboards make the UI version-controllable and editable by automation tools (including Codex).
+
+### What is in here
+- `resources.yaml`
+ - Lovelace JS resources used by custom cards (HACS and local resources).
+ - This is used when `lovelace.resource_mode: yaml` is enabled.
+- `SCRATCHPAD.md`
+ - Parking lot for multi-step dashboard work and patterns.
+- `/`
+ - One folder per dashboard (example: `overview/`, `infrastructure/`, `kiosk/`).
+ - `dashboard.yaml` is the dashboard entrypoint.
+ - `views/` contains one YAML file per view.
+ - `partials/` is reusable card lists included into views.
+ - `popups/` is reusable popup stacks (typically `bubble-card`) included into views.
+ - `card_mod/` is CSS overrides (use only when card-native options are insufficient).
+- `shared/`
+ - Cross-dashboard reuse only. If something is only used by one dashboard, keep it in that dashboard folder.
+
+### How it is wired into Home Assistant
+This folder is referenced from `config/configuration.yaml` via:
+- `lovelace.resource_mode: yaml`
+- `lovelace.resources: !include dashboards/resources.yaml`
+- `lovelace.dashboards: ... filename: dashboards//dashboard.yaml`
+
+### Migration / Cutover Notes
+- During migration you may have both storage dashboards (from the UI) and YAML dashboards (from this folder) at the same time.
+- Do not try to create YAML dashboards with the same dashboard ID/key as an existing storage dashboard; remove/disable the storage version first in the UI.
+- Once you confirm the YAML dashboards render correctly:
+ - Hide or delete the old storage dashboards in **Settings -> Dashboards**.
+ - Keep strategies/dynamic dashboards in storage (Map, Areas, etc.) unless you intentionally export them.
+
+### Conventions
+- Include paths in Lovelace YAML should use absolute container paths starting with `/config/`.
+ - Example: `!include /config/dashboards/overview/partials/some_cards.yaml`
+- Views are loaded using `!include_dir_list` and ordered by filename (prefix with `01_`, `02_`, etc.).
+- Prefer card-native styling; treat `card_mod` as a last resort.
+- Prefer CSS variables (`var(--*)`) over hardcoded hex colors.
+- When using the Stitch MCP for inspiration, generation may exceed the tool timeout; wait and then fetch results via `stitch/list_screens` and `stitch/get_screen`.
+
+### Notes
+- Do not edit `config/.storage` by hand. Export once, then maintain the YAML files here.
+- It is safe to restart Home Assistant after dashboard changes as long as a configuration check passes first.
diff --git a/config/dashboards/SCRATCHPAD.md b/config/dashboards/SCRATCHPAD.md
new file mode 100644
index 00000000..d4696573
--- /dev/null
+++ b/config/dashboards/SCRATCHPAD.md
@@ -0,0 +1,9 @@
+# Dashboards Scratchpad
+
+## Current Working Items
+
+- (empty)
+
+## Patterns / Notes
+
+- (empty)
diff --git a/config/dashboards/infrastructure/card_mod/.gitkeep b/config/dashboards/infrastructure/card_mod/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/infrastructure/card_mod/infra_card.yaml b/config/dashboards/infrastructure/card_mod/infra_card.yaml
new file mode 100644
index 00000000..66beb975
--- /dev/null
+++ b/config/dashboards/infrastructure/card_mod/infra_card.yaml
@@ -0,0 +1,17 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure card_mod - Base card polish
+# Shared card_mod style block used across Infrastructure views.
+# -------------------------------------------------------------------
+# Notes: card_mod style is YAML scalar (multi-line string) so it can be `!include`d.
+######################################################################
+
+|
+ ha-card {
+ border-radius: 18px;
+ border: 1px solid rgba(0,0,0,0.06);
+ box-shadow: none;
+ }
diff --git a/config/dashboards/infrastructure/card_mod/infra_panel.yaml b/config/dashboards/infrastructure/card_mod/infra_panel.yaml
new file mode 100644
index 00000000..f779b063
--- /dev/null
+++ b/config/dashboards/infrastructure/card_mod/infra_panel.yaml
@@ -0,0 +1,18 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure card_mod - Panel container
+# Wrapper style for multi-row panels (Stitch-inspired).
+# -------------------------------------------------------------------
+# Notes: card_mod style is YAML scalar (multi-line string) so it can be `!include`d.
+######################################################################
+
+|
+ ha-card {
+ border-radius: 18px;
+ border: 1px solid rgba(0,0,0,0.06);
+ box-shadow: none;
+ padding: 12px;
+ }
diff --git a/config/dashboards/infrastructure/cards/.gitkeep b/config/dashboards/infrastructure/cards/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/infrastructure/dashboard.yaml b/config/dashboards/infrastructure/dashboard.yaml
new file mode 100644
index 00000000..159b6606
--- /dev/null
+++ b/config/dashboards/infrastructure/dashboard.yaml
@@ -0,0 +1,13 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Dashboard - YAML entrypoint
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Entry point for dashboard key `dashboard-infrastructure`. Views are loaded from /config/dashboards/infrastructure/views.
+######################################################################
+
+button_card_templates: !include /config/dashboards/infrastructure/templates/button_card_templates.yaml
+views: !include_dir_list /config/dashboards/infrastructure/views
diff --git a/config/dashboards/infrastructure/partials/.gitkeep b/config/dashboards/infrastructure/partials/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/infrastructure/partials/docker_container_restart_include.yaml b/config/dashboards/infrastructure/partials/docker_container_restart_include.yaml
new file mode 100644
index 00000000..38a38afe
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/docker_container_restart_include.yaml
@@ -0,0 +1,451 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Include - Docker container restart buttons
+# Auto-entities include list for Portainer container restart buttons (button.*_restart_container).
+# -------------------------------------------------------------------
+# Notes: Generated from core.entity_registry (platform: portainer).
+######################################################################
+
+- entity_id: button.91aca40203c0_portainer_agent_restart_container
+ options:
+ type: tile
+ name: 91aca40203c0_portainer_agent
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.91aca40203c0_portainer_agent_restart_container
+- entity_id: button.cloudflared_kch_restart_container
+ options:
+ type: tile
+ name: cloudflared_kch
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.cloudflared_kch_restart_container
+- entity_id: button.cloudflared_wp_restart_container
+ options:
+ type: tile
+ name: cloudflared_wp
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.cloudflared_wp_restart_container
+- entity_id: button.codex_appliance_restart_container
+ options:
+ type: tile
+ name: codex_appliance
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.codex_appliance_restart_container
+- entity_id: button.college_budget_app_restart_container
+ options:
+ type: tile
+ name: college_budget_app
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.college_budget_app_restart_container
+- entity_id: button.cruise_tracker_restart_container
+ options:
+ type: tile
+ name: cruise_tracker
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.cruise_tracker_restart_container
+- entity_id: button.dashy_restart_container
+ options:
+ type: tile
+ name: dashy
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.dashy_restart_container
+- entity_id: button.dozzle_agent_10_restart_container
+ options:
+ type: tile
+ name: dozzle_agent_10
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.dozzle_agent_10_restart_container
+- entity_id: button.dozzle_agent_14_restart_container
+ options:
+ type: tile
+ name: dozzle_agent_14
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.dozzle_agent_14_restart_container
+- entity_id: button.dozzle_restart_container
+ options:
+ type: tile
+ name: dozzle
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.dozzle_restart_container
+- entity_id: button.duplicati_restart_container
+ options:
+ type: tile
+ name: duplicati
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.duplicati_restart_container
+- entity_id: button.esphome_restart_container
+ options:
+ type: tile
+ name: esphome
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.esphome_restart_container
+- entity_id: button.foodie_tracker_restart_container
+ options:
+ type: tile
+ name: foodie_tracker
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.foodie_tracker_restart_container
+- entity_id: button.frigate_restart_container
+ options:
+ type: tile
+ name: frigate
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.frigate_restart_container
+- entity_id: button.games_hub_restart_container
+ options:
+ type: tile
+ name: games_hub
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.games_hub_restart_container
+- entity_id: button.home_assistant_restart_container
+ options:
+ type: tile
+ name: home-assistant
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.home_assistant_restart_container
+- entity_id: button.imposter_restart_container
+ options:
+ type: tile
+ name: imposter
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.imposter_restart_container
+- entity_id: button.infra_info_restart_container
+ options:
+ type: tile
+ name: infra_info
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.infra_info_restart_container
+- entity_id: button.kingcrafthomes_restart_container
+ options:
+ type: tile
+ name: kingcrafthomes
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.kingcrafthomes_restart_container
+- entity_id: button.mariadb_backup_restart_container
+ options:
+ type: tile
+ name: mariadb-backup
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.mariadb_backup_restart_container
+- entity_id: button.mariadb_restart_container
+ options:
+ type: tile
+ name: mariadb
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.mariadb_restart_container
+- entity_id: button.matter_server_restart_container
+ options:
+ type: tile
+ name: matter-server
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.matter_server_restart_container
+- entity_id: button.mqtt_restart_container
+ options:
+ type: tile
+ name: mqtt
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.mqtt_restart_container
+- entity_id: button.nebula_sync_restart_container
+ options:
+ type: tile
+ name: nebula_sync
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.nebula_sync_restart_container
+- entity_id: button.panel_notes_restart_container
+ options:
+ type: tile
+ name: panel_notes
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.panel_notes_restart_container
+- entity_id: button.pihole_restart_container
+ options:
+ type: tile
+ name: pihole
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.pihole_restart_container
+- entity_id: button.pihole_secondary_restart_container
+ options:
+ type: tile
+ name: pihole_secondary
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.pihole_secondary_restart_container
+- entity_id: button.poker_tracker_restart_container
+ options:
+ type: tile
+ name: poker_tracker
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.poker_tracker_restart_container
+- entity_id: button.portainer_agent_restart_container
+ options:
+ type: tile
+ name: portainer_agent
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.portainer_agent_restart_container
+- entity_id: button.portainer_restart_container
+ options:
+ type: tile
+ name: portainer
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.portainer_restart_container
+- entity_id: button.postgres_webhooks_engine_restart_container
+ options:
+ type: tile
+ name: postgres_webhooks_engine
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.postgres_webhooks_engine_restart_container
+- entity_id: button.rc_price_checker_restart_container
+ options:
+ type: tile
+ name: rc_price_checker
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.rc_price_checker_restart_container
+- entity_id: button.redis_webhooks_engine_restart_container
+ options:
+ type: tile
+ name: redis_webhooks_engine
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.redis_webhooks_engine_restart_container
+- entity_id: button.rvtools_ppt_web_restart_container
+ options:
+ type: tile
+ name: rvtools_ppt_web
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.rvtools_ppt_web_restart_container
+- entity_id: button.steelesharing_home_restart_container
+ options:
+ type: tile
+ name: steelesharing_home
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.steelesharing_home_restart_container
+- entity_id: button.tapple_restart_container
+ options:
+ type: tile
+ name: tapple
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.tapple_restart_container
+- entity_id: button.tugtainer_agent_restart_container
+ options:
+ type: tile
+ name: tugtainer-agent
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.tugtainer_agent_restart_container
+- entity_id: button.tugtainer_restart_container
+ options:
+ type: tile
+ name: tugtainer
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.tugtainer_restart_container
+- entity_id: button.tugtainer_socket_proxy_restart_container
+ options:
+ type: tile
+ name: tugtainer_socket_proxy
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.tugtainer_socket_proxy_restart_container
+- entity_id: button.unifi_restart_container
+ options:
+ type: tile
+ name: unifi
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.unifi_restart_container
+- entity_id: button.webhooks_engine_restart_container
+ options:
+ type: tile
+ name: webhooks_engine
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.webhooks_engine_restart_container
+- entity_id: button.wordpress_db_restart_container
+ options:
+ type: tile
+ name: wordpress_db
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.wordpress_db_restart_container
+- entity_id: button.wordpress_wp_restart_container
+ options:
+ type: tile
+ name: wordpress_wp
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.wordpress_wp_restart_container
+- entity_id: button.wyze_bridge_restart_container
+ options:
+ type: tile
+ name: wyze-bridge
+ hide_state: true
+ tap_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: button.wyze_bridge_restart_container
diff --git a/config/dashboards/infrastructure/partials/docker_container_rows_include.yaml b/config/dashboards/infrastructure/partials/docker_container_rows_include.yaml
new file mode 100644
index 00000000..df118656
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/docker_container_rows_include.yaml
@@ -0,0 +1,407 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Include - Docker container rows
+# Auto-entities include list mapping Portainer status -> restart button.
+# -------------------------------------------------------------------
+# Notes: Generated from core.entity_registry + button restart entities.
+######################################################################
+
+- entity_id: binary_sensor.91aca40203c0_portainer_agent_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: 91aca40203c0_portainer_agent
+ icon: mdi:docker
+ variables:
+ restart_button: button.91aca40203c0_portainer_agent_restart_container
+ name: 91aca40203c0_portainer_agent
+- entity_id: binary_sensor.cloudflared_kch_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: cloudflared_kch
+ icon: mdi:docker
+ variables:
+ restart_button: button.cloudflared_kch_restart_container
+ name: cloudflared_kch
+- entity_id: binary_sensor.cloudflared_wp_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: cloudflared_wp
+ icon: mdi:docker
+ variables:
+ restart_button: button.cloudflared_wp_restart_container
+ name: cloudflared_wp
+- entity_id: binary_sensor.codex_appliance_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: codex_appliance
+ icon: mdi:docker
+ variables:
+ restart_button: button.codex_appliance_restart_container
+ name: codex_appliance
+- entity_id: binary_sensor.college_budget_app_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: college_budget_app
+ icon: mdi:docker
+ variables:
+ restart_button: button.college_budget_app_restart_container
+ name: college_budget_app
+- entity_id: binary_sensor.cruise_tracker_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: cruise_tracker
+ icon: mdi:docker
+ variables:
+ restart_button: button.cruise_tracker_restart_container
+ name: cruise_tracker
+- entity_id: binary_sensor.dashy_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: dashy
+ icon: mdi:docker
+ variables:
+ restart_button: button.dashy_restart_container
+ name: dashy
+- entity_id: binary_sensor.dozzle_agent_10_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: dozzle_agent_10
+ icon: mdi:docker
+ variables:
+ restart_button: button.dozzle_agent_10_restart_container
+ name: dozzle_agent_10
+- entity_id: binary_sensor.dozzle_agent_14_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: dozzle_agent_14
+ icon: mdi:docker
+ variables:
+ restart_button: button.dozzle_agent_14_restart_container
+ name: dozzle_agent_14
+- entity_id: binary_sensor.dozzle_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: dozzle
+ icon: mdi:docker
+ variables:
+ restart_button: button.dozzle_restart_container
+ name: dozzle
+- entity_id: binary_sensor.duplicati_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: duplicati
+ icon: mdi:docker
+ variables:
+ restart_button: button.duplicati_restart_container
+ name: duplicati
+- entity_id: binary_sensor.esphome_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: esphome
+ icon: mdi:docker
+ variables:
+ restart_button: button.esphome_restart_container
+ name: esphome
+- entity_id: binary_sensor.foodie_tracker_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: foodie_tracker
+ icon: mdi:docker
+ variables:
+ restart_button: button.foodie_tracker_restart_container
+ name: foodie_tracker
+- entity_id: binary_sensor.frigate_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: frigate
+ icon: mdi:docker
+ variables:
+ restart_button: button.frigate_restart_container
+ name: frigate
+- entity_id: binary_sensor.games_hub_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: games_hub
+ icon: mdi:docker
+ variables:
+ restart_button: button.games_hub_restart_container
+ name: games_hub
+- entity_id: binary_sensor.home_assistant_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: home-assistant
+ icon: mdi:docker
+ variables:
+ restart_button: button.home_assistant_restart_container
+ name: home-assistant
+- entity_id: binary_sensor.imposter_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: imposter
+ icon: mdi:docker
+ variables:
+ restart_button: button.imposter_restart_container
+ name: imposter
+- entity_id: binary_sensor.infra_info_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: infra_info
+ icon: mdi:docker
+ variables:
+ restart_button: button.infra_info_restart_container
+ name: infra_info
+- entity_id: binary_sensor.kingcrafthomes_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: kingcrafthomes
+ icon: mdi:docker
+ variables:
+ restart_button: button.kingcrafthomes_restart_container
+ name: kingcrafthomes
+- entity_id: binary_sensor.mariadb_backup_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: mariadb-backup
+ icon: mdi:docker
+ variables:
+ restart_button: button.mariadb_backup_restart_container
+ name: mariadb-backup
+- entity_id: binary_sensor.mariadb_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: mariadb
+ icon: mdi:docker
+ variables:
+ restart_button: button.mariadb_restart_container
+ name: mariadb
+- entity_id: binary_sensor.matter_server_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: matter-server
+ icon: mdi:docker
+ variables:
+ restart_button: button.matter_server_restart_container
+ name: matter-server
+- entity_id: binary_sensor.mqtt_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: mqtt
+ icon: mdi:docker
+ variables:
+ restart_button: button.mqtt_restart_container
+ name: mqtt
+- entity_id: binary_sensor.nebula_sync_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: nebula_sync
+ icon: mdi:docker
+ variables:
+ restart_button: button.nebula_sync_restart_container
+ name: nebula_sync
+- entity_id: binary_sensor.panel_notes_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: panel_notes
+ icon: mdi:docker
+ variables:
+ restart_button: button.panel_notes_restart_container
+ name: panel_notes
+- entity_id: binary_sensor.pihole_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: pihole
+ icon: mdi:docker
+ variables:
+ restart_button: button.pihole_restart_container
+ name: pihole
+- entity_id: binary_sensor.pihole_secondary_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: pihole_secondary
+ icon: mdi:docker
+ variables:
+ restart_button: button.pihole_secondary_restart_container
+ name: pihole_secondary
+- entity_id: binary_sensor.poker_tracker_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: poker_tracker
+ icon: mdi:docker
+ variables:
+ restart_button: button.poker_tracker_restart_container
+ name: poker_tracker
+- entity_id: binary_sensor.portainer_agent_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: portainer_agent
+ icon: mdi:docker
+ variables:
+ restart_button: button.portainer_agent_restart_container
+ name: portainer_agent
+- entity_id: binary_sensor.portainer_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: portainer
+ icon: mdi:docker
+ variables:
+ restart_button: button.portainer_restart_container
+ name: portainer
+- entity_id: binary_sensor.postgres_webhooks_engine_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: postgres_webhooks_engine
+ icon: mdi:docker
+ variables:
+ restart_button: button.postgres_webhooks_engine_restart_container
+ name: postgres_webhooks_engine
+- entity_id: binary_sensor.rc_price_checker_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: rc_price_checker
+ icon: mdi:docker
+ variables:
+ restart_button: button.rc_price_checker_restart_container
+ name: rc_price_checker
+- entity_id: binary_sensor.redis_webhooks_engine_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: redis_webhooks_engine
+ icon: mdi:docker
+ variables:
+ restart_button: button.redis_webhooks_engine_restart_container
+ name: redis_webhooks_engine
+- entity_id: binary_sensor.rvtools_ppt_web_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: rvtools_ppt_web
+ icon: mdi:docker
+ variables:
+ restart_button: button.rvtools_ppt_web_restart_container
+ name: rvtools_ppt_web
+- entity_id: binary_sensor.steelesharing_home_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: steelesharing_home
+ icon: mdi:docker
+ variables:
+ restart_button: button.steelesharing_home_restart_container
+ name: steelesharing_home
+- entity_id: binary_sensor.tapple_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: tapple
+ icon: mdi:docker
+ variables:
+ restart_button: button.tapple_restart_container
+ name: tapple
+- entity_id: binary_sensor.tugtainer_agent_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: tugtainer-agent
+ icon: mdi:docker
+ variables:
+ restart_button: button.tugtainer_agent_restart_container
+ name: tugtainer-agent
+- entity_id: binary_sensor.tugtainer_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: tugtainer
+ icon: mdi:docker
+ variables:
+ restart_button: button.tugtainer_restart_container
+ name: tugtainer
+- entity_id: binary_sensor.tugtainer_socket_proxy_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: tugtainer_socket_proxy
+ icon: mdi:docker
+ variables:
+ restart_button: button.tugtainer_socket_proxy_restart_container
+ name: tugtainer_socket_proxy
+- entity_id: binary_sensor.unifi_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: unifi
+ icon: mdi:docker
+ variables:
+ restart_button: button.unifi_restart_container
+ name: unifi
+- entity_id: binary_sensor.webhooks_engine_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: webhooks_engine
+ icon: mdi:docker
+ variables:
+ restart_button: button.webhooks_engine_restart_container
+ name: webhooks_engine
+- entity_id: binary_sensor.wordpress_db_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: wordpress_db
+ icon: mdi:docker
+ variables:
+ restart_button: button.wordpress_db_restart_container
+ name: wordpress_db
+- entity_id: binary_sensor.wordpress_wp_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: wordpress_wp
+ icon: mdi:docker
+ variables:
+ restart_button: button.wordpress_wp_restart_container
+ name: wordpress_wp
+- entity_id: binary_sensor.wyze_bridge_status
+ options:
+ type: custom:button-card
+ template: bearstone_infra_container_row
+ name: wyze-bridge
+ icon: mdi:docker
+ variables:
+ restart_button: button.wyze_bridge_restart_container
+ name: wyze-bridge
diff --git a/config/dashboards/infrastructure/partials/docker_containers_sections.yaml b/config/dashboards/infrastructure/partials/docker_containers_sections.yaml
new file mode 100644
index 00000000..7d4b4b8c
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/docker_containers_sections.yaml
@@ -0,0 +1,82 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - Docker containers sections
+# Sections layout for the Docker containers view.
+# -------------------------------------------------------------------
+# Notes: Uses Portainer entities (`binary_sensor.*_status`, `button.*_restart_container`).
+######################################################################
+
+- type: grid
+ column_span: 4
+ columns: 4
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: binary_sensor.node_proxmox1_updates_packages
+ name: Proxmox01
+ icon: mdi:server
+ state_display: >
+ [[[ return entity.state === 'on' ? 'Updates pending' : 'Up to date'; ]]]
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: binary_sensor.node_proxmox02_updates_packages
+ name: Proxmox02
+ icon: mdi:server
+ state_display: >
+ [[[ return entity.state === 'on' ? 'Updates pending' : 'Up to date'; ]]]
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: sensor.garage_ups_status
+ name: Garage UPS
+ icon: mdi:transmission-tower
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: sensor.vcloudinfo_com
+ name: vCloudinfo
+ icon: mdi:microsoft-internet-explorer
+
+- type: grid
+ column_span: 4
+ columns: 1
+ square: false
+ cards:
+ - type: custom:auto-entities
+ show_empty: true
+ grid_options:
+ columns: full
+ card:
+ type: grid
+ title: Docker Containers
+ columns: 4
+ square: false
+ card_param: cards
+ filter:
+ include: !include /config/dashboards/infrastructure/partials/docker_container_rows_include.yaml
+ exclude:
+ - state: unavailable
+ sort:
+ method: name
+
+- type: grid
+ column_span: 4
+ columns: 1
+ square: false
+ cards:
+ - type: markdown
+ grid_options:
+ columns: full
+ content: |-
+ **Tip:** Hold a container row to restart it (confirmation required).
+ card_mod:
+ style: |
+ ha-card {
+ background: transparent;
+ border: none;
+ box-shadow: none;
+ text-align: center;
+ color: var(--secondary-text-color);
+ }
diff --git a/config/dashboards/infrastructure/partials/home_sections.yaml b/config/dashboards/infrastructure/partials/home_sections.yaml
new file mode 100644
index 00000000..09b7402f
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/home_sections.yaml
@@ -0,0 +1,339 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - Home sections
+# Rebuilt homepage layout (Stitch-inspired).
+# -------------------------------------------------------------------
+# Notes: Standardized on `custom:button-card` + `custom:mini-graph-card` with `card_mod` polish.
+######################################################################
+
+- type: grid
+ column_span: 4
+ columns: 4
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: binary_sensor.node_proxmox1_updates_packages
+ name: Proxmox01
+ icon: mdi:server
+ state_display: >
+ [[[ return entity.state === 'on' ? 'Updates pending' : 'Up to date'; ]]]
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: binary_sensor.node_proxmox02_updates_packages
+ name: Proxmox02
+ icon: mdi:server
+ state_display: >
+ [[[ return entity.state === 'on' ? 'Updates pending' : 'Up to date'; ]]]
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: sensor.garage_ups_status
+ name: Garage UPS
+ icon: mdi:transmission-tower
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: sensor.vcloudinfo_com
+ name: vCloudinfo
+ icon: mdi:microsoft-internet-explorer
+
+- type: grid
+ column_span: 3
+ columns: 2
+ square: false
+ cards:
+ - type: vertical-stack
+ cards:
+ - type: custom:mini-graph-card
+ name: Proxmox01
+ icon: mdi:server
+ hours_to_show: 24
+ points_per_hour: 2
+ line_width: 2
+ animate: true
+ show:
+ fill: true
+ legend: true
+ icon: true
+ name: true
+ state: true
+ entities:
+ - entity: sensor.node_proxmox1_cpu_used
+ name: CPU
+ - entity: sensor.node_proxmox1_memory_used_percentage
+ name: Memory
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: grid
+ columns: 3
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_docker69_169_status
+ name: Docker69
+ icon: mdi:docker
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_docker69_169_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_docker69_169_reboot
+ name: Docker69
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_carlo_hass_105_status
+ name: HASS
+ icon: mdi:home-assistant
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_carlo_hass_105_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_carlo_hass_105_reboot
+ name: HASS
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_wireguard_104_status
+ name: WireGuard
+ icon: mdi:vpn
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_wireguard_104_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_wireguard_104_reboot
+ name: WireGuard
+
+ - type: vertical-stack
+ cards:
+ - type: custom:mini-graph-card
+ name: Proxmox02
+ icon: mdi:server
+ hours_to_show: 24
+ points_per_hour: 2
+ line_width: 2
+ animate: true
+ show:
+ fill: true
+ legend: true
+ icon: true
+ name: true
+ state: true
+ entities:
+ - entity: sensor.node_proxmox02_cpu_used
+ name: CPU
+ - entity: sensor.node_proxmox02_memory_used_percentage
+ name: Memory
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: grid
+ columns: 3
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_docker2_101_status
+ name: Frigate
+ icon: mdi:video
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_docker2_101_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_docker2_101_reboot
+ name: Frigate
+
+- type: grid
+ column_span: 1
+ columns: 1
+ square: false
+ cards:
+ - type: custom:mini-graph-card
+ entities:
+ - entity: sensor.proxmox_garage_average_temperature
+ name: Garage
+ - entity: sensor.pirateweather_temperature
+ name: Outside
+ name: Garage Temp
+ hours_to_show: 96
+ color_thresholds:
+ - value: 50
+ color: '#f39c12'
+ - value: 120
+ color: '#d35400'
+ - value: 145
+ color: '#c0392b'
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: custom:mini-graph-card
+ name: Garage UPS Load
+ icon: mdi:transmission-tower
+ entities:
+ - entity: sensor.garage_ups_load
+ name: Load
+ unit: '%'
+ hours_to_show: 24
+ points_per_hour: 4
+ line_width: 2
+ animate: true
+ color_thresholds:
+ - value: 20
+ color: '#43a047'
+ - value: 50
+ color: '#ffa000'
+ - value: 80
+ color: '#e53935'
+ show:
+ fill: true
+ icon: true
+ name: true
+ state: true
+ graph: line
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+
+- type: grid
+ column_span: 2
+ columns: 2
+ square: true
+ cards:
+ - type: custom:flex-horseshoe-card
+ entities:
+ - entity: sensor.carlo_nvr_volume_1_volume_used
+ name: NVR Video
+ decimals: 1
+ unit: '%'
+ - entity: sensor.carlo_nvr_volume_1_total_size
+ name: Total
+ decimals: 2
+ unit: TiB
+ show:
+ horseshoe_style: colorstopgradient
+ horseshoe_scale:
+ min: 0
+ max: 100
+ color_stops:
+ '0': '#43a047'
+ '50': '#fbc02d'
+ '80': '#e53935'
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: custom:flex-horseshoe-card
+ entities:
+ - entity: sensor.carlo_nas01_volume_1_volume_used
+ name: NAS Storage
+ decimals: 1
+ unit: '%'
+ - entity: sensor.carlo_nas01_volume_1_total_size
+ name: Total
+ decimals: 2
+ unit: TiB
+ show:
+ horseshoe_style: colorstopgradient
+ horseshoe_scale:
+ min: 0
+ max: 100
+ color_stops:
+ '0': '#43a047'
+ '50': '#fbc02d'
+ '80': '#e53935'
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+
+- type: grid
+ column_span: 2
+ columns: 1
+ square: false
+ cards:
+ - type: custom:mini-graph-card
+ name: Wi-Fi Overview
+ icon: mdi:wifi
+ hours_to_show: 24
+ line_width: 2
+ points_per_hour: 1
+ smoothing: true
+ show:
+ graph: line
+ legend: true
+ labels: false
+ name: true
+ icon: true
+ state: true
+ entities:
+ - entity: sensor.total_wifi_clients
+ name: Total
+ show_state: true
+ show_graph: false
+ show_line: false
+ show_points: false
+ show_fill: false
+ show_legend: false
+ - entity: sensor.unifi_ap_office_clients
+ name: Office AP
+ show_state: true
+ - entity: sensor.unifi_ap_study_clients
+ name: Study AP
+ show_state: true
+ - entity: sensor.unifi_ap_garage_clients
+ name: Garage AP
+ show_state: true
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+
+- type: grid
+ column_span: 4
+ columns: 3
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ name: Garage AP
+ icon: mdi:access-point
+ entity: sensor.unifi_ap_garage_clients
+ label: >
+ [[[ return "Uptime: " + (states['sensor.unifi_ap_garage_uptime']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.unifi_ap_garage_restart
+ name: Garage AP
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ name: Office AP
+ icon: mdi:access-point
+ entity: sensor.unifi_ap_office_clients
+ label: >
+ [[[ return "Uptime: " + (states['sensor.unifi_ap_office_uptime']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.unifi_ap_office_restart
+ name: Office AP
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ name: Study AP
+ icon: mdi:access-point
+ entity: sensor.unifi_ap_study_clients
+ label: >
+ [[[ return "Uptime: " + (states['sensor.unifi_ap_study_uptime']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.unifi_ap_study_restart
+ name: Study AP
+
+- type: grid
+ column_span: 4
+ columns: 3
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_tile
+ name: docker_10
+ icon: mdi:server
+ entity: sensor.docker_10_apt_status
+ label: >
+ [[[ return "Last update: " + (states['sensor.docker_10_apt_last_update']?.state ?? 'unknown') + " | " + (states['sensor.docker_10_apt_reboot_status']?.state ?? ''); ]]]
+ - type: custom:button-card
+ template: bearstone_infra_tile
+ name: docker_69
+ icon: mdi:server
+ entity: sensor.docker_69_apt_status
+ label: >
+ [[[ return "Last update: " + (states['sensor.docker_69_apt_last_update']?.state ?? 'unknown') + " | " + (states['sensor.docker_69_apt_reboot_status']?.state ?? ''); ]]]
+ - type: custom:button-card
+ template: bearstone_infra_tile
+ name: docker_14
+ icon: mdi:server
+ entity: sensor.docker_14_apt_status
+ label: >
+ [[[ return "Last update: " + (states['sensor.docker_14_apt_last_update']?.state ?? 'unknown') + " | " + (states['sensor.docker_14_apt_reboot_status']?.state ?? ''); ]]]
diff --git a/config/dashboards/infrastructure/partials/mariadb_sections.yaml b/config/dashboards/infrastructure/partials/mariadb_sections.yaml
new file mode 100644
index 00000000..d749f138
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/mariadb_sections.yaml
@@ -0,0 +1,146 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - mariadb sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Stitch-inspired MariaDB layout (3 panel columns).
+######################################################################
+
+- column_span: 1
+ cards:
+ - type: custom:vertical-stack-in-card
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_panel.yaml
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_panel_header
+ name: Database Statistics
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.database_size
+ name: Database Size
+ icon: mdi:database
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.database_tables_count
+ name: Number of Tables
+ icon: mdi:table
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.database_total_records
+ name: Total Records
+ icon: mdi:counter
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.database_records_per_day
+ name: Records per Day
+ icon: mdi:chart-line
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.database_oldest_record
+ name: Oldest Record
+ icon: mdi:clock-start
+
+- column_span: 1
+ cards:
+ - type: custom:vertical-stack-in-card
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_panel.yaml
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_panel_header
+ name: MariaDB Status
+ - type: custom:button-card
+ template: bearstone_infra_list_row_running
+ entity: sensor.mariadb_status
+ name: Server Status
+ icon: mdi:database
+ state_display: >
+ [[[
+ if (entity.state === 'unknown') return 'Unknown';
+ return String(entity.state).toUpperCase();
+ ]]]
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.mariadb_version
+ name: Version
+ icon: mdi:information-outline
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.mariadb_performance
+ name: Performance
+ icon: mdi:chart-line
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.mariadb_uptime
+ name: Uptime
+ icon: mdi:timer-outline
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.mariadb_connections
+ name: Active Connections
+ icon: mdi:lan-connect
+ - type: custom:button-card
+ template: bearstone_infra_list_row
+ entity: sensor.mariadb_questions
+ name: Total Queries
+ icon: mdi:database-search
+
+- column_span: 1
+ cards:
+ - type: custom:vertical-stack-in-card
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_panel.yaml
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_panel_header
+ name: MariaDB Tuning
+ - type: grid
+ columns: 2
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_buffer_pool_size
+ name: InnoDB Buffer
+ icon: mdi:memory
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_max_connections
+ name: Max Conn.
+ icon: mdi:account-multiple
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_log_file_size
+ name: Log File
+ icon: mdi:file
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_tmp_table_size
+ name: Temp Size
+ icon: mdi:table
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_io_capacity
+ name: IO Capacity
+ icon: mdi:speedometer
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_io_threads
+ name: IO Threads
+ icon: mdi:developer-board
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_table_cache
+ name: Table Cache
+ icon: mdi:cached
+ - type: custom:button-card
+ template: bearstone_infra_kpi
+ entity: sensor.mariadb_buffer_sizes
+ name: Sort/Join
+ icon: mdi:code-brackets
+
+
diff --git a/config/dashboards/infrastructure/partials/pi_hole_cards.yaml b/config/dashboards/infrastructure/partials/pi_hole_cards.yaml
new file mode 100644
index 00000000..b74a17eb
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/pi_hole_cards.yaml
@@ -0,0 +1,15 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - pi_hole cards
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/infrastructure/views/02_pi_hole.yaml key `cards`.
+######################################################################
+
+- type: custom:pi-hole
+ device_id: d69637da16f7d7f3626070582be59808
+ grid_options:
+ columns: full
diff --git a/config/dashboards/infrastructure/partials/proxmox_badges.yaml b/config/dashboards/infrastructure/partials/proxmox_badges.yaml
new file mode 100644
index 00000000..d34fdbec
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/proxmox_badges.yaml
@@ -0,0 +1,37 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - proxmox badges
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/infrastructure/views/01_proxmox.yaml key `badges`.
+######################################################################
+
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: binary_sensor.node_proxmox1_updates_packages
+ name: ProxMox1
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: binary_sensor.node_proxmox02_updates_packages
+ name: Proxmox02
+- type: entity
+ icon: mdi:transmission-tower
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: sensor.garage_ups_status
+ name: Garage UPS
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ icon: mdi:microsoft-internet-explorer
+ entity: sensor.vcloudinfo_com
+ name: vCloudinfo
diff --git a/config/dashboards/infrastructure/partials/proxmox_sections.yaml b/config/dashboards/infrastructure/partials/proxmox_sections.yaml
new file mode 100644
index 00000000..ae4a2fc5
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/proxmox_sections.yaml
@@ -0,0 +1,187 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - proxmox sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Standardized on `custom:button-card` + `custom:mini-graph-card` with `card_mod` polish.
+######################################################################
+
+- type: grid
+ column_span: 4
+ columns: 4
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: binary_sensor.node_proxmox1_updates_packages
+ name: Proxmox01
+ icon: mdi:server
+ state_display: >
+ [[[ return entity.state === 'on' ? 'Updates pending' : 'Up to date'; ]]]
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: binary_sensor.node_proxmox02_updates_packages
+ name: Proxmox02
+ icon: mdi:server
+ state_display: >
+ [[[ return entity.state === 'on' ? 'Updates pending' : 'Up to date'; ]]]
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: sensor.garage_ups_status
+ name: Garage UPS
+ icon: mdi:transmission-tower
+ - type: custom:button-card
+ template: bearstone_infra_chip
+ entity: sensor.vcloudinfo_com
+ name: vCloudinfo
+ icon: mdi:microsoft-internet-explorer
+
+- type: grid
+ column_span: 4
+ columns: 2
+ square: false
+ cards:
+ - type: vertical-stack
+ cards:
+ - type: custom:mini-graph-card
+ name: Proxmox01
+ icon: mdi:server
+ hours_to_show: 24
+ points_per_hour: 2
+ line_width: 2
+ animate: true
+ show:
+ fill: true
+ legend: true
+ icon: true
+ name: true
+ state: true
+ entities:
+ - entity: sensor.node_proxmox1_cpu_used
+ name: CPU
+ - entity: sensor.node_proxmox1_memory_used_percentage
+ name: Memory
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: custom:mini-graph-card
+ name: Proxmox01 VMs (CPU / MEM)
+ icon: mdi:chart-line
+ hours_to_show: 24
+ points_per_hour: 2
+ line_width: 2
+ animate: true
+ show:
+ fill: false
+ legend: true
+ icon: true
+ name: true
+ state: false
+ entities:
+ - entity: sensor.qemu_docker69_169_cpu_used
+ name: Docker69 CPU
+ - entity: sensor.qemu_docker69_169_memory_used_percentage
+ name: Docker69 MEM
+ - entity: sensor.qemu_carlo_hass_105_cpu_used
+ name: HASS CPU
+ - entity: sensor.qemu_carlo_hass_105_memory_used_percentage
+ name: HASS MEM
+ - entity: sensor.qemu_wireguard_104_cpu_used
+ name: WireGuard CPU
+ - entity: sensor.qemu_wireguard_104_memory_used_percentage
+ name: WireGuard MEM
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: grid
+ columns: 3
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_docker69_169_status
+ name: Docker69
+ icon: mdi:docker
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_docker69_169_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_docker69_169_reboot
+ name: Docker69
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_carlo_hass_105_status
+ name: HASS
+ icon: mdi:home-assistant
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_carlo_hass_105_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_carlo_hass_105_reboot
+ name: HASS
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_wireguard_104_status
+ name: WireGuard
+ icon: mdi:vpn
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_wireguard_104_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_wireguard_104_reboot
+ name: WireGuard
+
+ - type: vertical-stack
+ cards:
+ - type: custom:mini-graph-card
+ name: Proxmox02
+ icon: mdi:server
+ hours_to_show: 24
+ points_per_hour: 2
+ line_width: 2
+ animate: true
+ show:
+ fill: true
+ legend: true
+ icon: true
+ name: true
+ state: true
+ entities:
+ - entity: sensor.node_proxmox02_cpu_used
+ name: CPU
+ - entity: sensor.node_proxmox02_memory_used_percentage
+ name: Memory
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: custom:mini-graph-card
+ name: Frigate VM (CPU / MEM)
+ icon: mdi:video
+ hours_to_show: 24
+ points_per_hour: 2
+ line_width: 2
+ animate: true
+ show:
+ fill: false
+ legend: true
+ icon: true
+ name: true
+ state: false
+ entities:
+ - entity: sensor.qemu_docker2_101_cpu_used
+ name: CPU
+ - entity: sensor.qemu_docker2_101_memory_used_percentage
+ name: MEM
+ card_mod:
+ style: !include /config/dashboards/infrastructure/card_mod/infra_card.yaml
+ - type: grid
+ columns: 3
+ square: false
+ cards:
+ - type: custom:button-card
+ template: bearstone_infra_device_tile
+ entity: sensor.qemu_docker2_101_status
+ name: Frigate
+ icon: mdi:video
+ label: >
+ [[[ return "Last boot: " + (states['sensor.qemu_docker2_101_last_boot']?.state ?? 'unknown'); ]]]
+ variables:
+ button_entity: button.qemu_docker2_101_reboot
+ name: Frigate
diff --git a/config/dashboards/infrastructure/partials/vacuum_badges.yaml b/config/dashboards/infrastructure/partials/vacuum_badges.yaml
new file mode 100644
index 00000000..755ff304
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/vacuum_badges.yaml
@@ -0,0 +1,16 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - vacuum badges
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/infrastructure/views/03_vacuum.yaml key `badges`.
+######################################################################
+
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: input_boolean.l10s_vacuum_on_demand
diff --git a/config/dashboards/infrastructure/partials/vacuum_sections.yaml b/config/dashboards/infrastructure/partials/vacuum_sections.yaml
new file mode 100644
index 00000000..eda04a2d
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/vacuum_sections.yaml
@@ -0,0 +1,344 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - vacuum sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/infrastructure/views/03_vacuum.yaml key `sections`.
+######################################################################
+
+- type: grid
+ cards:
+ - type: tile
+ entity: input_text.l10s_vacuum_room_catalog
+ vertical: false
+ features_position: bottom
+ grid_options:
+ columns: full
+ - type: tile
+ entity: input_text.l10s_vacuum_room_queue
+ vertical: false
+ features_position: bottom
+ grid_options:
+ columns: full
+ - type: tile
+ entity: input_text.l10s_vacuum_rooms_cleaned_today
+ vertical: false
+ features_position: bottom
+ grid_options:
+ columns: full
+ - type: tile
+ grid_options:
+ columns: full
+ entity: sensor.l10s_vacuum_current_room
+ state_content:
+ - state
+ - room_id
+ - last_changed
+ vertical: false
+ features_position: bottom
+ - type: tile
+ entity: input_select.l10s_vacuum_phase
+- type: grid
+ cards:
+ - type: custom:xiaomi-vacuum-map-card
+ map_source:
+ camera: camera.l10s_vacuum_map
+ calibration_source:
+ camera: true
+ entity: vacuum.l10s_vacuum
+ vacuum_platform: Tasshack/dreame-vacuum
+ map_modes:
+ - template: vacuum_clean_zone
+ - template: vacuum_clean_point
+ - template: vacuum_clean_segment
+ predefined_selections:
+ - id: '1'
+ icon:
+ name: mdi:home-outline
+ x: -8100
+ y: 12400
+ label:
+ text: Pool-Bath
+ x: -8100
+ y: 12400
+ offset_y: 35
+ outline:
+ - - -9950
+ - 11350
+ - - -6650
+ - 11350
+ - - -6650
+ - 12900
+ - - -9950
+ - 12900
+ - id: '2'
+ icon:
+ name: mdi:monitor-shimmer
+ x: -4650
+ y: 10900
+ label:
+ text: Office
+ x: -4650
+ y: 10900
+ offset_y: 35
+ outline:
+ - - -6650
+ - 7400
+ - - -2800
+ - 7400
+ - - -2800
+ - 12850
+ - - -6650
+ - 12850
+ - id: '3'
+ icon:
+ name: mdi:home-outline
+ x: -5600
+ y: 5250
+ label:
+ text: Kids-Bathroom
+ x: -5600
+ y: 5250
+ offset_y: 35
+ outline:
+ - - -6450
+ - 4250
+ - - -4750
+ - 4250
+ - - -4750
+ - 6150
+ - - -6450
+ - 6150
+ - id: '4'
+ icon:
+ name: mdi:home-outline
+ x: 7300
+ y: 4100
+ label:
+ text: Master-Bathroom
+ x: 7300
+ y: 4100
+ offset_y: 35
+ outline:
+ - - 5450
+ - 250
+ - - 9400
+ - 250
+ - - 9400
+ - 7850
+ - - 5450
+ - 7850
+ - id: '6'
+ icon:
+ name: mdi:home-outline
+ x: -8450
+ y: 4200
+ label:
+ text: Paige-Bedroom
+ x: -8450
+ y: 4200
+ offset_y: 35
+ outline:
+ - - -9900
+ - 1600
+ - - -6600
+ - 1600
+ - - -6600
+ - 6100
+ - - -9900
+ - 6100
+ - id: '7'
+ icon:
+ name: mdi:home-outline
+ x: 6450
+ y: 10400
+ label:
+ text: Master-Bedroom
+ x: 6450
+ y: 10400
+ offset_y: 35
+ outline:
+ - - 3450
+ - 7850
+ - - 9550
+ - 7850
+ - - 9550
+ - 12850
+ - - 3450
+ - 12850
+ - id: '8'
+ icon:
+ name: mdi:home-outline
+ x: -8300
+ y: 9300
+ label:
+ text: Justin-Bedroom
+ x: -8300
+ y: 9300
+ offset_y: 35
+ outline:
+ - - -9950
+ - 6250
+ - - -6650
+ - 6250
+ - - -6650
+ - 11150
+ - - -9950
+ - 11150
+ - id: '9'
+ icon:
+ name: mdi:home-outline
+ x: 7250
+ y: -2200
+ label:
+ text: Stacey-Office
+ x: 7250
+ y: -2200
+ offset_y: 35
+ outline:
+ - - 5450
+ - -4700
+ - - 9450
+ - -4700
+ - - 9450
+ - 350
+ - - 5450
+ - 350
+ - id: '10'
+ icon:
+ name: mdi:sofa-outline
+ x: 2500
+ y: 4800
+ label:
+ text: Living Room
+ x: 2500
+ y: 4800
+ offset_y: 35
+ outline:
+ - - -650
+ - 750
+ - - 5300
+ - 750
+ - - 5300
+ - 8800
+ - - -650
+ - 8800
+ - id: '11'
+ icon:
+ name: mdi:home-outline
+ x: -5350
+ y: 2600
+ label:
+ text: Garage-Hallway
+ x: -5350
+ y: 2600
+ offset_y: 35
+ outline:
+ - - -6600
+ - 1100
+ - - -4050
+ - 1100
+ - - -4050
+ - 4200
+ - - -6600
+ - 4200
+ - id: '12'
+ icon:
+ name: mdi:home-outline
+ x: 700
+ y: 8900
+ label:
+ text: Dining-Room
+ x: 700
+ y: 8900
+ offset_y: 35
+ outline:
+ - - -4350
+ - 6000
+ - - 2650
+ - 6000
+ - - 2650
+ - 12650
+ - - -4350
+ - 12650
+ - id: '13'
+ icon:
+ name: mdi:home-outline
+ x: -6200
+ y: 6800
+ label:
+ text: Hallway
+ x: -6200
+ y: 6800
+ offset_y: 35
+ outline:
+ - - -7550
+ - 6100
+ - - -4350
+ - 6100
+ - - -4350
+ - 7700
+ - - -7550
+ - 7700
+ - id: '14'
+ icon:
+ name: mdi:chef-hat
+ x: -1700
+ y: 3350
+ label:
+ text: Kitchen
+ x: -1700
+ y: 3350
+ offset_y: 35
+ outline:
+ - - -4200
+ - 950
+ - - -300
+ - 950
+ - - -300
+ - 6100
+ - - -4200
+ - 6100
+ - id: '15'
+ icon:
+ name: mdi:home-outline
+ x: 4050
+ y: -1350
+ label:
+ text: Foyer
+ x: 4050
+ y: -1350
+ offset_y: 35
+ outline:
+ - - 2850
+ - -3500
+ - - 5450
+ - -3500
+ - - 5450
+ - 800
+ - - 2850
+ - 800
+ - id: '17'
+ icon:
+ name: mdi:home-outline
+ x: 750
+ y: -1250
+ label:
+ text: Formal-Dining
+ x: 750
+ y: -1250
+ offset_y: 35
+ outline:
+ - - -1500
+ - -3500
+ - - 2950
+ - -3500
+ - - 2950
+ - 950
+ - - -1500
+ - 950
+ map_locked: true
+ two_finger_pan: true
diff --git a/config/dashboards/infrastructure/partials/view_cards.yaml b/config/dashboards/infrastructure/partials/view_cards.yaml
new file mode 100644
index 00000000..8c3a4abc
--- /dev/null
+++ b/config/dashboards/infrastructure/partials/view_cards.yaml
@@ -0,0 +1,15 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Partial - view cards
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/infrastructure/views/04_view.yaml key `cards`.
+######################################################################
+
+- type: logbook
+ target:
+ entity_id:
+ - sensor.activity_feed
diff --git a/config/dashboards/infrastructure/popups/.gitkeep b/config/dashboards/infrastructure/popups/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/infrastructure/templates/button_card_templates.yaml b/config/dashboards/infrastructure/templates/button_card_templates.yaml
new file mode 100644
index 00000000..3a2dc973
--- /dev/null
+++ b/config/dashboards/infrastructure/templates/button_card_templates.yaml
@@ -0,0 +1,304 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure Templates - custom:button-card
+# Shared `button_card_templates` used across Infrastructure views.
+# -------------------------------------------------------------------
+# Notes: Keep templates generic; view-specific tuning stays in the view partials.
+######################################################################
+
+bearstone_infra_base:
+ show_icon: true
+ show_name: true
+ show_state: true
+ tap_action:
+ action: more-info
+ styles:
+ card:
+ - border-radius: 18px
+ - padding: 14px
+ - box-shadow: none
+ - background: var(--ha-card-background, var(--card-background-color))
+ - border: 1px solid rgba(0,0,0,0.06)
+ - overflow: hidden
+ grid:
+ - grid-template-areas: "\"i n\" \"i s\""
+ - grid-template-columns: 40px 1fr
+ - grid-template-rows: min-content min-content
+ icon:
+ - width: 22px
+ - color: var(--primary-text-color)
+ name:
+ - font-weight: 700
+ - font-size: 14px
+ - justify-self: start
+ - padding-bottom: 2px
+ state:
+ - font-size: 12px
+ - opacity: 0.75
+ - justify-self: start
+
+bearstone_infra_chip:
+ template: bearstone_infra_base
+ show_state: true
+ styles:
+ card:
+ - border-radius: 999px
+ - padding: 10px 12px
+ - border: 1px solid rgba(0,0,0,0.06)
+ - background: rgba(255,255,255,0.75)
+ - backdrop-filter: blur(6px)
+ - -webkit-backdrop-filter: blur(6px)
+ grid:
+ - grid-template-areas: "\"i n\" \"i s\""
+ - grid-template-columns: 28px 1fr
+ icon:
+ - width: 18px
+ name:
+ - font-weight: 700
+ - font-size: 12px
+ state:
+ - font-size: 11px
+ - opacity: 0.7
+
+bearstone_infra_chip_running:
+ template: bearstone_infra_chip
+ state:
+ - value: 'on'
+ styles:
+ card:
+ - border-color: rgba(67,160,71,0.45)
+ - background: rgba(232,245,233,0.85)
+ icon:
+ - color: rgba(46,125,50,1)
+ - value: 'off'
+ styles:
+ card:
+ - border-color: rgba(229,57,53,0.35)
+ - background: rgba(255,235,238,0.85)
+ icon:
+ - color: rgba(198,40,40,1)
+ - value: unavailable
+ styles:
+ card:
+ - border-color: rgba(229,57,53,0.35)
+ - background: rgba(255,235,238,0.85)
+ icon:
+ - color: rgba(198,40,40,1)
+
+bearstone_infra_tile:
+ template: bearstone_infra_base
+ show_label: true
+ label: '[[[ return variables.label ? variables.label : "" ]]]'
+ styles:
+ grid:
+ - grid-template-areas: "\"i n\" \"i l\""
+ - grid-template-rows: min-content min-content
+ label:
+ - font-size: 12px
+ - opacity: 0.8
+ - justify-self: start
+ state:
+ - value: unavailable
+ styles:
+ card:
+ - border-color: rgba(229,57,53,0.35)
+ - background: rgba(255,235,238,0.85)
+
+bearstone_infra_reboot:
+ template: bearstone_infra_tile
+ show_state: false
+ icon: mdi:restart
+ label: '[[[ return variables.subtitle ? variables.subtitle : "Hold to reboot" ]]]'
+ hold_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: '[[[ return variables.button_entity ]]]'
+ confirmation:
+ text: '[[[ return "Reboot " + (variables.name ? variables.name : "device") + "?" ]]]'
+ styles:
+ icon:
+ - color: var(--secondary-text-color)
+
+bearstone_infra_device_tile:
+ template: bearstone_infra_tile
+ show_state: true
+ label: '[[[ return variables.subtitle ? variables.subtitle : "" ]]]'
+ hold_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: '[[[ return variables.button_entity ]]]'
+ confirmation:
+ text: '[[[ return "Restart " + (variables.name ? variables.name : "device") + "?" ]]]'
+ styles:
+ state:
+ - font-weight: 700
+
+bearstone_infra_container_row:
+ template: bearstone_infra_list_row_running
+ show_label: false
+ tap_action:
+ action: none
+ hold_action:
+ action: call-service
+ service: button.press
+ service_data:
+ entity_id: '[[[ return variables.restart_button ]]]'
+ confirmation:
+ text: '[[[ return "Restart container " + entity.attributes.friendly_name + "?" ]]]'
+ icon: mdi:docker
+
+bearstone_infra_panel_header:
+ show_icon: false
+ show_state: false
+ show_label: false
+ tap_action:
+ action: none
+ styles:
+ card:
+ - background: transparent
+ - border: none
+ - box-shadow: none
+ - padding: 6px 2px 10px 2px
+ name:
+ - font-size: 18px
+ - font-weight: 800
+ - justify-self: start
+
+bearstone_infra_list_row:
+ show_icon: true
+ show_name: true
+ show_state: true
+ show_label: false
+ tap_action:
+ action: more-info
+ styles:
+ card:
+ - border-radius: 14px
+ - padding: 12px 12px
+ - box-shadow: none
+ - border: 1px solid rgba(0,0,0,0.03)
+ - background: rgba(0,0,0,0.02)
+ - width: 100%
+ - box-sizing: border-box
+ grid:
+ - grid-template-areas: "\"i n s\""
+ - grid-template-columns: 24px 1fr auto
+ - align-items: center
+ - column-gap: 10px
+ icon:
+ - width: 18px
+ - color: var(--primary-color)
+ name:
+ - font-weight: 700
+ - font-size: 14px
+ - justify-self: start
+ - opacity: 0.95
+ - min-width: 0
+ - overflow: hidden
+ - text-overflow: ellipsis
+ - white-space: nowrap
+ state:
+ - justify-self: end
+ - font-weight: 700
+ - font-size: 13px
+ - opacity: 0.8
+ - padding-left: 8px
+ - white-space: nowrap
+
+bearstone_infra_list_row_running:
+ template: bearstone_infra_list_row
+ state:
+ - value: 'on'
+ styles:
+ card:
+ - border-color: rgba(67,160,71,0.45)
+ - background: rgba(232,245,233,0.85)
+ icon:
+ - color: rgba(46,125,50,1)
+ state:
+ - color: rgba(46,125,50,1)
+ - opacity: 1
+ - value: 'off'
+ styles:
+ card:
+ - border-color: rgba(229,57,53,0.35)
+ - background: rgba(255,235,238,0.85)
+ icon:
+ - color: rgba(198,40,40,1)
+ state:
+ - color: rgba(198,40,40,1)
+ - opacity: 1
+ - value: Running
+ styles:
+ icon:
+ - color: rgba(46,125,50,1)
+ state:
+ - color: rgba(46,125,50,1)
+ - opacity: 1
+ - value: running
+ styles:
+ icon:
+ - color: rgba(46,125,50,1)
+ state:
+ - color: rgba(46,125,50,1)
+ - opacity: 1
+ - value: Stopped
+ styles:
+ icon:
+ - color: rgba(198,40,40,1)
+ state:
+ - color: rgba(198,40,40,1)
+ - opacity: 1
+ - value: stopped
+ styles:
+ icon:
+ - color: rgba(198,40,40,1)
+ state:
+ - color: rgba(198,40,40,1)
+ - opacity: 1
+ - value: unavailable
+ styles:
+ icon:
+ - color: rgba(198,40,40,1)
+ state:
+ - color: rgba(198,40,40,1)
+ - opacity: 1
+
+bearstone_infra_kpi:
+ show_icon: true
+ show_name: true
+ show_state: true
+ show_label: false
+ tap_action:
+ action: more-info
+ styles:
+ card:
+ - border-radius: 14px
+ - padding: 12px
+ - box-shadow: none
+ - border: 1px solid rgba(0,0,0,0.03)
+ - background: rgba(0,0,0,0.02)
+ grid:
+ - grid-template-areas: "\"i\" \"n\" \"s\""
+ - grid-template-rows: 22px min-content min-content
+ - row-gap: 6px
+ - justify-items: center
+ icon:
+ - width: 18px
+ - color: var(--primary-color)
+ name:
+ - font-size: 11px
+ - font-weight: 800
+ - opacity: 0.65
+ - text-transform: uppercase
+ - text-align: center
+ - letter-spacing: 0.6px
+ state:
+ - font-size: 16px
+ - font-weight: 800
+ - opacity: 0.9
diff --git a/config/dashboards/infrastructure/views/01_home.yaml b/config/dashboards/infrastructure/views/01_home.yaml
new file mode 100644
index 00000000..d5ea1d7d
--- /dev/null
+++ b/config/dashboards/infrastructure/views/01_home.yaml
@@ -0,0 +1,19 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure View - Home
+# Clean layout inspired by Stitch wireframe (hosts, right-rail trends, storage, wifi, apt).
+# -------------------------------------------------------------------
+# Notes: Uses existing Infrastructure entities from Proxmox/UniFi/UPS/Docker hosts.
+######################################################################
+
+title: Infrastructure
+path: home
+type: sections
+icon: mdi:view-dashboard-variant
+max_columns: 4
+badges: []
+sections: !include /config/dashboards/infrastructure/partials/home_sections.yaml
+cards: []
diff --git a/config/dashboards/infrastructure/views/02_proxmox.yaml b/config/dashboards/infrastructure/views/02_proxmox.yaml
new file mode 100644
index 00000000..90ff8120
--- /dev/null
+++ b/config/dashboards/infrastructure/views/02_proxmox.yaml
@@ -0,0 +1,19 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure View - ProxMox
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.dashboard_infrastructure view index 1.
+######################################################################
+
+title: ProxMox
+path: proxmox
+cards: []
+type: sections
+icon: mdi:server
+badges: []
+sections: !include /config/dashboards/infrastructure/partials/proxmox_sections.yaml
+max_columns: 4
diff --git a/config/dashboards/infrastructure/views/03_pi_hole.yaml b/config/dashboards/infrastructure/views/03_pi_hole.yaml
new file mode 100644
index 00000000..14cf420c
--- /dev/null
+++ b/config/dashboards/infrastructure/views/03_pi_hole.yaml
@@ -0,0 +1,18 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure View - Pi-Hole
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.dashboard_infrastructure view index 2.
+######################################################################
+
+type: panel
+path: pi-hole
+title: Pi-Hole
+icon: mdi:pi-hole
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+cards: !include /config/dashboards/infrastructure/partials/pi_hole_cards.yaml
diff --git a/config/dashboards/infrastructure/views/04_vacuum.yaml b/config/dashboards/infrastructure/views/04_vacuum.yaml
new file mode 100644
index 00000000..bae82707
--- /dev/null
+++ b/config/dashboards/infrastructure/views/04_vacuum.yaml
@@ -0,0 +1,23 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure View - Vacuum
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.dashboard_infrastructure view index 3.
+######################################################################
+
+title: Vacuum
+icon: mdi:robot-vacuum
+type: sections
+cards: []
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+- user: 46a8d15eb20e4a1daf2d1d1f63180ec5
+- user: 8fc5ba22cb32430a9143beb4df70541b
+- user: 19970706e7e4492c844ea2fc94a4599a
+sections: !include /config/dashboards/infrastructure/partials/vacuum_sections.yaml
+max_columns: 2
+badges: !include /config/dashboards/infrastructure/partials/vacuum_badges.yaml
diff --git a/config/dashboards/infrastructure/views/05_activity_feed.yaml b/config/dashboards/infrastructure/views/05_activity_feed.yaml
new file mode 100644
index 00000000..ec4b5286
--- /dev/null
+++ b/config/dashboards/infrastructure/views/05_activity_feed.yaml
@@ -0,0 +1,16 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure View - Untitled
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.dashboard_infrastructure view index 4.
+######################################################################
+
+type: panel
+icon: mdi:clipboard-text-outline
+title: Activity
+path: activity
+cards: !include /config/dashboards/infrastructure/partials/view_cards.yaml
diff --git a/config/dashboards/infrastructure/views/06_mariadb.yaml b/config/dashboards/infrastructure/views/06_mariadb.yaml
new file mode 100644
index 00000000..84e79f06
--- /dev/null
+++ b/config/dashboards/infrastructure/views/06_mariadb.yaml
@@ -0,0 +1,18 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure View - MariaDB
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.dashboard_infrastructure view index 5.
+######################################################################
+
+type: sections
+title: MariaDB
+path: mariadb
+max_columns: 3
+icon: mdi:database
+sections: !include /config/dashboards/infrastructure/partials/mariadb_sections.yaml
+cards: []
diff --git a/config/dashboards/infrastructure/views/07_docker_containers.yaml b/config/dashboards/infrastructure/views/07_docker_containers.yaml
new file mode 100644
index 00000000..4e0cac14
--- /dev/null
+++ b/config/dashboards/infrastructure/views/07_docker_containers.yaml
@@ -0,0 +1,18 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Infrastructure View - Docker containers
+# Container status + restart controls (Portainer integration).
+# -------------------------------------------------------------------
+# Notes: Uses `binary_sensor.*_status` and `button.*_restart_container` entities (Portainer integration).
+######################################################################
+
+title: Docker
+path: docker
+type: sections
+icon: mdi:docker
+badges: []
+sections: !include /config/dashboards/infrastructure/partials/docker_containers_sections.yaml
+max_columns: 4
diff --git a/config/dashboards/kiosk/card_mod/.gitkeep b/config/dashboards/kiosk/card_mod/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/kiosk/cards/.gitkeep b/config/dashboards/kiosk/cards/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/kiosk/dashboard.yaml b/config/dashboards/kiosk/dashboard.yaml
new file mode 100644
index 00000000..99e6dddc
--- /dev/null
+++ b/config/dashboards/kiosk/dashboard.yaml
@@ -0,0 +1,12 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# KIOSK Dashboard - YAML entrypoint
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Entry point for dashboard key `dashboard-kiosk`. Views are loaded from /config/dashboards/kiosk/views.
+######################################################################
+
+views: !include_dir_list /config/dashboards/kiosk/views
diff --git a/config/dashboards/kiosk/partials/.gitkeep b/config/dashboards/kiosk/partials/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/kiosk/partials/kiosk_oveview_badges.yaml b/config/dashboards/kiosk/partials/kiosk_oveview_badges.yaml
new file mode 100644
index 00000000..1bbea1c9
--- /dev/null
+++ b/config/dashboards/kiosk/partials/kiosk_oveview_badges.yaml
@@ -0,0 +1,20 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Kiosk Partial - kiosk_oveview badges
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/kiosk/views/01_kiosk_oveview.yaml key `badges`.
+######################################################################
+
+- type: entity
+ show_name: true
+ show_state: false
+ show_icon: true
+ entity: switch.alarm_panel_1_screensaver
+ tap_action:
+ action: toggle
+ show_entity_picture: false
+ name: Turn On ScreenSaver
diff --git a/config/dashboards/kiosk/partials/kiosk_oveview_sections.yaml b/config/dashboards/kiosk/partials/kiosk_oveview_sections.yaml
new file mode 100644
index 00000000..57af6b63
--- /dev/null
+++ b/config/dashboards/kiosk/partials/kiosk_oveview_sections.yaml
@@ -0,0 +1,73 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Kiosk Partial - kiosk_oveview sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/kiosk/views/01_kiosk_oveview.yaml key `sections`.
+######################################################################
+
+- type: grid
+ cards:
+ - type: picture-glance
+ camera_image: camera.frontdoorbell
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 12
+ rows: auto
+ column_span: 1
+- type: grid
+ column_span: 1
+ cards:
+ - type: picture-glance
+ camera_image: camera.garagecam
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 6
+ rows: auto
+ - type: picture-glance
+ camera_image: camera.driveway
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 6
+ rows: auto
+ - type: picture-glance
+ camera_image: camera.kidsgate
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 6
+ rows: auto
+ - type: picture-glance
+ camera_image: camera.frontlawn
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 6
+ rows: auto
+ - type: picture-glance
+ camera_image: camera.bedroomgate
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 6
+ rows: auto
+ - type: picture-glance
+ camera_image: camera.filtergate
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 6
+ rows: auto
+ - type: picture-glance
+ camera_image: camera.poolcam
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 6
+ rows: auto
diff --git a/config/dashboards/kiosk/partials/locator_sections.yaml b/config/dashboards/kiosk/partials/locator_sections.yaml
new file mode 100644
index 00000000..f82a6db9
--- /dev/null
+++ b/config/dashboards/kiosk/partials/locator_sections.yaml
@@ -0,0 +1,134 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Kiosk Partial - locator sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/kiosk/views/02_locator.yaml key `sections`.
+######################################################################
+
+- cards:
+ - square: true
+ type: grid
+ cards:
+ - type: picture-entity
+ entity: person.carlo
+ name: Carlo
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ - type: picture-entity
+ entity: person.stacey
+ name: Stacey (Mom)
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ - type: picture-entity
+ entity: person.justin
+ name: Justin (Son)
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ - type: picture-entity
+ entity: person.paige
+ name: Paige (Daughter)
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ columns: 4
+ - type: entities
+ entities:
+ - type: conditional
+ conditions:
+ - entity: person.carlo
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.carlo_place
+ name: Carlo Location
+ - type: conditional
+ conditions:
+ - entity: person.stacey
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.stacey_place
+ attribute: place_name
+ name: Stacey Location
+ - type: conditional
+ conditions:
+ - entity: person.justin
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.justin_place
+ attribute: place_name
+ name: Justin Location
+ - type: conditional
+ conditions:
+ - entity: person.paige
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.paige_place
+ attribute: place_name
+ name: Paige Location
+ - show_state: true
+ show_name: true
+ camera_view: live
+ type: picture-entity
+ entity: camera.birdseye
+ column_span: 1
+- type: grid
+ cards:
+ - type: custom:mushroom-template-card
+ primary: Family Map
+ icon: mdi:map-marker
+ tap_action:
+ action: navigate
+ navigation_path: /lovelace/family_locator
+ hold_action:
+ action: none
+ double_tap_action:
+ action: none
+ layout: horizontal
+ fill_container: true
+ - type: map
+ entities:
+ - person.justin
+ - person.paige
+ hours_to_show: 48
+ aspect_ratio: '4:3'
+ theme_mode: auto
+ card_mod:
+ style: null
+ ha-map $ ha-entity-marker $: ".marker { \n /* Style person marker & adjust position to avoid blocking waypoints */\
+ \ \n border: 3px solid var(\u2014state-person) !important; \n border-radius: 50% 50% 50% 0px !important; \n transform:\
+ \ rotate(-45deg) translate(50%, -50%); \n overflow: visible !important;\n} \n.entity-picture { \n /* Correct orientation\
+ \ of person avatar / \n transform: rotate(45deg); \n border-radius: 50%; \n} \n"
+ ha-map $: "path:first-child { \n / Style accuracy radius / \n stroke: var(\u2014state-person); \n fill: color-mix(in\
+ \ srgb, var(\u2014state-person) 50%, transparent); \n stroke-width: 0px; } \npath:nth-child(even) { \n / Styling\
+ \ for waypoints / \n stroke: var(\u2014purple-color); \n stroke-width: 4px; \n} \npath:nth-child(odd):not(:first-child)\
+ \ { \n / Styling for lines */ \n stroke: var(\u2014purple-color); \n stroke-width: 4px; \n}\n:host { \n /* Define\
+ \ Person State colors. Can be added to theme / \n \u2014state-person-home: var(\u2014green-color); \n \u2014state-person-not-home:\
+ \ var(\u2014red-color); \n \u2014state-person-zone: var(\u2014blue-color); \n \u2014state-person-unknown: var(\u2014\
+ grey-color); \n / Set person state color */ \n \u2014state-person: \n {% if is_state(config.entities[0].entity,\
+ \ [\u2018home\u2019, \u2018not_home\u2019, \u2018unknown\u2019]) %} \n var(\u2014state-person-{{ states(config.entities[0].entity)\
+ \ | replace(\u2018_\u2019, \u2018-\u2018) }}) \n {% else %} \n var(\u2014state-person-zone) \n {% endif\
+ \ %}; \n}\n"
+ - show_current: true
+ show_forecast: true
+ type: weather-forecast
+ entity: weather.pirateweather
+ forecast_type: daily
+ secondary_info_attribute: humidity
diff --git a/config/dashboards/kiosk/popups/.gitkeep b/config/dashboards/kiosk/popups/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/kiosk/views/01_kiosk_oveview.yaml b/config/dashboards/kiosk/views/01_kiosk_oveview.yaml
new file mode 100644
index 00000000..23f30fd9
--- /dev/null
+++ b/config/dashboards/kiosk/views/01_kiosk_oveview.yaml
@@ -0,0 +1,33 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# KIOSK View - Overview
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.dashboard_kiosk view index 1.
+######################################################################
+
+title: Overview
+path: kiosk_oveview
+icon: mdi:cctv
+type: sections
+max_columns: 2
+sections: !include /config/dashboards/kiosk/partials/kiosk_oveview_sections.yaml
+badges: !include /config/dashboards/kiosk/partials/kiosk_oveview_badges.yaml
+cards: []
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+- user: 9543feb5402742a0ab90f301f09f1c0e
+dense_section_placement: true
+background:
+ opacity: 100
+ alignment: center
+ size: cover
+ repeat: no-repeat
+ attachment: fixed
+ image: /api/image/serve/caf7862354abd804ef658f899fb3218b/original
+header:
+ layout: center
+ badges_position: top
diff --git a/config/dashboards/kiosk/views/02_locator.yaml b/config/dashboards/kiosk/views/02_locator.yaml
new file mode 100644
index 00000000..7f6d3009
--- /dev/null
+++ b/config/dashboards/kiosk/views/02_locator.yaml
@@ -0,0 +1,29 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# KIOSK View - Locator
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.dashboard_kiosk view index 2.
+######################################################################
+
+type: sections
+max_columns: 3
+title: Locator
+path: locator
+icon: mdi:map-marker-radius-outline
+dense_section_placement: true
+background:
+ opacity: 100
+ alignment: center
+ size: cover
+ repeat: no-repeat
+ attachment: fixed
+ image: /api/image/serve/caf7862354abd804ef658f899fb3218b/original
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+- user: 9543feb5402742a0ab90f301f09f1c0e
+sections: !include /config/dashboards/kiosk/partials/locator_sections.yaml
+cards: []
diff --git a/config/dashboards/overview/card_mod/.gitkeep b/config/dashboards/overview/card_mod/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/overview/cards/.gitkeep b/config/dashboards/overview/cards/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/overview/dashboard.yaml b/config/dashboards/overview/dashboard.yaml
new file mode 100644
index 00000000..fb5ca1b2
--- /dev/null
+++ b/config/dashboards/overview/dashboard.yaml
@@ -0,0 +1,13 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Dashboard - YAML entrypoint
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Entry point for dashboard key `lovelace`. Views are loaded from /config/dashboards/overview/views.
+######################################################################
+
+title: Bear Stone
+views: !include_dir_list /config/dashboards/overview/views
diff --git a/config/dashboards/overview/partials/.gitkeep b/config/dashboards/overview/partials/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/overview/partials/admin_sections.yaml b/config/dashboards/overview/partials/admin_sections.yaml
new file mode 100644
index 00000000..16be50ea
--- /dev/null
+++ b/config/dashboards/overview/partials/admin_sections.yaml
@@ -0,0 +1,61 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - admin sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/07_admin.yaml key `sections`.
+######################################################################
+
+- type: grid
+ cards:
+ - type: tile
+ entity: automation.llm_vision_garage_cans_upper_right
+ - type: tile
+ entity: input_text.llmvision_garbage_last_keyframe
+ - type: tile
+ entity: input_datetime.llmvision_garbage_last_run
+ - type: tile
+ entity: input_text.llmvision_garbage_last_response
+ - type: tile
+ entity: calendar.llm_vision_timeline
+ - type: tile
+ entity: update.llm_vision_update
+ - type: tile
+ entity: input_button.llmvision_garbage_check
+- type: grid
+ cards:
+ - type: markdown
+ title: AI Diagnostics
+ content: '**OpenAI Response:**
+
+
+ {{ state_attr(''sensor.openai_response'', ''response'') }}
+
+ '
+ - type: markdown
+ title: AI Diagnostics
+ content: '**OpenAI Instructions:**
+
+
+ {{ state_attr(''sensor.openai_instructions'', ''instructions'') }}
+
+ '
+- type: grid
+ cards:
+ - camera_view: auto
+ type: picture-glance
+ title: Bedroom Tablet
+ image: https://demo.home-assistant.io/stub_config/kitchen.png
+ entities:
+ - entity: switch.alarm_panel_1_screensaver
+ image_entity: image.alarm_panel_1_screenshot
+ - camera_view: auto
+ type: picture-glance
+ title: Bedroom Tablet
+ image: https://demo.home-assistant.io/stub_config/kitchen.png
+ entities:
+ - entity: sensor.alarm_panel_1_battery
+ camera_image: camera.alarm_panel_1
diff --git a/config/dashboards/overview/partials/camera_badges.yaml b/config/dashboards/overview/partials/camera_badges.yaml
new file mode 100644
index 00000000..0e852ed7
--- /dev/null
+++ b/config/dashboards/overview/partials/camera_badges.yaml
@@ -0,0 +1,29 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - camera badges
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/03_camera.yaml key `badges`.
+######################################################################
+
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: cover.large_garage_door
+ color: ''
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: cover.small_garage_door
+ color: ''
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: lock.front_door
+ color: ''
diff --git a/config/dashboards/overview/partials/camera_sections.yaml b/config/dashboards/overview/partials/camera_sections.yaml
new file mode 100644
index 00000000..8947677f
--- /dev/null
+++ b/config/dashboards/overview/partials/camera_sections.yaml
@@ -0,0 +1,54 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - camera sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/03_camera.yaml key `sections`.
+######################################################################
+
+- type: grid
+ cards:
+ - type: picture-glance
+ camera_image: camera.frontdoorbell
+ camera_view: auto
+ entities: []
+ grid_options:
+ columns: 12
+ rows: 7
+ - type: picture-glance
+ camera_image: camera.poolcam
+ camera_view: auto
+ entities: []
+- type: grid
+ column_span: 3
+ cards:
+ - type: picture-glance
+ camera_image: camera.garagecam
+ camera_view: auto
+ entities: []
+ - type: picture-glance
+ camera_image: camera.frontlawn
+ camera_view: auto
+ entities: []
+ - type: picture-glance
+ camera_image: camera.driveway
+ camera_view: auto
+ entities: []
+ - type: picture-glance
+ camera_image: camera.kidsgate
+ camera_view: auto
+ entities: []
+ - type: picture-glance
+ camera_image: camera.bedroomgate
+ camera_view: auto
+ entities: []
+ - type: picture-glance
+ camera_image: camera.filtergate
+ camera_view: auto
+ entities: []
+ - type: custom:frigate-events-card
+ frigate_client_id: frigate
+ event_count: 3
diff --git a/config/dashboards/overview/partials/cameras_cards.yaml b/config/dashboards/overview/partials/cameras_cards.yaml
new file mode 100644
index 00000000..f44d075b
--- /dev/null
+++ b/config/dashboards/overview/partials/cameras_cards.yaml
@@ -0,0 +1,51 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - cameras cards
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/04_cameras.yaml key `cards`.
+######################################################################
+
+- type: custom:frigate-card
+ cameras:
+ - camera_entity: camera.frontdoorbell
+ dependencies:
+ all_cameras: true
+ cameras:
+ - camera.bedroomgate
+ - camera.filtergate
+ - camera.driveway
+ - camera_entity: camera.bedroomgate
+ - camera_entity: camera.filtergate
+ - camera_entity: camera.driveway
+ - camera_entity: camera.poolcam
+ live_provider: auto
+ - camera_entity: camera.blink1
+ live_provider: auto
+ - camera_entity: camera.frontlawn
+ live_provider: auto
+ - camera_entity: camera.kidsgate
+ - camera_entity: camera.garagecam
+ view:
+ default: snapshots
+ update_cycle_camera: true
+ scan:
+ enabled: true
+ menu:
+ style: outside
+ media_gallery:
+ controls:
+ thumbnails:
+ size: 175
+ show_favorite_control: false
+ show_details: false
+ dimensions:
+ min_height: '500'
+ aspect_ratio: '16:9'
+ aspect_ratio_mode: unconstrained
+ media_viewer:
+ layout:
+ fit: cover
diff --git a/config/dashboards/overview/partials/family_locator_cards.yaml b/config/dashboards/overview/partials/family_locator_cards.yaml
new file mode 100644
index 00000000..331d3197
--- /dev/null
+++ b/config/dashboards/overview/partials/family_locator_cards.yaml
@@ -0,0 +1,36 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - family_locator cards
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/02_family_locator.yaml key `cards`.
+######################################################################
+
+- type: map
+ entities:
+ - person.carlo
+ - person.stacey
+ - person.justin
+ - person.paige
+ hours_to_show: 48
+ aspect_ratio: '4:3'
+ theme_mode: auto
+ card_mod:
+ style: null
+ ha-map $ ha-entity-marker $: ".marker { \n /* Style person marker & adjust position to avoid blocking waypoints */ \n\
+ \ border: 3px solid var(\u2014state-person) !important; \n border-radius: 50% 50% 50% 0px !important; \n transform:\
+ \ rotate(-45deg) translate(50%, -50%); \n overflow: visible !important;\n} \n.entity-picture { \n /* Correct orientation\
+ \ of person avatar / \n transform: rotate(45deg); \n border-radius: 50%; \n} \n"
+ ha-map $: "path:first-child { \n / Style accuracy radius / \n stroke: var(\u2014state-person); \n fill: color-mix(in\
+ \ srgb, var(\u2014state-person) 50%, transparent); \n stroke-width: 0px; } \npath:nth-child(even) { \n / Styling for\
+ \ waypoints / \n stroke: var(\u2014purple-color); \n stroke-width: 4px; \n} \npath:nth-child(odd):not(:first-child)\
+ \ { \n / Styling for lines */ \n stroke: var(\u2014purple-color); \n stroke-width: 4px; \n}\n:host { \n /* Define\
+ \ Person State colors. Can be added to theme / \n \u2014state-person-home: var(\u2014green-color); \n \u2014state-person-not-home:\
+ \ var(\u2014red-color); \n \u2014state-person-zone: var(\u2014blue-color); \n \u2014state-person-unknown: var(\u2014\
+ grey-color); \n / Set person state color */ \n \u2014state-person: \n {% if is_state(config.entities[0].entity,\
+ \ [\u2018home\u2019, \u2018not_home\u2019, \u2018unknown\u2019]) %} \n var(\u2014state-person-{{ states(config.entities[0].entity)\
+ \ | replace(\u2018_\u2019, \u2018-\u2018) }}) \n {% else %} \n var(\u2014state-person-zone) \n {% endif %};\
+ \ \n}\n"
diff --git a/config/dashboards/overview/partials/home_badges.yaml b/config/dashboards/overview/partials/home_badges.yaml
new file mode 100644
index 00000000..09f08854
--- /dev/null
+++ b/config/dashboards/overview/partials/home_badges.yaml
@@ -0,0 +1,21 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - home badges
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/01_home.yaml key `badges`.
+######################################################################
+
+- type: entity
+ entity: cover.large_garage_door
+ display_type: complete
+ show_entity_picture: false
+- type: entity
+ entity: cover.small_garage_door
+ display_type: complete
+- type: entity
+ entity: lock.front_door
+ display_type: complete
diff --git a/config/dashboards/overview/partials/home_sections.yaml b/config/dashboards/overview/partials/home_sections.yaml
new file mode 100644
index 00000000..b4673fcb
--- /dev/null
+++ b/config/dashboards/overview/partials/home_sections.yaml
@@ -0,0 +1,412 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - home sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/01_home.yaml key `sections`.
+######################################################################
+
+- cards:
+ - square: true
+ type: grid
+ cards:
+ - type: picture-entity
+ entity: person.carlo
+ name: Carlo
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ driving: grayscale(100%) opacity(50%)
+ - type: picture-entity
+ entity: person.stacey
+ name: Stacey
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ gym: grayscale(100%) opacity(50%)
+ driving: grayscale(100%) opacity(50%)
+ - type: picture-entity
+ entity: person.justin
+ name: Justin
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ Justin Dorm: grayscale(10%) opacity(50%)
+ Paige Dorm: grayscale(10%) opacity(50%)
+ gym: grayscale(100%) opacity(50%)
+ driving: grayscale(100%) opacity(50%)
+ - type: picture-entity
+ entity: person.paige
+ name: Paige
+ show_state: false
+ show_name: false
+ state_filter:
+ home: none
+ not_home: grayscale(100%) opacity(50%)
+ paige_work: grayscale(100%) opacity(50%)
+ Justin Dorm: grayscale(10%) opacity(50%)
+ Paige Dorm: grayscale(10%) opacity(50%)
+ gym: grayscale(100%) opacity(50%)
+ driving: grayscale(100%) opacity(50%)
+ columns: 4
+ - type: entities
+ entities:
+ - type: conditional
+ conditions:
+ - entity: person.carlo
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.carlo_place
+ attribute: formatted_place
+ name: Carlo Location
+ - type: conditional
+ conditions:
+ - entity: person.stacey
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.stacey_place
+ attribute: formatted_place
+ name: Stacey Location
+ - type: conditional
+ conditions:
+ - entity: person.justin
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.justin_place
+ attribute: formatted_place
+ name: Justin Location
+ - type: conditional
+ conditions:
+ - entity: person.paige
+ state_not: home
+ row:
+ type: attribute
+ entity: sensor.paige_place
+ attribute: formatted_place
+ name: Paige Location
+ state_color: false
+ - type: custom:mushroom-template-card
+ primary: Zoom Map
+ icon: mdi:map-marker
+ tap_action:
+ action: navigate
+ navigation_path: /lovelace/family_locator
+ hold_action:
+ action: none
+ double_tap_action:
+ action: none
+ layout: horizontal
+ fill_container: true
+ - type: map
+ entities:
+ - person.justin
+ - person.paige
+ hours_to_show: 48
+ aspect_ratio: '4:3'
+ theme_mode: auto
+ card_mod:
+ style: null
+ ha-map $ ha-entity-marker $: ".marker { \n /* Style person marker & adjust position to avoid blocking waypoints */\
+ \ \n border: 3px solid var(\u2014state-person) !important; \n border-radius: 50% 50% 50% 0px !important; \n transform:\
+ \ rotate(-45deg) translate(50%, -50%); \n overflow: visible !important;\n} \n.entity-picture { \n /* Correct orientation\
+ \ of person avatar / \n transform: rotate(45deg); \n border-radius: 50%; \n} \n"
+ ha-map $: "path:first-child { \n / Style accuracy radius / \n stroke: var(\u2014state-person); \n fill: color-mix(in\
+ \ srgb, var(\u2014state-person) 50%, transparent); \n stroke-width: 0px; } \npath:nth-child(even) { \n / Styling\
+ \ for waypoints / \n stroke: var(\u2014purple-color);\n stroke-width: 4px; \n} \npath:nth-child(odd):not(:first-child)\
+ \ { \n / Styling for lines */ \n stroke: var(\u2014purple-color);\n stroke-width: 4px; \n}\n:host { \n /* Define\
+ \ Person State colors. Can be added to theme / \n \u2014state-person-home: var(\u2014green-color); \n \u2014state-person-not-home:\
+ \ var(\u2014red-color); \n \u2014state-person-zone: var(\u2014blue-color); \n \u2014state-person-unknown: var(\u2014\
+ grey-color); \n / Set person state color */ \n \u2014state-person: \n {% if is_state(config.entities[0].entity,\
+ \ [\u2018home\u2019, \u2018not_home\u2019, \u2018unknown\u2019]) %} \n var(\u2014state-person-{{ states(config.entities[0].entity)\
+ \ | replace(\u2018_\u2019, \u2018-\u2018) }}) \n {% else %} \n var(\u2014state-person-zone) \n {% endif\
+ \ %}; \n}\n"
+ - type: map
+ entities:
+ - person.carlo
+ - person.stacey
+ hours_to_show: 48
+ aspect_ratio: '4:3'
+ theme_mode: auto
+ card_mod:
+ style: null
+ ha-map $ ha-entity-marker $: ".marker { \n /* Style person marker & adjust position to avoid blocking waypoints */\
+ \ \n border: 3px solid var(\u2014state-person) !important; \n border-radius: 50% 50% 50% 0px !important; \n transform:\
+ \ rotate(-45deg) translate(50%, -50%); \n overflow: visible !important;\n} \n.entity-picture { \n /* Correct orientation\
+ \ of person avatar / \n transform: rotate(45deg); \n border-radius: 50%; \n} \n"
+ ha-map $: "path:first-child { \n / Style accuracy radius / \n stroke: var(\u2014state-person); \n fill: color-mix(in\
+ \ srgb, var(\u2014state-person) 50%, transparent); \n stroke-width: 0px; } \npath:nth-child(even) { \n / Styling\
+ \ for waypoints / \n stroke: var(\u2014purple-color); \n stroke-width: 4px; \n} \npath:nth-child(odd):not(:first-child)\
+ \ { \n / Styling for lines */ \n stroke: var(\u2014purple-color); \n stroke-width: 4px; \n}\n:host { \n /* Define\
+ \ Person State colors. Can be added to theme / \n \u2014state-person-home: var(\u2014green-color); \n \u2014state-person-not-home:\
+ \ var(\u2014red-color); \n \u2014state-person-zone: var(\u2014blue-color); \n \u2014state-person-unknown: var(\u2014\
+ grey-color); \n / Set person state color */ \n \u2014state-person: \n {% if is_state(config.entities[0].entity,\
+ \ [\u2018home\u2019, \u2018not_home\u2019, \u2018unknown\u2019]) %} \n var(\u2014state-person-{{ states(config.entities[0].entity)\
+ \ | replace(\u2018_\u2019, \u2018-\u2018) }}) \n {% else %} \n var(\u2014state-person-zone) \n {% endif\
+ \ %}; \n}\n"
+ column_span: 1
+- cards:
+ - type: custom:mushroom-vacuum-card
+ entity: vacuum.l10s_vacuum
+ icon_animation: true
+ commands:
+ - return_home
+ - start_pause
+ - locate
+ double_tap_action:
+ action: none
+ tap_action:
+ action: navigate
+ navigation_path: /lovelace/vacuum
+ visibility:
+ - condition: state
+ entity: vacuum.l10s_vacuum
+ state_not: docked
+ primary_info: name
+ fill_container: true
+ grid_options:
+ rows: 1
+ columns: full
+ layout: horizontal
+ - type: tile
+ entity: climate.downstairs
+ state_content:
+ - current_temperature
+ - temperature
+ vertical: false
+ features_position: bottom
+ - type: tile
+ entity: climate.upstairs
+ show_entity_picture: false
+ hide_state: false
+ state_content:
+ - current_temperature
+ - temperature
+ vertical: false
+ features_position: bottom
+ - type: custom:search-card
+ max_results: 10
+ - type: custom:bubble-card
+ card_type: button
+ button_type: slider
+ entity: light.living_room_lights
+ name: Living Room Lights
+ icon: mdi:sofa
+ show_state: true
+ show_attribute: false
+ show_last_changed: true
+ tap_action:
+ action: navigate
+ navigation_path: '#living_room'
+ grid_options:
+ columns: 6
+ rows: 1
+ card_layout: large
+ - type: custom:bubble-card
+ card_type: button
+ name: Lights On
+ icon: mdi:lightbulb-on-outline
+ show_state: true
+ tap_action:
+ action: navigate
+ navigation_path: '#lights-popup'
+ button_action:
+ tap_action:
+ action: navigate
+ navigation_path: '#lights-popup'
+ grid_options:
+ columns: 6
+ rows: 1
+ card_layout: large
+ button_type: switch
+ show_name: true
+ show_attribute: false
+ attribute: icon
+ entity: sensor.number_of_lights_on
+ - type: vertical-stack
+ cards:
+ - type: custom:bubble-card
+ card_type: pop-up
+ hash: '#living_room'
+ button_type: slider
+ entity: light.living_room_lights
+ name: Living Room Lights
+ icon: mdi:sofa
+ show_attribute: false
+ slide_to_close_distance: '100000'
+ trigger: []
+ bg_opacity: '35'
+ show_state: true
+ show_last_changed: true
+ tap_action:
+ action: toggle
+ - type: custom:bubble-card
+ card_type: button
+ button_type: slider
+ entity: light.m1_front_left
+ name: Front Left
+ icon: mdi:light-recessed
+ show_state: true
+ show_attribute: false
+ show_last_changed: true
+ sub_button: []
+ grid_options:
+ columns: 6
+ rows: 1
+ columns: 2
+ - type: custom:bubble-card
+ card_type: button
+ button_type: slider
+ entity: light.m1_front_right
+ name: Front Right
+ icon: mdi:light-recessed
+ show_state: true
+ show_attribute: false
+ show_last_changed: true
+ sub_button: []
+ grid_options:
+ columns: 6
+ rows: 1
+ - type: custom:bubble-card
+ card_type: button
+ button_type: slider
+ entity: light.m1_back_left
+ name: Back Left
+ icon: mdi:light-recessed
+ show_state: true
+ show_attribute: false
+ show_last_changed: true
+ sub_button: []
+ grid_options:
+ columns: 6
+ rows: 1
+ - type: custom:bubble-card
+ card_type: button
+ button_type: slider
+ entity: light.m1_back_right
+ name: Back Right
+ icon: mdi:light-recessed
+ show_state: true
+ show_attribute: false
+ show_last_changed: true
+ sub_button: []
+ grid_options:
+ columns: 6
+ rows: 1
+ grid_options:
+ columns: 12
+ rows: auto
+ - type: custom:bubble-card
+ card_type: button
+ button_type: switch
+ entity: group.interior_switches
+ name: Interior Switches
+ icon: mdi:lightning-bolt
+ show_state: true
+ show_attribute: false
+ show_last_changed: false
+ button_action:
+ tap_action:
+ action: more-info
+ grid_options:
+ columns: 6
+ rows: 1
+ tap_action:
+ action: toggle
+ card_layout: large
+ - type: custom:bubble-card
+ card_type: button
+ button_type: state
+ entity: group.exterior_lights
+ name: Exterior Lights
+ icon: mdi:palm-tree
+ show_state: true
+ show_attribute: false
+ show_last_changed: true
+ grid_options:
+ columns: 6
+ rows: 1
+ - type: vertical-stack
+ cards:
+ - type: custom:bubble-card
+ card_type: pop-up
+ hash: '#lights-popup'
+ name: Lights Control
+ icon: mdi:lightbulb-group
+ width_desktop: 500px
+ show_header: true
+ entity: sensor.number_of_lights_on
+ button_type: name
+ - type: custom:auto-entities
+ filter:
+ include:
+ - domain: light
+ exclude:
+ - state: 'off'
+ - state: unavailable
+ - hidden_by: user
+ show_empty: true
+ entity: sensor.number_of_lights_on
+ button_type: state
+ show_name: true
+ card:
+ type: custom:auto-entities
+ card:
+ type: entities
+ filter:
+ include: []
+ exclude: []
+- cards:
+ - type: custom:frigate-events-card
+ frigate_client_id: frigate
+ event_count: 5
+ - show_state: true
+ show_name: true
+ camera_view: live
+ type: picture-entity
+ entity: camera.birdseye
+ tap_action:
+ action: navigate
+ navigation_path: /lovelace/camera
+ - type: vertical-stack
+ cards:
+ - type: weather-forecast
+ show_current: true
+ show_forecast: true
+ entity: weather.pirateweather
+ forecast_type: hourly
+ secondary_info_attribute: humidity
+ - type: custom:clock-weather-card
+ entity: weather.pirateweather
+ sun_entity: sun.sun
+ temperature_sensor: sensor.pirateweather_temperature
+ humidity_sensor: sensor.pirateweather_humidity
+ weather_icon_type: fill
+ animated_icon: true
+ forecast_rows: 5
+ locale: en-GB
+ time_pattern: HH:mm
+ time_format: 12
+ date_pattern: DDDD
+ hide_today_section: true
+ hide_forecast_section: false
+ show_humidity: true
+ hide_clock: false
+ hide_date: true
+ hourly_forecast: false
+ use_browser_time: false
+ time_zone: null
+ show_decimal: false
+ aqi_sensor: sensor.bear_stone_common_air_quality_index
+ apparent_sensor: null
diff --git a/config/dashboards/overview/partials/vacuum_badges.yaml b/config/dashboards/overview/partials/vacuum_badges.yaml
new file mode 100644
index 00000000..8f3d031c
--- /dev/null
+++ b/config/dashboards/overview/partials/vacuum_badges.yaml
@@ -0,0 +1,16 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - vacuum badges
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/05_vacuum.yaml key `badges`.
+######################################################################
+
+- type: entity
+ show_name: true
+ show_state: true
+ show_icon: true
+ entity: input_boolean.l10s_vacuum_on_demand
diff --git a/config/dashboards/overview/partials/vacuum_sections.yaml b/config/dashboards/overview/partials/vacuum_sections.yaml
new file mode 100644
index 00000000..3bf97663
--- /dev/null
+++ b/config/dashboards/overview/partials/vacuum_sections.yaml
@@ -0,0 +1,352 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - vacuum sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/05_vacuum.yaml key `sections`.
+######################################################################
+
+- type: grid
+ cards:
+ - type: tile
+ entity: input_text.l10s_vacuum_room_catalog
+ vertical: false
+ features_position: bottom
+ grid_options:
+ columns: full
+ - type: tile
+ entity: input_text.l10s_vacuum_room_queue
+ vertical: false
+ features_position: bottom
+ grid_options:
+ columns: full
+ - type: tile
+ entity: input_text.l10s_vacuum_rooms_cleaned_today
+ vertical: false
+ features_position: bottom
+ grid_options:
+ columns: full
+ - type: tile
+ grid_options:
+ columns: full
+ entity: sensor.l10s_vacuum_current_room
+ state_content:
+ - state
+ - room_id
+ - last_changed
+ vertical: false
+ features_position: bottom
+ - type: tile
+ entity: input_select.l10s_vacuum_phase
+ - type: tile
+ entity: sensor.l10s_vacuum_status
+ - type: markdown
+ content: " 14 \u2013 Kitchen \n 12 \u2013 Dining \n 10 \u2013 Living \n 7 \u2013 Master Bedroom \n 15 \u2013\
+ \ Foyer \n 9 \u2013 Stacey Office \n 17 \u2013 Formal Dining \n 13 \u2013 Hallway \n 8 \u2013 Justin Bedroom\
+ \ \n 6 \u2013 Paige Bedroom \n 4 \u2013 Master Bathroom \n 2 \u2013 Office \n 1 \u2013 Pool Bath \n 3 \u2013\
+ \ Kids Bathroom\n"
+ title: Room Legend
+- type: grid
+ cards:
+ - type: custom:xiaomi-vacuum-map-card
+ map_source:
+ camera: camera.l10s_vacuum_map
+ calibration_source:
+ camera: true
+ entity: vacuum.l10s_vacuum
+ vacuum_platform: Tasshack/dreame-vacuum
+ map_modes:
+ - template: vacuum_clean_zone
+ - template: vacuum_clean_point
+ - template: vacuum_clean_segment
+ predefined_selections:
+ - id: '1'
+ icon:
+ name: mdi:home-outline
+ x: -8100
+ y: 12400
+ label:
+ text: Pool-Bath
+ x: -8100
+ y: 12400
+ offset_y: 35
+ outline:
+ - - -9950
+ - 11350
+ - - -6650
+ - 11350
+ - - -6650
+ - 12900
+ - - -9950
+ - 12900
+ - id: '2'
+ icon:
+ name: mdi:monitor-shimmer
+ x: -4650
+ y: 10900
+ label:
+ text: Office
+ x: -4650
+ y: 10900
+ offset_y: 35
+ outline:
+ - - -6650
+ - 7400
+ - - -2800
+ - 7400
+ - - -2800
+ - 12850
+ - - -6650
+ - 12850
+ - id: '3'
+ icon:
+ name: mdi:home-outline
+ x: -5600
+ y: 5250
+ label:
+ text: Kids-Bathroom
+ x: -5600
+ y: 5250
+ offset_y: 35
+ outline:
+ - - -6450
+ - 4250
+ - - -4750
+ - 4250
+ - - -4750
+ - 6150
+ - - -6450
+ - 6150
+ - id: '4'
+ icon:
+ name: mdi:home-outline
+ x: 7300
+ y: 4100
+ label:
+ text: Master-Bathroom
+ x: 7300
+ y: 4100
+ offset_y: 35
+ outline:
+ - - 5450
+ - 250
+ - - 9400
+ - 250
+ - - 9400
+ - 7850
+ - - 5450
+ - 7850
+ - id: '6'
+ icon:
+ name: mdi:home-outline
+ x: -8450
+ y: 4200
+ label:
+ text: Paige-Bedroom
+ x: -8450
+ y: 4200
+ offset_y: 35
+ outline:
+ - - -9900
+ - 1600
+ - - -6600
+ - 1600
+ - - -6600
+ - 6100
+ - - -9900
+ - 6100
+ - id: '7'
+ icon:
+ name: mdi:home-outline
+ x: 6450
+ y: 10400
+ label:
+ text: Master-Bedroom
+ x: 6450
+ y: 10400
+ offset_y: 35
+ outline:
+ - - 3450
+ - 7850
+ - - 9550
+ - 7850
+ - - 9550
+ - 12850
+ - - 3450
+ - 12850
+ - id: '8'
+ icon:
+ name: mdi:home-outline
+ x: -8300
+ y: 9300
+ label:
+ text: Justin-Bedroom
+ x: -8300
+ y: 9300
+ offset_y: 35
+ outline:
+ - - -9950
+ - 6250
+ - - -6650
+ - 6250
+ - - -6650
+ - 11150
+ - - -9950
+ - 11150
+ - id: '9'
+ icon:
+ name: mdi:home-outline
+ x: 7250
+ y: -2200
+ label:
+ text: Stacey-Office
+ x: 7250
+ y: -2200
+ offset_y: 35
+ outline:
+ - - 5450
+ - -4700
+ - - 9450
+ - -4700
+ - - 9450
+ - 350
+ - - 5450
+ - 350
+ - id: '10'
+ icon:
+ name: mdi:sofa-outline
+ x: 2500
+ y: 4800
+ label:
+ text: Living Room
+ x: 2500
+ y: 4800
+ offset_y: 35
+ outline:
+ - - -650
+ - 750
+ - - 5300
+ - 750
+ - - 5300
+ - 8800
+ - - -650
+ - 8800
+ - id: '11'
+ icon:
+ name: mdi:home-outline
+ x: -5350
+ y: 2600
+ label:
+ text: Garage-Hallway
+ x: -5350
+ y: 2600
+ offset_y: 35
+ outline:
+ - - -6600
+ - 1100
+ - - -4050
+ - 1100
+ - - -4050
+ - 4200
+ - - -6600
+ - 4200
+ - id: '12'
+ icon:
+ name: mdi:home-outline
+ x: 700
+ y: 8900
+ label:
+ text: Dining-Room
+ x: 700
+ y: 8900
+ offset_y: 35
+ outline:
+ - - -4350
+ - 6000
+ - - 2650
+ - 6000
+ - - 2650
+ - 12650
+ - - -4350
+ - 12650
+ - id: '13'
+ icon:
+ name: mdi:home-outline
+ x: -6200
+ y: 6800
+ label:
+ text: Hallway
+ x: -6200
+ y: 6800
+ offset_y: 35
+ outline:
+ - - -7550
+ - 6100
+ - - -4350
+ - 6100
+ - - -4350
+ - 7700
+ - - -7550
+ - 7700
+ - id: '14'
+ icon:
+ name: mdi:chef-hat
+ x: -1700
+ y: 3350
+ label:
+ text: Kitchen
+ x: -1700
+ y: 3350
+ offset_y: 35
+ outline:
+ - - -4200
+ - 950
+ - - -300
+ - 950
+ - - -300
+ - 6100
+ - - -4200
+ - 6100
+ - id: '15'
+ icon:
+ name: mdi:home-outline
+ x: 4050
+ y: -1350
+ label:
+ text: Foyer
+ x: 4050
+ y: -1350
+ offset_y: 35
+ outline:
+ - - 2850
+ - -3500
+ - - 5450
+ - -3500
+ - - 5450
+ - 800
+ - - 2850
+ - 800
+ - id: '17'
+ icon:
+ name: mdi:home-outline
+ x: 750
+ y: -1250
+ label:
+ text: Formal-Dining
+ x: 750
+ y: -1250
+ offset_y: 35
+ outline:
+ - - -1500
+ - -3500
+ - - 2950
+ - -3500
+ - - 2950
+ - 950
+ - - -1500
+ - 950
+ map_locked: true
+ two_finger_pan: true
diff --git a/config/dashboards/overview/partials/water_sections.yaml b/config/dashboards/overview/partials/water_sections.yaml
new file mode 100644
index 00000000..9ef79e94
--- /dev/null
+++ b/config/dashboards/overview/partials/water_sections.yaml
@@ -0,0 +1,117 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview Partial - water sections
+# Reusable list extracted from a view for smaller diffs and safer edits.
+# -------------------------------------------------------------------
+# Notes: Extracted from config/dashboards/overview/views/06_water.yaml key `sections`.
+######################################################################
+
+- cards:
+ - type: tile
+ entity: sensor.downstairs_ac_runtime_since_last_filter_change
+ - type: tile
+ entity: sensor.upstairs_ac_runtime_since_last_filter_change
+ - type: tile
+ entity: input_datetime.downstairs_last_filter_change
+ - type: tile
+ entity: input_datetime.upstairs_last_filter_change
+ - type: custom:power-flow-card-plus
+ entities:
+ battery:
+ state_of_charge: sensor.powerwall_charge
+ entity: sensor.powerwall_battery_power
+ use_metadata: false
+ invert_state: false
+ state_of_charge_unit_white_space: true
+ show_state_of_charge: true
+ grid:
+ secondary_info: {}
+ entity: sensor.powerwall_site_power
+ solar:
+ display_zero_state: true
+ secondary_info: {}
+ entity: sensor.powerwall_solar_power
+ icon: mdi:white-balance-sunny
+ color_icon: true
+ home:
+ secondary_info: {}
+ entity: sensor.powerwall_load_power
+ clickable_entities: true
+ display_zero_lines:
+ mode: grey_out
+ transparency: 50
+ grey_color:
+ - 189
+ - 189
+ - 189
+ use_new_flow_rate_model: true
+ w_decimals: 0
+ kw_decimals: 1
+ min_flow_rate: 0.75
+ max_flow_rate: 4
+ max_expected_power: 2000
+ min_expected_power: 0.01
+ watt_threshold: 1000
+ transparency_zero_lines: 0
+ grid_options:
+ columns: full
+ rows: auto
+ - type: energy-solar-graph
+ column_span: 1
+- type: grid
+ cards:
+ - type: tile
+ entity: sensor.blink_blink1_temperature
+ - type: tile
+ entity: sensor.carlo_nas01_temperature
+ - type: tile
+ entity: sensor.carlo_nvr_temperature
+ - type: custom:mini-graph-card
+ entities:
+ - entity: sensor.upstairs_temperature
+ name: Upstairs
+ - entity: sensor.downstairs_temperature
+ name: Downstairs
+ name: House
+ hours_to_show: 24
+ points_per_hour: 1
+- type: grid
+ cards:
+ - type: custom:mushroom-template-card
+ primary: "{{ states('sensor.rheem_wh_available_hot_water') }}% - {{ state_attr('water_heater.rheem_wh', 'temperature')\
+ \ }}\xB0F\n"
+ secondary: Hot Water Available
+ icon: mdi:water-alert
+ entity: sensor.rheem_wh_available_hot_water
+ icon_color: red
+ tap_action:
+ action: more-info
+ hold_action:
+ action: none
+ double_tap_action:
+ action: none
+ - type: tile
+ entity: sensor.phyn_daily_water_usage
+ - type: tile
+ entity: sensor.phyn_average_water_temperature
+ - type: tile
+ entity: sensor.rheem_wh_water_usage_today
+ - type: tile
+ entity: input_datetime.water_delivery_date
+ - type: custom:mushroom-template-card
+ primary: ReadyRefresh Login
+ secondary: Manage water delivery
+ icon: mdi:water
+ tap_action:
+ action: url
+ url_path: https://www.readyrefresh.com/en/login
+ hold_action:
+ action: none
+ double_tap_action:
+ action: none
+ layout: horizontal
+ fill_container: true
+ - type: energy-water-graph
diff --git a/config/dashboards/overview/popups/.gitkeep b/config/dashboards/overview/popups/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/overview/views/01_home.yaml b/config/dashboards/overview/views/01_home.yaml
new file mode 100644
index 00000000..2ef555c9
--- /dev/null
+++ b/config/dashboards/overview/views/01_home.yaml
@@ -0,0 +1,29 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview View - home
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.lovelace view index 1.
+######################################################################
+
+path: home
+theme: Backend-selected
+layout:
+ max_columns: 4
+badges: !include /config/dashboards/overview/partials/home_badges.yaml
+sections: !include /config/dashboards/overview/partials/home_sections.yaml
+type: sections
+max_columns: 4
+icon: mdi:home
+cards: []
+header:
+ layout: center
+ badges_position: bottom
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+- user: 46a8d15eb20e4a1daf2d1d1f63180ec5
+- user: 8fc5ba22cb32430a9143beb4df70541b
+- user: 19970706e7e4492c844ea2fc94a4599a
diff --git a/config/dashboards/overview/views/02_family_locator.yaml b/config/dashboards/overview/views/02_family_locator.yaml
new file mode 100644
index 00000000..95a082ad
--- /dev/null
+++ b/config/dashboards/overview/views/02_family_locator.yaml
@@ -0,0 +1,17 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview View - Family Locator
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.lovelace view index 2.
+######################################################################
+
+type: panel
+path: family_locator
+subview: true
+cards: !include /config/dashboards/overview/partials/family_locator_cards.yaml
+icon: mdi:map-marker-radius
+title: Family Locator
diff --git a/config/dashboards/overview/views/03_camera.yaml b/config/dashboards/overview/views/03_camera.yaml
new file mode 100644
index 00000000..535a9d1f
--- /dev/null
+++ b/config/dashboards/overview/views/03_camera.yaml
@@ -0,0 +1,18 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview View - Camera
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.lovelace view index 3.
+######################################################################
+
+title: Camera
+path: camera
+icon: mdi:cctv
+type: sections
+max_columns: 4
+sections: !include /config/dashboards/overview/partials/camera_sections.yaml
+badges: !include /config/dashboards/overview/partials/camera_badges.yaml
diff --git a/config/dashboards/overview/views/04_cameras.yaml b/config/dashboards/overview/views/04_cameras.yaml
new file mode 100644
index 00000000..234a26a1
--- /dev/null
+++ b/config/dashboards/overview/views/04_cameras.yaml
@@ -0,0 +1,17 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview View - Camera View
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.lovelace view index 4.
+######################################################################
+
+title: Camera View
+path: cameras
+icon: mdi:camera
+theme: Backend-selected
+type: panel
+cards: !include /config/dashboards/overview/partials/cameras_cards.yaml
diff --git a/config/dashboards/overview/views/05_vacuum.yaml b/config/dashboards/overview/views/05_vacuum.yaml
new file mode 100644
index 00000000..e0ad116c
--- /dev/null
+++ b/config/dashboards/overview/views/05_vacuum.yaml
@@ -0,0 +1,23 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview View - Vacuum
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.lovelace view index 5.
+######################################################################
+
+title: Vacuum
+icon: mdi:robot-vacuum
+type: sections
+cards: []
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+- user: 46a8d15eb20e4a1daf2d1d1f63180ec5
+- user: 8fc5ba22cb32430a9143beb4df70541b
+- user: 19970706e7e4492c844ea2fc94a4599a
+sections: !include /config/dashboards/overview/partials/vacuum_sections.yaml
+max_columns: 2
+badges: !include /config/dashboards/overview/partials/vacuum_badges.yaml
diff --git a/config/dashboards/overview/views/06_water.yaml b/config/dashboards/overview/views/06_water.yaml
new file mode 100644
index 00000000..463f7cef
--- /dev/null
+++ b/config/dashboards/overview/views/06_water.yaml
@@ -0,0 +1,23 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview View - Utilities
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.lovelace view index 6.
+######################################################################
+
+title: Utilities
+path: water
+icon: mdi:home-lightning-bolt
+type: sections
+max_columns: 3
+sections: !include /config/dashboards/overview/partials/water_sections.yaml
+cards: []
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+- user: 46a8d15eb20e4a1daf2d1d1f63180ec5
+- user: 8fc5ba22cb32430a9143beb4df70541b
+- user: 19970706e7e4492c844ea2fc94a4599a
diff --git a/config/dashboards/overview/views/07_admin.yaml b/config/dashboards/overview/views/07_admin.yaml
new file mode 100644
index 00000000..0ddf6be3
--- /dev/null
+++ b/config/dashboards/overview/views/07_admin.yaml
@@ -0,0 +1,18 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Overview View - Admin
+# YAML-exported Lovelace dashboard (split into view files).
+# -------------------------------------------------------------------
+# Notes: Exported from config/.storage/lovelace.lovelace view index 7.
+######################################################################
+
+title: Admin
+icon: mdi:security
+visible:
+- user: be280a93c9d7416e98d25d0470f414be
+cards: []
+type: sections
+sections: !include /config/dashboards/overview/partials/admin_sections.yaml
diff --git a/config/dashboards/resources.yaml b/config/dashboards/resources.yaml
new file mode 100644
index 00000000..c9fed94a
--- /dev/null
+++ b/config/dashboards/resources.yaml
@@ -0,0 +1,49 @@
+######################################################################
+# @CCOSTAN - Follow Me on X
+# For more info visit https://www.vcloudinfo.com/click-here
+# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
+# -------------------------------------------------------------------
+# Lovelace Resources - Custom card JS resources
+# YAML-managed Lovelace resources (resource_mode: yaml).
+# -------------------------------------------------------------------
+# Notes: Generated from config/.storage/lovelace_resources. Edit here after migration; do not edit .storage.
+######################################################################
+
+- type: module
+ url: /hacsfiles/lovelace-card-tools/card-tools.js?hacstag=16140332811
+- type: module
+ url: /hacsfiles/lovelace-auto-entities/auto-entities.js?hacstag=1677445841161
+- type: module
+ url: /hacsfiles/button-card/button-card.js?hacstag=146194325701
+- type: module
+ url: /hacsfiles/frigate-hass-card/frigate-hass-card.js?hacstag=394082552651
+- type: module
+ url: /hacsfiles/lovelace-xiaomi-vacuum-map-card/xiaomi-vacuum-map-card.js?hacstag=193372044232
+- type: module
+ url: /hacsfiles/lovelace-mushroom/mushroom.js?hacstag=4443503755010
+- type: module
+ url: /hacsfiles/clock-weather-card/clock-weather-card.js?hacstag=522634019292
+- type: module
+ url: /hacsfiles/lovelace-card-mod/card-mod.js?hacstag=190927524420
+- type: module
+ url: /hacsfiles/Bubble-Card/bubble-card.js?hacstag=680112919311
+- type: module
+ url: /hacsfiles/power-flow-card-plus/power-flow-card-plus.js?hacstag=618081815026
+- type: module
+ url: /hacsfiles/mini-graph-card/mini-graph-card-bundle.js?hacstag=1512800620130
+- type: module
+ url: /hacsfiles/advanced-camera-card/advanced-camera-card.js?hacstag=3940825527260
+- type: module
+ url: /hacsfiles/search-card/search-card.js?hacstag=19775918002
+- type: module
+ url: /hacsfiles/apexcharts-card/apexcharts-card.js?hacstag=331701152223
+- type: module
+ url: /hacsfiles/pi-hole-card/pi-hole-card.js?hacstag=9776750790250
+- type: module
+ url: /hacsfiles/flex-horseshoe-card/flex-horseshoe-card.js?hacstag=20729272512
+- type: module
+ url: /hacsfiles/vertical-stack-in-card/vertical-stack-in-card.js?hacstag=142051833101
+- type: module
+ url: /hacsfiles/lovelace-layout-card/layout-card.js?hacstag=156434866247
+- type: module
+ url: /hacsfiles/frigate-events-card/frigate-events-card.js?hacstag=1111882479100
diff --git a/config/dashboards/shared/card_mod/.gitkeep b/config/dashboards/shared/card_mod/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/shared/partials/.gitkeep b/config/dashboards/shared/partials/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/shared/popups/.gitkeep b/config/dashboards/shared/popups/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/dashboards/shared/views/.gitkeep b/config/dashboards/shared/views/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/config/packages/vacuum.yaml b/config/packages/vacuum.yaml
index 3d4c7090..7afcf2b0 100755
--- a/config/packages/vacuum.yaml
+++ b/config/packages/vacuum.yaml
@@ -10,7 +10,7 @@
# Notes:
# - `sensor.l10s_vacuum_current_room` can change during transit; require a dwell (`for:`) before dequeuing.
# - Treat 2+ minutes in a room as "being cleaned" and dequeue immediately (queue = remaining rooms).
-# - Phase changes happen when the queue is reseeded after the queue hits zero and the vacuum is not actively cleaning (queue is the source of truth).
+# - Phase changes happen when the queue is reseeded after the queue hits zero (queue is the source of truth).
# - Avoid reissuing `dreame_vacuum.vacuum_clean_segment` while already cleaning; only send a new segment job when starting/resuming or switching phases.
# - Jinja2 loop scoping: use a `namespace` when building lists (otherwise the queue can appear empty and get cleared).
# - Docked + task complete only logs queue state; no auto-clearing.
@@ -128,7 +128,7 @@ script:
vac_state: "{{ states('vacuum.l10s_vacuum') | default('', true) | string | lower }}"
vac_is_cleaning: "{{ vac_state == 'cleaning' }}"
phase_ready: "{{ is_state('input_boolean.l10s_vacuum_phase_ready', 'on') }}"
- advance_phase: "{{ queue_ints | length == 0 and phase_ready and not vac_is_cleaning }}"
+ advance_phase: "{{ queue_ints | length == 0 and phase_ready }}"
reset_cycle: "{{ advance_phase and not has_next_phase }}"
phase_for_seed: "{{ next_phase if advance_phase and has_next_phase else phase }}"
cleaning_mode: "{{ 'sweeping_and_mopping' if 'mop_' in phase_for_seed else 'sweeping' }}"
@@ -206,7 +206,20 @@ script:
- stop: 'No rooms left to clean today.'
default: []
- # 3. Start cleaning
+ # 3. Start cleaning (but don't clobber an active job)
+ - choose:
+ - conditions:
+ - condition: template
+ value_template: "{{ vac_is_cleaning }}"
+ sequence:
+ - service: script.send_to_logbook
+ data:
+ topic: "VACUUM"
+ message: "Vacuum is already cleaning; queue/phase updated but not issuing a new segment job."
+ - stop: "Already cleaning."
+ default: []
+
+ # 4. Start cleaning
- service: select.select_option
target:
entity_id: select.l10s_vacuum_cleaning_mode
@@ -394,12 +407,6 @@ automation:
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
- - condition: template
- value_template: >
- {{ is_state('input_boolean.l10s_vacuum_on_demand', 'on') or is_state('group.family', 'not_home') }}
- - condition: template
- value_template: >
- true
- condition: template
value_template: "{{ not is_state('vacuum.l10s_vacuum', 'cleaning') }}"
action:
@@ -555,7 +562,7 @@ automation:
- service: script.send_to_logbook
data:
topic: "VACUUM"
- message: "Queue empty for phase {{ phase }}; waiting for task completion to advance."
+ message: "Queue empty for phase {{ phase }}; phase advance armed for next reseed."
default: []
default: []