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
3.685
Beitr├Ąge
39.560
Mitglieder
3.157
Neuestes Mitglied
Renderender
Zur├╝ck
Oben