692 lines
22 KiB
YAML
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
|