Automtisierung macht nicht, was sie soll

Hallo zusammen,

folgende Test-Automatisierung soll eine Steckdose in Abhängigkeit von einer Leistung einschalten. Im aktuellen Beispiel -150 (W), negativer Strombezug (Einspeisung). Es ist aber egal, welche utopischen Wert ich da reinschreibe, z.B. 50000, 0, -9000, … die Steckdose wird immer eingeschalten.
Hintergrund ist, ein Luftentfeuchter im Keller soll einschalten, wenn genügend Solarstrom vorhanden ist.

Wenn ich als Trigger z.B. eine Uhrzeit nehme, dann klappt es.

Hat jemand eine Idee, was ich hier falsch mache?

alias: Test-EIn
description: ""
triggers:
  - alias: Test-Ein
    trigger: numeric_state
    entity_id:
      - sensor.bitshake_smartmeterreader_e320_power
    below: -150
    for:
      hours: 0
      minutes: 0
      seconds: 0
conditions: []
actions:
  - type: turn_on
    device_id: 583f237ff0193a151fd1b11d755da238
    entity_id: 140de268004eaa01c52a0c223324eeb5
    domain: switch
mode: single

Besten Dank schon mal

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Ich habe das für unseren PlugIn wie folgt gelöst:

alias: "#UeberschussLadenAuto"
description: ""
triggers:
  - minutes: /10
    trigger: time_pattern
conditions: []
actions:
  - if:
      - condition: numeric_state
        entity_id: sensor.export_power
        above: 2500
    then:
      - type: turn_on
        device_id: 262700ac0b8faf9fb4807eef529808f9
        entity_id: 1f76bfeca04e7a4feaf2125aa9ae9692
        domain: switch
      - action: input_boolean.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.eve_flare_arbeitszimmer
  - if:
      - condition: numeric_state
        entity_id: sensor.battery_charging_power
        above: 3000
    then:
      - type: turn_on
        device_id: 262700ac0b8faf9fb4807eef529808f9
        entity_id: 1f76bfeca04e7a4feaf2125aa9ae9692
        domain: switch
      - action: input_boolean.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.eve_flare_arbeitszimmer
  - if:
      - condition: numeric_state
        entity_id: sensor.battery_discharging_power
        above: 10
    then:
      - type: turn_off
        device_id: 262700ac0b8faf9fb4807eef529808f9
        entity_id: 1f76bfeca04e7a4feaf2125aa9ae9692
        domain: switch
      - action: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.eve_flare_arbeitszimmer
mode: single

Blöde frage: welche Steckdose nutze du, die positiv und negativ messen kann?

Habe die relevanten Zeilen kopiert und angepasst.
Es hat funktioniert. Ein guter Ausgangspunkt jetzt.

Besten Dank

Das ist ein “bishake SmartMeterReader - air” am digitalen Zähler.

1 „Gefällt mir“

Noch ein paar Hinweise,
Der trigger sollte schon gehen, ich würde aber sagen… Nur wenn es für mind. 5min ist.
Denn wenn mal ein ganz kurzer solar Ausschlag ist, würde deine automatisierung schon aktiv werden.
Ich habe mir dazu einen sensor erstellt, der den Durchschnittswert der letzten 30min beinhaltet, diesen Wert nehme ich als trigger.

Eine automatisierung die aller 10min schaut… Das ist nicht optimal fürs System, die würde auch in der Nacht aller 10min aktiv sein.

Es war ein Trigger für 10 Minuten drin, den ich aber der Übersicht halber weggelassen habe. Und in der Nacht schläft die Automatisierung, wird im Prinzip durch Sonnenaufgang und Untergang gesteuert.

Was mich nur wundert ist, auch wenn ich total unsinnige Werte, welche in der Realität nie erreicht werden eintippe, die Steckdose schaltet immer ein. Aber vielleicht ist die Logik in Home Assistant anders als meine.

Ich habe es gerade rein interessehalber nachgebaut:

alias: Test unter -150
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.bitshake_smartmeterreader_sgm_power
    below: -150
conditions: []
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.hifi_stecker
mode: single

