Aditionner des entrées numériques

Bonjour,

Je viens du ‹ monde Jeedom › et je teste HA, j’arrive à faire dialoguer les 2 systèmes via MQTT, également à utiliser l’intégration Sonos qui est légèrement mieux que le plugin Sonos de Jeedom, par contre je suis incapable d’additionner deux entrées numériques : input_number.x1 et input_number.x2 et mettre le résultat dans une troisième : input_number.x3 !!

Quelqu’un peut il débloquer la situation ?

Merci de votre aide

Salut,

As-tu vu la notion de template ?

Par contre, à lire les infos, on dirait que tu souhaite exploiter des variables un peu comme jeedom.
C’est préférable de ne pas reproduire à l’identique les choses, les concepts HA et jeedom ne sont pas tout à fait identiques.
Qu’as-tu en tête ?

Oui j’ai commencé à regarder les template, j’ai bien compris que ça devrait être de ce côté, mais ce n’est toujours pas clair.

Même si ce n’est pas comparable à Jeedom, J’imagine qu’il y a bien moyen d’additionner 2 grandeurs ou concaténer deux chaines de caractères ? Ou je me trompe ?

Les templates (syntaxe jinja2) permettent de faire à peu près tout que qui est imaginable c’est une language à part entière
Mon propos est plus de dire : c’est pas forcement des input_number qu’il faut exploiter, ni forcément des templates. Et ça forcement ça dépends de ce que tu imagines faire.

Supposons que j’ai ma consommation électrique de ma journée en kwh et le prix du kwh et que je veuille publier le résultat via un message MQTT, je m’oriente comment ?

Un input_number c’est en théorie un bête curseur que tu déplaces manuellement.
Donc autant pour le prix du kwh, ça peut s’entendre (ça ne change pas si souvent) autant pour la valeur de ta conso electrique ça me semble pas une bonne idée.
La conso c’est un truc issue automatiquement et souvent plus un type sensor
Par ailleurs les entités (peu importe le type) servent généralement à stocker l’info ou l’état.
Donc pour l’envoie en MQTT, tu n’as pas forcement besoin de conserver le résultat de la multiplication, peut-être que l’envoie direct est suffisant.
Envoi qui typiquement ce ferait avec une automatisation. Reste à determiner quel déclenchement utiliser

Pour la consommation, et pour faire un test je vais utiliser la température donnée par un capteur :
sensor.capteur_aqara_temperature

Pour le prix j’ai une entrée numérique : input_number.prixkwh

Je souhaite donc publier le résultat dans un message MQTT, ma question si elle a un sens est que dois je mettre dans le Payload du message MQTT, naturellement j’ai essayé :

Bases-toi sur la syntaxe jinja (les {{ et }} notamment) et utilises les outils de dev/modèles pour avoir la bonne formule :wink:

Ce que je ne comprend pas dans ton exemple c’est pourquoi le publier en mqtt ?

C’est pour un test pour comprendre ou tu souhaites le récupérer ailleurs ?

Parce que si c’est pour l’afficher ensuite dans ha tu n’a pas besoin de cette étape

j’imagine que la réponse est là

Oui c’est pour un test, pour comprendre comment on manipule les données dans HA.

Donc si je comprends bien, le prérequis à l’utilisation de HA est de connaitre jinja ?

Prérequis, non. Mais c’est un usage courant dans HA. Pareil avec le yaml

Mais pour faire ce que j’ai décrit je dois connaitre jinja ?

Pour tout ce qui est calcul oui c’est préférable mais il n’y a rien de compliqué. Il y a 2 ans quand j’ai débuté je n’avais jamais entendu parler de jinja

Je suis dans ce cas là !

Regarde le premier exemple de la doc : ça fait une moyenne (en dessous de state: >)

Ok, je commence à comprendre un peu plus !

Et ds mon cas j’ai donc une donnée qui vient d’un sensor, et une autre qui est une entrée, le template sera de quel type : sensor ou ?

Typiquement quand le résultat est

  • un numérique ou une chaine => sensor
  • un boolean => binary_sensor

ok, mais dans un premier temps et sans un vrai exemple complet ce n’est pas évident je trouve.

Pour comprendre % set bedroom = states : j’imagine que c’est pour typé mais est ce obligatoire à chaque fois, idem pour round(1, default=0)

{{ ((bedroom + kitchen) / 2) | round(1, default=0) }} n’y aurait il pas un ( en trop ?