Mój czujnik temperatury co pewien czas zwraca temperaturą z kosmosu. Skutecznie psuje to możliwość przegladania wykresu temperatury z zakresu, który obejmuje taki błędny odczyt.
Powinienem zastosować filtrowanie, prawda?
Najbardziej pasuje mi chyba z opisu filtr Outlier, ale nie umiem chyba poprawnie ustawić jego parametrów Window size, Radius i Precision, bo filtr nie odcina błędnych odczytów.
Pomożecie?
Bez konkretnych danych nie pomożemy, opis parametrów jest w dokumentacji
Sensor mierzy temperaturę zewnętrzną, obecnie w nocy nieco powyzej zera. W jednym z odczytów zapisało sie jednak -273°.
Na odczycie fizycznym włączyłem filtr Outlier, ale nie wiem jak ustalić trzy parametry, o ktorych piszę powyżej, bo filtr nic nie daje, nadal jest pik -273°.
Co to za czujnik, typ, producent? Ten filter nie poprawi ci takich bzdurnych wskazań. Musisz znaleźć przyczynę takich błędnych wskazań, albo twój czujnik gubi połączenie, albo to Tuya i posiada bugi co często się zdarza w wypadku tego producenta. Sprawdź godzinę tej złej temperatury i sprawdź encję tego czujnika w dzienniku, zobacz czy czujnik stał się niedostępny.
@artpc
Wskazań czujnika nie poprawi, ale wygenerujemy sobie inny sensor bez tych błędów.
@JamTo
Daj też wykresy oraz opisz szczegółowo charakterystykę czujnika (nikt z nas nie jest w stanie zgadnąć jakie dane raportuje, ile masz prawidłowych w serii, a ile pojawia się nieprawidłowych itd. czytałeś w ogóle dokumentację?
(w ogóle jest wiele filtrów, które mogą być przydatne i są prostsze w konfiguracji, ale trzeba znać charakter błędów - przykładowo, jeśli jedyne błędne wskazania to 0K (=~-273C) to wystarczy filtr range)
A ja zrozumiałem z dokumentacji, że filtr do tego właśnie służy, do pozbycia się błędnych wskazań z urządzeń, które z jakiegoś powodu generują takie śmieci co pewien czas. Nie mam racji?
Ten czujnik, to faktycznie urządzenie niskich lotów - jakiś stary Sonoff z wczesnym oprogramowaniem Supli, odczytywany przez API Supli. Ale w moim pytaniu nie do końca o to chodzi. Chciałem się dowiedzieć, jaka jest możliwość programowego filtrowania danych pomiarowych z urządzeń, które dają dane niskiej jakości.
Czy zatem rzeczywiście nie da sie tego problemu ogarnąć filtrem?
Z urządzenia błędów filtrowaniem w HA się nie pozbędziesz, ale na podstawie wskazań zawierających błędne wskazania możesz stworzyć wirtualny czujnik, który będzie miał odfiltrowane te bzdurne wskazania.
Natomiast skoro jest to sprzęt DIY to już na bazie jego oprogramowania można sobie filtrować (gdyby to było ESPHome to mógłbyś korygować błędy na poziomie urządzenia, aktualnych możliwości Supli nie znam, ale logika podpowiada, że być może też jest to możliwe).
Drążę temat dokumentacji - czy czytałeś i zrozumiałeś jak działa ten filtr, bo to jest konieczne by go skonfigurować… (musisz być w stanie oszacować tempo zmian temperatury, które nadal nie będzie traktowane jako błąd)
window to okienko próbkowania, ilość błędnych wskazań w okienku musi być niewielka (jeśli masz co 10 wskazanie błędne to optymalne okienko będzie miało 10 pomiarów, ale jeśli się zdarza po 10 błędnych odczytów w serii to z takim okienkiem ten filtr w ogóle nie zadziała)
radius to promień = dopuszczalny rozrzut danych, by były traktowane jako prawidłowe, załóżmy że temperatura w ciągu 10 kolejnych pomiarów nigdy nie zmienia się więcej niż o 20 stopni to niech radius będzie 20, ale jeśli masz błędne wskazania które są odstające o 20stopni a realna temperatura nie zmieni się nigdy bardziej niż o 10 stopni w te 10 pomiarów, to oczywiście to radius 20 będzie do bani.
a precision = dokładność, oczywiście w najprostszym przypadku powinna być zgodna z oryginalną raportowaną przez czujnik (jeśli masz rozdzielczość pomiaru 0.1C to ustaw 0.1)
To rozumiem i taki był mój cel.
Poniżej wykres zwracany przez filtr:
Jest chyba identyczny z wykresem z samego czujnika, jakby filtr nie działał.
Daj nałożone oba wykresy i odcinek czasowy gdzie są te błędy, resztę musisz policzyć sam, bo z obrazka to ja nie zgadnę ile miałeś złych wskazań.
ALE okienko musi być takiej wielkości aby błędne wskazania były zdecydowaną mniejszością.
za małe okienko, to już widzę…
ale jak bardzo za małe to nie zgadnę
na tę szpilkę po prawej było wystarczająco szerokie, ale nie na 2 pozostałe
Czy rozumiesz to, że ja nie wiem czy to był pojedynczy błędny pomiar czy ich cała seria.
no i nie wiem jakie miałeś parametry
Baza dla statystyk zapisuje na potem tylko dane gdy była zmiana, ale filtr działa na surowych pomiarach (więc jeśli masz je przykładowo co sekundę, to okienko powinieneś mieć tak na oko na jakieś 250)
Nie bardzo wiem, o jakie parametry pytasz? To wykres z czujnika, nie mam wiedzy, jak często jest odczytywany. Czy mogę to gdzieś zweryfikować?
Musisz wiedzieć jak często raportuje ten czujnik, to będziesz wiedział ile pomiarów nastąpiło w tym okresie, podejrzewam, że wiele razy na minutę.
no i jakie miałeś wtedy ustawienia filtra (bo tego też nie wiem)
Z tym filtrem nie, oczywiście możesz dobrać ustawienia w ciemno, ale stwierdzić jak często raportuje żadna sztuka. (dane kiedy był ostatni raport są dostępne na żywo)
Cytat
ale stwierdzić jak często raportuje żadna sztuka. (dane kiedy był ostatni raport są dostępne na żywo
Podpowiesz jak to zrobić? - dopiero zaczynam z HA
Klikasz w sensor i go oglądasz.
Fajnie gdybyś umiał zasymulować awarię…
Ale skoro miałeś okienko na 3 pomiary i było za wąskie to znaczy, że miałeś co najmniej 2 błędne odczyty w serii.
Warto zrozumieć że ten filtr zastępuje błędną wartość medianą wskazań (więc jeśli doszło do tego, że mediana odjechała do wartości błędnej, bo takich wskazań była większość, to filtr zadziałał prawidłowo, choć inaczej niż chciałeś).
Outlier znakomicie wycina pojedyncze błędne wskazania, ale jeśli jest seria złych to przy źle dobranych parametrach nie da rady.