Referencias en YAML

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.

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio