ESPHome ma nowy filtr czujników, rh_correction, który przelicza wilgotność względną po poprawieniu temperatury z tego samego czujnika. Napisał go damib, a 22 października 2026, po przeglądzie J. Nicka Kostona (bdraco) i Jesse'ego Hillsa, kod trafił do gałęzi dev. Stało się to dzień po wydaniu ESPHome 2026.10.0, a dokumentacja czeka w gałęzi kolejnego wydania, więc filtr powinien pojawić się w ESPHome 2026.11.

Przesunięcie nie wystarczy dla wilgotności

Czujnik DHT albo BME często siedzi w jednej obudowie z płytką ESP, stabilizatorem i innymi elementami, które go nagrzewają. Temperatura jest wtedy zawyżona o kilka stopni, a filtr offset łatwo to poprawia. Z wilgotnością jest trudniej. Wilgotność względna zależy od tego, ile pary wodnej zmieści powietrze w zmierzonej temperaturze, więc nagrzany czujnik pokazuje powietrze suchsze niż w pokoju. Ten błąd rośnie i maleje razem z warunkami, a stałe przesunięcie wartości wilgotności za nim nie nadąży.

Nowy filtr przelicza odczyt wzorem Magnusa z temperatury zmierzonej na temperaturę poprawioną. Zakłada przy tym, że w obudowie i poza nią jest tyle samo pary wodnej.

Konfiguracja

Filtr dodajesz do czujnika wilgotności i wskazujesz w nim czujnik temperatury, który ma już ustawione przesunięcie:

sensor:
  - platform: dht
    pin: GPIOXX
    temperature:
      id: t_sensor
      name: Temperature
      filters:
        - offset: -6
    humidity:
      name: Humidity
      filters:
        - rh_correction:
            sensor_id: t_sensor
            temperature_offset: -6

Wartość temperature_offset musi być taka sama jak przesunięcie czujnika temperatury i może pochodzić z szablonu. Opcja use_fahrenheit: true informuje filtr, że czujnik temperatury podaje stopnie Fahrenheita. Dokumentacja ostrzega przed jednym łatwym błędem: jeśli sensor_id wskaże surową, niepoprawioną temperaturę, wilgotność wyjdzie zła, a ESPHome nie wyświetli żadnego ostrzeżenia.

Przypadki brzegowe

Wynik zawsze mieści się w zakresie 0-100%. Dopóki czujnik temperatury nie poda pierwszej wartości albo gdy zmierzona lub poprawiona temperatura wyjdzie poza zakres od -40 do 50 °C (od -40 do 122 °F), wilgotność przechodzi bez zmian, a w dzienniku pojawia się jednorazowe ostrzeżenie. Jeśli czujnik temperatury poda NaN albo przesunięcie da wynik NaN, filtr odrzuca odczyt z jednorazowym ostrzeżeniem i zostawia ostatnią poprawioną wartość.

Autor sprawdził zmianę na ESP32 z Arduino i ESP-IDF, na ESP8266 i na BK72xx. Kto wbudował czujnik wilgotności w małe pudełko z gorącą płytką ESP albo w puszkę obok zasilacza, po wydaniu nowej wersji może zastąpić tym filtrem własne obliczenia.