Timer in Automation starten

Stehe auf dem Schlauch. Irgendwie startet der Timer Helfer nicht?

alias: Spülmaschine eingeschaltet
description: ""
trigger:
  - type: power
    platform: device
    device_id: 52a3a9ce77b2665e16d5122ecc450337
    entity_id: sensor.spulmaschine_power
    domain: sensor
    id: an
    above: 10
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - type: power
    platform: device
    device_id: 52a3a9ce77b2665e16d5122ecc450337
    entity_id: sensor.spulmaschine_power
    domain: sensor
    id: aus
    below: 1.5
    for:
      hours: 0
      minutes: 30
      seconds: 0
condition: []
action:
  - if:
      - condition: trigger
        id: an
    then:
      - service: input_boolean.turn_on
        data: {}
        target:
          entity_id: input_boolean.spulmaschine_lauft
      - service: input_datetime.set_datetime
        metadata: {}
        data:
          datetime: "{{ now() }}"
        target:
          entity_id: input_datetime.spulmaschine_startzeit
      - service: timer.start
        metadata: {}
        data: {}
        target:
          entity_id: timer.timer_spulmaschine
  - if:
      - condition: trigger
        id: aus
    then:
      - service: input_boolean.turn_off
        data: {}
        target:
          entity_id: input_boolean.spulmaschine_lauft
      - service: input_datetime.set_datetime
        metadata: {}
        data:
          datetime: "{{ now() }}"
        target:
          entity_id: input_datetime.spulmaschine_fertig
      - service: timer.finish
        metadata: {}
        data: {}
        target:
          entity_id: timer.timer_spulmaschine
mode: single

Was meinst Du mit der Timer startet nicht?
Hast Du beim erstellen des Timers bereits eine Dauer eingetragen?
In der Automatisierung, gibst ja keine Dauer an.
Es ist ein Timer und keine Stoppuhr, falls das eine Rolle spielen sollte.

BTW. Die zweite If Abfrage kannst Du Dir sparen. Du hast ja nur 2 mögliche Auslöser. Wenn es nicht der eine ist, dann ist es der andere.

Wenn Trigger Id = an dann x, sonst y
Tut es auch.

Gruß
Osorkon

1 „Gefällt mir“

Ja ich meine eine Stoppuhr und wenn beim nächsten Mal wieder läuft soll es wieder bei 0 Anfangen.

Aber das muss ja auch ein Helfer sein oder nicht?

Nein, es gibt nur einen Timer als Helfer.
Eine Stoppuhr ist mir noch nicht über den Weg gelaufen.
Kannst mal schauen ob Du im HACS sowas wie eine Stoppuhr findest.

Gruß
Osorkon

Habe letztens noch sowas bei Facebook gesehen, was ich auch suche.

Wenn Du mit helpern für z.B. Wäscht, Fertig und Aus arbeitest kannst Du mit last_triggered arbeiten und zurückrechnen, wie lange das schon läuft.

Die Frage, welche ich mir zu Deinem Screenshot stelle, ist, wie soll das getriggert werden? Ich würde nicht von meiner Waschmaschine zugespammt werden wollen. :smiley:

1 „Gefällt mir“

Einfach die reaktive Zeit ausgeben lassen, in dem Fall wie lange der Input Boolean schon an ist.


{{ relative_time(states. input_boolean.spulmaschine_lauft.last_changed) }}

Das ganze in eine Mushroom Template Karte verpackt und Du hast exakt was Du suchst.

Gruß
Osorkon

1 „Gefällt mir“

Das mit der Laufzeit, war so noch nicht ganz sauber, weil die Geräte ja am Tag durchaus häufiger laufen. Habe mich dann viel durchs Netz gewühlt und ChatGPT teils als kleine Hilfe gefragt und am Ende ist es erstmal so:

template:
  - sensor:
      - name: "Waschmaschine Laufzeit"
        state: >
          {% set x = states('sensor.time') %}
          {% set t = 0 if states('input_boolean.waschmaschine_lauft') == 'off' else now().timestamp() - states.input_boolean.waschmaschine_lauft.last_changed.timestamp() %}
          {{ t | timestamp_custom('%H:%M', false) }}

Daraus habe ich mir das neue Dashboard gebaut:

Was heißt hier häufiger laufen? Dass Du nach dem Zustand “on” filtern tust, habe ich mal vorausgesetzt. Ob du jetzt die relative oder absolute Zeit haben wolltest, konnte ich Diener Frage nicht entnehmen.
Letztlich war ja aber das Attribut “last_changed” was Dich zur Deiner Lösung geführt hat, oder? :wink:

Hättest den Template Sensor auch gleich als Helfer in der GUI erstellen können.
Die Zeile
{% set x = states('sensor.time') %}
Ist überflüssig in deinem Template. Verwendest die Varaiable x ja nirgends?!

Wenn Du schon Mushroom Template Karten verwenden tust, kannst Du das Template ja direkt in der Karte verwenden. Ohne extra einen Template Sensor erstellen zu müssen.

Gruß
Osorkon

Cooles Dashboard, würde gerne den vollständigen code sehen :grinning:

Die Laufzeit/Dauer ermittele ich jetzt so, somit wird, wenn das Gerät läuft die aktuelle Laufzeit angezeigt und wenn das Stoppzeit aktueller als das Startzeit ist, wir die letzte vollständige Dauer angezeigt.

Frage dazu: kann man aus der Dauer (Stoppzeit- Startzeit) die auch wegspeichern bzw. würde daraus eine durchschnittliche Laufzeit berechnen

template:
  - sensor:
      - name: "Waschmaschine Stoppuhr"
        state: >
          {% set start_time = states('input_datetime.waschmaschine_startzeit') %}
          {% set stop_time = states('input_datetime.waschmaschine_fertig') %}
          {% if start_time < stop_time %}
          {% set time_diff_seconds = (as_timestamp(stop_time) - as_timestamp(start_time)) %}
          {% set hours = (time_diff_seconds // 3600) %}
          {% set minutes = ((time_diff_seconds % 3600) // 60) %}
          {% set seconds = (time_diff_seconds % 60) %}
          {{ '%02d:%02d:%02d' | format(hours, minutes, seconds) }}
          {% else %}
          {% set x = states('sensor.time') %}
          {% set t = 0 if states('input_boolean.waschmaschine_lauft') == 'off' else now().timestamp() - states.input_boolean.waschmaschine_lauft.last_changed.timestamp() %}
          {{ t | timestamp_custom('%H:%M', false) }}
          {% endif %}