Skip to content

Referencias en YAML: Reutilización de datos y simplificación de configuraciones

En este artículo, nos enfocaremos en el Capítulo 2.3 del Curso Completo de YAML, donde examinaremos las referencias en YAML y cómo utilizarlas para reutilizar datos y simplificar las configuraciones en Home Assistant. A continuación, se presenta un resumen de los temas que cubriremos en esta sección.

Puedes ver la página principal del curso o el temario del segundo capítulo.

Índice de contenido

    2.3. Referencias en YAML

    Las referencias en YAML permiten reutilizar datos en diferentes partes de un archivo YAML, evitando la repetición y mejorando la legibilidad y mantenibilidad de la configuración. En el contexto de Home Assistant, las referencias pueden ser especialmente útiles para simplificar las configuraciones de entidades, automatizaciones y scripts que comparten propiedades o valores comunes.

    2.3.1. ¿Qué son las referencias en YAML?

    Las referencias en YAML son una característica que permite asignar un nombre a una estructura de datos y reutilizarla en otros lugares del archivo YAML mediante un alias. Esto evita la necesidad de repetir bloques de código idénticos y facilita la actualización de la configuración, ya que solo es necesario cambiar el valor en un lugar.

    2.3.2. Sintaxis para utilizar referencias

    Para utilizar referencias en YAML, se deben seguir estos dos pasos:

    1. Crear un bloque de anclaje utilizando el símbolo «&» seguido de un nombre único.
    2. Referenciar el bloque de anclaje en otros lugares del archivo utilizando el símbolo «*» seguido del nombre único del anclaje.

    A continuación, se muestra un ejemplo de cómo utilizar referencias en un archivo YAML de Home Assistant:

    # Definición del anclaje
    common_mqtt: &common_mqtt
      qos: 1
      retain: true
    
    # Uso del anclaje en dos entidades diferentes
    light:
      - platform: mqtt
        name: "Luz del salón"
        state_topic: "home/living_room_light"
        command_topic: "home/living_room_light/set"
        <<: *common_mqtt
    
      - platform: mqtt
        name: "Luz de la cocina"
        state_topic: "home/kitchen_light"
        command_topic: "home/kitchen_light/set"
        <<: *common_mqtt
    

    En este ejemplo, definimos un anclaje llamado «common_mqtt» que contiene la configuración común de calidad de servicio (qos) y retención (retain) para las luces controladas por MQTT. Luego, utilizamos la referencia en dos entidades diferentes de tipo «light». Eso nos permite mantener la configuración MQTT común en un solo lugar y evitar la repetición.

    2.3.3. Ejemplos

    Las referencias en YAML pueden ser útiles en Home Assistant en diferentes escenarios, como:

    Configuraciones comunes para entidades: Si varias entidades comparten una configuración similar, se puede utilizar una referencia para simplificar y mantener el código más limpio.

    defaults: &light_defaults
      transition: 5
      color: white
    
    light:
      - platform: hue
        name: "Living Room Light"
        <<: *light_defaults
      - platform: hue
        name: "Kitchen Light"
        <<: *light_defaults
      - platform: hue
        name: "Bedroom Light"
        <<: *light_defaults
    

    Configuraciones de automatizaciones y scripts: Si se tienen varias automatizaciones o scripts con acciones similares, se pueden utilizar referencias para reutilizar las acciones y simplificar la configuración.

    common_actions: &common_light_actions
      - service: light.turn_on
        target:
          entity_id: light.living_room_light
      - service: light.turn_off
        target:
          entity_id: light.bedroom_light
    
    automation:
      - alias: "Automation 1"
        trigger:
          ...
        action:
          <<: *common_light_actions
      - alias: "Automation 2"
        trigger:
          ...
        action:
          <<: *common_light_actions
    

    Valores compartidos entre entidades y automatizaciones: Si ciertos valores, como umbrales o constantes, se utilizan en múltiples entidades y automatizaciones, se pueden utilizar referencias para mantener estos valores en un solo lugar y simplificar su actualización.

    constants:
      temperature_threshold: &temp_threshold 20
    
    sensor:
      - platform: some_sensor
        name: "Temperature Sensor"
        threshold: *temp_threshold
    
    automation:
      - alias: "Temperature Alert"
        trigger:
          platform: numeric_state
          entity_id: sensor.temperature_sensor
          above: *temp_threshold
        action:
          ...
    

    Sígueme a YouTube

    Sígueme en YouTube - Referencias en YAML
    Ajustes