Simples (episode 002) automation state_attr

bonjour, épisode 002 des problèmes pourtant simples:
je cherche à faire une ventilation automatique de la véranda
si hygro > seuil => passage à ON, sinon passage à OFF (simple)
Mais plus subtil:
si (hygro > seuil) ET (hygro EXTERIEURE < seuil)…impossible ???
j’ai réussi à récupérer la valeur hygro exterieure:

{{state_attr('weather.gouvieux', 'humidity')}}
{{state_attr('weather.gouvieux', 'humidity')+10}}
'{{ state_attr('weather.gouvieux', 'humidity') | float(0.0) }}'
"{{ state_attr('weather.gouvieux', 'humidity') | int < 60}}"
'{{ state_attr('weather.gouvieux', 'humidity') | int > 5 }}'

qui donnent dans l’interpréteur:

Type de résultat: string
51
61
'51.0'
"True"
'True'

donc accessible :slightly_smiling_face:
MAIS quand j’essaye de l intégrer à une automation:

- id: '1660657970917'
  alias: RDC_Veranda_simplex (001)
  description: auto_time de ventilation
  trigger:
  - platform: time_pattern
    minutes: /1
    seconds: 0
  condition:
  - condition: and
    conditions:
    - condition: numeric_state
      entity_id: sensor.rdc_veranda_am2301_humidity
      above: '20'
    - condition: template
      value_template: "{{ state_attr('weather.gouvieux', 'humidity') | int > 90 }}"
  action:
  - type: turn_on
    device_id: e4010a381e3af923ce29e90ebca456a1
    entity_id: switch.tasmota_2
    domain: switch
  mode: single

le problème:
quelque soit la syntaxe (validée par FILE_EDITOR) le test en direct (editeur WUI) donne:

Une erreur est survenue lors du test de la condition
template value should be a string for dictionary value @ data['value_template']. Got None

j’ai essayé bien des choses depuis ce matin, rien n’y fait…
donc comme d’habitude: à l’aide…

Salut,

En principe, tu ne mélanges pas les 2 pour créer les automatisations :

  • soit tu connais assez le yaml pour le faire à partir de FileEditor et tu fais une automatisation purement yaml. Au passage la validation d’un yaml uniquement par FileEditor n’est vraiment pas efficace, c’est de loin moins bien que des outils comme VStudio
  • Soit tu fais l’automatisation via l’UI et tu ne la retouche jamais avec l’éditeur… Au pire, tu bascules l’UI en mode YAML pour les blocs correspondants avec la fonction dédiée (bouton/3 points verticaux)

Et, je pense qu’il n’est pas idéale de mettre un trigger de 1minutes pour ce besoin.
Tu devrait plutôt mettre le trigger sur sensor.rdc_veranda_am2301_humidity qui dépasse 20

@roumano Bien sur les valeurs données sont celles du test (1 minute) & humidity > 20 (c’est toujours vrai) & weather humidity > 90 (c’est toujours faux).

@Pulpy-Luke Je viens de DOMOTICZ ou j’ai tout écrit en LUA.
J’ai dans l’idée de faire le meme chemin avec HA.
Sauf que c’est tout nouveau pour moi, et le WUI est bien pratique pour écrire les premiers scripts.

ca ne change rien au problème fondamental qui est qu’une expression est valide dans FILE EDITOR (je veux bien que ce n’est pas trop fiable, et je regarderai la piste VStudio) MAIS aussi dans l’interpréteur natif de HA, puis génère une erreur à l’exécution.
Pourquoi ?
Comment écrire simplement cette condition (au demeurant en TEMPLATE dans le WUI, donc il vaut mieux connaitre un peu le YAML)
donc…à l’aide…

