Code dans fichier *.yaml: condition if et amélioration

Bonjour à tous,
En continuant ma découverte de HA, j’ai réussi à intégrer Domogeek.
01
Par contre, comme on peut le voir sur la capture, j’ai le retour en anglais. J’ai tenté de faire une condition mais soit j’ai une erreur, soit j’ai plus rien. serait-il possible d’avoir un petit coup de pousse?
voici le bout de code que j’ai tenté:

value_template: >
  {% if is_state('value_json.season', 'autumn') %}
      'automne'
  {% endif %}

comme je découvre HA, voici les lignes que j’ai renseigné. est-ce qu’il y a moyen d’optimiser ce code ou des bonnes pratiques à avoir que je n’aurais pas appliqué?

Merci

Salut,

Sur le principe pourquoi pas mais il existe déjà ce genre d’info sans avoir à intégrer autre chose et à traduire
Pour les infos solaire sun (natif) ou sun2

Et en cadeau la lune et la saison parce que c’est natif

#Moon ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- platform: moon
# Season +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- platform: season
#Sun2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- platform: sun2
  monitored_conditions:
    - sunrise
    - sunset
    - solar_midnight
    - astronomical_dawn
    - nautical_dawn
    - dawn
    - solar_noon
    - dusk
    - nautical_dusk
    - astronomical_dusk
    - daylight
    - civil_daylight
    - nautical_daylight
    - astronomical_daylight
    - night
    - civil_night
    - nautical_night
    - astronomical_night
    - max_elevation

Autre info, un scan toutes les 7200 secondes (donc 2 heures) c’est gourmand pour le lever/coucher de soleil

tu pourras retrouver la traduction effectuer de me propre mains :slight_smile:
https://forum.hacf.fr/t/mon-dashboard-felix62/5154/3?u=felix62

PS: tu as aussi la traduction des signes astrologiques :stuck_out_tongue:

sensor.season est traduit automatiquement …

Merci de vos retour.

je ne connaissais pas celui-là. et comme j’ai envi de comprendre (j’aime pas le bête copier/coller), je me suis lancé sur quelque chose que je connais (il existe en plugin sur jeedom).

Merci :wink:

Sinon, sur les quelques lignes que j’ai écrite. Est-ce que j’ai raté des bonnes pratiques et/ou de l’optimisation possible?

Certes d’un autre côté comme toutes les fonctions que tu veux utiliser sont natives c’est dommage de réinventer la roue. Tu peux tout aussi bien jouer avec la syntaxe sur d’autres choses (c’est pas les idées qui doivent manquer). De plus, si un jour domo modifie un truc, tu devra corriger… Donc sauf pour l’expérience et le côté pédagogique, c’est pas forcément le meilleur choix.

Si je le passe en HA en prod, je prendrais ta solution sans hésiter.
Comme HA est pour l’instant en essai (afin que je le découvre), j’en profite pour essayer de comprendre la conception de fichier *.yaml sans crainte ( si il plante, c’est pas grave car c’est un serveur de test :grin:) et essayer d’y inclure des conditions

1 « J'aime »

Qu’as-tu comme erreur ? Que dit le log ?

je n’ai pas de log. l’erreur apparaissait quand je faisais le contrôle de configuration.
J’ai modifié le code mais j’ai toujours le retour: « erreur saison »


j’ai mis une capture au lieu du code pour une autre question. à chaque nouvelle information que je souhaite, j’ai mis la ligne « platform: … » et « ressource: … ». il y a pas moyen d’optimiser?

L’add-on Visual-Studio est d’une bonne aide avec les soucis de syntaxe
La capture d’écran, c’est joli mais pas moyen de tester localement…

Si pour collecter l’info, l’url est à chaque fois est différente, tu n’as pas le choix…
C’est bien pour ça que je disais que ça valait pas le coup :wink:
Il y a d’autres solutions pour optimiser les appels (quand c’est possible)

