Journal d'un Terrien

Web log de Serge Boisse

On line depuis 1992 !

Publicité
Si cette page vous a plu, Copiez son adresse et partagez-la !
http://sboisse.free.fr/programmation/languages/YAML.php
Savez-vous quels sont les articles les plus vendus sur Amazon.fr ?
YAML

YAML (langage)

Résumé : YAML est le langage utilisé dans les frontmatter de Obsdian et aussi dans la configuration de home-assistant(lien privé)

syntaxe

En gros; il y a deux structures de données : les dictionnaires et les listes

  • clé : valeur déclare un dictionnaire. La valeur peut être sur une seule ligne (avec des , comme séparateur) ou sur plusieurs lignes)
  • - item décrit un élément de liste - item: toto décrit un élément de liste qui est un dictionnaire
    Tous les éléments de la liste doivent commencer au même niveau d'indentation
    Les valeurs peuvent être sur plusieurs lignes si la clé est suivie de : > :
fold_newlines: >
            this is really a
            single line of text
            despite appearances

Inversement si la clé est suivie de : | tout ce qui suit à un niveau d'indendation supérieur sera considéré comme une seule ligne.

Tout ce qui commence par {{ et finit par }} sera imprimé.
sinon on a des if, then else, for etc.

{## Imitate available variables: ##}
{% set my_test_json = {
  "temperature": 25,
  "unit": "°C"
} %}

The temperature is {{ my_test_json.temperature }} {{ my_test_json.unit }}.

{% if is_state("sun.sun", "above_horizon") -%}
  The sun rose {{ relative_time(states.sun.sun.last_changed) }} ago.
{%- else -%}
  The sun will rise at {{ as_timestamp(state_attr("sun.sun", "next_rising")) | timestamp_local }}.
{%- endif %}

For loop example getting entity values in the weather domain:

{% for state in states.weather -%}
  {%- if loop.first %}The {% elif loop.last %} and the {% else %}, the {% endif -%}
  {{ state.name | lower }} is {{state.state_with_unit}}
{%- endfor %}.

On peut modifier des valeurs :
par exemple {{ states('sensor.linky_tic_status_register')[5]}} cinquième caractère
{{ states('sensor.linky_tic_status_register')[6]|int <8}} conversion string->int

ou encore

{{ expand(area_entities('lounge room')) | selectattr('domain', 'eq', 'light') | map(attribute='entity_id') | list }}

ou

{{ area_entities('lounge room') | select('match', 'light') | list }}

jinja

Par exemple le code Jinja ci dessous (jinja et jinja2 sont des extension de YAML) :

icon_color: | 
  [[[ 
    if(states["sensor.purpleair_aqi"].state > 300){ 
      return 'white';
    } else { 
      return 'black'; 
    } 
  ]]]

La suite...


page créée le 18/03/2025 à 15:09
modifiée le 27/05/2025 à 16:38
Publicité
Commentaires

Commentaires (0) :

Page :



Ajouter un commentaire (pas besoin de s'enregistrer)

Pseudo :
Message :


image de protection
En cliquant sur le bouton "Envoyer" vous acceptez les conditions suivantes : Ne pas poster de message injurieux, obscène ou contraire à la loi, ni de liens vers de tels sites. Respecter la "netiquette", ne pas usurper le pseudo d'une autre personne, respecter les posts faits par les autres. L'auteur du site se réserve le droit de supprimer un ou plusieurs posts à tout moment. Merci !
Ah oui : le bbcode et le html genre <br>, <a href=...>, <b>b etc. ne fonctionnent pas dans les commentaires. C'est voulu.
< Retour en haut de la page