Forum Francophone Home Assistant

Template dans un script

Bonsoir à tous
J’ai une question basique (désolé) mais malgré la lecture de la doc et l’utilisation de l’outil de dev, je comprends pas d’où vient mon erreur…

J’ai des seuils statiques (=codé en dur) dans mes scripts et je souhaite pouvoir les changer via la UI en utilisant des inputs.

Exemple, j’ai le script suivant

repeat:
  while:
    - condition: numeric_state
      entity_id: sensor.swap_use_percent
      above: 70
  sequence:

etc etc…

J’aimerais remplacer le « 70 » par une entité que j’ai nommée input_number.seuil_surveillance_mem_swap

Donc logiquement, j’ai essayé

above: {{states ('input_number.seuil_surveillance_mem_swap')}}
et aussi
above: '{{states (''input_number.seuil_surveillance_mem_swap'')}}'

et bien d’aures combinaisons…

Mais rien n’y fait, j’ai toujours l’erreur suivante en suvegardant le script
« Message malformed: expected float for dictionary value @ data[‹ sequence ›][0][‹ repeat ›][‹ while ›][0][‹ above ›] »

J’avoue, venant de Jeedom, j’ai fait un gros blocage sur YAML…

Merci pour votre aide.

Je me réponds à moi même, vu que ça a (enfin) fait tilt :crazy_face:

repeat:
  while:
    - condition: numeric_state
      entity_id: sensor.swap_use_percent
      above: input_number.seuil_surveillance_mem_swap
1 J'aime

bonjour
heureux que tu t’en soit sortie
si tu avais utilisé un Template voilà a quoi cela aurais ressemblé

{{states('sensor.swap_use_percent') | float >= 70}}

état du swap supérieur ou égal à 70% réponse true ou false
ou

{{states('sensor.swap_use_percent') | float >= states('input_number.seuil_surveillance_mem_swap') | float}}

état du swap supérieur ou égal à l’input number


mais j’aurais plus vue ca dans une automation que dans un script.
stefan

Merci, ta réponse m’a fait prendre conscience d’importants détails à côté desquels j’étais passé.
Pour le script vs automation, à la base je pensais tout mettre dans une seule automation

Le but = surveiller la mémoire swap du rpi quand elle dépasse un seuil (ici fixé à 70) pendant un certain temps (ici 10s pour mes tests) et pouvoir activer/désactiver la surveillance par un switch ( = input_boolean.surveillance_rpi_switch)

J’ai donc essayé ce qui suit

alias: surveillance_rpi
description: ''
trigger:
  - platform: numeric_state
    entity_id: sensor.swap_use_percent
    above: '70'                         // 70 que je vais pouvoir configurer via l'UI grace à ta réponse précédente
    for: '0:00:10'                       //10s juste pour tester
condition:
  - condition: state
    entity_id: input_boolean.surveillance_rpi_switch    // dc si le switch est off la suite ne s'execute pas
    state: 'on'
action:
  - service: notify.notify
    data:
      message: test
mode: single

mais rien ne se passe. Je ne reçoit jamais de notification alors que mon swap est à plus de 80.
Du coup j’ai fait un script que j’active ou désactive via une automation déclenché par le swicth. Puis dans le script une boucle while qui vérifie si mem swap > 70 et dans cette boucle while un délai de 10s et j’envoie la notif.
Pas très élégant, mais ça fonctionne bien.

Un screenshot pour une meilleure lisibilité
image

bonjour,
essaye ca, juste au cas ou. Si ton swat est déjà supérieur a 70 tu ne verras pas la bascule de < à 70 à >=70. et oubli pas de recharger tes automations ou redémarrer ton pi pour que l’automation soit pris en compte.

alias: surveillance rpi
description: ''
mode: single
trigger:
  - platform: template
    value_template: '{{states(''sensor.swap_use_percent'') | float >= 70}}'
condition:
  - condition: state
    entity_id: 'input_boolean.surveillance_rpi_switch '
    state: 'on'
action:
  - service: notify.notify
    data:
      message: test

pour mettre du texte en préformaté met un entrée avant et après , sélectionne ton texte et utilise la balise </>