System Monitoring - How does yours look?

@wrcvr yes the proxmox integration only gives the state of the machine. The machine specifics for the Dell server and the ReadyNAS all come from snmp. The code below shows the raw sensor data for the CPU temp and the template sensor. My preferred method is to keep all the sensor, template and variable data in one file, readynas.yaml for example, and placed in the packages directory so it is all in one place. I follow this approach for most of my devices.

# ///////////////////////// READYNAS \\\\\\\\\\\\\\\\\\\\\\\
# //////////////  Readynas RAW Sensors \\\\\\\\\\\\\\
sensor:
# SNMP Sensors
# 5 System Temperature Data
  - platform: snmp
    host: !secret nas1_ip
    baseoid: 1.3.6.1.4.1.4526.22.5.1.2.1
    name: 'ReadyNAS_snmp CPU Temp'  
    
# //////////////  Readynas Template Sensors \\\\\\\\\\\\\
template:
  - sensor:
    - name: NAS1 CPU Temp
      unit_of_measurement: ' °C'
      state: "{{ '%.1f' | format(states('sensor.readynas_snmp_cpu_temp')| float(default=0)) }}"
      unique_id: nas1_cpu_temperature
      attributes:
        update_now: "{{ (now().minute / 5) | round(0) }}" 

I also use snmp for my Okidata printer also shown below, which is mostly offline. I still haven’t finished adding variables to remember the states for the data card, but an example of the use of variables to remember the state when offline is shown for the toner on the right, and example code for the black toner shown below.

#///////////// OKIDATA MC561 Printer \\\\\\\\\\\\\\\
####################################################
sensor:
####################################################
# SNMP Sensors
  - platform: snmp
    host: !secret oki_ip
    baseoid: 1.3.6.1.2.1.43.11.1.1.9.1.1
    accept_errors: true
    scan_interval: 60
    name: 'Okidata Black Level'        
    
# ////////////  Okidata Printer Variables  \\\\\\\\\\\\\
var:
  okiblack:
    tracked_entity_id: sensor.okidata_black_level
    value_template: >-
     {% if states('sensor.okidata_black_level') in ("unavailable", "unknown") %}
       {{ states("var.okiblack") }}
     {% else %}
       {{ states("sensor.okidata_black_level") }}
     {% endif %}
    friendly_name: "okiblack"
    unit_of_measurement: "%"

Snmp is a great way to get data from a device. There is documentation for Dell servers available on the Dell website and many tools on the net for finding the basoids for a device. Google will help, but I have been using iReasoning MIB Browser found at http://www.ireasoning.com/.
I hope this helps.

Thanks very helpful

Card code ?

Here ya go.

