Linear

Supported domains: light, fan, media_player

The linear mode can be used for dimmable devices which don’t have a lookup table available. You need to supply the min and max power draw yourself, by either looking at the datasheet or measuring yourself with a smart plug / power meter. Power consumpion is calculated by ratio. So when you have your fan running at 50% speed and define watt range 2 - 6, than the estimated consumption will be 4 watt.

You can setup sensors both with YAML or GUI. When you use the GUI select linear in the calculation_strategy dropdown.

Configuration options

Name

Type

Requirement

Description

attribute

string

Optional

State attribute to use for the linear range. When not supplied will be brightness for lights, percentage for fans and volume for media players.

min_power

float

Optional

Power usage for lowest brightness level

max_power

float

Optional

Power usage for highest brightness level

calibrate

string

Optional

Calibration values

gamma_curve

float

Optional

Apply a gamma correction, for example 2.8

Example configuration

powercalc:
  sensors:
    - entity_id: light.livingroom_floorlamp
      linear:
        min_power: 0.5
        max_power: 8

Note

defining only min_power and max_power is only allowed for light and fan entities, when you are using another entity (for example a sensor or input_number) you must use the calibrate mode.

Advanced precision calibration

With the calibrate option you can supply more than one power value for multiple brightness/percentage levels. This allows for a more accurate estimation because not all lights are straight linear.

Also you can use this calibration table for other entities than lights and fans, to supply the state values and matching power values.

powercalc:
  sensors:
    - entity_id: light.livingroom_floorlamp
      linear:
        calibrate:
          - 1 -> 0.3
          - 10 -> 1.25
          - 50 -> 3.50
          - 100 -> 6.8
          - 255 -> 15.3

Note

For lights the supplied values must be in brightness range 1-255, when you select 1 in lovelace UI slider this is actually brightness level 3. For fan speeds the range is 1-100 (percentage)

Configuration with a sensor (sensor.heater_modulation) which supplies a percentage value (1-100):

powercalc:
  sensors:
    - entity_id: sensor.heater_modulation
      name: Heater
      linear:
        calibrate:
          - 1 -> 200
          - 100 -> 1650

You could also use this to setup a power profile for your robot vacuum cleaner, which only consumes power when it is docked into the charching port. You need to use this in conjunction with the calculation_enabled_condition to only activate the power calculation when the device is docked.

powercalc:
  sensors:
    - entity_id: vacuum.my_robot_cleaner
      calculation_enabled_condition: "{{ is_state('vacuum.my_robot_cleaner', 'docked') }}"
      linear:
        attribute: battery_level
        calibrate:
          - 1 -> 20
          - 79 -> 20
          - 80 -> 15
          - 99 -> 8
          - 100 -> 1.5