template probleme...

ktmexc

New member
Hallo allerseits, mal wieder ein Problem mit template Umrechnung..

bei uns ist relativ oft (inzwischen) Hochwasser. Ich wohne neben einen Bach und habe mir einen Laidar Sensor für den Bachpegel installiert.
Der funktioniert wunderbar, Messwerte kommen sauber rein.
nun möchte ich gerne "Warnstufen" einbauen.
Bis Pegelstand 100cm Stufe 0
Ab Pegelstand 100cm Stufe 1
Ab Pegelstand 150cm Stufe 2 usw.

Hab schon diverse Methoden probiert, komme aber nicht weiter.
Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht ;-)

YAML:
- platform: template
    sensors:
        friendly_name: "Warnstufe Bach"
        value_template: >-
            {% if is_state('sensor.ammerbach_median', '<100') %}
              0
            {% elif is_state('sensor.ammerbach_median', '>100') %}
              1
            {% endif %}
 
YAML:
- platform: template
    sensors:
        friendly_name: "Warnstufe Bach"
        value_template: >-
            {% if is_state('sensor.ammerbach_median', '<100') %}
              0
            {% elif is_state('sensor.ammerbach_median', '>100') %}
              1
            {% elif is_state('sensor.ammerbach_median', '>150') %}
              2
             ...
            {% endif %}
 
Ich würde jetzt nicht sagen, dass is_state hier der passende Ansatz ist - in meinem Versuch funktionierte das jedenfalls nicht, hätte mich auch dezent gewundert, da es laut Doku auf einen oder mehrere exakte Werte vergleicht.

Würde eher so ansetzen:
YAML:
{% if states('sensor.ammerbach_median') | int > 150 %}
  2
{% elif states('sensor.ammerbach_median') | int > 100 %}
  1
{% else %}
  0
{% endif %}
Für höhere Werte das aktuelle if in ein elif umwandeln und das neue if darüber schreiben.
 
Ich würde gerne sehen, wie du so was simples in einer Automatisierung mit ein paar Zeilen Code machst.
Wo ist das Problem ? 5 Minuten arbeit.
Code:
description: ""
mode: single
triggers:
  - trigger: time_pattern
    minutes: /1
conditions: []
actions:
  - if:
      - condition: numeric_state
        entity_id: ""
        below: 100
    then:
      - action: input_number.set_value
        metadata: {}
        data:
          value: 0
  - if:
      - condition: numeric_state
        entity_id: ""
        above: 100
    then:
      - action: input_number.set_value
        metadata: {}
        data:
          value: 1
  - if:
      - condition: numeric_state
        entity_id: ""
        above: 150
    then:
      - action: input_number.set_value
        metadata: {}
        data:
          value: 2
Ist jetzt auch nur mal so auf die schnelle gemacht, läßt sich sicher noch etwas optimieren.
 
Eindeutig 2, weil von oben nach unten abgearbeitet wird und keine Abbruchbedingung gegeben ist.
 
Gibt keinen Vorteil wenn man fit im yaml-Syntax ist.
Wenn man da nicht so fit ist, wie ich oder der TE, ist eine Automatisierung aber leichter umzusetzen.
 
Wenn man sich nur den yaml Code ansieht, finde ich persönlich den unübersichtlich.
Die Automatisierung ist Logisch aufgebaut. Ein Auslöser und 3 Aktionen, die bedingt ausgeführt werden.
4 Zeilen in der Visuellen Bearbeitung. Und, ich kann Traces nutzen, falls mal was nicht geht.
Aber hier geht es nicht um einen Schönheotswettbewerb.
Du sagtest "Ich würde gerne sehen, wie du so was simples in einer Automatisierung mit ein paar Zeilen Code machst." Ich habe es Dir gezeigt und fertig.
Das zwei Bedingungen erfüllt sind ist sowas von Banane.
Einfaches Basic:
Zeile 1: A = 1
Zeile 2: A = 2

Welches Wert hat A ?
 
gibt eine Automation, die dauernd läuft, statt z.B. eines zusammenklickbaren Template(helfers) mit dem Codeschnipsel.
Das ist der klassische Anwendungsfall für einen Helfer.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.457
Beiträge
53.931
Mitglieder
5.260
Neuestes Mitglied
mark-oase
Zurück
Oben