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.