🖥️ A custom server rack screen
Abstract
I created a monitoring screen to place in my server rack. The screen is used to display different server statistics such as cpu, ram, disk, etc. usage for my servers (Proxmox, Unraid,..). To accomplish this, I got a Raspberry Pi with a screen. My server statistics are gathered via different Home Assistant integrations. Alternatively, you could use something like Grafana.
Prerequisites
- Hardware:
- Raspberry Pi - I used a Raspberry Pi 3B+
- Raspberry Pi screen - I got a basic 5" screen hat
- Home Assistant with your server integrations:
- Proxmox: https://github.com/dougiteixeira/proxmoxve
- Unraid: https://github.com/domalab/ha-unraid
Step 1: Raspberry Pi install
Assemble your Raspberry Pi with a screen.
Setup you Raspberry Pi with Raspberry Pi OS Desktop.
Step 2: Install Chromium browser
Paste the following: (replace the URL to your own dashboard)
#!/bin/bash
# Delay to make sure everything is loaded
sleep 10
# Open Home Assistant dashboard in kiosk mode
chromium-browser --noerrdialogs --kiosk http://192.168.10.105:8123/dashboard-server/0
Make it executable:
Step 3: Auto start script
Create the directory
Create a .desktop
file to auto-run the script:
Paste: (my user is named 'admin', yours could be different)
[Desktop Entry]
Type=Application
Name=Home Assistant Kiosk
Exec=/home/admin/kiosk.sh
X-GNOME-Autostart-enabled=true
Step 4: Hide Mouse Cursor (Optional)
Install unclutter
to hide the mouse after a few seconds:
Step 5: Home Assistant Dashboard
Created a dedicated Home Assistant Dashboard
Below the raw yaml code for the dashboard:
Click to show
kiosk_mode:
non_admin_settings:
kiosk: true
ignore_entity_settings: true
views:
- title: Home
sections:
- type: grid
cards:
- type: horizontal-stack
cards:
- type: picture
image: >-
data:image/png;base64,
- type: gauge
name: CPU
severity:
green: 0
yellow: 50
red: 80
entity: sensor.node_lumbridge_cpu_used
- type: gauge
name: RAM
severity:
green: 0
yellow: 50
red: 80
entity: sensor.node_lumbridge_memory_used_percentage
- show_name: false
show_icon: true
type: button
entity: binary_sensor.node_lumbridge_status
show_state: true
- type: horizontal-stack
cards:
- type: gauge
name: Storage
needle: false
severity:
green: 0
yellow: 50
red: 80
entity: sensor.storage_lumbridge_local_zfs_disk_used_percentage
- graph: line
type: sensor
detail: 2
entity: sensor.node_lumbridge_memory_used
name: Mem
- graph: line
type: sensor
entity: >-
sensor.disk_lumbridge_kingston_snv3s1000g_dev_nvme1n1_temperature
detail: 2
name: Disk
- type: horizontal-stack
cards:
- type: gauge
entity: sensor.storage_lumbridge_ardougne_pbs_disk_used_percentage
severity:
green: 0
yellow: 50
red: 80
name: Backup local
- type: gauge
name: Backup remote
needle: false
severity:
green: 0
yellow: 50
red: 80
entity: >-
sensor.storage_lumbridge_ardougne_pbs_remote_disk_used_percentage
- show_name: true
show_icon: true
type: button
entity: >-
binary_sensor.disk_lumbridge_kingston_snv3s1000g_dev_nvme0n1_health
show_state: false
name: Disk 1
- show_name: true
show_icon: true
type: button
show_state: false
name: Disk 2
entity: >-
binary_sensor.disk_lumbridge_kingston_snv3s1000g_dev_nvme1n1_health
- type: grid
cards:
- type: horizontal-stack
cards:
- type: picture
image: >-
https://static-00.iconduck.com/assets.00/unraid-icon-2048x2048-sntilyzr.png
- type: gauge
name: CPU
severity:
green: 0
yellow: 50
red: 80
entity: sensor.unraid_server_tower_tower_cpu_usage
- type: gauge
name: RAM
severity:
green: 0
yellow: 50
red: 80
entity: sensor.unraid_server_tower_tower_ram_usage
- show_name: false
show_icon: true
type: button
entity: sensor.unraid_server_tower_tower_uptime_status
show_state: true
- type: horizontal-stack
cards:
- type: gauge
name: Storage
severity:
green: 0
yellow: 50
red: 80
entity: sensor.unraid_server_tower_tower_array_usage
- graph: line
type: sensor
entity: sensor.unraid_server_tower_tower_cpu_temperature
detail: 2
name: CPU
- graph: line
type: sensor
entity: sensor.unraid_server_tower_tower_nct67_fan_1
detail: 1
name: FAN
- type: horizontal-stack
cards:
- graph: line
type: sensor
entity: sensor.unraid_server_tower_tower_eth0_inbound
detail: 2
name: Eth0 Inbound
- graph: line
type: sensor
entity: sensor.unraid_server_tower_tower_eth0_outbound
detail: 2
name: Eth0 Outbound
- type: horizontal-stack
cards:
- show_name: true
show_icon: true
type: button
entity: binary_sensor.unraid_server_tower_tower_parity_health
show_state: false
name: Parity
- show_name: true
show_icon: true
type: button
show_state: false
name: Disk 1
entity: binary_sensor.unraid_server_tower_tower_array_disk1_health
- show_name: true
show_icon: true
type: button
show_state: false
name: Disk 2
entity: binary_sensor.unraid_server_tower_tower_array_disk2_health
- show_name: true
show_icon: true
type: button
show_state: false
name: Disk 3
entity: binary_sensor.unraid_server_tower_tower_array_disk3_health
- show_name: true
show_icon: true
type: button
show_state: false
name: Disk 4
entity: binary_sensor.unraid_server_tower_tower_array_disk4_health
grid_options:
columns: 12
rows: 2
Step 6: Test
Reboot and Test
Step 7: 3d design
I custom designed a 3d model in Tinkercad:
A simple box was designed to house 2 led strips:
Step 8: Final product