# =======================================
# Left Panel
# =======================================
type: vertical-stack
cards:
  - type: entities
    title: ReadyNAS System Information
    show_header_toggle: false
    card_mod: null
    style: |
      .card-header{color: pink}
      ha-card { 
       background: black; 
      }    
    entities:
      - type: custom:text-divider-row
        text: NAS1 Info
        card_mod:
          style: |
            ha-card {
             
            }
      - entity: sensor.readynas_snmp_name
        icon: mdi:nas
        name: Host Name
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - entity: sensor.readynas_snmp_serial
        icon: mdi:nas
        name: Serial Number
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - entity: sensor.readynas_snmp_os
        icon: mdi:nas
        name: Operating System
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - entity: sensor.readynas_snmp_os_version
        icon: mdi:nas
        name: OS Version
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - entity: sensor.readynas_snmp_uptime
        icon: mdi:clock
        name: NAS Uptime
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - entity: sensor.nas1_system_ip
        icon: mdi:ip
        name: IP Address
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - type: custom:text-divider-row
        text: Temperature Data
        card_mod:
          style: |
            ha-card {
             
            }
  - type: custom:layout-card
    layout_type: horizontal
    layout:
      width: 220
      max_cols: 2
    cards:
      - type: gauge
        view_layout:
          grid-area: main1
        entity: sensor.nas1_system_temp
        name: System Temp
        needle: true
        segments:
          - from: 0
            color: green
          - from: 40
            color: yellow
          - from: 60
            color: red
        card_mod:
          style:
            ha-gauge:
              $:
                svg.text: |
                  text.value-text {
                    fill: lime;
                    scale: 0.75
                  }
            .: |
              ha-card div.name {
                font-size: 14px;
                background: black;
                color: lime;

              } 
              ha-card { 
               margin-top: -30px;
               margin-bottom: -0px;
               background: black; 
               }   
      - type: gauge
        entity: sensor.nas1_cpu_temp
        view_layout:
          grid-area: main2
        name: CPU Temp
        needle: true
        segments:
          - from: 0
            color: green
          - from: 40
            color: yellow
          - from: 60
            color: red
        card_mod:
          style:
            ha-gauge:
              $:
                svg.text: |
                  text.value-text {
                    fill: lime;
                    scale: 0.75
                  }
            .: |
              ha-card div.name {
                font-size: 14px;
                background: black;
                color: lime;
              } 
              ha-card { 
               margin-top: -30px;
               margin-bottom: -0px;
               background: black; 
              }   
  - type: entities
    show_header_toggle: false
    card_mod: null
    style: |
      .card-header{color: pink}
      ha-card { 
       background: black; 
      }   
    entities:
      - type: custom:text-divider-row
        text: Fan Data
        card_mod:
          style: |
            ha-card {
             
            }
      - entity: sensor.readynas_snmp_fan
        icon: mdi:fan
        name: Fan Number
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - entity: sensor.readynas_snmp_fan_status
        icon: mdi:fan
        name: Fan Status
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
      - entity: sensor.nas1_fan_1_rpm
        icon: mdi:fan
        name: Fan Speed
        card_mod:
          style: |
            :host {
               --paper-item-icon-color: lime;
               color: lime
             }
# =======================================
# Centre Panel Top Card
# =======================================
type: vertical-stack
cards:
  - type: markdown
    content: NAS Disk Temperatures
    style: |
      ha-card {
        color: pink;
        font-weight: normal;
        font-family: Helvetica;
        font-size: 20px;
        background: black;
        ha-markdown {padding: 20 !important;}
      }
  - type: custom:layout-card
    layout_type: horizontal
    layout:
      width: 220
      max_cols: 2
    square: true
    columns: 2
    cards:
      - type: gauge
        entity: sensor.nas1_disk_1_temp
        name: Disk 1
        needle: true
        segments:
          - from: 0
            color: green
          - from: 40
            color: yellow
          - from: 60
            color: red
        card_mod:
          style:
            ha-gauge:
              $:
                svg.text: |
                  text.value-text {
                    fill: lime;
                    scale: 0.75
                  }
            .: |
              ha-card div.name {
                font-size: 14px;
                background: black;
                color: lime;
              } 
              ha-card { 
               background: black; 
              }   
      - type: gauge
        entity: sensor.nas1_disk_2_temp
        name: Disk 2
        needle: true
        segments:
          - from: 0
            color: green
          - from: 40
            color: yellow
          - from: 60
            color: red
        card_mod:
          style:
            ha-gauge:
              $:
                svg.text: |
                  text.value-text {
                    fill: lime;
                    scale: 0.75
                  }
            .: |
              ha-card div.name {
                font-size: 14px;
                background: black;
                color: lime;
              } 
              ha-card { 
               background: black; 
              }    
      - type: gauge
        entity: sensor.nas1_disk_3_temp
        name: Disk 3
        needle: true
        segments:
          - from: 0
            color: green
          - from: 40
            color: yellow
          - from: 60
            color: red
        card_mod:
          style:
            ha-gauge:
              $:
                svg.text: |
                  text.value-text {
                    fill: lime;
                    scale: 0.75
                  }
            .: |
              ha-card div.name {
                font-size: 14px;
                background: black;
                color: lime;
              } 
              ha-card { 
               background: black; 
              }   
      - type: gauge
        entity: sensor.nas1_disk_4_temp
        name: Disk 4
        needle: true
        segments:
          - from: 0
            color: green
          - from: 40
            color: yellow
          - from: 60
            color: red
        card_mod:
          style:
            ha-gauge:
              $:
                svg.text: |
                  text.value-text {
                    fill: lime;
                    scale: 0.75
                  }
            .: |
              ha-card div.name {
                font-size: 14px;
                background: black;
                color: lime;
              } 
              ha-card { 
               background: black; 
              }   
              
