Modify data from a faulty temperature sensor

Preformatted textGood morning,
I created a small box to check the air quality in a room.
For this, I used a scd4x sensor which returns temperature, humidity and co2. I also integrated three WS2812b LED strips which change color depending on the temperature, humidity and CO2 present in the room. The data is also transmitted to Home Assistant.
The humidity and CO2 work correctly, but the temperature is distorted, the box returns 24°C when it is actually 20°C in the room. I am therefore trying to modify the YAML code so that the temperature returned to HA is the temperature received by the scd4x sensor minus 4°C in order to obtain the actual temperature of the room.

Here is the YAML code:

<esphome:
name: air-quality-sensor-desk
friendly_name: Air_Quality_Sensor_Desk

esp8266:
board: d1_mini
framework:
version: 2.7.4

logger:

ota:
password: “808c89c250d0c696911b4ef4fb180667”

wifi:
ssid: *************
password: *************
manual_ip:
static_ip: 192.168.1.136
gateway: 192.168.1.1
subnet: 255.255.255.0

mqtt:
broker: 192.168.1.127
username: ******
password: *****

i2c:
sda: GPIO4
scl: GPIO5
scan: true
id: bus_a

sensor:

  • platform: scd4x
    i2c_id: bus_a
    co2:
    id: CO2
    name: “CO2”
    on_value_range:

    • below: 1400
      then:
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 1
        red: 0%
        green: 50%
        blue: 0%
    • above: 1400
      below: 1600
      then:
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 3
        red: 25%
        green: 50%
        blue: 0%
    • above: 1600
      below: 1800
      then:
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 4
        red: 50%
        green: 50%
        blue: 0%
    • above: 1800
      below: 1900
      then:
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 8
        red: 50%
        green: 25%
        blue: 0%
    • above: 1900
      below: 2100
      then:
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 9
        red: 50%
        green: 0%
        blue: 0%
    • above: 2100
      then:
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_CO2
        range_from: 0
        range_to: 11
        red: 50%
        green: 0%
        blue: 0%

    temperature:
    name: “Temperature”
    id: Temp
    on_value_range:
    - below: 10
    then:
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 11
    red: 0%
    green: 0%
    blue: 0%
    - delay: 100ms
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 1
    red: 0%
    green: 0%
    blue: 50%
    - above: 10
    below: 17
    then:
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 11
    red: 0%
    green: 0%
    blue: 0%
    - delay: 100ms
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 3
    red: 0%
    green: 50%
    blue: 50%
    - above: 17
    below: 22
    then:
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 11
    red: 0%
    green: 0%
    blue: 0%
    - delay: 100ms
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 4
    red: 0%
    green: 50%
    blue: 0%
    - above: 22
    below: 27
    then:
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 11
    red: 0%
    green: 0%
    blue: 0%
    - delay: 100ms
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 6
    red: 50%
    green: 50%
    blue: 0%
    - above: 27
    then:
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 11
    red: 0%
    green: 0%
    blue: 0%
    - delay: 100ms
    - light.addressable_set:
    id: Strip_Temp
    range_from: 0
    range_to: 11
    red: 50%
    green: 0%
    blue: 0%

    humidity:
    name: “Humidity”
    id: Hum

    on_value:

    then:

    - light.addressable_set:

    id: Strip_Hum

    range_from: 0

    range_to: 2

    red: 0%

    green: 50%

    blue: 0%

    on_value_range:

    • below: 35
      then:
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 1
        red: 50%
        green: 0%
        blue: 0%
    • above: 35
      below: 45
      then:
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 2
        red: 50%
        green: 50%
        blue: 0%
    • above: 45
      below: 65
      then:
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 4
        red: 0%
        green: 50%
        blue: 0%
    • above: 65
      below: 75
      then:
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 7
        red: 50%
        green: 50%
        blue: 0%
    • above: 75
      then:
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 11
        red: 0%
        green: 0%
        blue: 0%
      • delay : 100ms
      • light.addressable_set:
        id: Strip_Hum
        range_from: 0
        range_to: 7
        red: 50%
        green: 0%
        blue: 0%
        update_interval: 1s

light:

  • platform: fastled_clockless
    chipset: WS2812b
    id: Strip_Temp
    pin: GPIO14
    num_leds: 10
    rgb_order: GRB
    name: “Strip_Temp”
  • platform: fastled_clockless
    chipset: WS2812b
    id: Strip_CO2
    pin: GPIO13
    num_leds: 10
    rgb_order: GRB
    name: “Strip_CO2”
  • platform: fastled_clockless
    chipset: WS2812b
    id: Strip_Hum
    pin: GPIO12
    num_leds: 10
    rgb_order: GRB
    name: “Strip_Hum”>

Please post as yaml.

1 Like