j’avais pas pensé à ça désolé. voici le code:

 - platform: rest
    resource: http://domogeek.entropialux.com/season/json
    scan_interval: 7200
    name: saison
    #value_template: "{{ value_json.season }}"
    value_template: >
      {% if is_state('value_json.season', "spring")%} Printemps
      {% elif is_state('value_json.season', "summer")%} Eté
      {% elif is_state('value_json.season', "autumn")%} Automne
      {% elif is_state('value_json.season', "winter")%} Hiver
      {% else %} Erreur Saison {% endif %}

j’ai tenté les ’ au lieu des " mais ça n’a rien changé.

je vais regarder çà

pas de soucis là dessus. comme je regarde HA, je regarde les possibilités qu’il offre. mais le fait de pouvoir aller dans les lignes de codes, ça ouvre quelques possibilités par rapport à certain système domotique. si je crash HA à cause d’une mauvaise manip, c’est pas grave car en essai :grin:

donc

- platform: rest
  sensors:
    resource: http://domogeek.entropialux.com/season/json
    scan_interval: 7200
    name: saison
    #value_template: "{{ value_json.season }}"
    value_template: >
      {% if is_state('value_json.season', "spring")%} Printemps
      {% elif is_state('value_json.season', "summer")%} Eté
      {% elif is_state('value_json.season', "autumn")%} Automne
      {% elif is_state('value_json.season', "winter")%} Hiver
      {% else %} Erreur Saison {% endif %}

Les crash sont plus rares que chez jeedom :wink:

comme je suis dans le fichier sensors.yaml, j’ai pas besoin d’indiquer « sensors: » comme sur ton exemple?
c’est la seule différence que je vois.

Exact mais c’est pas l’explication… Moi aussi c’est dans le fichier sensor.
autre exemple avec un switch

image

j’ai copié/coller le code que tu as indiqué. dès que je vérifie la config, message d’erreur:

Invalid config for [sensor.rest]: must contain at least one of resource, resource_template.. Got OrderedDict([('platform', 'rest'), ('sensors', OrderedDict([('resource', 'http://domogeek.entropialux.com/season/json'), ('scan_interval', 7200), ('name', 'saison'), ('value_template', '{% if is_state(\'value_json.season\', "spring")%} Printemps {% elif is_state(\'value_json.season\', "summer")%} Eté {% elif is_state(\'value_json.season\', "autumn")%} Automne {% elif is_state(\'value_json.season\', "winter")%} Hiver {% else %} Erreur Saison {% endif %}\n')]))]). (See ?, line ?).

Oui j’ai pas été jusqu’au bout

- platform: rest
  resource: http://domogeek.entropialux.com/season/json
  scan_interval: 7200
  name: saisondomo
  # value_template: "{{ value_json.season }}"
  value_template: >
    {% if is_state('value_json.season', "spring")%} Printemps
    {% elif is_state('value_json.season', "summer")%} Eté
    {% elif is_state('value_json.season', "autumn")%} Automne
    {% elif is_state('value_json.season', "winter")%} Hiver
    {% else %} Erreur Saison {% endif %}

je dois raté quelque chose mais quoi???..
j’ai copié/collé ton code. pas d’erreur mais voici le retour sur lovelace:
04

quand tu utilises visual studio, il se base sur ta config pour indiquer les erreurs?

Oui, mais il faut pas oublier de relancer le core pour prendre en compte la config, là le sensor ne semble pas exister. De plus ça vérifie la syntaxe, pas l’execution.
Pour tester les outils dev : c’est idéal
Par ailleurs, je suis pas certain que dans ton cas le is_state soit jouable…

je vais installé visual studio

il sera préférable de partir sur quoi?

puisque value_json n’existe qu’au sein du template, tu peux le tester directement : moi je fais ça comme ça

  value_template: >
    {% if value_json['season'] == 'spring' %} Printemps
    {% elif value_json['season'] == 'summer' %} Eté
    {% elif value_json['season'] == 'autumn' %} Automne
    {% elif value_json['season'] == 'winter' %} Hiver
    {% else %} KO
    {% endif %}