Differenz von einem Zeitstempel zur aktuellen Zeit

Keine passende Kategorie? Bzw. Allgemeine Diskussionen rund um Home Assistant.


Antworten
pschyrembel258
Beiträge: 12
Registriert: Do 23. Sep 2021, 19:53
2
Wohnort: Isen
Has thanked: 5 times

Differenz von einem Zeitstempel zur aktuellen Zeit

Beitrag von pschyrembel258 »

Hallo,

ich versuche einen Enocean Tracker als Devicetracker für meinen Sohn zu verwenden (hat noch kein Mobiltelefon) Ich hatte den Piotek Tracker in homee erfolgreich im Einsatz zur Anwesenheitserkennung meiner Tochter (die hat mittlerweile ein Mobiltelefon). Mein Sohn hat momentan einen G-Tag (Bluetooth), leider bekomme ich da sehr viele An- und Abwesenheitwechsel (obwohl er anwesend ist). Mit Bluetooth habe ich ständig Probleme.
Ich konnte jetzt den Tracker mithilfe von enocean2mqtt einbinden. Ich erhalte da einen sensor mit einem Zeitstempel last seen. Dieser wird alle 30 Sekunden getriggert. Sobald der Tracker nicht mehr da ist zeigt mir der Zeitstempel zwar den korrekten Wert an, aber ich kann in nicht in Automatisierungen nutzen.
Siehe Anhang.
Ich habe jetzt einen Templatesensor gebastelt, der den Zeitstempel vom last_seen Sensor mit der aktuellen Zeit berechnet und mir die Sekunden ausgibt.

Code: Alles auswählen

template:
  - sensor:
      - name: "tracker_test"
        unit_of_measurement: "Days"
        state: > 
            {{ (as_timestamp(now()) - as_timestamp(states('sensor.e2m_tracker_last_seen'))  | default(0)) | timestamp_custom('%S', true) | int }}

leider bleibt dieser dann immer auf dem letzten Intervall der 30 Sekunden hängen und ich kann ihn nicht in den Automatisierungen als Bedingung verwenden, in der Form dass jede Minute überprüft wird, ob der Tracker länger als 2 Minuten nicht mehr getiggert wurde, dann setzte meinen Sohn auf abwesend. (die unit of measurement Days ist nicht korrekt ich brauche den wert in Sekunden.)
Im Forum von Homeassistant war da die Rede von einem Timedelta, leider habe ich gar keine Ahnung wie das funktioniert.
Hat sowas vielleicht schon jemand probiert und kann mir dabei helfen einen Sensor zu basteln?

Vielen Dank.

Dateianhänge
Bildschirm­foto 2023-03-23 um 07.32.15.png
Bildschirm­foto 2023-03-23 um 07.32.15.png (25.16 KiB) 141 mal betrachtet
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Differenz von einem Zeitstempel zur aktuellen Zeit

Beitrag von Osorkon »

Kannst Su mal zeigen welchen Wert der Sensor liefert?
Entwicklungswerkzeuge -> Zustände.

Dann kann ich mir das heute Abend anschauen.
Mir würde da auf die Schnelle ein trigger based template sensor einfallen.
Wenn letzter Status länger als 2 min her dann Abwesend,
sonst anwesend.

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
pschyrembel258
Beiträge: 12
Registriert: Do 23. Sep 2021, 19:53
2
Wohnort: Isen
Has thanked: 5 times

Re: Differenz von einem Zeitstempel zur aktuellen Zeit

Beitrag von pschyrembel258 »

Der orginal Sensor ist der e2m_tracker_last_seen und liefert einen Zeitstempel (Bild 2). Mein Template sensor liefert die Sekunden wann getigert wurde und aktualisiert sich nur alle 30 Sekunden (Bild 1).

Bildschirm­foto 2023-03-23 um 10.38.41.png
Bildschirm­foto 2023-03-23 um 10.38.41.png (74.6 KiB) 136 mal betrachtet
Bildschirm­foto 2023-03-23 um 10.38.25.png
Bildschirm­foto 2023-03-23 um 10.38.25.png (171.97 KiB) 136 mal betrachtet
Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Differenz von einem Zeitstempel zur aktuellen Zeit

Beitrag von Osorkon »

Das Problem mit Deinem Template ist, dass es nur die Sekunden anzeigt, die Minuten werden abgeschnitten. Also kann dieser Sensor nur werte zwischen 0 und 59 annehmen.
60s ist ja bereits eine Minute.

Das richtige Template zur Ermittlung der Differenz in Sekunden wäre:

Code: Alles auswählen

{{ as_timestamp(now()) | int - as_timestamp(states('sensor.e2m_tracker_last_seen')) | int(0) }}

Ich würde mir ein Template binary Sensor erstellen:

Code: Alles auswählen

- binary_sensor:
  - name: Mein Tracker
    state: |
      {{ (as_timestamp(now()) | int - as_timestamp(states('sensor.e2m_tracker_last_seen')) | int(0)) < 120}}
    device_class: presence
    unique_id: a07f2560-92b0-11ed-a103-a3cf204e46e1

Der Status ist "on" Zu Hause, wenn das Letze Lebenszeichen nicht älter als 120s her ist.
Sonst ist der Status "off" Abwesend.

Den Sensor kannst Du jetzt nach belieben in Automatisierungen verarbeiten.
Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
pschyrembel258
Beiträge: 12
Registriert: Do 23. Sep 2021, 19:53
2
Wohnort: Isen
Has thanked: 5 times

Re: Differenz von einem Zeitstempel zur aktuellen Zeit

Beitrag von pschyrembel258 »

Das werde ich gleich mal ausprobieren.
Vielen Dank für deine Hilfe.

Benutzeravatar
Osorkon
Administrator
Beiträge: 1905
Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 60 times
Been thanked: 516 times
Kontaktdaten:

Re: Differenz von einem Zeitstempel zur aktuellen Zeit

Beitrag von Osorkon »

Falls, der Sensor so nicht funktioniert.
Weiss nämlich nicht, wann und wie oft dieser aktualisiert wird.
Habe nichts vergleichbares, an dem ich es testeten könnte.

Einen Möglichkeit die definitiv funktioniert, wäre ein Trigger basierte Binary Sensor.
Dieser wird z.B. jede Minute aktualisiert.

Code: Alles auswählen

- trigger:
    - platform: time_pattern
      minutes: "/1"
  binary_sensor:
    - name: Mein Tracker
      state: |
        {{ (as_timestamp(now()) | int - as_timestamp(states('sensor.e2m_tracker_last_seen')) | int(0)) < 120}}
      device_class: presence
      unique_id: a07f2560-92b0-11ed-a103-a3cf204e46e2

Gruß
Osorkon

Einer muss ja für Ordnung sorgen. :D
pschyrembel258
Beiträge: 12
Registriert: Do 23. Sep 2021, 19:53
2
Wohnort: Isen
Has thanked: 5 times

Re: Differenz von einem Zeitstempel zur aktuellen Zeit

Beitrag von pschyrembel258 »

Läuft jetzt perfekt, danke für deine Hilfe.

Antworten