diff --git a/packages/air_bme280.yaml b/packages/air_bme280.yaml index 81c98f7aaf8e9cece95f347599bc3f049aa352ca..df9d5b8c45442e697dda272d0f37bb6d7cbb16dd 100644 --- a/packages/air_bme280.yaml +++ b/packages/air_bme280.yaml @@ -1,31 +1,93 @@ +substitutions: + bme280_temperature_offset: "0.0" + bme280_humidity_offset: "0.0" + +globals: + - id: bme280_temperature_offset + type: float + restore_value: yes + initial_value: ${bme280_temperature_offset} + - id: bme280_humidity_offset + type: float + restore_value: yes + initial_value: ${bme280_humidity_offset} + sensor: -- platform: bme280_i2c - address: 0x76 - update_interval: 5s - temperature: - id: bme280_temperature - name: "Air: Temperature" - accuracy_decimals: 2 - #<<: !include filter.yaml + - platform: bme280_i2c + address: 0x76 + update_interval: 5s + temperature: + id: bme280_temperature + name: "Air: Temperature" + accuracy_decimals: 2 + on_value: + then: + - lambda: |- + id(${fan_script}).execute(); + filters: + - lambda: return x + id(bme280_temperature_offset); + humidity: + id: bme280_humidity + name: "Air: Humidity" + accuracy_decimals: 2 + #<<: !include filter.yaml + on_value: + then: + - lambda: |- + id(${fan_script}).execute(); + id(${humidifier_script}).execute(); + filters: + - lambda: return x + id(bme280_humidity_offset); + pressure: + id: bme280_pressure + name: "Air: Pressure" + accuracy_decimals: 2 + <<: !include filter.yaml + +select: + - platform: template + name: "Air: Temperature Offset" + options: ["-3", "-2", "-1", "0", "1", "2", "3"] + initial_option: "0" + optimistic: true + restore_value: true on_value: - then: - - lambda: |- - id(${fan_script}).execute(); - humidity: - id: bme280_humidity - name: "Air: Humidity" - accuracy_decimals: 2 - #<<: !include filter.yaml + - globals.set: + id: bme280_temperature_offset + value: !lambda "return atof(x.c_str());" + - platform: template + name: "Air: Humidity Offset" + options: + [ + "-10", + "-9", + "-8", + "-7", + "-6", + "-5", + "-4", + "-3", + "-2", + "-1", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + ] + initial_option: "0" + optimistic: true + restore_value: true on_value: - then: - - lambda: |- - id(${fan_script}).execute(); - id(${humidifier_script}).execute(); - pressure: - id: bme280_pressure - name: "Air: Pressure" - accuracy_decimals: 2 - <<: !include filter.yaml + - globals.set: + id: bme280_humidity_offset + value: !lambda "return atof(x.c_str());" prometheus: relabel: diff --git a/packages/air_scd40.yaml b/packages/air_scd40.yaml index 36736bc6485e1e200a0c7a77e093f37f6f4f1946..4a80e22a066091e88ffcb74b4589867105a36b83 100644 --- a/packages/air_scd40.yaml +++ b/packages/air_scd40.yaml @@ -2,7 +2,6 @@ sensor: - platform: scd4x id: scd40 update_interval: 5s - temperature_offset: 4.9 ambient_pressure_compensation_source: bme280_pressure co2: id: scd40_co2 diff --git a/packages/level.yaml b/packages/level.yaml index 6e95bf4ffaebaa7023efffd44d3f4eff55349801..00509d3a85ce08924df27675871581a6cf6d5e30 100644 --- a/packages/level.yaml +++ b/packages/level.yaml @@ -64,6 +64,7 @@ sensor: unit_of_measurement: "cm" accuracy_decimals: 2 update_interval: 5s + <<: !include filter.yaml lambda: |- float dataCurrent = id(waterlevel_tank_voltage).state * 1024.0 / 120.0; // Sense Resistor: 120ohm float depth = (dataCurrent - id(waterlevel_current_init)) * (id(waterlevel_range) / id(waterlevel_density) / 16.0) / 10; @@ -74,6 +75,7 @@ sensor: unit_of_measurement: "cm" accuracy_decimals: 2 update_interval: 5s + <<: !include filter.yaml lambda: |- float dataCurrent = id(waterlevel_system_voltage).state * 1024.0 / 120.0; // Sense Resistor: 120ohm float depth = (dataCurrent - id(waterlevel_current_init)) * (id(waterlevel_range) / id(waterlevel_density) / 16.0) / 10;