Dashboard: Eine Entity über mehrere floors/areas ausgeben lassen

Hallo,

ich habe im ganzen Haus Govee Thermometer rumstehen, die ich über einen ESP32 Bluetooth Proxy ins HA integriert habe. Allen Thermometern ist der richtige Bereich zugeordnet. Jetzt würde ich die Thermometer gern auf meinem Dashboard “in schön” ausgeben lassen. auto-entities kann mir ja prinzipiell alle Temperaturen zusammensuchen und ausgeben. Ich hätte das aber gern gruppiert in die einzelnen Etagen und Bereiche. Geht sowas? Oder muss ich das wirklich manuell einzeln anlegen?

Wie gebt ihr denn Temperaturen übersichtlich im Dashboard aus? Vielleicht fehlt mir doch auch noch eine gute Visualisierung, die mein Vorhaben dann gar nicht mehr erfordert.

Wenn ich es richtig verstehe, schau mal hier:

Bastel da gerade drann rum. Bin noch nicht soweit bestimmte auszuschließen… mal als Anstoß:

type: custom:auto-entities
card:
  type: entities
  title: SLANG Test - Temperatursensoren nach Bereichen
filter:
  template: |
    {% set ns = namespace(entries=[]) %}
    {% for area in areas() %}
      {% set temperatur_sensoren = area_entities(area) 
        | select('search', '^sensor\.')
        | select('is_state_attr', 'device_class', 'temperature')
        | list %}
      
      {% if temperatur_sensoren | count > 0 %}
        {% set ns.entries = ns.entries + [{'type': 'section', 'label': area_name(area)}] %}
        {% for x in temperatur_sensoren %}
          {% set ns.entries = ns.entries + [x] %}
        {% endfor %}
      {% endif %}
    {% endfor %}
    {{ ns.entries }}

Vielen, vielen Dank. Ich hab endlich verstanden, was genau template als Rückgabewert braucht. Ich bin super happy mit meiner Ansicht:

- type: custom:auto-entities
  card:
    type: grid
    columns: 1
    square: false
  card_param: cards
  filter:
    template: |
      {% set ns = namespace(entries=[], area_cards=[]) %}
      {% for floor in floors() %}
        {% set ns.area_cards = [] %}
        
        {% for area in floor_areas(floor) | sort %}
          {% set sensoren = area_entities(area)
            | select('search', '^sensor\.')
            | select('is_state_attr', 'device_class', 'temperature')
            | reject('in', label_entities('ui-no-dashboard'))
            | list
            + 
            area_entities(area)
            | select('search', '^sensor\.')
            | select('is_state_attr', 'device_class', 'humidity')
            | reject('in', label_entities('ui-no-dashboard'))
            | list
          %}

          {% if sensoren | count > 0 %}
            {% set ns.area_cards = ns.area_cards + [
              {
                'type': 'area',
                'area': area,
                'display_type': 'compact',
                'sensor_classes': ['temperature', 'humidity'],
                'tap_action': {
                  'action': 'navigate',
                  'navigation_path': '/home/areas-' ~ area
                }
              }
            ] %}
          {% endif %}  
        {% endfor %}

        {% if ns.area_cards | count > 0 %}
          {% set ns.entries = ns.entries + [
            {
              'type': 'heading',
              'heading': floor_name(floor),
            },
            {
              'type': 'grid',
              'columns': 3,
              'square': false,
              'cards': ns.area_cards
            }
          ] %}
        {% endif %}  
        
      {% endfor %}
      {{ ns.entries }}
  grid_options:
    columns: full

Ich hab einfach bei mir ein Label für einen Nicht-Im-Dashboard-Filter hinzugefügt. Damit kann ich die entities, die ich nicht haben will, dann gut entfernen.

Ah ja… gute Idee. Werde ich mal probieren.