# =======================================
# Centre Panel Top Card
# =======================================

type: entities
entities:
  - type: custom:text-divider-row
    text: NAS1 Disk Data
    card_mod:
      style: |
        ha-card {}
  - entity: sensor.readynas_snmp_disk_1_state
    type: custom:multiple-entity-row
    name: Disk Status
    show_state: false
    entities:
      - entity: sensor.readynas_snmp_disk_1_state
        name: Disk 1
        styles:
          color: var(--my-font01-color)
          text-align: center
          width: 60px
      - entity: sensor.readynas_snmp_disk_2_state
        name: Disk 2
        styles:
          color: var(--my-font02-color)
          text-align: center
          width: 60px
      - entity: sensor.readynas_snmp_disk_3_state
        name: Disk 3
        styles:
          color: var(--my-font03-color)
          text-align: center
          width: 60px
      - entity: sensor.readynas_snmp_disk_4_state
        name: Disk 4
        styles:
          color: var(--my-font04-color)
          text-align: center
          width: 60px
    style: |
      :host {
           --paper-item-icon-color: lime;
           color: lime
            }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_1_state', 'ONLINE') %} 
          --my-font01-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font01-color: red;
          --card-mod-icon: mdi:harddisk-alert;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_2_state', 'ONLINE') %} 
          --my-font02-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font02-color: red;
          --card-mod-icon: mdi:harddisk-alert;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_3_state', 'ONLINE') %} 
          --my-font03-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font03-color: red;
          --card-mod-icon: mdi:harddisk-alert;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_4_state', 'ONLINE') %} 
          --my-font04-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font04-color: red;
          --card-mod-icon: mdi:harddisk-alert;
        {% endif %};
      }
  - entity: sensor.readynas_snmp_disk_1_state
    type: custom:multiple-entity-row
    name: Temperature
    show_state: false
    entities:
      - entity: sensor.nas1_disk_1_temp
        name: false
        styles:
          color: var(--my-font01-color)
          text-align: center
          width: 60px
      - entity: sensor.nas1_disk_2_temp
        name: false
        styles:
          color: var(--my-font02-color)
          text-align: center
          width: 60px
      - entity: sensor.nas1_disk_3_temp
        name: false
        styles:
          color: var(--my-font03-color)
          text-align: center
          width: 60px
      - entity: sensor.nas1_disk_4_temp
        name: false
        styles:
          color: var(--my-font04-color)
          text-align: center
          width: 60px
    style: |
      :host {
           --paper-item-icon-color: lime;
           color: lime
            }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_1_state', 'ONLINE') %} 
          --my-font01-color: lime;   
          --card-mod-icon: mdi:thermometer-check;
        {% else %}       
          --my-font01-color: red;
          --card-mod-icon: mdi:thermometer-check;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_2_state', 'ONLINE') %} 
          --my-font02-color: lime;   
          --card-mod-icon: mdi:thermometer-check;
        {% else %}       
          --my-font02-color: red;
          --card-mod-icon: mdi:thermometer-check;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_3_state', 'ONLINE') %} 
          --my-font03-color: lime;   
          --card-mod-icon: mdi:thermometer-check;
        {% else %}       
          --my-font03-color: red;
          --card-mod-icon: mdi:thermometer-check;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_4_state', 'ONLINE') %} 
          --my-font04-color: lime;   
          --card-mod-icon: mdi:thermometer-check;
        {% else %}       
          --my-font04-color: red;
          --card-mod-icon: mdi:thermometer-check;
        {% endif %};
      }
  - entity: sensor.nas1_disk_1_size
    type: custom:multiple-entity-row
    name: Capacity
    show_state: false
    entities:
      - entity: sensor.nas1_disk_1_size
        name: false
        styles:
          color: var(--my-font01-color)
          text-align: center
          width: 60px
      - entity: sensor.nas1_disk_2_size
        name: false
        styles:
          color: var(--my-font02-color)
          text-align: center
          width: 60px
      - entity: sensor.nas1_disk_3_size
        name: false
        styles:
          color: var(--my-font03-color)
          text-align: center
          width: 60px
      - entity: sensor.nas1_disk_4_size
        name: false
        styles:
          color: var(--my-font04-color)
          text-align: center
          width: 60px
    style: |
      :host {
           --paper-item-icon-color: lime;
           color: lime
            }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_1_state', 'ONLINE') %} 
          --my-font01-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font01-color: red;
          --card-mod-icon: mdi:harddisk;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_2_state', 'ONLINE') %} 
          --my-font02-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font02-color: red;
          --card-mod-icon: mdi:harddisk;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_3_state', 'ONLINE') %} 
          --my-font03-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font03-color: red;
          --card-mod-icon: mdi:harddisk;
        {% endif %};
      }
      :host {
        {% if is_state('sensor.readynas_snmp_disk_4_state', 'ONLINE') %} 
          --my-font04-color: lime;   
          --card-mod-icon: mdi:harddisk;
        {% else %}       
          --my-font04-color: red;
          --card-mod-icon: mdi:harddisk;
        {% endif %};
      }
  - type: custom:text-divider-row
    text: Volume Data
    card_mod:
      style: |
        ha-card {}
  - entity: sensor.nas1_volume_size
    icon: mdi:harddisk
    card_mod:
      style: |
        :host {
           --paper-item-icon-color: lime;
           color: lime
         }
  - entity: sensor.nas1_volume_free
    icon: mdi:harddisk
    card_mod:
      style: |
        :host {
           --paper-item-icon-color: lime;
           color: lime
         }
