Connaitre durée entre le premier état et le dernier état d'une entité dans une journée

Bonjour,

J’ai une personne qui vient chez moi en passant exclusivement par la porte de service.
Elle peut être amenée à passer plusieurs fois par la porte dans l’intervalle de temps mais au dernier contact fermé elle est forcement partis.
J’aimerais savoir comment calculer le temps entre la toute première ouverture de la journée et la derniere fermeture. Je sèche un peu car je sais faire un intervalle entre premier et dernier état mais faire la distinction entre premier et dernier état de la JOURNEE je ne sais pas comment écrire ça ! Merci.
image

Comment tu fais un intervalle entre premier et dernier état ?
je pourrai peut-être t’aider si je connais ta méthode

Ce que tu cherche a faire est le même principe que la détection de fin de cycle d’un Lave-Vaisselle, …

Il te faudra, notamment, des utility_meters et 3 automatisation : de début, de fin, de fin : notification.
Tu peut jeter un oeil là :

Vu que tu ne sait pas quelle contact sera la dernière fermeture de la porte, tu dois en premier définir au choix:

  • soit à quelle heure tu veux vérifier quel est la dernière fermeture de porte. (ex : à 19h, l’automatisation regarde quelle a été la dernière fermeture de porte)
  • soit un délai sans ouverture de porte au bout duquel on considère que c’était le dernier
  • soit a chaque fermeture on actualise le temps entre première ouverture et dernière fermeture. Comme ça le temps sera bon en fin de journée.

J’ai pris la dernière option, voici ce que ça donne :

1- Tu défini 3 capteurs virtuel (Entrées)

  • 2 Date et heures pour le début et fin
  • 1 Heure pour l’intervalle

2- L’automatisation :

  • Démarrage tout les jours à 6h.
    • Attente jusqu’à la première ouverture
      • implémentation de l’heure actuelle dans le capteur virtuel de début
  • Démarrage à chaque fermeture.
    • implémentation de l’heure actuelle dans le capteur virtuel de fin
    • calcul et implémentation dans le capteur virtuel d’intervalle
ça peut donner ça en YAML
alias: Nouvelle automatisation
description: ""
trigger:
  - platform: time
    at: "06:00:00"
    id: debut
  - type: not_opened
    platform: device
    device_id: d0a85965d2a5901149bbac1346d4842a
    entity_id: d3434f5f1aca1ac201a7f8b94d5e806d
    domain: binary_sensor
    id: fermeture
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - debut
        sequence:
          - wait_for_trigger:
              - type: opened
                platform: device
                device_id: d0a85965d2a5901149bbac1346d4842a
                entity_id: d3434f5f1aca1ac201a7f8b94d5e806d
                domain: binary_sensor
            timeout:
              hours: 10
              minutes: 0
              seconds: 0
              milliseconds: 0
          - if:
              - type: is_open
                condition: device
                device_id: d0a85965d2a5901149bbac1346d4842a
                entity_id: d3434f5f1aca1ac201a7f8b94d5e806d
                domain: binary_sensor
            then:
              - action: input_datetime.set_datetime
                target:
                  entity_id: input_datetime.test01
                data:
                  datetime: "{{ now() }}"
      - conditions:
          - condition: trigger
            id:
              - fermeture
        sequence:
          - action: input_datetime.set_datetime
            target:
              entity_id: input_datetime.test02
            data:
              datetime: "{{ now() }}"
          - action: input_datetime.set_datetime
            metadata: {}
            data:
              time: >-
                {{ states('input_datetime.test02') | as_datetime -
                states('input_datetime.test01') | as_datetime }}
            target:
              entity_id: input_datetime.test03
mode: single

1 « J'aime »