Afficher le résultat d'un calcul dans une notification

Mon problème

J’essaie de faire affiche le résultat d’un calcul effectué dans un message de notification avec cette automatisation. Les éléments calculé sont fournis par le déclencheur.

J’ai testé différentes syntaxe et après autant d’échecs je me demande si c’est possible. Est-ce que je devrait pas calculer ma valeur à part, la stocker dans une variable et afficher la variable dans la notification ? Si oui je ne sais pas comment m’y prendre

alias: Flipr, test calcul
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.spa_flipr_red_ox
    to: null
condition:
  - condition: template
    value_template: |
      {{ trigger.from_state.state < trigger.to_state.state }}
action:
  - service: notify.mobile_app_huawei
    data:
      message: >-
        Désinfection en cours. Calcul simple, {{ (trigger.to_state.state) -
        (trigger.from_state.state) }}
mode: single

Salut,
faudrait déjà voir quelles sont les valeurs des états fournis par cette intégration.
C’est peut-être une histoire de type de données.

Très bonne remarque. Ce sont bien des données numérique. Elles sont bien prise en compte par la condition qui me sert de filtre

Je me rend compte que j’ai oublié de partager le msg d’erreur et le log

L’erreur :
Error rendering data template: TypeError: unsupported operand type(s) for -: ‹ str › and ‹ str ›

Et le log

this:
  entity_id: automation.flipr_test_calcul
  state: 'on'
  attributes:
    id: '1693663585346'
    last_triggered: '2023-09-02T14:28:49.750510+00:00'
    mode: single
    current: 0
    friendly_name: Flipr, test calcul
  last_changed: '2023-09-02T14:07:48.398676+00:00'
  last_updated: '2023-09-02T14:28:49.759443+00:00'
  context:
    id: 01H9B4QSYPVVJEAN6MR29TV303
    parent_id: 01H9B4QSYMDCZH6C5QEXEP16W7
    user_id: null
trigger:
  id: '0'
  idx: '0'
  alias: null
  platform: state
  entity_id: sensor.spa_flipr_red_ox
  from_state:
    entity_id: sensor.spa_flipr_red_ox
    state: '714.0'
    attributes:
      state_class: measurement
      unit_of_measurement: mV
      attribution: Flipr Data
      icon: mdi:water-opacity
      friendly_name: Désinfection Red OX
    last_changed: '2023-09-02T14:28:49.748684+00:00'
    last_updated: '2023-09-02T14:28:49.748684+00:00'
    context:
      id: 01H9B4QSYMDCZH6C5QEXEP16W7
      parent_id: null
      user_id: null
  to_state:
    entity_id: sensor.spa_flipr_red_ox
    state: '718.0'
    attributes:
      state_class: measurement
      unit_of_measurement: mV
      attribution: Flipr Data
      icon: mdi:water-opacity
      friendly_name: Désinfection Red OX
    last_changed: '2023-09-02T15:28:52.738121+00:00'
    last_updated: '2023-09-02T15:28:52.738121+00:00'
    context:
      id: 01H9B85RG2PBG9DT5QKPJJ77YT
      parent_id: null
      user_id: null
  for: null
  attribute: null
  description: state of sensor.spa_flipr_red_ox

AH ben c’est tout de même un souci de type de données, « str » ça veut dire « string », donc chaine de caractères. Tu ne peux pas soustraire 2 chaines de caractères entre elles.
Comme ce sont des nombres à virgule on dirait tu peux essayer quelque chose comme ça:

{{ (trigger.to_state.state) | float - (trigger.from_state.state) | float }}

Le | float tente de convertir la valeur en nombre à virgule.

2 « J'aime »

Argh j’avais interprété str par store (enregistrement)… en effet ça ne pouvais pas fonctionner

Je modifie mon test et il n’y a plus qu’a attendre quelques heures que l’appareil renvoi une nouvelle valeur.
Je suis confiant… et impatient de voir le résultat :slight_smile:

Je valide, au réveil j’ai constaté que j’ai été spamé toute la nuit par des notifications avec des calculs réussi

Merci je continue à avancer, le reste c’est de l’algèbre

1 « J'aime »