Sensor wieviel Zeit aktuell vergangen ist

Mal eine Frage ich suche ein Sensor der die Zeit nach vorne Zähl also wieviel Zeit bis jetzt vergangen ist.

aktuell wird die Zeit rückwärts abgezählt einer eine Idee ? :slightly_smiling_face:

Ein “bißchen” her, aber das suche ich auch

Moin,

@gekow, @basti89ify

Hilft das evtl. weiter?

Ein Beispiel würde schon helfen zu verstehen, was ihr vorhabt :wink:

VG
Bernd

Was ist der Ausgangspunkt? Ein Timer Start, ein Datums/Zeit Helfer oder einfach nur ein Textfeld? Oder das Öffnen eines Fensters?

In meinem Fall tatsächlich das Fenster. Ich hätte gerne einen Alarm mit verschiedenen Eskalationsstufen, je nach vergangener Zeit.
Ich les das da oben mal, danke.

Das hier wäre z.B. eine Template Sensor, der dir anzeigt wie lange das Fenster schon geöffnet ist. Anzeige wäre hier in dem Fall in Minuten.

      - name: "Fenster Badezimmer offen Zeit"
        unique_id: "fenster_badezimmer_offen_zeit"
        unit_of_measurement: "min"
        state: >
          {% if is_state('binary_sensor.fenster_sensor_badezimmer_contact', 'on') %}
            {% set last_change = as_timestamp(states.binary_sensor.fenster_sensor_badezimmer_contact.last_changed) %}
            {% set now = as_timestamp(now()) %}
            {{ ((now - last_change) / 60) | round(0) }}
          {% else %}
            0
          {% endif %}

Dieser hier gibt dir die Zeit in Stunden Minuten und Sekunden an

      - name: "Fenster Offen Dauer"
        unique_id: "fensteroffendauerbz"
        state: >
          {% if is_state('binary_sensor.fenster_sensor_badezimmer_contact', 'on') %}
            {% set last_changed = states.binary_sensor.fenster_sensor_badezimmer_contact.last_changed %}
            {% if last_changed %}
              {% set time_diff = (now() - last_changed).total_seconds() %}
              {% set hours = (time_diff // 3600) | int %}
              {% set minutes = ((time_diff % 3600) // 60) | int %}
              {% set seconds = (time_diff % 60) | int %}
              {{ '%02d:%02d:%02d' | format(hours, minutes, seconds) }}
            {% else %}
              00:00:00
            {% endif %}
          {% else %}
            00:00:00
          {% endif %}
2 „Gefällt mir“

Hallo,
eine Automation könnte so aussehen.

description: ""
mode: single
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.tfk_bad_state
    from: "off"
    to: "on"
    for:
      hours: 0
      minutes: 10
      seconds: 0
    id: 10min
  - trigger: state
    entity_id:
      - binary_sensor.tfk_bad_state
    from: "off"
    to: "on"
    for:
      hours: 0
      minutes: 20
      seconds: 0
    id: 20min
  - trigger: state
    entity_id:
      - binary_sensor.tfk_bad_state
    from: "off"
    to: "on"
    for:
      hours: 0
      minutes: 25
      seconds: 0
    id: 25min
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - 10min
        sequence:
          - action: notify.notify
            metadata: {}
            data:
              message: "Fenster schließen "
      - conditions:
          - condition: trigger
            id:
              - 20min
        sequence:
          - action: notify.notify
            metadata: {}
            data:
              message: "Fenster schließen "
      - conditions:
          - condition: trigger
            id:
              - 25min
        sequence:
          - action: notify.notify
            metadata: {}
            data:
              message: "Fenster schließen "

2 „Gefällt mir“

Na da muß ich dann auch noch einen nachlegen :innocent:

grafik

Beruht auf eine zentrale Makrolösung. Templatecode im Makro selbst ist ähnlich wie obig vorgestellter Code.
Die Idee: Du gibst dem zentralem Makro die EntityId des Fensters (oder von welchem Sensor auch immer) und er gibt gleich formatiert die Zeitdifference zum last_changed zurück.
Vorteil gegenüber einem einzelnem Template Sensor. Du hast nur einen Code auf denen sich andere beziehen und bei Änderungen (z.B. Du willst später die exakte Zeit) brauchst Du nur den einen Code ändern und alle Anzeigen ändern sich automatisch.
Den Code und das HowTo findest Du hier
Geöffnete Fenster inkl. Öffnungszeiten / Makros und deren zentrale Wiederverwendbarkeit machen Templating effizienter

2 „Gefällt mir“