Calcul intervalle de temps en jour pour notification

@Clemalex
Pour l’automatisation qui alerte :

automation:
- alias: automatisation_sauvegarde_calibration_ph
  initial_state: 'on'
  trigger:
    platform: state
    entity_id: input_boolean.sauvegarde_calib_ph
    from: 'off'
    to: 'on'
  action:
  - service: input_text.set_value
    data_template:
      entity_id: input_text.date_dernier_calibrage_ph
      value: "{{states.input_boolean.calib_ph.last_changed}}"
  - service: input_boolean.turn_off
    entity_id: input_boolean.calib_ph
  - service: input_boolean.turn_off
    entity_id: input_boolean.sauvegarde_calib_ph

- alias: notif_Calib_ph
  initial_state: 'on'
  trigger:
    platform: time_pattern
    days : "/1"
    hours: "20"
  condition:
    condition: and
    conditions:
      - condition: template
        value_template: "{{states('sensor.jours_depuis_calibrage_ph') | int > states('input_number.interval_jour_calib')| int}}"
      - condition: state
        entity_id: person.raph 
        state: home
  action:
    service: notify.iosdevice
    data_template:
      title: "Calibration à faire !"
      message: "Il faut calibrer le pH metre. La derniere calibration remonte à {{states('sensor.jours_depuis_calibrage_ph') | int }}  jours."
      data:
        push:
          thread-id: "alerte_calibration-group"  

Voici les deux automatisations. Je vais tout rajouter au projet PH mètre dès que j’aurais fini les tests.

  • La première sert à enregistrer la valeur dans l’input_text et me remets les inputs_boolean en off.
    Le premier boolean me sert à afficher une « conditional card » qui laisse apparaitre le menu de calibration.
    Le second permet le déclenchement de l’automatisation qui enregistre en texte, referme le menu et revient lui même à sa position initiale. (il me reste encore a sauvegarder les valeurs de calibration pour les différentes solution tampon, mais c’est le même topo / date du calibrage)

  • La seconde encore en test concerne l’alerte en notification iOs sur tout mes devices:
    Tout les jours la condition est testée à 20h (c’est ce trigger qui est en test).
    Si les conditions sont réunies à savoir :

    - ma présence

    - un intervalle de calibration (sensor se basant sur l’input_text sauvegardé) plus grand que celui définie par un input_number

    Une notification iOS est envoyée.

Voilà.
Comme dit, je prévois d’intégrer le tout dans le projet PH mètre.

Le code en intégral pour cette partie sous forme d’un package.yaml qu’il me faudra fuisonner avec celui du pH mètre :

#a rajouter phmetre.yaml
########################
input_boolean:
  sauvegarde_calib_ph:
    name: "Save Calib pH"
########################
input_number:   
  interval_jour_calib:
    name: Intervale entre 2 calibrations
    min: 1
    max: 100
    step: 1
    unit_of_measurement: jours
    mode: box
########################
input_text:
  date_dernier_calibrage_ph:  #Contient la date du dernier changement d'état du capteur surveillé
    name: date_dernier_calibrage_ph
#########################   
sensor:
  - platform: template
    sensors:
      jours_depuis_calibrage_ph: #nombre de jours / input_text sauvegardé
        friendly_name: "Jours passés calibration"
        unit_of_measurement: "Jour(s)"
        icon_template: mdi:timer-sand
        value_template: >- 
          {{((as_timestamp(now()) - as_timestamp(states('input_text.date_dernier_calibrage_ph')))/86400) | int}}
########################
automation:
- alias: automatisation_sauvegarde_calibration_ph
  initial_state: 'on'
  trigger: #sauvegarde input_text, réinitialisation input_boolean, fermeture du menu
    platform: state
    entity_id: input_boolean.sauvegarde_calib_ph
    from: 'off'
    to: 'on'
  action:
  - service: input_text.set_value
    data_template:
      entity_id: input_text.date_dernier_calibrage_ph
      value: "{{states.input_boolean.calib_ph.last_changed}}"
  - service: input_boolean.turn_off
    entity_id: input_boolean.calib_ph
  - service: input_boolean.turn_off
    entity_id: input_boolean.sauvegarde_calib_ph

- alias: notif_Calib_ph
  initial_state: 'on'
  trigger: #notification ts les x jours si présent et valeur dépassée
    platform: time_pattern
#    days : "/1"
    hours: "/1"
  condition:
    condition: and
    conditions:
      - condition: template
        value_template: "{{states('sensor.jours_depuis_calibrage_ph') | int > states('input_number.interval_jour_calib')| int}}"
      - condition: state
        entity_id: person.raph 
        state: home
  action:
    service: notify.iosdevice
    data_template:
      title: "Calibration à faire !"
      message: "Il faut calibrer le pH metre. La derniere calibration remonte à {{states('sensor.jours_depuis_calibrage_ph') | int }}  jours."
      data:
        push:
          thread-id: "alerte_calibration-group"