Meine kleine Sammlung an Template-Senosren

Hallo @guezli,
kannst du mir sagen, was ich grundsätzlich falsch gemacht habe?

Ich habe deinen Code in die Entwicklerwerkzeuge in Template hinein kopiert (links, mit zwei Leerzeichen Abstand).

--- Ausgabe aller Batterien mit einem Wert unter 10 %

  sensor:
     - platform: template
       battery_alert:
          entity_id: sensor.date
          friendly_name: 'Batteriestand'
            unique_id: battery_alert
            value_template: >
              {% set ns = namespace(below=[]) %}
              {% for s in states.sensor 
                    if 'battery_level' in s.entity_id and s.state != 'unknown' and s.state|int < 10 %}
                {% set ns.below = ns.below + [ s ] %}
              {% endfor %}
              {{ ns.below | count }} 
            attribute_templates:
              battery_low: >
                {% set ns = namespace(below=[]) %}
                {% for s in states.sensor 
                        if 'battery_level' in s.entity_id and s.state != 'unknown' and s.state|int < 10 %}
                  {% set ns.below = ns.below + [ s.name ~ ' (' ~ s.state ~ '%)'] %}
                {% endfor %}
                {{ ns.below | join(', ') }}

Mein Ergebnis auf der rechten Seite sieht folgendermaßen aus:

--- Ausgabe aller Batterien mit einem Wert unter 10 %

 sensor:
     - platform: template
       battery_alert:
          entity_id: sensor.date
          friendly_name: 'Batteriestand'
            unique_id: battery_alert
            value_template: >



              1 
            attribute_templates:
              battery_low: >





                2107113SG Battery Level (5%)

Wo liegt mein Fehler?

Du kannst den Sensor dort nicht testen. Was Du testen kannst ist das was im value_template steht, aber auch nicht immer.

In den Entwicklerwerkzeuge kann nur der Teil ab den geschweiften Klammern {} getestet werden, also das Auslesen der sich ändernden Werte.

Den Code selbst schreibst du in die Datei Configuration.yaml. Bevor du den Rechner neu startest, klicke bei Entwicklerwerkzeuge auf die Schaltfläche „Konfiguration prüfen“. Wenn der Code einen Fehler enthält, darfst du den Rechner auf keinen Fall neu starten.

In der Templatedatei sieht es eigentlich schon ganz gut aus:

--- Ausgabe aller Batterien mit einem Wert unter 10 %

value_template: >
  
  
    
  
  1 
attribute_templates:
  battery_low: >
    
    
      
  
  2107113SG Battery Level (5%)

Jetzt kommen aber die Fehler in der configuration.yamel.

Hallo @guezli,
kannst du mir nochmal weiter helfen? Ich habe nochmal alles überprüft und bin der Meinung das alles richtig eingebaut habe. Wo kommen die Fehlermeldungen her und wie kann ich meinen Fehler beheben?

Hoi @mickysoft

Nach - platform: template und battery_alert fehlt noch sensors:

Ich habe dir hier den vollständigen Code für den Sensor. Achte dich bitte auf die Kommentare bei #. Das ist der komplette Aufbau in meiner Yaml.

sensor:  #Wenn du den schon in deiner Cofiguration.yaml hast, nicht ein zweites mal hinzufügen
    - platform: template #Wenn du den schon in deiner Cofiguration.yaml hast, nicht ein zweites mal hinzufügen
      sensors: #Wenn du den schon in deiner Cofiguration.yaml hast, nicht ein zweites mal hinzufügen
         #Batteriestand
         battery_alert:
            entity_id: sensor.date
            friendly_name: 'Batteriestand'
            unique_id: battery_alert
            value_template: >
              {% set ns = namespace(below=[]) %}
              {% for s in states.sensor 
                    if 'battery_level' in s.entity_id and s.state != 'unknown' and s.state|int < 10 %}
                {% set ns.below = ns.below + [ s ] %}
              {% endfor %}
              {{ ns.below | count }} 
            attribute_templates:
              battery_low: >
                {% set ns = namespace(below=[]) %}
                {% for s in states.sensor 
                        if 'battery_level' in s.entity_id and s.state != 'unknown' and s.state|int < 10 %}
                  {% set ns.below = ns.below + [ s.name ~ ' (' ~ s.state ~ '%)'] %}
                {% endfor %}
                {{ ns.below | join(', ') }}
1 „Gefällt mir“

Hallo @guezli , Danke für deinen Anleitung. Ich werde leider erst am Wochenende zum einbauen komme. Es gib auf jeden Fall noch eine Rückmeldung!

1 „Gefällt mir“

