Sanitized mirror from private repository - 2026-04-22 22:02:15 UTC
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
title: Bathroom
|
||||
views:
|
||||
- type: sections
|
||||
title: Bathroom
|
||||
path: bathroom
|
||||
icon: mdi:shower
|
||||
max_columns: 2
|
||||
sections:
|
||||
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:shower
|
||||
heading: Bathroom
|
||||
heading_style: title
|
||||
|
||||
- type: grid
|
||||
columns: 3
|
||||
square: false
|
||||
cards:
|
||||
- type: tile
|
||||
entity: light.bathroom_light_1
|
||||
name: Light 1
|
||||
icon: mdi:lightbulb
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.bathroom_light_2
|
||||
name: Light 2
|
||||
icon: mdi:lightbulb
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.bathroom_light_3
|
||||
name: Light 3
|
||||
icon: mdi:lightbulb
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.bathroom_light_4
|
||||
name: Light 4
|
||||
icon: mdi:lightbulb
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.bathroom_light_5
|
||||
name: Light 5
|
||||
icon: mdi:lightbulb
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.bathroom_light_6
|
||||
name: Light 6
|
||||
icon: mdi:lightbulb
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: All On
|
||||
icon: mdi:lightbulb-group
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.bathroom_light_1
|
||||
- light.bathroom_light_2
|
||||
- light.bathroom_light_3
|
||||
- light.bathroom_light_4
|
||||
- light.bathroom_light_5
|
||||
- light.bathroom_light_6
|
||||
- type: button
|
||||
name: All Off
|
||||
icon: mdi:lightbulb-group-off
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_off
|
||||
target:
|
||||
entity_id:
|
||||
- light.bathroom_light_1
|
||||
- light.bathroom_light_2
|
||||
- light.bathroom_light_3
|
||||
- light.bathroom_light_4
|
||||
- light.bathroom_light_5
|
||||
- light.bathroom_light_6
|
||||
- type: button
|
||||
name: Relax
|
||||
icon: mdi:bathtub
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 35
|
||||
color_temp_kelvin: 2400
|
||||
target:
|
||||
entity_id:
|
||||
- light.bathroom_light_1
|
||||
- light.bathroom_light_2
|
||||
- light.bathroom_light_3
|
||||
- light.bathroom_light_4
|
||||
- light.bathroom_light_5
|
||||
- light.bathroom_light_6
|
||||
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:chart-line
|
||||
heading: Health
|
||||
heading_style: title
|
||||
|
||||
- type: entities
|
||||
title: Bulb Status
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: binary_sensor.bathroom_light_1_cloud_connection
|
||||
name: Light 1 - Cloud
|
||||
- entity: binary_sensor.bathroom_light_1_overheated
|
||||
name: Light 1 - Overheat
|
||||
- entity: binary_sensor.bathroom_light_2_cloud_connection
|
||||
name: Light 2 - Cloud
|
||||
- entity: binary_sensor.bathroom_light_2_overheated
|
||||
name: Light 2 - Overheat
|
||||
- entity: binary_sensor.bathroom_light_3_cloud_connection
|
||||
name: Light 3 - Cloud
|
||||
- entity: binary_sensor.bathroom_light_3_overheated
|
||||
name: Light 3 - Overheat
|
||||
- entity: binary_sensor.bathroom_light_4_cloud_connection
|
||||
name: Light 4 - Cloud
|
||||
- entity: binary_sensor.bathroom_light_4_overheated
|
||||
name: Light 4 - Overheat
|
||||
- entity: binary_sensor.bathroom_light_5_cloud_connection
|
||||
name: Light 5 - Cloud
|
||||
- entity: binary_sensor.bathroom_light_5_overheated
|
||||
name: Light 5 - Overheat
|
||||
- entity: binary_sensor.bathroom_light_6_cloud_connection
|
||||
name: Light 6 - Cloud
|
||||
- entity: binary_sensor.bathroom_light_6_overheated
|
||||
name: Light 6 - Overheat
|
||||
|
||||
- type: entities
|
||||
title: Signal Strength
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: sensor.bathroom_light_1_signal_level
|
||||
- entity: sensor.bathroom_light_2_signal_level
|
||||
- entity: sensor.bathroom_light_3_signal_level
|
||||
- entity: sensor.bathroom_light_4_signal_level
|
||||
- entity: sensor.bathroom_light_5_signal_level
|
||||
- entity: sensor.bathroom_light_6_signal_level
|
||||
|
||||
- type: markdown
|
||||
content: |
|
||||
_Room has no dedicated motion/humidity sensors.
|
||||
Consider adding a [Tapo T110](https://www.tapo.com) motion sensor
|
||||
or an Aqara Zigbee multi-sensor once the GL-S200 Thread BR arrives._
|
||||
386
hosts/physical/concord-nuc/homeassistant/dashboards/bedroom.yaml
Normal file
386
hosts/physical/concord-nuc/homeassistant/dashboards/bedroom.yaml
Normal file
@@ -0,0 +1,386 @@
|
||||
title: Bedroom
|
||||
views:
|
||||
- type: sections
|
||||
title: Bedroom
|
||||
path: bedroom
|
||||
icon: mdi:bed
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
# ---- Lights ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:lightbulb-multiple
|
||||
heading: Lights
|
||||
heading_style: title
|
||||
|
||||
- type: tile
|
||||
entity: light.vish_bedroom_light_1
|
||||
name: Light 1
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: light-color-temp
|
||||
|
||||
- type: tile
|
||||
entity: light.vish_bedroom_light_2
|
||||
name: Light 2
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: light-color-temp
|
||||
|
||||
- type: tile
|
||||
entity: light.vish_bedroom_light_3
|
||||
name: Light 3
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: light-color-temp
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: All On
|
||||
icon: mdi:lightbulb-group
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.vish_bedroom_light_1
|
||||
- light.vish_bedroom_light_2
|
||||
- light.vish_bedroom_light_3
|
||||
- type: button
|
||||
name: All Off
|
||||
icon: mdi:lightbulb-group-off
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_off
|
||||
target:
|
||||
entity_id:
|
||||
- light.vish_bedroom_light_1
|
||||
- light.vish_bedroom_light_2
|
||||
- light.vish_bedroom_light_3
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: Read
|
||||
icon: mdi:book-open-page-variant
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 80
|
||||
color_temp_kelvin: 3500
|
||||
target:
|
||||
entity_id:
|
||||
- light.vish_bedroom_light_1
|
||||
- light.vish_bedroom_light_2
|
||||
- light.vish_bedroom_light_3
|
||||
- type: button
|
||||
name: Sleep
|
||||
icon: mdi:weather-night
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 8
|
||||
color_temp_kelvin: 2200
|
||||
target:
|
||||
entity_id:
|
||||
- light.vish_bedroom_light_1
|
||||
- light.vish_bedroom_light_2
|
||||
- light.vish_bedroom_light_3
|
||||
|
||||
# ---- Camera ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:cctv
|
||||
heading: Bedroom Camera
|
||||
heading_style: title
|
||||
|
||||
- type: picture-glance
|
||||
title: Bedroom 4K
|
||||
camera_view: live
|
||||
camera_image: camera.vish_bedroom_camera_4k_hd_stream
|
||||
entities:
|
||||
- binary_sensor.vish_bedroom_camera_4k_motion_alarm
|
||||
- binary_sensor.vish_bedroom_camera_4k_person_detection
|
||||
- switch.vish_bedroom_camera_4k_privacy
|
||||
- light.vish_bedroom_camera_4k_floodlight_timed
|
||||
- siren.vish_bedroom_camera_4k_siren
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: Up
|
||||
icon: mdi:arrow-up-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_tilt_up
|
||||
- type: button
|
||||
name: Down
|
||||
icon: mdi:arrow-down-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_tilt_down
|
||||
- type: button
|
||||
name: Left
|
||||
icon: mdi:arrow-left-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_pan_left
|
||||
- type: button
|
||||
name: Right
|
||||
icon: mdi:arrow-right-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_pan_right
|
||||
|
||||
- type: heading
|
||||
icon: mdi:cctv-off
|
||||
heading: Detection
|
||||
heading_style: subtitle
|
||||
|
||||
- type: grid
|
||||
columns: 2
|
||||
square: false
|
||||
cards:
|
||||
- type: tile
|
||||
entity: switch.vish_bedroom_camera_4k_motion_detection
|
||||
name: Motion
|
||||
icon: mdi:motion-sensor
|
||||
vertical: false
|
||||
tap_action:
|
||||
action: toggle
|
||||
- type: tile
|
||||
entity: switch.vish_bedroom_camera_4k_person_detection
|
||||
name: Person
|
||||
icon: mdi:account-search
|
||||
vertical: false
|
||||
tap_action:
|
||||
action: toggle
|
||||
- type: tile
|
||||
entity: switch.vish_bedroom_camera_4k_privacy
|
||||
name: Privacy
|
||||
icon: mdi:eye-off
|
||||
vertical: false
|
||||
tap_action:
|
||||
action: toggle
|
||||
- type: tile
|
||||
entity: select.vish_bedroom_camera_4k_night_vision
|
||||
name: Night Vision
|
||||
icon: mdi:weather-night
|
||||
vertical: false
|
||||
tap_action:
|
||||
action: more-info
|
||||
|
||||
# ---- Media ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:cast
|
||||
heading: Media
|
||||
heading_style: title
|
||||
|
||||
- type: media-control
|
||||
entity: media_player.tv_bedroom
|
||||
- type: media-control
|
||||
entity: media_player.bedroom_display
|
||||
- type: media-control
|
||||
entity: media_player.spotify_vish_khemraj
|
||||
|
||||
# ---- Sleep / Oura ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:ring
|
||||
heading: Oura Ring
|
||||
heading_style: title
|
||||
|
||||
# Hero scores
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: gauge
|
||||
entity: sensor.oura_ring_sleep_score
|
||||
name: Sleep
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 85
|
||||
yellow: 70
|
||||
red: 0
|
||||
needle: true
|
||||
- type: gauge
|
||||
entity: sensor.oura_ring_readiness_score
|
||||
name: Readiness
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 85
|
||||
yellow: 70
|
||||
red: 0
|
||||
needle: true
|
||||
- type: gauge
|
||||
entity: sensor.oura_ring_activity_score
|
||||
name: Activity
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 85
|
||||
yellow: 70
|
||||
red: 0
|
||||
needle: true
|
||||
- type: gauge
|
||||
entity: sensor.oura_ring_stress_resilience_score
|
||||
name: Resilience
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 70
|
||||
yellow: 50
|
||||
red: 0
|
||||
needle: true
|
||||
|
||||
# Sleep breakdown
|
||||
- type: entities
|
||||
title: Last Night
|
||||
show_header_toggle: false
|
||||
state_color: true
|
||||
entities:
|
||||
- entity: sensor.oura_ring_total_sleep_duration
|
||||
name: Total Sleep
|
||||
icon: mdi:bed-clock
|
||||
- entity: sensor.oura_ring_deep_sleep_duration
|
||||
name: Deep
|
||||
icon: mdi:water
|
||||
- entity: sensor.oura_ring_rem_sleep_duration
|
||||
name: REM
|
||||
icon: mdi:eye
|
||||
- entity: sensor.oura_ring_light_sleep_duration
|
||||
name: Light
|
||||
icon: mdi:weather-sunset
|
||||
- entity: sensor.oura_ring_awake_time
|
||||
name: Awake
|
||||
icon: mdi:eye-outline
|
||||
- entity: sensor.oura_ring_sleep_efficiency
|
||||
name: Efficiency
|
||||
icon: mdi:percent
|
||||
- entity: sensor.oura_ring_bedtime_start
|
||||
name: Bedtime
|
||||
icon: mdi:clock-start
|
||||
- entity: sensor.oura_ring_bedtime_end
|
||||
name: Wake
|
||||
icon: mdi:clock-end
|
||||
|
||||
# Trends
|
||||
- type: history-graph
|
||||
title: Sleep & Readiness (14d)
|
||||
hours_to_show: 336
|
||||
entities:
|
||||
- entity: sensor.oura_ring_sleep_score
|
||||
- entity: sensor.oura_ring_readiness_score
|
||||
|
||||
- type: history-graph
|
||||
title: HRV & Resting HR (14d)
|
||||
hours_to_show: 336
|
||||
entities:
|
||||
- entity: sensor.oura_ring_average_sleep_hrv
|
||||
- entity: sensor.oura_ring_lowest_sleep_heart_rate
|
||||
|
||||
# Vitals + activity
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: sensor.oura_ring_average_sleep_hrv
|
||||
name: Avg HRV
|
||||
icon: mdi:heart-pulse
|
||||
- type: tile
|
||||
entity: sensor.oura_ring_lowest_sleep_heart_rate
|
||||
name: Low HR
|
||||
icon: mdi:heart
|
||||
- type: tile
|
||||
entity: sensor.oura_ring_temperature_deviation
|
||||
name: Temp Δ
|
||||
icon: mdi:thermometer
|
||||
- type: tile
|
||||
entity: sensor.oura_ring_vo2_max
|
||||
name: VO₂ Max
|
||||
icon: mdi:lungs
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: sensor.oura_ring_steps
|
||||
name: Steps
|
||||
icon: mdi:shoe-print
|
||||
- type: tile
|
||||
entity: sensor.oura_ring_active_calories
|
||||
name: Active Cal
|
||||
icon: mdi:fire
|
||||
- type: tile
|
||||
entity: sensor.oura_ring_cardiovascular_age
|
||||
name: CV Age
|
||||
icon: mdi:heart-cog
|
||||
- type: tile
|
||||
entity: binary_sensor.oura_ring_rest_mode
|
||||
name: Rest Mode
|
||||
icon: mdi:sleep
|
||||
|
||||
- type: conditional
|
||||
conditions:
|
||||
- condition: state
|
||||
entity: sensor.oura_ring_low_battery_alert
|
||||
state: "on"
|
||||
card:
|
||||
type: tile
|
||||
entity: sensor.oura_ring_low_battery_alert
|
||||
name: Ring Battery Low
|
||||
icon: mdi:battery-alert
|
||||
|
||||
# ---- Power / Environment ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:flash
|
||||
heading: Guava Power
|
||||
heading_style: title
|
||||
|
||||
- type: tile
|
||||
entity: switch.guava_energy
|
||||
name: Guava (TrueNAS) Plug
|
||||
icon: mdi:server-network
|
||||
vertical: true
|
||||
tap_action:
|
||||
action: toggle
|
||||
|
||||
- type: entities
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: sensor.guava_energy_current_consumption
|
||||
name: Power Now
|
||||
- entity: sensor.guava_energy_today_s_consumption
|
||||
name: Today
|
||||
- entity: sensor.guava_energy_this_month_s_consumption
|
||||
name: This Month
|
||||
- entity: sensor.guava_energy_voltage
|
||||
name: Voltage
|
||||
- entity: sensor.guava_energy_current
|
||||
name: Current
|
||||
165
hosts/physical/concord-nuc/homeassistant/dashboards/cameras.yaml
Normal file
165
hosts/physical/concord-nuc/homeassistant/dashboards/cameras.yaml
Normal file
@@ -0,0 +1,165 @@
|
||||
title: Cameras
|
||||
views:
|
||||
- type: sections
|
||||
title: Live
|
||||
path: live
|
||||
icon: mdi:cctv
|
||||
max_columns: 2
|
||||
sections:
|
||||
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:bed
|
||||
heading: Bedroom 4K
|
||||
heading_style: title
|
||||
|
||||
- type: picture-glance
|
||||
title: Bedroom - HD
|
||||
camera_view: live
|
||||
camera_image: camera.vish_bedroom_camera_4k_hd_stream
|
||||
entities:
|
||||
- binary_sensor.vish_bedroom_camera_4k_motion_alarm
|
||||
- binary_sensor.vish_bedroom_camera_4k_person_detection
|
||||
- switch.vish_bedroom_camera_4k_privacy
|
||||
- light.vish_bedroom_camera_4k_floodlight_timed
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
icon: mdi:arrow-up-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_tilt_up
|
||||
- type: button
|
||||
icon: mdi:arrow-down-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_tilt_down
|
||||
- type: button
|
||||
icon: mdi:arrow-left-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_pan_left
|
||||
- type: button
|
||||
icon: mdi:arrow-right-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: button.press
|
||||
target:
|
||||
entity_id: button.vish_bedroom_camera_4k_pan_right
|
||||
|
||||
- type: heading
|
||||
icon: mdi:cctv-off
|
||||
heading: Detection Settings
|
||||
heading_style: subtitle
|
||||
|
||||
- type: grid
|
||||
columns: 2
|
||||
square: false
|
||||
cards:
|
||||
- type: tile
|
||||
entity: switch.vish_bedroom_camera_4k_motion_detection
|
||||
name: Motion
|
||||
icon: mdi:motion-sensor
|
||||
tap_action:
|
||||
action: toggle
|
||||
- type: tile
|
||||
entity: switch.vish_bedroom_camera_4k_person_detection
|
||||
name: Person
|
||||
icon: mdi:account-search
|
||||
tap_action:
|
||||
action: toggle
|
||||
- type: tile
|
||||
entity: switch.vish_bedroom_camera_4k_privacy
|
||||
name: Privacy
|
||||
icon: mdi:eye-off
|
||||
tap_action:
|
||||
action: toggle
|
||||
- type: tile
|
||||
entity: select.vish_bedroom_camera_4k_night_vision
|
||||
name: Night Vision
|
||||
icon: mdi:weather-night
|
||||
tap_action:
|
||||
action: more-info
|
||||
- type: tile
|
||||
entity: select.vish_bedroom_camera_4k_patrol_mode
|
||||
name: Patrol
|
||||
icon: mdi:shield-search
|
||||
tap_action:
|
||||
action: more-info
|
||||
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:sofa
|
||||
heading: Living Room
|
||||
heading_style: title
|
||||
|
||||
- type: picture-glance
|
||||
title: Living Room
|
||||
camera_view: live
|
||||
camera_image: camera.192_168_69_116
|
||||
entities: []
|
||||
|
||||
- type: heading
|
||||
icon: mdi:home-outline
|
||||
heading: Other Cameras
|
||||
heading_style: subtitle
|
||||
|
||||
- type: picture-glance
|
||||
title: Camera (192.168.68.67)
|
||||
camera_view: live
|
||||
camera_image: camera.192_168_68_67
|
||||
entities: []
|
||||
|
||||
- type: heading
|
||||
icon: mdi:cctv
|
||||
heading: Setillo (Estudio)
|
||||
heading_style: subtitle
|
||||
|
||||
- type: picture-glance
|
||||
title: Estudio (Surveillance Station)
|
||||
camera_view: live
|
||||
camera_image: camera.estudio
|
||||
entities:
|
||||
- switch.setillo_surveillance_station_home_mode
|
||||
|
||||
- type: conditional
|
||||
conditions:
|
||||
- condition: state
|
||||
entity: camera.192_168_12_155
|
||||
state_not: unavailable
|
||||
card:
|
||||
type: picture-glance
|
||||
title: Hawaii Camera
|
||||
camera_view: live
|
||||
camera_image: camera.192_168_12_155
|
||||
entities: []
|
||||
|
||||
- type: sections
|
||||
title: Events
|
||||
path: events
|
||||
icon: mdi:motion-sensor
|
||||
sections:
|
||||
- type: grid
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:motion-sensor
|
||||
heading: Recent Motion
|
||||
heading_style: title
|
||||
|
||||
- type: logbook
|
||||
hours_to_show: 24
|
||||
entities:
|
||||
- binary_sensor.vish_bedroom_camera_4k_motion_alarm
|
||||
- binary_sensor.vish_bedroom_camera_4k_person_detection
|
||||
- binary_sensor.vish_bedroom_camera_4k_cell_motion_detection
|
||||
@@ -0,0 +1,10 @@
|
||||
title: Crista
|
||||
views:
|
||||
- title: crista.love
|
||||
path: crista
|
||||
type: panel
|
||||
icon: mdi:heart
|
||||
cards:
|
||||
- type: iframe
|
||||
url: https://crista.love
|
||||
aspect_ratio: "100%"
|
||||
361
hosts/physical/concord-nuc/homeassistant/dashboards/home.yaml
Normal file
361
hosts/physical/concord-nuc/homeassistant/dashboards/home.yaml
Normal file
@@ -0,0 +1,361 @@
|
||||
title: Home
|
||||
views:
|
||||
- type: sections
|
||||
title: Home
|
||||
path: home
|
||||
icon: mdi:home
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
# ---- Greeting + presence ----
|
||||
- type: grid
|
||||
column_span: 3
|
||||
cards:
|
||||
- type: custom:mushroom-template-card
|
||||
primary: >-
|
||||
{% set t = now().hour %}
|
||||
{% if t < 5 %}Good night, Vish
|
||||
{% elif t < 12 %}Good morning, Vish
|
||||
{% elif t < 17 %}Good afternoon, Vish
|
||||
{% elif t < 21 %}Good evening, Vish
|
||||
{% else %}Good night, Vish{% endif %}
|
||||
secondary: >-
|
||||
{{ as_timestamp(now()) | timestamp_custom('%A, %B %-d • %-I:%M %p') }}
|
||||
icon: mdi:home-heart
|
||||
icon_color: >-
|
||||
{% set t = now().hour %}
|
||||
{% if t < 6 or t > 20 %}indigo
|
||||
{% elif t < 10 %}amber
|
||||
{% elif t < 17 %}blue
|
||||
{% else %}deep-orange{% endif %}
|
||||
tap_action:
|
||||
action: none
|
||||
|
||||
- type: custom:mushroom-chips-card
|
||||
alignment: center
|
||||
chips:
|
||||
- type: entity
|
||||
entity: weather.forecast_home
|
||||
icon_color: blue
|
||||
tap_action:
|
||||
action: more-info
|
||||
- type: entity
|
||||
entity: sensor.oura_ring_readiness_score
|
||||
name: Readiness
|
||||
icon: mdi:ring
|
||||
icon_color: green
|
||||
content_info: state
|
||||
tap_action:
|
||||
action: more-info
|
||||
- type: entity
|
||||
entity: sensor.oura_ring_sleep_score
|
||||
name: Sleep
|
||||
icon: mdi:sleep
|
||||
icon_color: indigo
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.atlantis
|
||||
name: Plex
|
||||
icon: mdi:plex
|
||||
icon_color: orange
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.adguard_home_dns_queries_blocked_ratio
|
||||
name: AdGuard
|
||||
icon: mdi:shield-check
|
||||
icon_color: teal
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.speedtest_download
|
||||
icon: mdi:download-network
|
||||
icon_color: cyan
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.atlantis_cpu_utilization_total
|
||||
name: NAS CPU
|
||||
icon: mdi:nas
|
||||
icon_color: blue
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.pve_cpu_usage
|
||||
name: PVE CPU
|
||||
icon: mdi:server-network
|
||||
icon_color: green
|
||||
content_info: state
|
||||
|
||||
# ---- Persons ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:account-multiple
|
||||
heading: People
|
||||
heading_style: title
|
||||
|
||||
- type: custom:mushroom-person-card
|
||||
entity: person.vish
|
||||
layout: horizontal
|
||||
primary_info: name
|
||||
secondary_info: state
|
||||
icon_type: entity-picture
|
||||
- type: custom:mushroom-person-card
|
||||
entity: person.crista
|
||||
layout: horizontal
|
||||
primary_info: name
|
||||
secondary_info: state
|
||||
icon_type: entity-picture
|
||||
|
||||
# ---- Weather hero ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:weather-partly-cloudy
|
||||
heading: Weather
|
||||
heading_style: title
|
||||
|
||||
- type: weather-forecast
|
||||
entity: weather.forecast_home
|
||||
forecast_type: daily
|
||||
|
||||
# ---- Oura hero ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:ring
|
||||
heading: Oura Today
|
||||
heading_style: title
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: gauge
|
||||
entity: sensor.oura_ring_readiness_score
|
||||
name: Ready
|
||||
min: 0
|
||||
max: 100
|
||||
needle: true
|
||||
severity:
|
||||
green: 85
|
||||
yellow: 70
|
||||
red: 0
|
||||
- type: gauge
|
||||
entity: sensor.oura_ring_sleep_score
|
||||
name: Sleep
|
||||
min: 0
|
||||
max: 100
|
||||
needle: true
|
||||
severity:
|
||||
green: 85
|
||||
yellow: 70
|
||||
red: 0
|
||||
|
||||
- type: custom:mushroom-template-card
|
||||
primary: "Slept {{ states('sensor.oura_ring_total_sleep_duration') }} hrs"
|
||||
secondary: >-
|
||||
HRV {{ states('sensor.oura_ring_average_sleep_hrv') }} •
|
||||
HR {{ states('sensor.oura_ring_lowest_sleep_heart_rate') }}
|
||||
icon: mdi:bed-clock
|
||||
icon_color: indigo
|
||||
|
||||
# ---- Rooms nav ----
|
||||
- type: grid
|
||||
column_span: 3
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:floor-plan
|
||||
heading: Rooms
|
||||
heading_style: title
|
||||
|
||||
- type: grid
|
||||
columns: 5
|
||||
square: false
|
||||
cards:
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Living Room
|
||||
secondary: >-
|
||||
{% set lights = [] %}
|
||||
{% if states('media_player.tv_living_room') != 'off' %}TV on{% else %}{{ states('sensor.speedtest_download') }} Mbps ↓{% endif %}
|
||||
icon: mdi:sofa
|
||||
icon_color: >-
|
||||
{% if states('media_player.tv_living_room') not in ['off','standby','unavailable'] %}deep-orange{% else %}grey{% endif %}
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /living-room/living-room
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Kitchen
|
||||
secondary: >-
|
||||
{% set lights = ['light.kitchen_above_sink','light.kitchen_light_1','light.kitchen_light_2','light.kitchen_light_3','light.kitchen_light_4'] %}
|
||||
{% set on = lights | select('is_state','on') | list | count %}
|
||||
{{ on }}/{{ lights|count }} lights on
|
||||
icon: mdi:stove
|
||||
icon_color: >-
|
||||
{% set lights = ['light.kitchen_above_sink','light.kitchen_light_1','light.kitchen_light_2','light.kitchen_light_3','light.kitchen_light_4'] %}
|
||||
{% set on = lights | select('is_state','on') | list | count %}
|
||||
{% if on > 0 %}amber{% else %}grey{% endif %}
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /kitchen-view/kitchen
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Bathroom
|
||||
secondary: >-
|
||||
{% set lights = ['light.bathroom_light_1','light.bathroom_light_2','light.bathroom_light_3','light.bathroom_light_4','light.bathroom_light_5','light.bathroom_light_6'] %}
|
||||
{% set on = lights | select('is_state','on') | list | count %}
|
||||
{{ on }}/{{ lights|count }} lights on
|
||||
icon: mdi:shower
|
||||
icon_color: >-
|
||||
{% set lights = ['light.bathroom_light_1','light.bathroom_light_2','light.bathroom_light_3','light.bathroom_light_4','light.bathroom_light_5','light.bathroom_light_6'] %}
|
||||
{% set on = lights | select('is_state','on') | list | count %}
|
||||
{% if on > 0 %}amber{% else %}grey{% endif %}
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /bathroom-view/bathroom
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Bedroom
|
||||
secondary: >-
|
||||
{% set lights = ['light.vish_bedroom_light_1','light.vish_bedroom_light_2','light.vish_bedroom_light_3'] %}
|
||||
{% set on = lights | select('is_state','on') | list | count %}
|
||||
{{ on }}/{{ lights|count }} • {{ states('switch.guava_energy') }} plug
|
||||
icon: mdi:bed
|
||||
icon_color: >-
|
||||
{% set lights = ['light.vish_bedroom_light_1','light.vish_bedroom_light_2','light.vish_bedroom_light_3'] %}
|
||||
{% set on = lights | select('is_state','on') | list | count %}
|
||||
{% if on > 0 %}amber{% else %}purple{% endif %}
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /bedroom-view/bedroom
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Cameras
|
||||
secondary: >-
|
||||
{% if is_state('binary_sensor.vish_bedroom_camera_4k_motion_alarm','on') %}⚠ Motion
|
||||
{% elif is_state('switch.vish_bedroom_camera_4k_privacy','on') %}Privacy on
|
||||
{% else %}Armed{% endif %}
|
||||
icon: mdi:cctv
|
||||
icon_color: >-
|
||||
{% if is_state('binary_sensor.vish_bedroom_camera_4k_motion_alarm','on') %}red
|
||||
{% elif is_state('switch.vish_bedroom_camera_4k_privacy','on') %}grey
|
||||
{% else %}teal{% endif %}
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /cameras-view/live
|
||||
|
||||
# ---- Quick actions / scenes ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:flash
|
||||
heading: Quick Actions
|
||||
heading_style: title
|
||||
|
||||
- type: grid
|
||||
columns: 4
|
||||
square: true
|
||||
cards:
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Goodnight
|
||||
icon: mdi:moon-waxing-crescent
|
||||
icon_color: indigo
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_off
|
||||
data: {}
|
||||
target:
|
||||
entity_id:
|
||||
- light.kitchen_above_sink
|
||||
- light.kitchen_light_1
|
||||
- light.kitchen_light_2
|
||||
- light.kitchen_light_3
|
||||
- light.kitchen_light_4
|
||||
- light.bathroom_light_1
|
||||
- light.bathroom_light_2
|
||||
- light.bathroom_light_3
|
||||
- light.bathroom_light_4
|
||||
- light.bathroom_light_5
|
||||
- light.bathroom_light_6
|
||||
- type: custom:mushroom-template-card
|
||||
primary: All Lights Off
|
||||
icon: mdi:lightbulb-off
|
||||
icon_color: grey
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_off
|
||||
data:
|
||||
entity_id: all
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Bedtime Dim
|
||||
icon: mdi:bed
|
||||
icon_color: purple
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 10
|
||||
color_temp_kelvin: 2200
|
||||
target:
|
||||
entity_id:
|
||||
- light.vish_bedroom_light_1
|
||||
- light.vish_bedroom_light_2
|
||||
- light.vish_bedroom_light_3
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Movie Mode
|
||||
icon: mdi:movie-open
|
||||
icon_color: deep-orange
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 15
|
||||
color_temp_kelvin: 2500
|
||||
target:
|
||||
entity_id:
|
||||
- light.kitchen_above_sink
|
||||
- light.kitchen_light_1
|
||||
- light.kitchen_light_2
|
||||
- light.kitchen_light_3
|
||||
- light.kitchen_light_4
|
||||
|
||||
# ---- Homelab strip ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:server
|
||||
heading: Homelab
|
||||
heading_style: title
|
||||
|
||||
- type: custom:mushroom-chips-card
|
||||
alignment: start
|
||||
chips:
|
||||
- type: entity
|
||||
entity: sensor.sonarr_wanted
|
||||
icon: mdi:television-classic
|
||||
icon_color: blue
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.radarr_missing
|
||||
icon: mdi:filmstrip
|
||||
icon_color: orange
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.sabnzbd_speed
|
||||
icon: mdi:download
|
||||
icon_color: cyan
|
||||
content_info: state
|
||||
- type: entity
|
||||
entity: sensor.bazarr_badges
|
||||
icon: mdi:subtitles
|
||||
icon_color: purple
|
||||
content_info: state
|
||||
|
||||
- type: custom:mushroom-template-card
|
||||
primary: Library Totals
|
||||
secondary: >-
|
||||
{{ states('sensor.sonarr_shows') }} series •
|
||||
{{ states('sensor.radarr_movies_2') }} movies •
|
||||
{{ states('sensor.audiobookshelf_ebooks') }} ebooks
|
||||
icon: mdi:library-shelves
|
||||
icon_color: green
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /homelab-view/homelab
|
||||
811
hosts/physical/concord-nuc/homeassistant/dashboards/homelab.yaml
Normal file
811
hosts/physical/concord-nuc/homeassistant/dashboards/homelab.yaml
Normal file
@@ -0,0 +1,811 @@
|
||||
title: Homelab
|
||||
views:
|
||||
|
||||
# ========================================================
|
||||
# TAB 1: OVERVIEW — calendar + kuma summary + quick launch
|
||||
# ========================================================
|
||||
- type: sections
|
||||
title: Overview
|
||||
path: homelab
|
||||
icon: mdi:view-dashboard
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
# ---- Calendar (Baikal + Radarr) ----
|
||||
- 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
|
||||
|
||||
# ---- Kuma summary ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:heart-pulse
|
||||
heading: Uptime Kuma
|
||||
heading_style: title
|
||||
|
||||
- type: custom:mushroom-template-card
|
||||
primary: >-
|
||||
{{ states.sensor | selectattr('entity_id','match','^sensor\..*_status$') | 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
|
||||
|
||||
# ---- Library totals ----
|
||||
- type: grid
|
||||
column_span: 3
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:library
|
||||
heading: Library Totals
|
||||
heading_style: title
|
||||
|
||||
- type: grid
|
||||
columns: 5
|
||||
square: false
|
||||
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: 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.audiobookshelf_ebooks
|
||||
name: Ebooks
|
||||
icon: mdi:book-open-variant
|
||||
|
||||
# ---- Quick launch ----
|
||||
- type: grid
|
||||
column_span: 3
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:rocket-launch
|
||||
heading: Quick Launch
|
||||
heading_style: title
|
||||
|
||||
- type: grid
|
||||
columns: 6
|
||||
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: Kuma
|
||||
icon: mdi:heart-pulse
|
||||
tap_action: {action: url, url_path: http://100.77.151.40:3001}
|
||||
|
||||
# ========================================================
|
||||
# TAB 2: MEDIA — Plex, *arr, downloads, books
|
||||
# ========================================================
|
||||
- type: sections
|
||||
title: Media
|
||||
path: media
|
||||
icon: mdi:play-circle
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
# ---- Plex ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:plex
|
||||
heading: Plex
|
||||
heading_style: title
|
||||
|
||||
- type: tile
|
||||
entity: sensor.atlantis
|
||||
name: 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
|
||||
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
|
||||
|
||||
# ---- Sonarr + Radarr ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:television-classic
|
||||
heading: Sonarr + Radarr
|
||||
heading_style: title
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: sensor.sonarr_queue_2
|
||||
name: Sonarr Q
|
||||
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 Q
|
||||
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: Shows
|
||||
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: Wanted
|
||||
icon: mdi:television-off
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: sensor.bazarr_badges
|
||||
name: Bazarr
|
||||
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}
|
||||
|
||||
# ---- 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
|
||||
|
||||
# ---- Downloads (SABnzbd) ----
|
||||
- type: grid
|
||||
column_span: 3
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:download
|
||||
heading: Downloads — SABnzbd
|
||||
heading_style: title
|
||||
|
||||
- type: grid
|
||||
columns: 3
|
||||
square: false
|
||||
cards:
|
||||
- type: tile
|
||||
entity: sensor.sabnzbd_speed
|
||||
name: Speed
|
||||
icon: mdi:download-network
|
||||
tap_action: {action: url, url_path: http://100.83.230.112:8080}
|
||||
- type: tile
|
||||
entity: sensor.sabnzbd_queue
|
||||
name: Queue
|
||||
icon: mdi:tray-full
|
||||
- type: tile
|
||||
entity: sensor.sabnzbd_status
|
||||
name: Status
|
||||
icon: mdi:information-outline
|
||||
|
||||
- type: entities
|
||||
title: Details
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: sensor.sabnzbd_left_to_download
|
||||
- entity: sensor.sabnzbd_queue_count
|
||||
- entity: sensor.sabnzbd_free_disk_space
|
||||
- entity: sensor.sabnzbd_daily_total
|
||||
- entity: sensor.sabnzbd_weekly_total
|
||||
- entity: sensor.sabnzbd_monthly_total
|
||||
|
||||
- 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
|
||||
|
||||
# ========================================================
|
||||
# TAB 3: SERVERS — NASes + Proxmox + TrueNAS
|
||||
# ========================================================
|
||||
- type: sections
|
||||
title: Servers
|
||||
path: servers
|
||||
icon: mdi:server-network
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
# ---- Atlantis NAS (Synology) ----
|
||||
- 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: V1 Used (TB)}
|
||||
- {entity: sensor.atlantis_volume_1_status, name: V1 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
|
||||
|
||||
# ---- Calypso NAS (compact) ----
|
||||
- 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: V1 Used (TB)}
|
||||
- {entity: sensor.calypso_volume_1_status, name: V1 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
|
||||
|
||||
# ---- Setillo NAS (compact) ----
|
||||
- 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: V1 Used (TB)}
|
||||
- {entity: sensor.setillo_volume_1_status, name: V1 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
|
||||
|
||||
# ---- Guava TrueNAS ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:harddisk
|
||||
heading: Guava (TrueNAS Scale)
|
||||
heading_style: title
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: gauge
|
||||
entity: sensor.guava_system_cpu_usage
|
||||
name: CPU
|
||||
min: 0
|
||||
max: 100
|
||||
unit: "%"
|
||||
severity: {green: 0, yellow: 60, red: 85}
|
||||
- type: gauge
|
||||
entity: sensor.guava_system_memory_usage
|
||||
name: Memory
|
||||
min: 0
|
||||
max: 100
|
||||
unit: "%"
|
||||
severity: {green: 0, yellow: 70, red: 90}
|
||||
- type: tile
|
||||
entity: sensor.guava_system_temperature
|
||||
name: Temp
|
||||
icon: mdi:thermometer
|
||||
|
||||
- type: entities
|
||||
title: Pool Health
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- {entity: binary_sensor.guava_system_data_healthy, name: Data Pool}
|
||||
- {entity: binary_sensor.guava_system_boot_pool_healthy, name: Boot Pool}
|
||||
- {entity: sensor.guava_system_data_free, name: Data Pool Free}
|
||||
- {entity: sensor.guava_system_boot_pool_free, name: Boot Pool Free}
|
||||
- {entity: sensor.guava_system_arc_size, name: ZFS ARC Size}
|
||||
- {entity: sensor.guava_system_uptime, name: Uptime}
|
||||
|
||||
- type: entities
|
||||
title: Services + VM
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- {entity: binary_sensor.guava_services_nfs, name: NFS}
|
||||
- {entity: binary_sensor.guava_services_cifs, name: SMB/CIFS}
|
||||
- {entity: binary_sensor.guava_services_ssh, name: SSH}
|
||||
- {entity: binary_sensor.guava_services_smartd, name: SMART Daemon}
|
||||
- {entity: binary_sensor.guava_services_snmp, name: SNMP}
|
||||
- {entity: binary_sensor.guava_services_ups, name: UPS}
|
||||
- {entity: binary_sensor.guava_vms_proton_bridge, name: Proton Bridge VM}
|
||||
|
||||
- type: entities
|
||||
title: Disks (SMART)
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- {entity: sensor.guava_disks_nvme0n1, name: NVMe (boot)}
|
||||
- {entity: sensor.guava_disks_sda, name: Disk sda}
|
||||
- {entity: sensor.guava_disks_sdb, name: Disk sdb}
|
||||
|
||||
- type: conditional
|
||||
conditions:
|
||||
- condition: state
|
||||
entity: update.guava_system
|
||||
state: "on"
|
||||
card:
|
||||
type: tile
|
||||
entity: update.guava_system
|
||||
name: ⚠ Guava TrueNAS Update
|
||||
|
||||
# ---- Proxmox VE ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
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: entities
|
||||
title: PVE Host
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- {entity: binary_sensor.pve_status, name: Status}
|
||||
- {entity: sensor.pve_uptime, name: Uptime}
|
||||
- {entity: sensor.pve_memory_usage, name: Memory Used}
|
||||
- {entity: sensor.pve_disk_usage, name: Disk Used}
|
||||
- {entity: binary_sensor.pve_backup_status, name: Backup Status}
|
||||
- {entity: sensor.pve_last_backup, name: Last Backup}
|
||||
|
||||
- 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?"
|
||||
|
||||
# ========================================================
|
||||
# TAB 4: MONITORING — Kuma detail + service pings
|
||||
# ========================================================
|
||||
- type: sections
|
||||
title: Monitoring
|
||||
path: monitoring
|
||||
icon: mdi:heart-pulse
|
||||
max_columns: 2
|
||||
sections:
|
||||
|
||||
# ---- Summary chips (same as Overview) ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:heart-pulse
|
||||
heading: Uptime Kuma — Live
|
||||
heading_style: title
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: custom:mushroom-template-card
|
||||
primary: >-
|
||||
{{ states.sensor | selectattr('entity_id','match','^sensor\..*_status$') | 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
|
||||
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: custom:mushroom-template-card
|
||||
primary: >-
|
||||
{{ states.sensor | selectattr('entity_id','match','^sensor\..*_certificate_expiry$')
|
||||
| map(attribute='state') | map('int',999) | reject('ge',30) | list | count }}
|
||||
secondary: Certs < 30 days
|
||||
icon: mdi:certificate
|
||||
icon_color: orange
|
||||
|
||||
# ---- Core infra ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:server
|
||||
heading: Core Infrastructure
|
||||
heading_style: subtitle
|
||||
|
||||
- type: entities
|
||||
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.authentik_status, name: Authentik SSO}
|
||||
- {entity: sensor.headscale_status, name: Headscale}
|
||||
- {entity: sensor.crowdsec_lapi_status, name: CrowdSec}
|
||||
- {entity: sensor.nginx_proxy_manager_status, name: NPM}
|
||||
- {entity: sensor.atl_portainer_status, name: Portainer}
|
||||
|
||||
# ---- Apps ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:application
|
||||
heading: Apps & Services
|
||||
heading_style: subtitle
|
||||
|
||||
- type: entities
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- {entity: sensor.jellyfin_status, name: Jellyfin}
|
||||
- {entity: sensor.ollama_status, name: Ollama}
|
||||
- {entity: sensor.gitea_status, name: Gitea}
|
||||
- {entity: sensor.grafana_status, name: Grafana}
|
||||
- {entity: sensor.homarr_status, name: Homarr}
|
||||
- {entity: sensor.bitwarden_status, name: Bitwarden}
|
||||
- {entity: sensor.paperless_ngx_status, name: Paperless}
|
||||
- {entity: sensor.immich_status, name: Immich}
|
||||
- {entity: sensor.seafile_status, name: Seafile}
|
||||
|
||||
# ---- Certificate expiry watch ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:certificate
|
||||
heading: SSL Certificates (sorted by expiry)
|
||||
heading_style: subtitle
|
||||
|
||||
- type: entities
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- {entity: sensor.crista_s_website_certificate_expiry, name: crista.love}
|
||||
- {entity: sensor.gitea_certificate_expiry, name: gitea}
|
||||
- {entity: sensor.homarr_certificate_expiry, name: homarr}
|
||||
- {entity: sensor.authentik_certificate_expiry, name: authentik}
|
||||
- {entity: sensor.headscale_certificate_expiry, name: headscale}
|
||||
- {entity: sensor.ollama_certificate_expiry, name: ollama}
|
||||
- {entity: sensor.grafana_certificate_expiry, name: grafana}
|
||||
- {entity: sensor.nginx_proxy_manager_certificate_expiry, name: npm}
|
||||
- {entity: sensor.crowdsec_lapi_certificate_expiry, name: crowdsec}
|
||||
- {entity: sensor.matrix_certificate_expiry, name: matrix}
|
||||
@@ -0,0 +1,10 @@
|
||||
title: Homelab Web
|
||||
views:
|
||||
- title: Dashboard
|
||||
path: web
|
||||
type: panel
|
||||
icon: mdi:home-analytics
|
||||
cards:
|
||||
- type: iframe
|
||||
url: http://homelab.tail.vish.gg:3100
|
||||
aspect_ratio: "100%"
|
||||
161
hosts/physical/concord-nuc/homeassistant/dashboards/kitchen.yaml
Normal file
161
hosts/physical/concord-nuc/homeassistant/dashboards/kitchen.yaml
Normal file
@@ -0,0 +1,161 @@
|
||||
title: Kitchen
|
||||
views:
|
||||
- type: sections
|
||||
title: Kitchen
|
||||
path: kitchen
|
||||
icon: mdi:stove
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:stove
|
||||
heading: Kitchen
|
||||
heading_style: title
|
||||
|
||||
- type: tile
|
||||
entity: light.kitchen_above_sink
|
||||
name: Above Sink
|
||||
icon: mdi:ceiling-light
|
||||
vertical: true
|
||||
features_position: bottom
|
||||
features:
|
||||
- type: light-brightness
|
||||
tap_action:
|
||||
action: toggle
|
||||
|
||||
- type: grid
|
||||
columns: 2
|
||||
square: false
|
||||
cards:
|
||||
- type: tile
|
||||
entity: light.kitchen_light_1
|
||||
name: Light 1
|
||||
icon: mdi:ceiling-light
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.kitchen_light_2
|
||||
name: Light 2
|
||||
icon: mdi:ceiling-light
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.kitchen_light_3
|
||||
name: Light 3
|
||||
icon: mdi:ceiling-light
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
- type: tile
|
||||
entity: light.kitchen_light_4
|
||||
name: Light 4
|
||||
icon: mdi:ceiling-light
|
||||
vertical: true
|
||||
features:
|
||||
- type: light-brightness
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
name: All On
|
||||
icon: mdi:lightbulb-group
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.kitchen_above_sink
|
||||
- light.kitchen_light_1
|
||||
- light.kitchen_light_2
|
||||
- light.kitchen_light_3
|
||||
- light.kitchen_light_4
|
||||
- type: button
|
||||
name: All Off
|
||||
icon: mdi:lightbulb-group-off
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_off
|
||||
target:
|
||||
entity_id:
|
||||
- light.kitchen_above_sink
|
||||
- light.kitchen_light_1
|
||||
- light.kitchen_light_2
|
||||
- light.kitchen_light_3
|
||||
- light.kitchen_light_4
|
||||
- type: button
|
||||
name: Cooking
|
||||
icon: mdi:chef-hat
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 100
|
||||
color_temp_kelvin: 4000
|
||||
target:
|
||||
entity_id:
|
||||
- light.kitchen_above_sink
|
||||
- light.kitchen_light_1
|
||||
- light.kitchen_light_2
|
||||
- light.kitchen_light_3
|
||||
- light.kitchen_light_4
|
||||
- type: button
|
||||
name: Dim
|
||||
icon: mdi:weather-night
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: light.turn_on
|
||||
data:
|
||||
brightness_pct: 20
|
||||
color_temp_kelvin: 2700
|
||||
target:
|
||||
entity_id:
|
||||
- light.kitchen_above_sink
|
||||
- light.kitchen_light_1
|
||||
- light.kitchen_light_2
|
||||
- light.kitchen_light_3
|
||||
- light.kitchen_light_4
|
||||
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:chart-line
|
||||
heading: Health
|
||||
heading_style: title
|
||||
|
||||
- type: entities
|
||||
title: Bulb Status
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: binary_sensor.kitchen_above_sink_cloud_connection
|
||||
name: Above Sink - Cloud
|
||||
- entity: binary_sensor.kitchen_above_sink_overheated
|
||||
name: Above Sink - Overheat
|
||||
- entity: binary_sensor.kitchen_light_1_cloud_connection
|
||||
name: Light 1 - Cloud
|
||||
- entity: binary_sensor.kitchen_light_2_cloud_connection
|
||||
name: Light 2 - Cloud
|
||||
- entity: binary_sensor.kitchen_light_3_cloud_connection
|
||||
name: Light 3 - Cloud
|
||||
- entity: binary_sensor.kitchen_light_4_cloud_connection
|
||||
name: Light 4 - Cloud
|
||||
|
||||
- type: entities
|
||||
title: Signal Strength
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: sensor.kitchen_above_sink_signal_level
|
||||
name: Above Sink
|
||||
- entity: sensor.kitchen_light_1_signal_level
|
||||
name: Light 1
|
||||
- entity: sensor.kitchen_light_2_signal_level
|
||||
name: Light 2
|
||||
- entity: sensor.kitchen_light_3_signal_level
|
||||
name: Light 3
|
||||
- entity: sensor.kitchen_light_4_signal_level
|
||||
name: Light 4
|
||||
@@ -0,0 +1,227 @@
|
||||
title: Living Room
|
||||
views:
|
||||
- type: sections
|
||||
title: Living Room
|
||||
path: living-room
|
||||
icon: mdi:sofa
|
||||
max_columns: 3
|
||||
sections:
|
||||
|
||||
# ---- Weather ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:weather-partly-cloudy
|
||||
heading: Weather
|
||||
heading_style: title
|
||||
|
||||
- type: weather-forecast
|
||||
entity: weather.forecast_home
|
||||
forecast_type: daily
|
||||
show_current: true
|
||||
show_forecast: true
|
||||
|
||||
- type: weather-forecast
|
||||
entity: weather.forecast_home
|
||||
forecast_type: hourly
|
||||
show_current: false
|
||||
show_forecast: true
|
||||
|
||||
# ---- Media ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:television
|
||||
heading: Media
|
||||
heading_style: title
|
||||
|
||||
- type: media-control
|
||||
entity: media_player.tv_living_room
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: button
|
||||
icon: mdi:spotify
|
||||
name: Spotify
|
||||
tap_action:
|
||||
action: navigate
|
||||
navigation_path: /bedroom-yaml/bedroom
|
||||
- type: button
|
||||
icon: mdi:cast
|
||||
name: Cast Hub
|
||||
tap_action:
|
||||
action: more-info
|
||||
entity: media_player.tv_living_room
|
||||
- type: button
|
||||
icon: mdi:remote-tv
|
||||
name: TV Power
|
||||
tap_action:
|
||||
action: call-service
|
||||
service: media_player.toggle
|
||||
target:
|
||||
entity_id: media_player.tv_living_room
|
||||
|
||||
- type: picture-glance
|
||||
title: Living Room Camera
|
||||
camera_view: live
|
||||
camera_image: camera.192_168_69_116
|
||||
entities: []
|
||||
|
||||
# ---- Security / Hub ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:security
|
||||
heading: Hub & Alarm
|
||||
heading_style: title
|
||||
|
||||
- type: tile
|
||||
entity: siren.hub_wired
|
||||
name: Hub Siren
|
||||
icon: mdi:alarm-light
|
||||
vertical: true
|
||||
tap_action:
|
||||
action: toggle
|
||||
|
||||
- type: entities
|
||||
title: Hub
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: switch.hub_wired_led
|
||||
name: Hub LED
|
||||
- entity: select.hub_wired_alarm_sound
|
||||
name: Alarm Sound
|
||||
|
||||
# ---- Network health ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:wifi
|
||||
heading: Network
|
||||
heading_style: title
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: gauge
|
||||
entity: sensor.speedtest_download
|
||||
name: Download
|
||||
unit: Mbps
|
||||
min: 0
|
||||
max: 1000
|
||||
severity:
|
||||
green: 300
|
||||
yellow: 100
|
||||
red: 0
|
||||
- type: gauge
|
||||
entity: sensor.speedtest_upload
|
||||
name: Upload
|
||||
unit: Mbps
|
||||
min: 0
|
||||
max: 500
|
||||
severity:
|
||||
green: 100
|
||||
yellow: 30
|
||||
red: 0
|
||||
- type: gauge
|
||||
entity: sensor.speedtest_ping
|
||||
name: Ping
|
||||
unit: ms
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 0
|
||||
yellow: 30
|
||||
red: 60
|
||||
needle: true
|
||||
|
||||
- type: history-graph
|
||||
title: Download / Upload (24h)
|
||||
hours_to_show: 24
|
||||
entities:
|
||||
- entity: sensor.speedtest_download
|
||||
- entity: sensor.speedtest_upload
|
||||
|
||||
- type: entities
|
||||
title: Deco Mesh
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: binary_sensor.living_room_deco_internet_online
|
||||
name: Living Room Deco - Internet
|
||||
- entity: binary_sensor.living_room_deco_deco_online
|
||||
name: Living Room Deco - Online
|
||||
- entity: binary_sensor.main_bedroom_deco_deco_online
|
||||
name: Main Bedroom Deco
|
||||
- entity: binary_sensor.kevins_room_deco_deco_online
|
||||
name: Kevin's Room Deco
|
||||
|
||||
# ---- Electricity (PG&E) ----
|
||||
- type: grid
|
||||
column_span: 2
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:flash
|
||||
heading: Electricity (PG&E)
|
||||
heading_style: title
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: sensor.current_bill_electric_usage_to_date
|
||||
name: Usage So Far
|
||||
icon: mdi:meter-electric
|
||||
- type: tile
|
||||
entity: sensor.current_bill_electric_forecasted_usage
|
||||
name: Forecasted Usage
|
||||
icon: mdi:chart-line-variant
|
||||
- type: tile
|
||||
entity: sensor.typical_monthly_electric_usage
|
||||
name: Typical
|
||||
icon: mdi:calendar-month
|
||||
|
||||
- type: horizontal-stack
|
||||
cards:
|
||||
- type: tile
|
||||
entity: sensor.current_bill_electric_cost_to_date
|
||||
name: Cost So Far
|
||||
icon: mdi:currency-usd
|
||||
- type: tile
|
||||
entity: sensor.current_bill_electric_forecasted_cost
|
||||
name: Forecast
|
||||
icon: mdi:cash-multiple
|
||||
- type: tile
|
||||
entity: sensor.typical_monthly_electric_cost
|
||||
name: Typical Cost
|
||||
icon: mdi:cash-clock
|
||||
|
||||
# ---- AdGuard ----
|
||||
- type: grid
|
||||
column_span: 1
|
||||
cards:
|
||||
- type: heading
|
||||
icon: mdi:shield-check
|
||||
heading: AdGuard
|
||||
heading_style: title
|
||||
|
||||
- type: tile
|
||||
entity: switch.adguard_home_protection
|
||||
name: Protection
|
||||
icon: mdi:shield
|
||||
|
||||
- type: entities
|
||||
title: Today
|
||||
show_header_toggle: false
|
||||
entities:
|
||||
- entity: sensor.adguard_home_dns_queries
|
||||
name: DNS Queries
|
||||
- entity: sensor.adguard_home_dns_queries_blocked
|
||||
name: Blocked
|
||||
- entity: sensor.adguard_home_dns_queries_blocked_ratio
|
||||
name: Block Ratio
|
||||
- entity: sensor.adguard_home_safe_browsing_blocked
|
||||
name: Safe Browsing
|
||||
- entity: sensor.adguard_home_rules_count
|
||||
name: Rules
|
||||
Reference in New Issue
Block a user