title: ReadyNAS Disk Information
card_mod:
  style: |
    .card-header{color: pink}
    ha-card { 
     background: black; 
    }

# =======================================
# Right Panel Top
# =======================================
type: custom:apexcharts-card
header:
  title: System Temperatures
  show: true
  show_states: true
  colorize_states: true
card_mod:
  style: |
    .card-header{color: pink}
    ha-card { 
     background: black; 
    }
yaxis:
  - id: first
    decimals: 0
    min: 30
    max: 50
series:
  - entity: sensor.nas1_cpu_temp
    yaxis_id: first
    name: CPU
    type: line
    curve: smooth
    extend_to: false
    stroke_width: 2
    fill_raw: last
    group_by:
      func: avg
      duration: 20min
  - entity: sensor.nas1_system_temp
    yaxis_id: first
    name: System
    type: line
    curve: smooth
    extend_to: false
    stroke_width: 2
    fill_raw: last
    group_by:
      func: avg
      duration: 20min

# =======================================
# Right Panel Bottom
# =======================================
type: custom:apexcharts-card
header:
  title: Disk Temperatures
  show: true
  show_states: true
  colorize_states: true
card_mod:
  style: |
    .card-header{color: pink}
    ha-card { 
     background: black; 
    }
yaxis:
  - id: first
    decimals: 0
    min: 20
    max: 40
series:
  - entity: sensor.nas1_disk_1_temp
    yaxis_id: first
    name: Disk 1
    type: line
    curve: smooth
    extend_to: false
    stroke_width: 2
    fill_raw: last
    group_by:
      func: avg
      duration: 20min
  - entity: sensor.nas1_disk_2_temp
    yaxis_id: first
    name: Disk 2
    type: line
    curve: smooth
    extend_to: false
    stroke_width: 2
    fill_raw: last
    group_by:
      func: avg
      duration: 20min
  - entity: sensor.nas1_disk_3_temp
    yaxis_id: first
    name: Disk 3
    type: line
    curve: smooth
    extend_to: false
    stroke_width: 2
    fill_raw: last
    group_by:
      func: avg
      duration: 20min
  - entity: sensor.nas1_disk_4_temp
    yaxis_id: first
    name: Disk 4
    type: line
    curve: smooth
    extend_to: false
    stroke_width: 2
    fill_raw: last
    group_by:
      func: avg
      duration: 20min

2 Likes

