Zeit anzeigen, aller wieviel Minuten eine Tauchpumpe anspringt

Hallo liebe Leute,

ich bin leider ziemlich neu bei home assistent und stehe daher gerade ziemlich auf dem Schlauch.

Ich habe eine Tachpumpe, die (je nach anfallendem Grundwasser) mal seltener, mal öfter anspringt. Die Tauchpumpe hängt an an einem Shelly Plus 1PM.
Über Shelly Plus 1PM switch_0 power (sensor.shelly_plus_1pm_switch_0_power) kann ich das aulösen detektieren, z. B. wenn sensor.shelly_plus_1pm_switch_0_power > 100 Watt.
Nun möchte ich gern die zeitliche Differenz der letzten beiden Auslösungen anzeigen (also aller wieviel Minuten die Pumpe anspringt).
Mit einer normalen Automation geht das leider nicht.
Weiß vielleicht jemand, wie man das hinbekommt?

Du musst Dir mit einem Helfer behelfen.
Schwellenwertsensor. Also Schwellenwert Z.B. über 100 W. Dieser Helfer nimmt dann den Wert On, wenn Shelly über 100 Watt, wenn drunter dann Off.

Mit diesem Schwellenwertsensor kannst Du Dir dann einen History Stats Sensor erstellen.

Gruß
Osorkon

1 „Gefällt mir“

Hier noch eine andere Lösungsmöglichkeit, wenn du wirklich nur die vergangene Zeit seit dem letzten überschreiten der 100 W haben willst:

Folgende Helfer werden benötigt:
input_datetime.test1 repräsentiert die letzte Auslösung
input_datetime.test2 repräsentiert die zeitliche Differenz der letzten beiden Auslösungen

alias: Test Zeit
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.shelly_plus_1pm_switch_0_power
    above: 100
condition: []
action:
  - service: input_datetime.set_datetime
    target:
      entity_id: input_datetime.test2
    data:
      time: "{{ ((now() - today_at(states('input_datetime.test1'))) | string) [:7] }}"
  - service: input_datetime.set_datetime
    target:
      entity_id: input_datetime.test1
    data:
      datetime: "{{ now() }}"
mode: single

Als erste Aktion wird die Zeitdifferenz zwischen input_datetime.test1 und now() berechnet und in input_datetime.test2 geschrieben.
Danach wird der jetzige Zeitpunkt in input_datetime.test1 geschrieben.

Die Helfer sind vom Typ Uhrzeit.

1 „Gefällt mir“

Vielen Dank, aber wo muss ich den obigen Code eingeben?
In eine neue package-Datei (pumptime.yaml) zu kopieren hat leider nicht funktioniert: Setup of package ‘pumptime’ failed: Invalid package definition ‘pumptime’: expected dict for dictionary value @ data[‘mode’]. Package will not be initialized)

Das ist eine Automation.
Einfach eine leere erstellen, nach YAML wechseln, den Code von oben einfügen und deine Sensoren anpassen.

1 „Gefällt mir“

Genial, vielen vielen Dank! :slight_smile:

Beim Tageswechsel, als über Mitternacht, wenn z. B. test1 23:51 Uhr ist und die nächste Auslösung nach 20 Minuten, also 0:11 Uhr, dann hängt er sich irgendwie auf und zeigt ab dann keine neuen Werte mehr an. Wie lässt sich das umgehen?

Wahrscheinlich muss man doch einen Helfer mit Datum und Uhrzeit verwenden um das zu umgehen.
Habe aber gerade keine Zeit, das Template entsprechend umzubauen und zu testen. Vielleicht heute Abend.

Nachtrag:
Ok, doch die Zeit gefunden:

alias: Test Zeit
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.shelly_plus_1pm_switch_0_power
    above: 100
condition: []
action:
  - service: input_datetime.set_datetime
    target:
      entity_id: input_datetime.test2
    data:
      timestamp: "{{ as_timestamp(now()) - as_timestamp(states('input_datetime.test1')) }}"
  - service: input_datetime.set_datetime
    target:
      entity_id: input_datetime.test1
    data:
      datetime: "{{ now() }}"
mode: single

Die beiden Helfer müssen entsprechend auf “Datum und Uhrzeit” umgestellt werden.

1 „Gefällt mir“

Hab ich gemacht,
test1 zeigt korrekt die Zeit der vorangegangenen Auslösung. Aber bei test2 (Differenz zur aktuellen Auslösung) wird “1.1.1970 1:22” angezeigt?

Das ist so halbwegs korrekt. Die Differenz ist 1h 22min. 1.1.1970 ist das “Nulldatum” beim Computer. Hier ist aber eine Stunde zu viel drin, da ich die Umrechnung auf utc vergessen habe und er immer wieder die 1 Stunde Zeitverschiebung addiert hat.

Ändere das data vom test 2 zu

data:
  datetime: >-
    {{ (as_timestamp(now()) - as_timestamp(states('input_datetime.test1'))) |
    timestamp_utc }}

So wie die Helfer jetzt konfiguriert sind, funktioniert es auch, wenn die Differenz mehr als einen Tag beträgt.
Wenn du nur die Stunden und Minuten sehen willst, kannst du den Helfer test2 auch wieder auf “Uhrzeit” ändern.

Ich teste das auch gerade selbst zum ersten mal und habe daher noch nicht die Erfahrung um das direkt fehlerfrei zu schaffen.

1 „Gefällt mir“

Super, es funktioniert! Tausend dank! :smiley: