Hilfe bei Automatisierung: Action bei mehrfachem Trigger durch Stromverbrauch-Entity

Putarex

New member
Moin zusammen, 😎

ich habe eine Tauchpumpe die ĂŒber einen Tuya-Smartplug in HA eingerichtet ist.

Beim einschalten (durch die Pumpen-Elektronik) steigt der Stromverbrauch auf >15 Watt (mal mehr (>200 Watt), mal weniger und wenn die Pumpe fertig ist schaltet die Pumpe (nicht das Smartplug) ab und der Stromverbrauch geht auf rund 1 Watt bis er kurze Zeit auf 0 Watt geht (denke wenn die Elkos leer sind).

Wenn der Wasserstand sehr niedrig ist, macht die Pumpe das sehr oft und kurz hintereinander.
Also:
einschalten, abpumpen, ausschalten, +/- 2 sek. Pause, einschalten, abpumpen, ausschalten, +/- 2 sek. Pause, ... usw.
Ich möchte nun wenn dieses Verhalten da 3 mal vorgekommen ist, die Pumpe fĂŒr einen gewissen Zeitraum abschalten ĂŒber den Smartplug (12 Stunden)...

Ich stelle mir das automatisiert so vor (ohne jetzt eine spezielle syntax zu benutzen):

Python:
if zeit.verbrauch_unter_15_watt < 5 sek:
    zaehler++
if zaehler = 3:
    trigger switch_off.smartplug

Ich habe keine Ahnung wie man das am besten in HA automatisieren könnte.
Bestimmt gibt es einen eleganteren weg, den ich gerade nicht sehe. đŸ€”

An die Automatisierungs-Spezies: Habt Ihr eine Idee?

Lieben Dank und viele GrĂŒĂŸe,
Putarex
 
Vermutlich must du dir ein template counter anlegen und diesen als trigger der automation einsetzten, schau mal nach counter, ich hab aktuell keinen (da keine Verwendung)
 
OK. Danke Dir.👍

Überlege nur gerade ob ich erkennen kann (also als Bedingung fĂŒrs hochzĂ€hlen), dass die Unterbrechung max 5 Sek. war.
đŸ€”
 
Zwei Möglichkeiten fallen mir spontan ein. Kopier dir die Codes mal in eine leere Automation und guck dir das dann im grafischen Editor an, um die Logik einmal zu checken. Bei Gefallen natĂŒrlich EntitĂ€ten und GerĂ€te setzen.

Diese wÀre ohne Templates:
YAML:
description: ""
mode: single
trigger:
  - platform: numeric_state
    entity_id: ""
    below: 1
condition: []
action:
  - wait_for_trigger:
      - platform: numeric_state
        entity_id: ""
        above: 1
    continue_on_timeout: false
    timeout:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
  - wait_for_trigger:
      - platform: numeric_state
        entity_id: ""
        above: 1
    continue_on_timeout: false
    timeout:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
  - wait_for_trigger:
      - platform: numeric_state
        entity_id: ""
        above: 1
    continue_on_timeout: false
    timeout:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
  - service: switch.turn_off
    data: {}

Zweite Variante (fĂŒr advanced User):


YAML:
description: ""
mode: parallel
trigger:
  - platform: numeric_state
    entity_id: ""
    below: 1
condition: []
action:
  - if:
      - condition: template
        value_template: "{{ this.current == '3' }} "
    then:
      - service: switch.turn_off
        data: {}
    else:
      - wait_for_trigger:
          - platform: state
            entity_id: null
            to: "off"
        timeout:
          hours: 0
          minutes: 1
          seconds: 0
          milliseconds: 0
        continue_on_timeout: true
max: 4


Die zweite Variante lĂ€sst fĂŒr jeden deiner "schnellen Zyklen" eine eigene Instanz der Automation laufen, die jeweils nach einer Minute von alleine beendet wird oder vorzeitig durch ausschalten deines Plugs. Sind 3 "schnelle Zyklen" erkannt worden, laufen also drei Instanzen gleichzeitig. Ist das der Fall, wird das vom Template erkannt und deine Pumpe ausgeschaltet.
 
Zuletzt bearbeitet:
OK.
Danke erstmal. Hab beides ausprobiert und versuche den Code zu verstehen:
Leider klappt es nicht. đŸ€”

Ich wĂŒrde das mit meinen Code-Kenntnissen (php) mal so ausdrĂŒcken:
PHP:
# $tauchpumpe_switch ist die Schaltbare Steckdose mit Strommessung

while ($switch_tauchpumpe=="ein")
{
    #wenn stromverbrauch <10 Watt
    if ($tauchpumpe_power < 10)
        {
        #wenn Tauchpumpe-Aus fĂŒr max. 10 Sekunden
        if ($tauchpumpe_aus_time < 10) $count++
        }
    if {$count==3} $switch_tauchpumpe="aus";
}

MĂŒsste das jetzt in HA ĂŒbersetzen, sofern HA das ĂŒberhaupt hergibt (z.B. aus fĂŒr max. 10 Sekunden)...!?
 
Probier mal so:

YAML:
description: ""
mode: parallel
trigger:
  - platform: numeric_state
    entity_id: XXXXX
    below: 2
condition: []
action:
  - if:
      - condition: template
        value_template: "{{ this.current == '4' }} "
    then:
      - service: switch.turn_off
        data: {}
        target:
          entity_id: YYYYYY
    else:
      - wait_for_trigger:
          - platform: numeric_state
            entity_id: XXXXX
            for:
              hours: 0
              minutes: 0
              seconds: 30
            above: 2
        timeout:
          hours: 0
          minutes: 2
          seconds: 0
          milliseconds: 0
max: 4

Bei XXXXX trÀgst du die EntitÀt ein, die dir den Stromverbrauch anzeigt (sensor.irgendwas). Und bei YYYYY den Schalter von deinem Plug. (switch.irgendwas)
 
Danke.
Ich habe es eingefĂŒgt, die Tauchpumpe (der Switch) bleibt aber an.

Ich versuche gerade auch den Code zu verstehen.
Es wird ja hier ausgeschaltet:

YAML:
action:
  - if:
      - condition: template
        value_template: "{{ this.current == '4' }} "
    then:
      - service: switch.turn_off
        data: {}
        target:
          entity_id: YYYYYY

Aber wie kommt denn der value auf "4"? Sehe da keinen inkrementierung... đŸ€”
Oder zĂ€hlt "numeric_state" standardmĂ€ĂŸig eins hoch...!?
Und was macht das "timeout". Bezieht sich das auf "wait_for_trigger"? Und was bewirkt das?

Sorry fĂŒr die Fragen! 😏
 
Der Trigger
YAML:
trigger:
  - platform: numeric_state
    entity_id: XXXXX
    below: 2
löst aus, wenn deine Pumpe unter 2 Watt zieht. Eine Instanz dieser Automation startet und wartet
YAML:
     - wait_for_trigger:
          - platform: numeric_state
            entity_id: XXXXX
            for:
              hours: 0
              minutes: 0
              seconds: 30
            above: 2
darauf, dass die Pumpe wieder ĂŒber 2 Watt zieht. Tut sie das nicht innerhalb 2 Minuten
YAML:
        timeout:
          hours: 0
          minutes: 2
          seconds: 0
          milliseconds: 0
dann endet diese Instanz der Automation. Sollte sie 30 Sekunden lang ĂŒber 2 Watt ziehen, endet die Instanz ebenfalls. Das ist die Erkennung fĂŒr das schnelle an und ausschalten.
HĂ€ufen sich nun 3 Instanzen an, sprich dein schneller Zyklus wurde 3 mal erkannt (innerhalb 2 Minuten), dann
YAML:
    - if:
      - condition: template
        value_template: "{{ this.current == '4' }} "
    then:
      - service: switch.turn_off
        data: {}
        target:
          entity_id: YYYYYY
schaltet die vierte Instanz (current=4) die Pumpe aus.

So zumindest die Theorie...

Hast du irgendwelche Fehler im Log?


Wie können das ganze aber auch von vorne anfangen und einen Counter zur Hilfe nehmen.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.379
BeitrÀge
45.223
Mitglieder
3.978
Neuestes Mitglied
HAbeginner
ZurĂŒck
Oben