@guezli Eine schöne Sammlung von Sensoren.
Ich möchte ja kein Klugscheißer sein, aber HA hat die Schreibweise der template Sensoren mittlerweile geändert. Vielleicht für Neueinsteiger die Gelegenheit es gleich in der neuen Schreibweise zu machen. Aktuell funktionieren beide. Noch. Wer weiß wann das geändert wird. Hier die Erklärung.

Hallo @guezli .
ich verzweifle :face_with_spiral_eyes:. Es will einfach nicht funktionieren :tired_face:

hier mein Stand in der Cofiguration.yaml

Ich habe dir mal meine beiden Sensoren ausgegeben. Wie du in den Kommentaren beschrieben hast, habe ich die “Sensor” herausgenommen, da der Punkt ja schon im ersten Template eingebaut war.

-------------------------- EIGENE Templat Sensoren -----------------------------------
{## -------------------------------------------------------------------------------------- ##}
--- Ausgabe aller Batterien mit einem Wert unter 10 % --------------------------------

value_template: >
  {% set ns = namespace(below=[]) %}
  {% for s in states.sensor 
        if 'battery_level' in s.entity_id and s.state != 'unknown' and s.state|int < 10 %}
    {% set ns.below = ns.below + [ s ] %}
  {% endfor %}
  {{ ns.below | count }} 
attribute_templates:
  battery_low: >
    {% set ns = namespace(below=[]) %}
    {% for s in states.sensor 
            if 'battery_level' in s.entity_id and s.state != 'unknown' and s.state|int < 10 %}
      {% set ns.below = ns.below + [ s.name ~ ' (' ~ s.state ~ '%)'] %}
  {% endfor %}
  {{ ns.below | join(', ') }}

Das ist der Template-Code

-------------------------- EIGENE Templat Sensoren -----------------------------------

--- Ausgabe aller Batterien mit einem Wert unter 10 % --------------------------------

value_template: >
  
  
    
  
  1 
attribute_templates:
  battery_low: >
    
    
      
  
  SP Joachim Batterie Level  HA App (5%)

So sieht das Ergebnis aus

  type: markdown
  content: '{{state_attr(''sensor.2107113sg_battery_level'', ''battery_low'')}}'
  title: Batteriestand < 10%

Und das ist die Karte, die alles ausgeben soll.

In deinem Screenshot ist ein Einrückfehler. Warum schriebt ihr alles in die configuration.yaml und setzt euch nicht mit dem Thema Auslagern auseinander? Gerade das Thema copy Paste bereitet dann auch weniger Probleme.

Ich kann nicht oft genug erwähnen das das Thema packages so hilfreich ist.

1 „Gefällt mir“

Hallo @psyganja,
danke für den Hinweis das, das Aufteilen und Auslagen der configuration.yaml nicht nur den Vorteil hat, den Inhalt auf mehrere Dateien zu verteilen. Ich hatte davon schon gelesen, aber es für mich noch nicht so interessant erachtet, da meine configuration.yaml noch nicht besonders groß ist. Das wird sich aber jetzt ändern.

Da ich kein Programmierer bin und mich gerade noch in YAML hinein denken muss, wehre es nett, wenn du mir sagen könntest, wo mein Einrückfehler. Ich habe es nämlich nicht rausbekommen.

Beim grünen Stern fehlt ohne Einzug

sensor:

Hallo @guezli,
das hat nicht funktioniert. Hier die Ergebnisse mit 2 und ohne vorangestellte Leerzeichen

Mit zwei führenden Lehrstellen

Ohne führende Lehrstellen

1 „Gefällt mir“

Für die „alte“ Schreibweise von template Sensoren muss die Zeile Batteriestand raus und der Rest 1 zurückgerückt werden.

Kann es sein, dass Du darüber noch irgendwo

template:

stehen hast?

@anon90710413 "template:"steht im ersten Sensor Zeile 97

Was soll ich damit machen? Ich habe jetzt den zweiten “template” herausgenommen. Sieht schon wieder etwas besser aus

Bau den Zweiten genauso um, wie die Ersten sind.

EDITH: value_template wird zu state, friendly_name raus.

@anon90710413 umgebaut aber keine Veränderung

Wie oben mit

- name:

anfangen und

sensors:

und

battery_alert:

raus.

Und entsprechend zurechtrücken. Geht in fast jeden Editor mit Block markieren, TAB->vor, SHIFT-TAB->zurück.

1 „Gefällt mir“

@anon90710413 angepasst und eingerückt, aber immer noch buggy

Aus ‘attribute_templates’ muss ‘attributes’ werden.