BlogKontakt

Filtry czujników

Korekta, zaokrąglanie i odrzucanie odczytów czujników, zanim trafią do panelu i Home Assistant.

Filtr zmienia odczyt czujnika, zanim boneIO Black go opublikuje: poprawia czujnik, który zawyża o pół stopnia, zaokrągla wartość, przelicza ją albo odrzuca odczyt, który nie może być prawdziwy.

Gdzie ustawiasz filtry

Filtry są częścią formularza danego czujnika. Przycisk dodawania filtra jest w:

CzujnikGdzie
ADCUstawienia → Sterowanie → Sensory ADC, w formularzu czujnika, sekcja Filtry (domyślnie rozwinięta), przycisk Dodaj filtr. Zobacz Sensory ADC.
1-Wire (DS18B20 i inne)Ustawienia → Sterowanie → Czujki Onewire, w formularzu czujnika, sekcja Filtry (kliknij, żeby rozwinąć), przycisk Dodaj Filtr. Zobacz Czujki 1-Wire.
Czujnik Modbus CWTUstawienia → Połączenia → Urządzenia Modbus, urządzenie z modelem CWT, zakładka Filtry czujników: Filtry temperatury i Filtry wilgotności, przycisk Dodaj filtr. Zobacz Urządzenia Modbus.

LM75, MCP9808 i INA219 też przyjmują filtry, ale tylko w YAML: ich formularz w Ustawienia → Urządzenie → Czujniki sterownika nie ma edytora filtrów (zobacz niżej).

Dodanie filtra

  1. Otwórz czujnik w jego sekcji i znajdź Filtry. Liczba obok mówi, ile filtrów ma czujnik.
  2. Kliknij Dodaj filtr. Na końcu pojawia się nowy wiersz, ustawiony na round z wartością 2.
  3. Wybierz filtr z listy i wpisz jego liczbę w polu Wartość.
  4. Zapisz czujnik (Dodaj Element albo Zapisz Zmiany), a potem Zapisz na dole sekcji. Restart nie jest potrzebny.

Kosz na końcu wiersza usuwa ten filtr.

Formularz czujnika 1-Wire z rozwiniętą sekcją Filtry: lista filtrów i przycisk Dodaj Filtr

Filtry

Lista pokazuje filtry po nazwie:

FiltrCo robiPrzykład
offsetDodaje wartość do odczytu. Wartość ujemna odejmuje.Czujnik pokazuje o 0,5 °C za dużo: offset -0.5.
roundZaokrągla do tylu cyfr po przecinku. Podaj liczbę całkowitą.round 1 zmienia 21,437 na 21,4.
multiplyMnoży odczyt przez wartość.Na wejściu ADC sterownika od wersji 1.0 multiply 13.8 daje napięcie na zacisku.
filter_outOdrzuca odczyt dokładnie równy wartości.DS18B20, który po zakłóceniu zasilania czasem zgłasza 85: filter_out 85.
filter_out_greaterOdrzuca odczyt większy od wartości. Odczyt równy wartości zostaje.Temperatura, która nigdy nie przekroczy 100 °C: filter_out_greater 100.
filter_out_lowerOdrzuca odczyt mniejszy od wartości. Odczyt równy wartości zostaje.filter_out_lower -40.

Gdy odrzucony zostaje odczyt ADC, 1-Wire, LM75 albo MCP9808, nic nie jest publikowane: panel i Home Assistant pokazują poprzednią wartość aż do następnego poprawnego odczytu.

Kolejność ma znaczenie

Filtry działają od górnego wiersza w dół, każdy na wyniku poprzedniego. Odrzucony odczyt na tym się kończy.

  • Żeby pokazać stopnie Fahrenheita, daj najpierw multiply 1.8, a po nim offset 32. W odwrotnej kolejności wynik będzie zły.
  • filter_out porównuje dokładnie, więc gdy odczyt ma ułamki, daj go po round.

Nie ma przycisku do przesuwania wierszy. Żeby zmienić kolejność, usuń wiersze i dodaj je ponownie w takiej kolejności, jakiej chcesz.

Gdy czujnik nie ma filtrów

Każdy czujnik ma zestaw domyślny: round 2 dla 1-Wire, LM75, MCP9808 i INA219 oraz multiply 1.8, a potem round 2 dla ADC (co zamienia 0–1 z wejścia na wolty, zobacz Sensory ADC). Czujnik dostaje zestaw domyślny tylko wtedy, gdy nie ma żadnych filtrów. Gdy dodasz własne, zastępują one domyślne, więc jeśli nadal chcesz zaokrąglania, dodaj round sam. Jeśli usuniesz wszystkie filtry, czujnik wraca do zestawu domyślnego po następnym restarcie aplikacji boneIO. Do tego czasu podaje wartość bez filtrów; dla ADC to liczba od 0 do 1, a nie wolty.