Forum Francophone Home Assistant

Action si incrémentation

Bonsoir,
Je posais la question pour rester le plus KISS possible, si jamais un sensor ou service nous rendait la tâche plus facile :wink:

Je pensais à une autre variable, mais bonne idée pourquoi pas en detournant les input_number !

Dans configuration.yaml, mets ceci :

input_number:
  freebox_missed_calls:
    name: Freebox_Missed_Calls
    mode: box
    initial: {{ states('sensor.freebox_missed_calls') | int }}
    min: 0
    max: 100

Recharge tes input numbers

Dans « Developer tools », vérifie si la valeur du « input number » correspond à celle de sensor.freebox_missed_calls.
Je ne sais pas si le initial prend les template

{{ states('input_number.freebox_missed_calls') | int }}

Il n’a pas aimé :

Error loading /config/configuration.yaml: invalid key: « OrderedDict([(« states(‹ sensor.freebox_missed_calls ›) | int », None)]) »
in « /config/configuration.yaml », line 64, column 0

Bonjour et bon dimanche :wink:

Ah ben il n’aime pas les template en « initial » alors comme ceci, on ne devrait pas être loin de la vérité :wink:

input_number:
  freebox_missed_calls:
    name: Freebox_Missed_Calls
    mode: box
    initial: 0
    min: 0
    max: 100

Automations

- id: initialisation_input_number.freebox_missed_calls
  alias: "Initialisation Input Number Freebox Missed Calls"
  trigger:
    platform: template
    value_template: "{{ (states('input_number.freebox_missed_calls') | int) < (states('sensor.freebox_missed_calls') | int) }}"
  action:
  - service: input_number.set_value
    data:
        entity_id: input_number.freebox_missed_calls
        value: "{{ states('sensor.freebox_missed_calls') | int }}"

- id: notification_freebox_missed_calls
  alias: "Notification Freebox Missed Calls"
  trigger:
    platform: template
    value_template: "{{ (states('sensor.freebox_missed_calls') | int) > (states('input_number.freebox_missed_calls') | int) }}"
  action:
  - service: notify.notify
    data:
      message: "Freebox Appels Manqués ({{ now().strftime('%d.%m.%Y - %H:%M') }})"
  - service: input_number.set_value
    data:
        entity_id: input_number.freebox_missed_calls
        value: "{{ states('sensor.freebox_missed_calls') | int }}"

bonsoir,

:+1: :+1: :+1:

alors la tu es au top !
là, tu m’a perdu, j’avoue que la j’ai fait un copier coller, je vais mettre pas mal de temps a analyser tout cela pour comprendre comment cela fonctionne … avec en plus l’heure du dernier message dans l’alerte

mais CA MARCHE !

un grand merci a toi !

1 J'aime

Ca fonctionne alors ? Parfait :wink:

Je vais t’expliquer, ca va le faire !

Le « Input_number » :

freebox_missed_calls: # NOM à appeler dans les scenes, automations ou autres : imput_number.freebox_missed_calls
    name: Freebox_Missed_Calls # Nom qui apparait dans l'interface je suppose
    mode: box # il existe 2 modes : BOX (tu dois avoir une case avec le chiffre dedans ou "SLIDER" 
    initial: 0 # NOMBRE de base dans le INPUT NUMBER, optionnel
    min: 0 # NOMBRE MINI à indiquer (debut de la fourchette), OBLIGATOIRE
    max: 100 #NOMBRE MAX, (fin de la fourchette, OBLIGATOIRE

J’ai spécifié le « Initial » à 0 pour la 1ere automatisation ci-dessous, tu vas comprendre

- id: initialisation_input_number.freebox_missed_calls # mettre un id permet de modifier l'automatisation depuis l'interface HA
  alias: "Initialisation Input Number Freebox Missed Calls" # Petit nom ;-)
  trigger: # Déclencheur de l'automatisation 
    platform: template # permet d'utiliser les template soit le rendre dynamique
    value_template: "{{ (states('input_number.freebox_missed_calls') | int) < (states('sensor.freebox_missed_calls') | int) }}" # SI la VALEUR de l'input_number est < à la valeur du sensor (le input ne peut pas etre inferieur au sensor, puisque le sensor est la valeur de comparaison de base) ALORS :
  action: # ACTION easy
  - service: input_number.set_value # NOM du SERVICE permettant de modifier la valeur de l'input number
    data:
        entity_id: input_number.freebox_missed_calls # NOM d el'input à modifier
        value: "{{ states('sensor.freebox_missed_calls') | int }}" # VALEUR que doit prendre l'input, soit la valeur du sensor

2eme automatisation : SI lavaleur du sensor est > à la valeur du input_number c’est qu’il y a un appel manqué ALORS on notifie et la valeur du sensor remplace celle du input_number

- id: notification_freebox_missed_calls
  alias: "Notification Freebox Missed Calls"
  trigger:
    platform: template
    value_template: "{{ (states('sensor.freebox_missed_calls') | int) > (states('input_number.freebox_missed_calls') | int) }}" # CMPARAISON de la valeur du SENSOR avec la valeur du INPUT_NUMBER, si sensor > au input alors existence d'un appel manqué
  action:
  - service: notify.notify # Service de NOTIFICATION
    data:
      message: "Freebox Appels Manqués ({{ now().strftime('%d.%m.%Y - %H:%M') }})" # MESSAGE de la notif now() renvoie la date et l'heure; strftime() permet de la formater comme on le souhaite.
#%d : jour du mois,  %m: mois en chiffres, %Y : année sur 4 chiffres
  - service: input_number.set_value #SERVICE permettant de modifier la valeur d'un input_number
    data:
        entity_id: input_number.freebox_missed_calls # input_number concerné par la modification
        value: "{{ states('sensor.freebox_missed_calls') | int }}" # VALEUR que doit prendre le input_number, soit la nouvelle valeur du SENSOR

En espérant que l’ajout des commentaires t’aide un peu plus, sinon, pas d’hésitation, pose tes questions, je n’ai peut-etre pas été assez clair.

HAVE FUN

1 J'aime

parfait,

merci pour ces explications,
ça me parait assez clair

a l’occasion je tenterai d’autres templates …

merci encore !

1 J'aime