Automatisierung triggert sich selbst / Erkennung manuelles Schalten

Hallo zusammen,

ich habe einen relativ einfachen usecase:
Mein Luftentfeuchter soll sich bei bestimmten Bedingungen (derzeit nur Solarertrag, künftig auch Luftfeuchtigkeit) automatisch ein- und ausschalten. Wenn ich ihn aber manuell anschalte, soll er an diesem Tag nicht mehr automatisch schalten. Der Luftentfeuchter selbst ist nicht intelligent, er hängt an einer Eve Energy.

Daher habe ich einen binären Helfer-Sensor den ich auf “an” schalte, wenn manuell geschalten wurde. Beim automatischen Schalten frage ich dann ab, ob der Helfer “an” ist und führe dann eben die weiteren Schritte nicht aus. Um 20:00 schließlich wird der Helfer zurückgesetzt und der Luftentfeuchter ausgeschalten.

Das ganze ist alles in 1 Automatisierung (der Ordnung halber) und soll es auch bleiben. Die Trigger sind mit ids versehen und bei der Aktion wird dann die id abgefragt. Grob gesagt sind die Trigger → Aktionen:
(1) genug Strom → WENN nicht manuell geschalten DANN An
(2) nicht mehr genug Strom → WENN nicht manuell geschalten DANN Aus
(3) 20:00 → Aus UND Helfer Aus
(4) manuell geschalten → Helfer An

Das Problem: wenn die Automatisierung durch (1) und (2) getriggert wird, löst sofort danach automatisch auch (4) aus, wohl weil “manuell geschalten” nur abfragt, ob geschalten wurde und das wurde dann ja durch die Automatisierung. Lässt sich das irgendwie verhindern?

Danke,
Alex

Hier das yaml:

alias: Luftentfeuchter an wenn genug Solarstrom
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.tasmota_energy_power
    for:
      hours: 0
      minutes: 2
      seconds: 0
    below: -250
    id: Einspeisung > 250W
  - platform: numeric_state
    entity_id:
      - sensor.tasmota_energy_power
    for:
      hours: 0
      minutes: 2
      seconds: 0
    id: Einspeisung < 250W
    above: -250
  - platform: time
    at: "20:00:00"
    id: Ausschalt-Timer
  - platform: device
    type: changed_states
    device_id: 42e10f1eef52fd68b06b631f388dcf24
    entity_id: 02c610c3118c6dc7d359c1d05d83c438
    domain: switch
    id: manuell geschalten
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Einspeisung > 250W
          - condition: state
            entity_id: binary_sensor.luftentfeuchter_manuell_geschalten
            state: "off"
        sequence:
          - type: turn_on
            device_id: 42e10f1eef52fd68b06b631f388dcf24
            entity_id: 02c610c3118c6dc7d359c1d05d83c438
            domain: switch
      - conditions:
          - condition: trigger
            id:
              - Einspeisung < 250W
          - condition: state
            entity_id: binary_sensor.luftentfeuchter_manuell_geschalten
            state: "off"
        sequence:
          - type: turn_off
            device_id: 42e10f1eef52fd68b06b631f388dcf24
            entity_id: 02c610c3118c6dc7d359c1d05d83c438
            domain: switch
      - conditions:
          - condition: trigger
            id:
              - Ausschalt-Timer
        sequence:
          - type: turn_off
            device_id: 42e10f1eef52fd68b06b631f388dcf24
            entity_id: 02c610c3118c6dc7d359c1d05d83c438
            domain: switch
          - service: python_script.set_state
            data:
              entity_id: binary_sensor.luftentfeuchter_manuell_geschalten
              state: "off"
      - conditions:
          - condition: trigger
            id:
              - manuell geschalten
        sequence:
          - service: python_script.set_state
            data:
              entity_id: binary_sensor.luftentfeuchter_manuell_geschalten
              state: "on"
mode: single

Du könntest bei deinem choose für das manuelle schalten zusätzlich abfragen, ob die letzte Auslösung der Automation mehr als 10 Sekunden her ist.

Schaue Die mal meinen Beitrag zum Thema “Wer hat das Licht eingeschaltet”

