MQ2 vs MP2 sensor on ESPHome

Hi, a made YAML code for MQ2, witch output CO, Smoke and LPG level of percent.

 - platform: adc # MQ2  
    pin: GPIO03
    id: mq2_sensor
    name: "mq2_sensor_raw"
    update_interval: 0.5s
    accuracy_decimals: 6
    icon: mdi:smoke
    internal: False
    filters: 
      - sliding_window_moving_average:
          window_size: 50
          send_every: 2


  - platform: template 
    id: smoke_value
    name: "Smoke Level"
    update_interval: 1s
    accuracy_decimals: 2
    unit_of_measurement: "%"
    icon: mdi:smoke
    lambda: |-
          float  Ro  =  10; 
          float RO_CLEAN_AIR_FACTOR = 9.83;
          float RL_VALUE = 5;
          float adc_bit= 4095;
          float raw_value = id(mq2_sensor).state;
          float  SmokeCurve[3] = { 2.3, 0.53, -0.44 } ;
          Ro = ((((float)RL_VALUE*(adc_bit-raw_value)/raw_value)))/ RO_CLEAN_AIR_FACTOR;
          float rs_ro_ratio =  ((((float)RL_VALUE*(adc_bit-raw_value)/raw_value)))/Ro  ;
          return (pow(10,( ((log(rs_ro_ratio)-SmokeCurve[1])/SmokeCurve[2]) + SmokeCurve[0])))*100; 


  - platform: template 
    id: lpg_value
    name: "LPG Level"
    update_interval: 1s
    accuracy_decimals: 2
    unit_of_measurement: "%"
    icon: mdi:gas-burner
    lambda: |-
          float  Ro  =  10; 
          float RO_CLEAN_AIR_FACTOR = 9.83;
          float RL_VALUE = 5;
          float adc_bit= 4095;
          float raw_value = id(mq2_sensor).state;
          float  LPGCurve[3] = { 2.3, 0.21, -0.47 } ;
          Ro = ((((float)RL_VALUE*(adc_bit-raw_value)/raw_value)))/ RO_CLEAN_AIR_FACTOR;
          float rs_ro_ratio =  ((((float)RL_VALUE*(adc_bit-raw_value)/raw_value)))/Ro  ;
          return (pow(10,( ((log(rs_ro_ratio)-LPGCurve[1])/LPGCurve[2]) + LPGCurve[0])))*100; 

  - platform: template
    id: co_value
    name: "CO Level"
    update_interval: 1s
    accuracy_decimals: 2
    unit_of_measurement: "%"
    icon: mdi:molecule-co
    lambda: |-
          float  Ro  =  10; 
          float RO_CLEAN_AIR_FACTOR = 9.83;
          float RL_VALUE = 5;
          float adc_bit= 4095;
          float raw_value = id(mq2_sensor).state;
          float  LPGCurve[3] = { 2.3, 0.72, -0.34} ;
          Ro = ((((float)RL_VALUE*(adc_bit-raw_value)/raw_value)))/ RO_CLEAN_AIR_FACTOR;
          float rs_ro_ratio =  ((((float)RL_VALUE*(adc_bit-raw_value)/raw_value)))/Ro  ;
          return (pow(10,( ((log(rs_ro_ratio)-LPGCurve[1])/LPGCurve[2]) + LPGCurve[0])))*100; 

MQ-2 sensor work with 5 V

in code you can change
pin: GPIO03 # Sensor AO pin for your esp GPIO pin
adc_bit= 4095 # your esp GPIO bit value, change value with for 10-bit value 1023, 12-bit value 4095

All calculation from Manufactor Web Site