Tu peux faire comme tu veux pour éditer ça dépend surtout de ton niveau de maîtrise. Je te mets juste en garde sur les points :

  • Fileeditor c’est pratique mais pas un gage de validation du contenu
  • Les outils de dev ha (si c’est bien de ça que tu évoques c’est beaucoup mieux) mais il y a des différences d’analyse sur les templates avec valeurs par défaut par exemple. C’est d’ailleurs le cas dans ton expression : int doit normalement être int(0) comme tu l’a fait dans tes exemples avec float. C’est visible dans les logs ha en principe
  • le risque de combiner édition fileeditor et UI c’est surtout quand la syntaxe est perturbée/mauvaise : l’ui ne sait plus retrouver ses billes et ne fonctionne plus pour cette automatisation. Évidemment en corrigeant ça revient mais il faut savoir analyser le défaut tout seul…

je viens d installer VScode…
c’est sans comparaison avec file editor !
merci je conserve ça
pour l interpreteur en direct, c’est :

et donc, on a ici des valeurs lisibles, et inconnues dans le script !

Relis mon passage sur les valeurs par défaut, là il en manque toujours sur les |int
Quant à Vstudio c’est clairement difficile de revenir à autre chose après. Pas que pour le yaml d’ailleurs

j’ai donc modifié la ligne de template
dans le WUI pour essayer d’avoir la syntaxe parfaite:

{{ state_attr('weather.gouvieux', 'humidity') | int(0) > 90 }}

MAIS j’ai toujours la meme erreur:
image

désolé, on écrit en meme temps:
c’est ou ?

mon passage sur les valeurs par défaut, là il en manque toujours sur les |int

Nos messages se croisent… Ça semble OK.
Maintenant que syntaxiquement ça semble propre on dirait que tu es dans le cas de ce bug

Donc ha à jour ?

:scream:
je débute en HA et je tombe sur un bug !!!
un moyen classique de contourner ?

C’est bien foutu HA, ça garde les bugs pour les débutants histoire qu’ils progressent plus vite :rofl:
Après en contournement tu peux tenter de faire un sensor/binary avec le template et l’utiliser directement dans l’automatisation. Sinon passer sur Nodered ou attendre

NodeRed je préfère éviter, ça fait une couche de plus, alors que HA natif a déjà l’air assez complet.

je comprends chaque mots, mais pas ce que je dois faire (en fait j’ai deja essayé hier mais sans succès, foutues indentations!!!).
des idées ?

L’aspect strates dans HA c’est pas si important dans le fonctionnement et les performances.
Nodered/automation ha c’est un peu comme Vstudio/fileeditor mais chacun ses choix après tout.
Pour les indentations, vstudio va te simplifier le boulot. Donc crée une entité à part (en partant du template qui est syntaxiquement correct) dans un premier temps.

j’ai retrouvé ce que j’ai essayé hier:
premier essai avec valeur native, sans calcul:

  - platform: template
    sensors:
      Humidite_EXT:
        friendly_name: "_Humidite_EXT"
        value_template: "{{ state_attr('weather.gouvieux', 'humidity') | float(0.0) }}"

avec donc comme ERREUR:
Invalid config for [sensor.template]: invalid slug Humidite_EXT (try humidite_ext) for dictionary value @ data[‹ sensors ›]. Got OrderedDict([(‹ Humidite_EXT ›, OrderedDict([(‹ friendly_name ›, ‹ _Humidite_EXT ›), (‹ value_template ›, « {{ state_attr(‹ weather.gouvieux ›, ‹ humidity ›) | float(0.0) }} »)]))]). (See ?, line ?).
?

Evite les majuscules (ça sert à rien dans les id, sauf à se planter plus tard) et ne commence pas le friendly_name par un _ (c’est ça l’erreur)

bravo:

  - platform: template
    sensors:
      humidite_ext:
        friendly_name: "humidite_ext"
        value_template: "{{ state_attr('weather.gouvieux', 'humidity') | float(0.0) }}"

donne:
image
reste plus qu’à mettre ça dans le script initial…

tant qu’on est dans les détails
comment rajouter

- id:

en edition manuelle ?

Id de quoi ? Ou ?
Dans l’automatisation ? Si c’est ça oublie, ça fait partie des trucs optionnels que l’ui ajoute pour s’y retrouver…

merci encore… :
c’est long de débuter…