Das funktioniert 1A.

Der Schalter löst nur aus, wenn die Einspeisung größer als 150 W ist (also der Leistungswert unterhalb von -150). Macht natürlich wie bereits angemerkt keinen Sinn ohne eine Zeitkomponente, funktioniert prinzipiell aber. Woran es bei dir speziell lag, dass es nicht funktioniert, kann ich nicht nachvollziehen.

Ja, ist etwas komisch. Habe deinen Code genommen und meine Parameter eingesetzt. Der Schalter wird eingeschalten, obwohl er nicht einschalten sollte. Der Wert wird anscheinend ignoriert.

alias: Test unter -150
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.bitshake_smartmeterreader_e320_power
    below: -150000
conditions: []
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.t84_staubsauger_keller
mode: single

Wenn es ein C-Code wäre, würde ich einfach im Debugger durch steppen, ist ja ein Pipifax-Code

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Wie hast du das getestet? Wenn du manuell gestartet hast, ist das normal, weil dann Trigger und Bedingungen übersprungen werden.

Kennst du bestimmt schon, aber zu einem Teil kann hier die Trace-Funktion helfen. Gerade zum zu sehen, wann welcher Trigger ausgelöst hat.

Gruß, Lars

Hast recht. Habe manuell gestartet. Habe einfach vergessen, dass da ein paar Sachen übersprungen werden. Werde es jetzt mal in Betrieb testen

Ist jetzt automatisiert abgelaufen und schaltet trotzdem ein.
Ich verstehe es nicht. Habe ja mehrere Automatisierungen, nach gleichem Schema, welche alle funktionieren, nur bei diesem nicht.

alias: Test unter -150
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.bitshake_smartmeterreader_e320_power
    below: -150000
    for:
      hours: 0
      minutes: 1
      seconds: 0
  - trigger: time_pattern
    minutes: /2
conditions: []
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.t84_staubsauger_keller
mode: single

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Nach der Automatisierung wird die Steckdose doch nun alle 2 Minuten eingeschaltet . Trigger alle 2 Minuten, keine condition.

Es wäre übrigens gut, wenn du den Code als “Vorformatierten Text” postest.

Gruß, Lars

Den Trace kenne ich. Hilft mir aber noch nicht weiter. Muss ihn mit einem funktionierenden vergleichen. Die schalten aber gerade nicht. Jedenfalls der Vergleichsparameter -150000 kommt da nicht vor, was mich etwas wundert.

Alles klar.
Ich werde es gemäß dem Vorschlag von LacTyyn implementieren. Da sind die Conditions drinnen und es funktioniert.

Besten Dank

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Versuche es so

alias: Test unter -150
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.bitshake_smartmeterreader_e320_power
    below: -150000
    for:
      hours: 0
      minutes: 1
      seconds: 0
  - trigger: time_pattern
    minutes: /2
conditions:
  - condition: numeric_state
    entity_id: sensor.bitshake_smartmeterreader_e320_power
    below: -150000
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.t84_staubsauger_keller
mode: single

Funktioniert auch.
Aber der erste Trigger “- trigger: numeric_state” ist nicht notwendig.

Jedenfalls habe ich jetzt gelernt, wie Trigger und Condion in Home Assistant zu interpretieren sind.

Zusatz. Wenn die “for…” Bedingung notwendig ist, dann muss der erste Trigger doch drinnen sein.

Zusatz 2, der Vollständigkeit halber:
In meinem Fall ist es so, dass ich in den ersten Trigger bei der Leistung reinschreiben kann was ich will, das hat keine Auswirkung. Allein
“time_pattern” ist hier ausschlaggebend.

Unter “Conditions” kann man keine “for” Bedingung mehr reinbringen, also wie lange ein Wert vorhanden sein soll, bis ausgelöst wird.

Um jetzt noch die “for” Bedingung reinbringen zu können, habe ich für die Leistung einen Statistik Helfer erstellt, der mir den Mittelwert der Leistung über eine bestimmt Zeit liefert. Zusammen mit dem “time_pattern” wird dadurch ein On/Off Verhalten reduziert.