Gruß
Osorkon

@bigmirror:
Ja das war auch mein erster Gedanke. Aber wie?

@Osorkon:
Danke! Das ist wohl der richtige Ansatz. Aber dann muss ich wohl in die YAML… Bin noch neu und im YAML-Code noch nicht ganz fit. Bekomme ich aber hin.

Update: Funktioniert. Danke nochmal.
Habe allerdings eine Anschlußfrage:

Der Luftentfeuchter soll sich melden, wenn der Wassertank voll ist. Das kann er aber natürlich nicht selbst melden, da nicht intelligent. Aber der Stromverbrauch ist charakteristisch für diesen Zustand (s. Screenshot unten).
Jetzt gibt es ja so einen Statistik-Helfer. Aber irgendwie komm ich da nicht weiter. Einfacher Durchschnittswert über zB 10 Min geht ja nicht, weil der ja auch beim normalen Ausschalten greifen würde.

Jemand eine Idee? Danke!

Brauchst ja nur eine einfache Automatisierung.

  • Auslöser: Leistung sinkt unter 50 für x Sekunden/ Minuten
  • Bedingung: Switch ist eingeschaltet
  • Aktion: Benachrichtigung xyz

Gruß
Osorkon

Das funktioniert leider nicht. Weil wenn der Schalter am Gerät selbst aus ist (quasi Standby), ist der Stromverbrauch auch unter 50W, genau gesagt 0W. Und es gibt Mitbewohner hier, die das einfach machen…

Wobei, wäre vielleicht lehrreich…

Also eindeutig zuzuordnen wäre dann eine Leistung zwischen sagen wir mal 10 und 50 Watt.

Dann erstelle Dir einen Schwellenwertsensor (Helfer)

Ober Grenze = 50
Untere Grenze = 10

Und dann den Schwellenwertsensor als Auslöser verwenden.

Gruß
Osorkon

OK. Also ich habe den Schwellwertsensor und frage dann in der Automation ab, ob dieser für 2 Minuten an ist (das ist etwa die Zeit auf dem Niveau von rd 26W.

Das Problem: Sobald der Verbrauch im Zyklus wieder nach oben geht, schaltet sich der Schwellwertsensor wieder aus. Und dann, wenn der Verbrauch wieder sinkt, wieder an, was erneut die Automation auslöst. Dann bekomm ich alle 10 Minuten eine Benachrichtigung…

Evtl. kann ich einen zweiten Helfer-Sensor machen, der nur einschaltet, wenn der Schwellwertsensor das erste mal auslöst. Dann brauch ich aber noch ne Automation dafür…

Update:
als ich glaube es geht einfacher:
direkt als trigger abfragen, ob Verbrauch zwischen 25 und 30W für 2 Min.
Dann Luftentfeuchter ausschalten und Benachrichtigen. Dann wird auch nicht erneut getriggert. Jetzt muss ich nur noch überlegen, wie ich verfahren soll, wenn er sich gerne wieder anschalten wollen würde…

Das macht er aber nur, weil Du den Wasserbehälter noch nicht geleert hast, richtig?
Wenn der Entfeuchter läuft, zieht er dauerhaft seine ca. 250W?

Der Leistungsverlauf oben, was zeigt dieser genau an? Steigt die Leistung tatsächlich wieder auf 250 Watt an, obwohl der Tank voll ist?

Wenn Du nur einmalig benachrichtigt werden willst, kannst Du einen Input Boolean als Helfer einsetzen. Den Du als zusätzliche Aktion einschaltet tust. Und dann eine Zusätzlich Bedingung verwenden tust, Helfer ist aus.

Das leeren des Tanks kannst Du dann manuell bestätigen, in dem Du den Helfer wieder ausschalten tust. Oder automatisiert, Z.B. wenn Leistung über 200w für x Minuten.

Du kannst das alles wenn gewünscht in eine Automatisierung packen. In dem Du für die Auslöser Trigger Id‘s verwendest. Und als Aktion Auswählen. Wie Du es ja bereits tust.

Gruß
Osorkon