home-assistant.io/source/_integrations/compensation.markdown
2024-01-28 19:01:08 +01:00

3.5 KiB

title, description, ha_category, ha_iot_class, ha_release, ha_codeowners, ha_domain, ha_platforms, ha_integration_type
title description ha_category ha_iot_class ha_release ha_codeowners ha_domain ha_platforms ha_integration_type
Compensation Instructions on how to integrate compensation sensors into Home Assistant.
Sensor
Utility
Calculated 2021.5
@Petro31
compensation
sensor
integration

The Compensation {% term integration %} consumes the {% term state %} from other {% term sensors %}. It exports the compensated value as state in a separate {% term entity %} and the following values as attributes: entity_id and coefficients. A single polynomial, linear by default, is fit to all data points provided.

Configuration

To enable the compensation sensor, add the following lines to your configuration.yaml:

# Example configuration.yaml entry
compensation:
  media_player_db_volume:
    source: media_player.yamaha_receiver
    attribute: volume_level
    unit_of_measurement: dB
    data_points:
      - [0.2, -80.0]
      - [1.0, 0.0]

  media_player_zone_2_db_volume:
    source: media_player.yamaha_receiver_zone_2
    attribute: volume_level
    unit_of_measurement: dB
    # Ensure that the sensor's value will not have a state lower than -80.0
    # when the source sensors value is less than 0.2
    lower_limit: true
    # Ensure that the sensor's value will not have a state greater than 0.0
    # when the source sensors value is greater than 1.0
    upper_limit: true
    data_points:
      - [0.2, -80.0]
      - [1.0, 0.0]

{% configuration %} source: description: The entity to monitor/compensate. required: true type: string data_points: description: "The collection of data point conversions with the format [uncompensated_value, compensated_value]. e.g., [1.0, 2.1]. The number of required data points is equal to the polynomial degree + 1. For example, a linear compensation (with degree: 1) requires at least 2 data points." required: true type: list unique_id: description: An ID that uniquely identifies this sensor. Set this to a unique value to allow customization through the UI. required: false type: string attribute: description: Attribute from the source to monitor/compensate. When omitted the state value of the source will be used. required: false type: string degree: description: "The degree of a polynomial. e.g., Linear compensation (y = x + 3) has 1 degree, Quadratic compensation (y = x2 + x + 3) has 2 degrees, etc." required: false default: 1 type: integer precision: description: Defines the precision of the calculated values, through the argument of round(). required: false default: 2 type: integer unit_of_measurement: description: Defines the units of measurement of the sensor, if any. required: false type: string lower_limit: description: "Enables a lower limit for the sensor. The lower limit is defined by the data collections (data_points) lowest uncompensated_value. For example, if the lowest uncompensated_value value is 1.0 and the paired compensated_value is 0.0, any source state less than 1.0 will produce a compensated state of 0.0." required: false type: boolean default: false upper_limit: description: "Enables an upper limit for the sensor. The upper limit is defined by the data collections (data_points) greatest uncompensated_value. For example, if the greatest uncompensated_value value is 5.0 and the paired compensated_value is 10.0, any source state greater than 5.0 will produce a compensated state of 10.0." required: false type: boolean default: false {% endconfiguration %}