Here is my work. It is in a very early stage, but I am happy to have all the challenges behind me.

I used System Monitor and Phyton Script for HA that helped me reach output system information with ssh command from any host machine in my house. My next step is to do the same for my other machine, where I have windows installed. I already enabled ssh on windows 11 and can get any information, it is working even to get system info with powershell.

Thank you everyone here for all the inspiration!

4 Likes

my tablet view so far. Thanks for all the great stuff here. Just want to share for more inspiration.

cheers

21 Likes

nice! Could you please share how you run iperf?

I have a iperf3 docker container running on my NAS and UDM. In HA I use the integration which you have to setup in the configuration.yaml

I have tried to set it up but the integration doesn’t create sensors for me

search sensor entity with the iPerf3 server ip. It should look like s.th like this. sensor.download_192_168_x_x & sensor.upload_192_168_x_x

1 Like

thats it. Initially I was looking for a sensor with iperf name in it. Thank you.

where i can find all your files?
you can share it please?

@schmierlappe
please help and share your config

My current admin/server panel:

1 Like

Hello everyone,

I wanted to share with you the dashboard that I use to keep track of my Raspberry with Home Assistant.
I was inspired by a guide I read on the website smarthomescene.com and adapted it to my needs.
As you can see from the attached screenshot, I divided the dashboard into three columns:

  1. The first column is dedicated to the Home Assistant Server. Here, I monitor the temperature and CPU usage, the percentage of RAM and SSD usage. I also list the versions of HA Core, OS, and Supervisor with their respective update cards.

  2. The second column lists all the Add-On automatically via auto-entity-card. For each of them, I report the status, the current version, and the available version, CPU and memory usage, and the update card.

  3. The third column lists the installed and available versions of HACS. Below, all components installed via HACS are listed automatically via auto-entity-card, with their respective update cards.

6 Likes

Great looking page. Could you share the yaml and card code for the integrations? I sure would appreciate!
Thanks

Sure!!!
To create this dashboard, you will need the following HACS Add-Ons:
card-mod, auto-entities, and Mushroom card.

First column:

type: vertical-stack
cards:
  - type: entities
    card_mod:
      style: |
        ha-card {
          border-style: none;
          background: none;
          --mush-title-padding: 0px 0px 0px;
        }
    entities:
      - type: custom:mushroom-title-card
        title: Home Assistant Server
        subtitle: >
          Core v{{ state_attr('update.home_assistant_core_update',
          'installed_version') }} - OS v{{
          state_attr('update.home_assistant_operating_system_update','installed_version')
          }} - Supervisor v{{
          state_attr('update.home_assistant_supervisor_update',
          'installed_version') }}
      - type: section
      - type: custom:mushroom-chips-card
        chips:
          - type: entity
            entity: sensor.processor_temperature
            icon_color: orange
          - type: entity
            entity: sensor.processor_use
            icon_color: blue
          - type: entity
            entity: sensor.memory_use_percent
            icon_color: orange
          - type: entity
            entity: sensor.disk_use_percent_config
            icon_color: deep-purple
      - type: section
      - type: custom:mushroom-title-card
        title: Home Assistant Core
        card_mod:
          style: |
            h1.title {
              font-size: 20px;
              padding: 0px 5px 0px;
            }
      - type: custom:mushroom-chips-card
        chips:
          - type: template
            entity: update.home_assistant_core_update
            icon: mdi:package-variant-closed-check
            content: >-
              {{ state_attr('update.home_assistant_core_update',
              'installed_version')}}
            icon_color: green
            tap_action:
              action: more-info
          - type: template
            entity: update.home_assistant_core_update
            icon: mdi:package-variant
            content: >-
              {{ state_attr('update.home_assistant_core_update',
              'latest_version')}}
            icon_color: purple
            tap_action:
              action: more-info
      - type: custom:mushroom-update-card
        entity: update.home_assistant_core_update
        name: Core
        show_buttons_control: true
        icon_type: entity-picture
        layout: horizontal
      - type: section
      - type: custom:mushroom-title-card
        title: Home Assistant Operating System
        card_mod:
          style: |
            h1.title {
              font-size: 20px;
              padding: 0px 5px 0px;
            }
      - type: custom:mushroom-chips-card
        chips:
          - type: template
            entity: update.home_assistant_operating_system_update
            icon: mdi:package-variant-closed-check
            content: >-
              {{ state_attr('update.home_assistant_operating_system_update',
              'installed_version')}}
            icon_color: green
            tap_action:
              action: more-info
          - type: template
            entity: update.home_assistant_operating_system_update
            icon: mdi:package-variant
            content: >-
              {{ state_attr('update.home_assistant_operating_system_update',
              'latest_version')}}
            icon_color: purple
            tap_action:
              action: more-info
      - type: custom:mushroom-update-card
        entity: update.home_assistant_operating_system_update
        name: Operating System
        show_buttons_control: true
        icon_type: entity-picture
        layout: horizontal
      - type: section
      - type: custom:mushroom-title-card
        title: Home Assistant Supervisor
        card_mod:
          style: |
            h1.title {
              font-size: 20px;
              padding: 0px 5px 0px;
            }
      - type: custom:mushroom-chips-card
        chips:
          - type: template
            entity: update.home_assistant_supervisor_update
            icon: mdi:package-variant-closed-check
            content: >-
              {{ state_attr('update.home_assistant_supervisor_update',
              'installed_version')}}
            icon_color: green
            tap_action:
              action: more-info
          - type: template
            entity: update.home_assistant_supervisor_update
            icon: mdi:package-variant
            content: >-
              {{ state_attr('update.home_assistant_supervisor_update',
              'latest_version')}}
            icon_color: purple
            tap_action:
              action: more-info
      - type: custom:mushroom-update-card
        entity: update.home_assistant_supervisor_update
        name: Supervisor
        show_buttons_control: true
        icon_type: entity-picture
        layout: horizontal

