Files
homelab-optimized/hosts/physical/concord-nuc/homeassistant/dashboards/homelab.yaml
Gitea Mirror Bot 25c3532414
Some checks failed
Documentation / Deploy to GitHub Pages (push) Has been cancelled
Documentation / Build Docusaurus (push) Has been cancelled
Sanitized mirror from private repository - 2026-04-19 09:44:40 UTC
2026-04-19 09:44:40 +00:00

692 lines
22 KiB
YAML

title: Homelab
views:
- type: sections
title: Homelab
path: homelab
icon: mdi:server
max_columns: 3
sections:
# ---- Calendar (Baikal via CalDAV) ----
- type: grid
column_span: 2
cards:
- type: heading
icon: mdi:calendar-month
heading: Calendar
heading_style: title
- type: custom:calendar-card-pro
entities:
- entity: calendar.vish
color: "#a78bfa"
- entity: calendar.radarr
color: "#f59e0b"
days_to_show: 14
max_events_to_show: 20
show_past_events: false
compact_mode: false
# ---- Media / arr suite ----
- type: grid
column_span: 1
cards:
- type: heading
icon: mdi:play-circle
heading: Media Stack
heading_style: title
- type: tile
entity: sensor.atlantis
name: Plex - Now Playing
icon: mdi:plex
tap_action:
action: more-info
- type: horizontal-stack
cards:
- type: tile
entity: sensor.atlantis_library_movies
name: Movies
icon: mdi:movie-open
- type: tile
entity: sensor.atlantis_library_tv_shows
name: TV Shows
icon: mdi:television-classic
- type: horizontal-stack
cards:
- type: tile
entity: sensor.atlantis_library_anime
name: Anime
icon: mdi:sword-cross
- type: tile
entity: sensor.atlantis_library_music
name: Music
icon: mdi:music
- type: tile
entity: sensor.atlantis_library_other_videos
name: Other
icon: mdi:video-vintage
- type: horizontal-stack
cards:
- type: tile
entity: sensor.sonarr_queue_2
name: Sonarr Queue
icon: mdi:television-classic
tap_action:
action: url
url_path: http://100.83.230.112:8989
- type: tile
entity: sensor.radarr_queue_2
name: Radarr Queue
icon: mdi:filmstrip
tap_action:
action: url
url_path: http://100.83.230.112:7878
- type: horizontal-stack
cards:
- type: tile
entity: sensor.sonarr_shows
name: Series
icon: mdi:television-box
- type: tile
entity: sensor.radarr_movies_2
name: Movies
icon: mdi:movie-open
- type: horizontal-stack
cards:
- type: tile
entity: sensor.sonarr_upcoming
name: Upcoming
icon: mdi:calendar-clock
- type: tile
entity: sensor.sonarr_wanted
name: Sonarr Wanted
icon: mdi:television-off
- type: horizontal-stack
cards:
- type: tile
entity: sensor.bazarr_badges
name: Bazarr Missing
icon: mdi:subtitles
tap_action:
action: url
url_path: http://100.83.230.112:6767
- type: tile
entity: sensor.prowlarr_indexers
name: Prowlarr
icon: mdi:magnify
tap_action:
action: url
url_path: http://100.83.230.112:9696
# ---- Downloads ----
- type: grid
column_span: 1
cards:
- type: heading
icon: mdi:download
heading: Downloads
heading_style: title
- type: tile
entity: sensor.sabnzbd_speed
name: SABnzbd Speed
icon: mdi:download-network
tap_action:
action: url
url_path: http://100.83.230.112:8080
- type: tile
entity: sensor.sabnzbd_queue
name: SAB Queue
icon: mdi:tray-full
- type: entities
title: SAB Details
show_header_toggle: false
entities:
- entity: sensor.sabnzbd_status
name: Status
icon: mdi:information-outline
- entity: sensor.sabnzbd_left_to_download
name: Left to Download
icon: mdi:download
- entity: sensor.sabnzbd_queue_count
name: Queue Size
icon: mdi:tray-full
- entity: sensor.sabnzbd_free_disk_space
name: Disk Free
icon: mdi:harddisk-plus
- entity: sensor.sabnzbd_daily_total
name: Today
icon: mdi:calendar-today
- type: horizontal-stack
cards:
- type: button
entity: button.sabnzbd_pause
name: Pause
icon: mdi:pause
tap_action:
action: call-service
service: button.press
target:
entity_id: button.sabnzbd_pause
- type: button
entity: button.sabnzbd_resume
name: Resume
icon: mdi:play
tap_action:
action: call-service
service: button.press
target:
entity_id: button.sabnzbd_resume
# ---- Books ----
- type: grid
column_span: 1
cards:
- type: heading
icon: mdi:book-open-page-variant
heading: Books & Audiobooks
heading_style: title
- type: tile
entity: sensor.audiobookshelf_ebooks
name: Ebooks
icon: mdi:book-open-variant
tap_action:
action: url
url_path: http://100.83.230.112:13378
- type: tile
entity: sensor.audiobookshelf_audiobooks
name: Audiobooks
icon: mdi:headphones
- type: tile
entity: sensor.lazylibrarian_wanted_books
name: LazyLib Wanted
icon: mdi:book-clock
tap_action:
action: url
url_path: http://100.83.230.112:5299
- type: tile
entity: sensor.lazylibrarian_version
name: LazyLib Version
icon: mdi:tag
# ---- Uptime Kuma summary ----
- type: grid
column_span: 2
cards:
- type: heading
icon: mdi:heart-pulse
heading: Uptime Kuma
heading_style: title
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: "{{ states | selectattr('entity_id','match','^sensor\\..*_status$') | selectattr('entity_id','match','^sensor\\..*') | list | count }}"
secondary: Total Monitors
icon: mdi:pulse
icon_color: blue
tap_action:
action: url
url_path: http://100.77.151.40:3001
- type: custom:mushroom-template-card
primary: >-
{{ states.sensor | selectattr('entity_id','match','^sensor\\..*_status$')
| rejectattr('state','eq','up')
| rejectattr('state','eq','unavailable')
| rejectattr('state','eq','unknown')
| list | count }}
secondary: Down / Degraded
icon: mdi:alert-circle
icon_color: red
- type: custom:mushroom-template-card
primary: >-
{% set rts = states.sensor | selectattr('entity_id','match','^sensor\\..*_response_time$')
| map(attribute='state') | reject('in',['unavailable','unknown','none'])
| map('float',0) | reject('le',0) | list %}
{{ (rts | sum / (rts | count | max(1)) ) | round(0) }}
secondary: Avg Response (ms)
icon: mdi:speedometer
icon_color: green
- type: entities
title: Key Services
show_header_toggle: false
entities:
- entity: sensor.atlantis_status
name: Atlantis (NAS)
- entity: sensor.proxmox_nuc_status
name: Proxmox NUC
- entity: sensor.home_assistant_status
name: Home Assistant
- entity: sensor.atl_portainer_status
name: Portainer
- entity: sensor.gitea_status
name: Gitea
- entity: sensor.jellyfin_status
name: Jellyfin
- entity: sensor.ollama_status
name: Ollama
- entity: sensor.authentik_status
name: Authentik SSO
- entity: sensor.headscale_status
name: Headscale
- entity: sensor.crowdsec_lapi_status
name: CrowdSec
# ---- Proxmox VE (pve host) ----
- type: grid
column_span: 2
cards:
- type: heading
icon: mdi:server-network
heading: Proxmox VE
heading_style: title
- type: horizontal-stack
cards:
- type: gauge
entity: sensor.pve_cpu_usage
name: CPU %
min: 0
max: 100
severity:
green: 0
yellow: 60
red: 85
- type: gauge
entity: sensor.pve_memory_usage_percentage
name: Mem %
min: 0
max: 100
severity:
green: 0
yellow: 70
red: 90
- type: tile
entity: sensor.pve_uptime
name: Uptime
icon: mdi:clock-outline
- type: entities
title: PVE Host
show_header_toggle: false
entities:
- entity: binary_sensor.pve_status
name: Status
- entity: sensor.pve_memory_usage
name: Memory Used
- entity: sensor.pve_max_memory_usage
name: Memory Total
- entity: sensor.pve_disk_usage
name: Disk Used
- entity: sensor.pve_max_disk_usage
name: Disk Total
- entity: binary_sensor.pve_backup_status
name: Backup Status
- entity: sensor.pve_last_backup
name: Last Backup
- entity: sensor.pve_backup_duration
name: Backup Duration
- type: horizontal-stack
cards:
- type: button
entity: button.pve_start_all
name: Start All
icon: mdi:play-circle
tap_action:
action: call-service
service: button.press
target:
entity_id: button.pve_start_all
- type: button
entity: button.pve_stop_all
name: Stop All
icon: mdi:stop-circle
tap_action:
action: call-service
service: button.press
target:
entity_id: button.pve_stop_all
- type: button
entity: button.pve_restart
name: Restart
icon: mdi:restart
tap_action:
action: call-service
service: button.press
target:
entity_id: button.pve_restart
confirmation:
text: "Restart PVE host?"
# ---- Atlantis NAS (Synology DSM) ----
- type: grid
column_span: 2
cards:
- type: heading
icon: mdi:nas
heading: Atlantis NAS (Synology)
heading_style: title
- type: horizontal-stack
cards:
- type: gauge
entity: sensor.atlantis_cpu_utilization_total
name: CPU
min: 0
max: 100
unit: "%"
severity:
green: 0
yellow: 60
red: 85
- type: gauge
entity: sensor.atlantis_memory_usage_real
name: Memory
min: 0
max: 100
unit: "%"
severity:
green: 0
yellow: 70
red: 90
- type: gauge
entity: sensor.atlantis_temperature
name: Temp °F
min: 60
max: 180
severity:
green: 60
yellow: 140
red: 160
- type: entities
title: Volumes
show_header_toggle: false
entities:
- entity: sensor.atlantis_volume_1_volume_used
name: Volume 1
- entity: sensor.atlantis_volume_2_volume_used
name: Volume 2
- entity: sensor.atlantis_volume_3_volume_used
name: Volume 3
- entity: sensor.atlantis_volume_1_used_space
name: Volume 1 Used (TB)
- entity: sensor.atlantis_volume_1_status
name: Volume 1 Health
- type: horizontal-stack
cards:
- type: tile
entity: sensor.atlantis_download_throughput
name: ↓ Download
icon: mdi:download
- type: tile
entity: sensor.atlantis_upload_throughput
name: ↑ Upload
icon: mdi:upload
- type: entities
title: Drive Temperatures (°F)
show_header_toggle: false
entities:
- entity: sensor.atlantis_drive_1_temperature
name: Drive 1
- entity: sensor.atlantis_drive_2_temperature
name: Drive 2
- entity: sensor.atlantis_drive_3_temperature
name: Drive 3
- entity: sensor.atlantis_drive_4_temperature
name: Drive 4
- entity: sensor.atlantis_drive_5_temperature
name: Drive 5
- entity: sensor.atlantis_drive_6_temperature
name: Drive 6
- entity: sensor.atlantis_drive_7_temperature
name: Drive 7
- entity: sensor.atlantis_drive_8_temperature
name: Drive 8
- entity: sensor.atlantis_m_2_drive_1_temperature
name: NVMe 1
- entity: sensor.atlantis_m_2_drive_2_temperature
name: NVMe 2
- type: conditional
conditions:
- condition: state
entity: update.atlantis_dsm_update
state: "on"
card:
type: tile
entity: update.atlantis_dsm_update
name: ⚠ DSM Update Available
# ---- Setillo NAS (Synology DSM) ----
- type: grid
column_span: 1
cards:
- type: heading
icon: mdi:nas
heading: Setillo NAS
heading_style: title
- type: horizontal-stack
cards:
- type: gauge
entity: sensor.setillo_cpu_utilization_total
name: CPU
min: 0
max: 100
unit: "%"
severity:
green: 0
yellow: 60
red: 85
- type: gauge
entity: sensor.setillo_memory_usage_real
name: Mem
min: 0
max: 100
unit: "%"
severity:
green: 0
yellow: 70
red: 90
- type: entities
title: Volume & Drives
show_header_toggle: false
entities:
- entity: sensor.setillo_volume_1_volume_used
name: Volume 1 %
- entity: sensor.setillo_volume_1_used_space
name: Volume 1 Used (TB)
- entity: sensor.setillo_volume_1_status
name: Volume Health
- entity: sensor.setillo_drive_1_temperature
name: Drive 1 Temp
- entity: sensor.setillo_drive_2_temperature
name: Drive 2 Temp
- entity: sensor.setillo_temperature
name: System Temp
- entity: binary_sensor.setillo_security_status
name: Security
- entity: switch.setillo_surveillance_station_home_mode
name: Surveillance Home Mode
- type: conditional
conditions:
- condition: state
entity: update.setillo_dsm_update
state: "on"
card:
type: tile
entity: update.setillo_dsm_update
name: ⚠ Setillo DSM Update
# ---- Calypso NAS (Synology DSM) ----
- type: grid
column_span: 1
cards:
- type: heading
icon: mdi:nas
heading: Calypso NAS
heading_style: title
- type: horizontal-stack
cards:
- type: gauge
entity: sensor.calypso_cpu_utilization_total
name: CPU
min: 0
max: 100
unit: "%"
severity:
green: 0
yellow: 60
red: 85
- type: gauge
entity: sensor.calypso_memory_usage_real
name: Mem
min: 0
max: 100
unit: "%"
severity:
green: 0
yellow: 70
red: 90
- type: entities
title: Volume & Drives
show_header_toggle: false
entities:
- entity: sensor.calypso_volume_1_volume_used
name: Volume 1 %
- entity: sensor.calypso_volume_1_used_space
name: Volume 1 Used (TB)
- entity: sensor.calypso_volume_1_status
name: Volume Health
- entity: sensor.calypso_drive_1_temperature
name: Drive 1 Temp
- entity: sensor.calypso_drive_2_temperature
name: Drive 2 Temp
- entity: sensor.calypso_m_2_drive_1_temperature
name: NVMe 1 Temp
- entity: sensor.calypso_m_2_drive_2_temperature
name: NVMe 2 Temp
- entity: sensor.calypso_temperature
name: System Temp
- entity: binary_sensor.calypso_security_status
name: Security
- type: conditional
conditions:
- condition: state
entity: update.calypso_dsm_update
state: "on"
card:
type: tile
entity: update.calypso_dsm_update
name: ⚠ Calypso DSM Update
# ---- Quick launch (one-tap links) ----
- type: grid
column_span: 2
cards:
- type: heading
icon: mdi:rocket-launch
heading: Quick Launch
heading_style: title
- type: grid
columns: 4
square: true
cards:
- type: button
name: Plex
icon: mdi:plex
tap_action:
action: url
url_path: https://app.plex.tv
- type: button
name: Sonarr
icon: mdi:television-classic
tap_action:
action: url
url_path: http://100.83.230.112:8989
- type: button
name: Radarr
icon: mdi:filmstrip
tap_action:
action: url
url_path: http://100.83.230.112:7878
- type: button
name: Bazarr
icon: mdi:subtitles
tap_action:
action: url
url_path: http://100.83.230.112:6767
- type: button
name: Prowlarr
icon: mdi:magnify
tap_action:
action: url
url_path: http://100.83.230.112:9696
- type: button
name: SABnzbd
icon: mdi:download
tap_action:
action: url
url_path: http://100.83.230.112:8080
- type: button
name: LazyLib
icon: mdi:book-clock
tap_action:
action: url
url_path: http://100.83.230.112:5299
- type: button
name: ABS
icon: mdi:headphones
tap_action:
action: url
url_path: http://100.83.230.112:13378
- type: button
name: Portainer
icon: mdi:docker
tap_action:
action: url
url_path: https://pt.vish.gg
- type: button
name: Gitea
icon: mdi:git
tap_action:
action: url
url_path: https://git.vish.gg
- type: button
name: Homarr
icon: mdi:view-dashboard
tap_action:
action: url
url_path: https://homarr.vish.gg
- type: button
name: Homelab UI
icon: mdi:home-analytics
tap_action:
action: url
url_path: http://homelab.tail.vish.gg:3100