Ankündigung

Einklappen
Keine Ankündigung bisher.

HA - Templating mit Jinja2

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Sehr schön, super Idee - und auch Dir ein 'Frohes Neues'!

    Was ich gleich oben im ersten Post noch einbauen würde:
    Ein kurzer Hinweis auf den Template Editor (Developer Tools > Templates).
    Gerade Neueinsteiger kennen den oft nicht - damit lassen sich Deine Beispiele gleich per copy-paste quasi 'live' ausprobieren.



    image.png

    /tom​​

    Edit: Erledigt, Magie bei Klick auf dem Button funktioniert auch - danke!
    Zuletzt geändert von Tom Bombadil; Gestern, 21:01.

    Kommentar


      #17
      (ich hoffe, dass hier auch ein paar 'Snippets' gewünscht sind - wenn nicht, Post gern löschen)

      Hier ein Template, das ausschließlich für Entwicklertools>Templates gedacht ist, und das ich häufiger verwende. Hintergrund: Die Standard-Entitätenliste in den Entwicklertools von HA ist zwar filterbar, aber man bekommt weder eine Anzahl geliefert, noch kann man einfach copy/paste machen, da es eine komplexe Tabelle ist. Ärgerlich, wenn man z.B. gerade jemandem hilft und Ergebnisse austauschen will - das geht dann nur mit Screenshots.

      Zur Nutzung einfach den Suchtext in der ersten Zeile anpassen (hier: 'sensor' irgendwo im Namen): '(?i)sensor'
      Also:
      'search','(?i)helios' → suche alles mit helios im Namen - Domain egal.
      'search','(?i).*' → Wildcard-Suche; einfach mal schnell sämtliche Entitäten rausballern und zählen.

      Code:
      {% set matches = states | selectattr('entity_id','search','(?i)sensor') | sort(attribute='name') %}
      {%- for s in matches %}
      - {{ s.entity_id }} ({{ s.name }}) → {% if s.state in ['unknown','unavailable','None'] %}-{% else %}{{ s.state }}{% endif %}{% if s.attributes.unit_of_measurement %} {{ s.attributes.unit_of_measurement }}{% endif %}
      {%- endfor %}
      {{ states | selectattr('entity_id', 'search', '(?i)sensor') | list | count }} Entitäten
      /tom

      p.s. Falls jemand die Ausgabe mal als csv braucht: In Zeile 3 das '- ' vorn löschen und den Pfeil ' → ' durch ein Komma ersetzen, fertig.

      Kommentar


        #18
        Sieht gut aus, aber ich vermeide es, einen hardcoded Text mehr als 1x reinzuschreiben.

        Was hälts du von dieser Variante:

        HTML-Code:
        {% set search_string = 'sensor' %}
        
        {% set matches = states | selectattr('entity_id', 'search', '(?i)' ~ search_string) | sort(attribute='name') %}
        {%- for s in matches %}
        - {{ s.entity_id }} ({{ s.name }}) → {% if s.state in ['unknown','unavailable','None'] %}-{% else %}{{ s.state }}{% endif %}{% if s.attributes.unit_of_measurement %} {{ s.attributes.unit_of_measurement }}{% endif %}
        {%- endfor %}
        {{ states | selectattr('entity_id', 'search', '(?i)' ~ search_string) | list | count }} Entitäten​

        Kommentar


          #19
          Ist halt ne Zeile mehr für das gleiche Ergebnis - aber benutzerfreundlicher ist es definitv!

          Anmerkung für Einsteiger: Man kann übrigens alte Templates einfach stehenlassen und 'obendrüber' mit neuen Dingen weitermachen - der Template Checker ist da sehr gnädig ... manchmal juckt es mir trotzdem in den Fingern, da einfach mal ne 'save' Funktion mit Namnsvergabe zu bauen und nen PR gegen den core zu machen ...

          /tom

          Kommentar

          Lädt...
          X