For the second column, you need to enable all entities of each add-on of the Supervisor integration.
Second column:

type: vertical-stack
cards:
  - type: entities
    card_mod:
      style: |
        ha-card {
          border-style: none;
          background: none;
          --mush-title-padding: 0px 0px 0px;
        }
        div.card-content {
          padding-bottom: 0px
        }
    entities:
      - type: custom:mushroom-title-card
        title: Componenti aggiuntivi
        subtitle: >-
          {{ integration_entities('Supervisor') | map('device_id') | unique |
          list | length }} Componenti installati
  - type: custom:auto-entities
    card:
      type: entities
      card_mod:
        style: |
          ha-card {
            border-style: none;
            background: none;
            --mush-title-font-size: 20px;
            --mush-title-padding: 0px 5px 0px;
          }
          h1.card-header{
            padding: 6px 16px 0px;
          }
          div.card-content {
            padding-top: 0px
          }
    filter:
      template: >
        {%- set dev = namespace() %} {%- set dev.name = '' %} {%- set
        dev.running = '' %} {%- set dev.newest_version = '' %} {%- set
        dev.version = '' %} {%- set dev.cpu_percent = '' %} {%- set
        dev.memory_percent = '' %} {%- set dev.update = '' %}

        {%- for devid in (integration_entities('Supervisor') | map('device_id')
        | unique) %}
          {%- set dev.name = device_attr(devid, "name") %}
          {%- for ent in device_entities(devid) %}
            {%- if (ent.find("running") | int>=0) %}
              {%- set dev.running = ent %}
            {%- endif %}
            {%- if (ent.find("newest_version") | int>=0) %}
              {%- set dev.newest_version = ent %}
            {%- endif %}
            {%- if (ent.find("version") | int>=0) %}
              {%- set dev.version = ent %}
            {%- endif %}
            {%- if (ent.find("cpu_percent") | int>=0) %}
              {%- set dev.cpu_percent = ent %}
            {%- endif %}
            {%- if (ent.find("memory_percent") | int>=0) %}
              {%- set dev.memory_percent = ent %}
            {%- endif %}
            {%- if (ent.find("update") | int>=0) %}
              {%- set dev.update = ent %}
            {%- endif %}
          {%- endfor %}
          {%- if dev.version > '' %}
            {{-
              { 'type': 'section'
              }
            }},
            {{-
              { 'type': 'custom:mushroom-title-card',
                'title': dev.name
              }
            }},
            {{-
              { 'type': 'custom:mushroom-chips-card',
                'chips': [
                  {
                    'type': 'entity',
                    'entity': dev.running,
                    'icon_color': 'green'
                  },
                  {
                    'type': 'entity',
                    'entity': dev.version,
                    'icon_color': 'green',
                    'icon': 'mdi:package-variant-closed-check'
                  },
                  {
                    'type': 'entity',
                    'entity': dev.newest_version,
                    'icon_color': 'purple',
                    'icon': 'mdi:package-variant'
                  },
                  {
                    'type': 'entity',
                    'entity': dev.cpu_percent,
                    'icon_color': 'blue'
                  },
                  {
                    'type': 'entity',
                    'entity': dev.memory_percent,
                    'icon_color': 'orange'
                  },
                ]
              }
            }},
            {{-
              { 'type': 'custom:mushroom-update-card',
                'entity': dev.update,
                'name': dev.name,
                'show_buttons_control': true,
                'collapsible_controls': false,
                'icon_type': 'entity-picture',
                'layout': 'horizontal'
              }
            }},
          {%- endif %}
        {%- endfor %}

