  - platform: hlw8012
    cf_pin: GPIO05
    cf1_pin: GPIO13 # not used because it is not available on the 1PM but it is needed to compile
    sel_pin: GPIO14 # not used because it is not available on the 1PM but it is needed to compile
    power:
      name: "$friendly_name power"
      unit_of_measurement: W
      id: "shelly1pm_power"
      device_class: power
      state_class: measurement
      accuracy_decimals: 0
      filters:
      # Map from sensor -> measured value
      - calibrate_linear:
          - 0.0 -> 1.0
          - 110.33186 -> 20.62
          - 131.01909 -> 24.32
          - 341.33920 -> 62.08
          - 5561.41553 -> 1000.0
          - 2975.51221 -> 535.7
          - 9612.66309 -> 1720.0
          - 14891.35352 -> 2679.0
      # Make everything below 2W appear as just 0W.
      - lambda: if (x < 2) return 0; else return x;
    update_interval: 10s

  - platform: total_daily_energy
    name: "$friendly_name daily energy"
    power_id: "shelly1pm_power"
    device_class: energy
    state_class: measurement
    filters:
      - multiply: 0.001
    unit_of_measurement: kWh

  - platform: ntc
    sensor: temp_resistance_reading
    name: "$friendly_name temperature"
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    device_class: temperature
    calibration:
      b_constant: 3350
      reference_resistance: 10kOhm
      reference_temperature: 298.15K
    on_value_range:
      - above: $max_temp
        then:
          - homeassistant.event:
              event: esphome.overheat
              data:
                title: "$friendly_name has overheated."

  - platform: resistance
    id: temp_resistance_reading
    sensor: temp_analog_reading
    configuration: DOWNSTREAM
    resistor: 32kOhm

  - platform: adc
    id: temp_analog_reading
    pin: A0
