Mein Trigger will nicht funktionieren

Hallo,

Ich habe eine Wallbox deren Sensor -14.83 Watt anzeigt, wenn das Auto im Tiefschlaf ist und erst geweckt werden soll.

die Aktion funktionier einwandfrei nur der Trigger nicht.

trigger: numeric_state
entity_id:
  -sensor.nrgkick_aktuelle_ladeleistung_l1
for:    
  hours: 0
  minutes: 0
  seconds: 0
below: 0

Ich möchte, dass der Trigger bei einem negativen Wert auslöst.

Funktioniert aber nicht.

Hat jemand ein Tip woran das liegt?

Bedeutet, dass der Sensor erst über 0 sein muss um dann bei Absenkung <0 auslösen zu können.

Hi , der Wert ist normalerweise =1 also positiv wenn nicht geladen wird.

Im Normalfall ist der Wert immer positiv

Wenn EVCC sagt beginne mit der Ladung dann wechselt der Wert zu einem negativen Wert wenn das Auto nicht regiert.

Ansonsten startet der Ladevorgang.

Also wenn der Wert negativ ist, weiß ich dass ich das Auto aufwecken muss.

Setze diesen in Entwicklerwerkzeugen → Zuständen einmal auf 10 und dann auf -5 und schaue ob die Automatisation getriggert wurde?

Hi,

so sah der Zustand aus. Es wird nicht geladen:

grafik

Dann habe ich den Zustand auf -10 gesetzt und die Automation hat einwandfrei funktioniert.

Die Automation habe ich bereit vor über einen Monat eingrichtet und dieser besondere Fall mit minus Werten kommt 1 oder 2 Mal im Monat vor. Heute morgen war es wieder mal soweit und die Automation wurde nicht ausgelöst.

Die letzte Auslösung war 26.09. als ich die Aktion mochmal getest habe.

Ich werde das weiter beobachen.

Danke erstmal

Ich tippe darauf, daß der Wert von sensor.nrgkick_aktuelle_ladeleistung_l1 den Zustand “unavailable” hat bzw. als String gemeldet wird und dann erst einen negativen und deshalb nicht ausgelöst wird. Hast Du eine blanke (nicht gereinigte) Historie zu den Werten?

EDIT
Zum Testen:
Lege einen Template Sensor an, der Deine Ladeleistung parallel überwacht aber mit | float(0) und Availability und dann vergleiche beide Sensoren im Minus Fall.

Habe ich mal eingericht und ich hoffe, dass ich es auch richtig umgesetzt habe.

Dummer weise löst der Trigger genau in solcher Situation auch aus. Was er eigentlich nicht sein dürfte.
Siehe dazu.

Gruß Osorkon

Interessante Diskussion von Euch dort. Müßte dann aber der Weg über den Template Sensor diesen Bug nicht abfangen ? Sogar doppelt

{{'unavailable' | float(0)}} -> 0
{{'unavailable' | has_value}} -> false und damit kein Wert und somit zählt voriger

Ich hab mal den Zeitpunkt in der Historie herausgesucht:

Angetriggert durch @Osorkon habe ich noch etwas probiert und passe meinen obigen Template Vorschlag an:

Nimm mal diesen

{{states('sensor.nrgkick_aktuelle_ladeleistung_l1') if is_number(states('sensor.nrgkick_aktuelle_ladeleistung_l1')) else 0}}

Und schmeiß den Availibility Teil wieder raus.

Wenn ein String in Form von ‘unavailable’ oder als “String-Zahl” ankommt, macht er eine 0. Eine 0 ist immer größer als ein negativer Wert und damit müßte auch die Automatisation triggern.

Interessant sind diese Leistungssprünge bevor es negativ wird. Na mal sehen, was der zweite Sensor daraus macht.

Ich darf noch nicht die historie.csv nicht hochladen, aber diese eingerückten Werte (mit “.“) kommen relativ häuftig vor

du meinst so?

Ja sofern unter erweiterte Optionen alles leer ist. Kann man hier nicht sehen.

ja, die erweiterte Optionen sind leer

könnte hier aber auch nur Excel sein was die Zelle als Text formiert und die anderen als Zahlen.

die Einrückung kommt von Excel aber warum ein Punktwert?

sieht als txt so aus

Interessant aber ich denke die “x.x” ist nicht das Problem.

Mir fällt noch ein anderer Ansatz ein:

Warum triggert man Deine Automatisation nicht sobald negative Werte vorliegen - egal ob vorher positiv oder unavailable?

trigger:
  - platform: template
    value_template: >
      {{ states('sensor.nrgkick_aktuelle_ladeleistung_l1')|float(0) < 0 }}

Ich habe kein E.-Auto/Ladesäule aber sollte “diese” Aktion nur einmal ausgeführt werden dürfen, dann könnte man das durch Setzen/Abfragen eines Boolean Helfers abfangen.

Ok ist auch eine Idee mit einem Helfer das auszulösen. Ich habe das naheliegenste versucht.

Ich könnte auch einen anderen Trigger nehmen. Ich schaumal wie sich das entwickelt.

Viel Dank erstmal

Entspricht exakt diesem Template :wink:

{{states('sensor.nrgkick_aktuelle_ladeleistung_l1') | float(0) }}

Außer dass es kürzer ist..

Auch das entspricht exakt dem Auslöser aus dem ersten Beitrag

triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.nrgkick_aktuelle_ladeleistung_l1
    below: 0

Es heißt zwar zuletzt ausgelöst, damit sind aber Aktionen der Automation und nicht der Auslöser gemeint.
D.h. der Trigger kann durchaus gegriffen haben, aber es wurde keine Aktion ausgeführt, da z.B.eine der Bedingungen nicht zugetroffen hat. Wenn Du Dir anschauen willst, wann die Automation zuletzt durch einen Auslöser ausgelöst wurde, musst Du Dir den Trace anschauen.

Dieser Auslöser löst immer aus. Egal ob der Wert zuvor nicht verfügbar war und der neue ein negativ Wert ist oder vorher positiv und der neue negativ.

triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.nrgkick_aktuelle_ladeleistung_l1
    below: 0

Hast Du in Deiner Automation irgendwelche Bedingungen eingebaut?
Poste mal die komplette Automation und schaue Dir mal den Trace zum vermeintlichen Zeitpunkt als der Wert negativ war und die Aktion nicht ausgeführt wurde.

Gruß Osorkon

1 „Gefällt mir“

Danke fürs Drüberschaunen und Du wirst Recht haben.

Wichtig war mir eher, daß der Availibility Punkt wieder rausgenommen wird. Ich dachte erst, diese Einstellung wird verhindern, daß unavailable erscheint aber nein, der State wird/bleibt unavailable was eigentlich verhindert werden soll.

Ist das wirklich so?
Unterschied ist doch das es egal ist ob der negative Wert einen positiven oder Unavailable Vorgänger hatte. Während numeric/below: 0 immer einen positiven Vorgänger erwartet.