For the third column, you need to enable the experimental features of HACS.
Third column:

type: vertical-stack
cards:
  - type: entities
    card_mod:
      style: |
        ha-card {
          border-style: none;
          background: none;
          --mush-title-padding: 0px 0px 0px;
        }  
    entities:
      - type: custom:mushroom-title-card
        title: HACS
        subtitle: >-
          Installata v{{ state_attr('update.hacs_update', 'installed_version')
          }} - Ultima v{{ state_attr('update.hacs_update', 'latest_version') }}
      - type: section
      - type: custom:mushroom-chips-card
        chips:
          - type: template
            icon: mdi:web
            icon_color: blue
            content: Ultime modifiche
            tap_action:
              action: url
              url_path: https://github.com/hacs/integration/releases
          - type: template
            entity: update.hacs_update
            content: '{{ state_attr(''update.hacs_update'', ''installed_version'') }}'
            icon_color: green
            icon: mdi:package-variant-closed
            tap_action:
              action: none
          - type: template
            entity: update.hacs_update
            content: '{{ state_attr(''update.hacs_update'', ''latest_version'') }}'
            icon_color: orange
            icon: mdi:package-variant-closed
            tap_action:
              action: none
      - type: section
  - type: custom:auto-entities
    card:
      type: entities
      card_mod:
        style: |
          ha-card {
            border-style: none;
            background: none;
          }
          div.card-content {
            padding: 0px;
          }
    filter:
      template: >
        {%- set dev = namespace() %} {%- set dev.name = '' %} {%- set dev.update
        = '' %}

        {%- for devid in (integration_entities('hacs') | map('device_id') |
        list) %}
          {%- set dev.name = device_attr(devid, "name") %}
          {%- for ent in device_entities(devid) %}
            {%- if (ent.find("update") | int>=0) %}
              {%- set dev.update = ent %}
            {%- endif %}
          {%- endfor %}
          {{-
            { 'type': 'custom:mushroom-update-card',
              'entity': dev.update,
              'name': dev.name,
              'show_buttons_control': true,
              'collapsible_controls': false,
              'layout': 'horizontal'
            }
          }},
        {%- endfor %}
16 Likes

Thank you very much!!
This dashboard works and looks well.

Thanks for sharing, Roberto! Looks nice.

Thanks for sharing, it looks indeed very well.

I see 2 issues with Supervisor column when I copy your code:

  • it’s not showing cpu_percent and memory_percent Edit: solved, entities not enabled
  • It’s showing Home Assistant Supervisor and Core with version and newest_version of last supervisor entity (Cloudflared in this case)

See below.

afbeelding

I suppose it’s something with template (filter:)?

1 Like

@duncan86 can you share your config? I like the layout, very clean and has all relevant info.
I have a similar configuration except a Drobo NAS, but I can get some of the cards for my setup.
Are you running a third party theme or is this something you created. Looks very cool!