Aide pour ajouter une formule à la place d'un chiffre YAML

Bonjour,

Mon problème

Bonjour,
Dans l’exemple ci dessous je voudrais remplacer le 19.5 par le calcul (« Climate set temperature » -1).
Quelqun peut-il m’aider.
Merci beaucoup

conditions:
  - condition: state
    entity_id: climate.temperatura_hab_1
    state: heat
  - condition: numeric_state
    entity_id: sensor.hab_1_consigne_1
    below: sensor.temp_hab_1
actions:
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: consigne_hab_principal
  - action: climate.set_temperature
    metadata: {}
    data:
      temperature: 19.5
    target:
      entity_id: climate.temperatura_hab_1
mode: single

System Information

version core-2024.11.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.4
os_name Linux
os_version 6.6.31-haos-raspi
arch aarch64
timezone Europe/Madrid
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.1
Stage running
Available Repositories 1459
Downloaded Repositories 2
AccuWeather
can_reach_server ok
remaining_requests 46
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 13.2
update_channel stable
supervisor_version supervisor-2024.11.4
agent_version 1.6.0
docker_version 27.2.0
disk_total 57.8 GB
disk_used 9.5 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization
board rpi5-64
supervisor_api ok
version_api ok
installed_addons File editor (5.8.0), Duck DNS (1.17.0), Dnsmasq (1.7.0), NGINX Home Assistant SSL proxy (3.11.1), Cloudflared (5.2.2), Terminal & SSH (9.15.0)
Dashboards
dashboards 3
resources 0
views 11
mode storage
Recorder
oldest_recorder_run 12 novembre 2024 à 23:07
current_recorder_run 22 novembre 2024 à 18:44
estimated_db_size 162.94 MiB
database_engine sqlite
database_version 3.45.3
## ___

Hello,

Tu peux tenter de mettre ça à la place :

"{{ state_attr('temperatura_hab_1', 'temperature') - 1 }}"

Et d’une manière générale, teste ce genre de formule dans les outils de développement, onglet modèle ( template)

1 « J'aime »

Merci beaucoup,
Bonne journée

1 « J'aime »

Bonjour,
Je n’arrive pas a la faire fonctionner
Message d’erreur dans l’outil modèles:
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int
Désolé pour le dérangement.
Bonne soirée

Est-ce que tu peux aller dans « outils de développemennt » → « états », rechercher ton entité (temperatura_hab_1 je suppose), cliquer dessus, et m’afficher le joli yaml en couleur STP ?

Le message en gros dit que il n’a pas compris

state_attr('temperatura_hab_1', 'temperature')

et que donc il ne comprend pas sur quoi faire « -1 » :slight_smile:

Ça devrait ressembler à quelque chose comme ça :

Edit : en refaisant l’historique de la conversation, essaie ça :

"{{ state_attr('climate.temperatura_hab_1', 'temperature') - 1 }}"


Voici

Erreur, ce n’est pas le bon

Ok, alors ça sera donc ça :

{{ states('sensor.temp_hab_1') - 1 }}

Voici le bon

le "{{ state_attr('climate.temperatura_hab_1', 'temperature') - 1 }}" donne le même message d’erreur

Salut
Il faut apprendre à lire les messages d’erreurs

Cela veut dire opérateur - (moins) non supporté entre un object de NoneType et un entier.
En gros tu essai de retrancher des carottes à des chouxfleurs.

Pour que ça fonctionne il faut convertir ton NoneType en nombre.
donc soit comme celà :

{{ state_attr('climate.temperatura_hab_1', 'temperature') |float(0) - 1 }}

Soit :

{{ state_attr('climate.temperatura_hab_1', 'temperature') |int(0) - 1 }}

selon si tu veux un entier ou un nombre décimal

Sauf que NoneType n’est pas et ne sera jamais un nombre, faut comprendre le pourquoi d’abord :slight_smile:

Alors on va y aller par paliers.

Dans « outils de développement » → « Modèles » → « Éditeur de modèles » essaie de mettre ça :

{{ state_attr('climate.temperatura_hab_1', 'temperature') }}

Chez moi ça donne ça :

L’idée, c’est de mettre en premier paramètre le nom de ton entité, et en second le nom de l’attribut que tu souhaites récupérer (d’ailleurs current_temperature me semble plus indiqué, temperature, c’est la température que tu lui demandes)

Tu as quoi quand tu tentes ça ? (pense à vérifier l’orthographe de ton entité, je peux m’être planté :wink: )

Merci
Je vais essayer.
Une précision. Je ne veux pas récupérer la valeur de l’attribut. C’est la consigne du thermostat que je souhaite modifier. dans le premier YAML au début de la conversation avec la valeur 19.5 ça marche. Je veux remplacer cette valeur par la valeur calculée (Consigne - 1)

Ok.

Donc pour déclencher une action qui baisse la température de ma clim de 1° j’ai donc fait ça :

action: climate.set_temperature
data:
  temperature: "{{ state_attr('climate.salon', 'temperature') - 1 }}"
target:
  entity_id: climate.salon

Que j’ai testé dans « Outils de développement » → « Actions » et qui fonctionne :slight_smile:

Le premier pallier fonctionne

1 « J'aime »

Donc si le premier palier fonctionne, le second consiste simplement à rajouter « - 1 » avant les deux accolades de fin, et de confirmer que ça fonctionne bien. Si c’est le cas, tu peux passer au test de l’action complète (voir mon dernier message), et on devrait être sur le bon chemin :wink:


Voici le résultat. Je ne comprends pas très bien le message d’erreur.

Désolé, je dois te laisser. je continuerai plus tard ou demain.
.
Mille mercis pour ton aide