Przekłamanie temperatury (-2000 stopni) Sonoff TH16 - jak usunąć?

Zamontowałem w zasobniku CWU 4 przełączniki Sonoff TH16 wraz z sondami DS18B20. Numery 1,2, 3 mają póki co jeszcze soft ewelinka. Numer 4 ma wgrany soft TASMOTA.

Problem polega na tym, że od czasu do czasu numer 2 oraz 3 odczytują temperaturę na poziomie -2000 stopni C ¯_(ツ)_/¯

Mieliście taki przypadek? Problem tkwi w eWelinku? Bo póki co Tasmota takiego czegoś jeszcze nie zarejestrowała.

A może ktoś z Was wie jak z automatu usunąć tego typu anomalie?

przekłamanie temperatury

Miałem podobne “piki” jak sonoff startował po przerwie w zasilaniu
Dodane:
Ale o kilkanaście stopni

mi się czasami zdarzały takie sytuacje i to chyba na tasmocie , ale nie drążyłem tematu. Ostatnio spokój

Będę badał temat. Póki co tylko 2 modele z ewelinkiem na pokładzie tak się zachowały. Trzeci działa ok. Na czwartym jest Tasmota i również zachowuje się poprawnie.

Muszę tylko ogarnąć temat usunięcia tych peakow z bazy danych.

Cześć, czy udało ci się coś dojść z tymi pikami??? mi się one pojawiają teraz w integracji z falownikiem, i całkowicie mi zakłócają sumowanie miesięczne i roczne w utility meter

obraz

tutaj miesiąc i rok powinien być tyle co total, kalibracja poprawia to, ale dziś znowu się skrzaczyło :unamused:
obraz

Jeśli znany jest prawidłowy zakres danych z sensora, to te z poza zakresu można filtrować.

2 polubienia

@luki25 nie drążyłem tego tematu ale będę musiał zmierzyć się z tą opcją. Przez chwilę szukałem jak się połączyć z bazą InnoDB InfluxDB i usunąć te rekordy (jestem pewien że jest taka możliwość) ale odłożyłem temat “na potem”.

Jak by ktoś znał narzędzie w stylu “PhpMyAdmin” to będzie super jak się nim podzieli.

@Marek nie znałem tej opcji. Wprawdzie nie rozwiązuje to problemu ale może być przydatne w niektórych sytuacjach. Dzięki!

A do czego używasz tej bazy…?

Sry! Nie InnoDB tylko InfluxDB (╯°□°)╯︵ ┻━┻

InfluxDB to baza danych (TSDB) służąca do szybkiego zapisu i odczytu danych uporządkowanych w szeregi czasowe, dedykowana do ogromnej ilości danych zbieranych z urządzeń IoT.

Tak sam jej używam z grafana. InfluxDB to chyba tylko z linii komend CLI jest obsługiwany

To będę musiał to ogarnąć bo od czasu do czasu mam takie przekłamania. I to tylko z Sonofa TH16 z oryginalnym softem. W jednym jest Tasmota i problem się jeszcze nie pojawił.

Ogarnąłem to :slight_smile:

Jak usunąć niepoprawny zapis temperatury w bazie danych?

Przykładowe przekłamanie wygląda na wykresie w taki sposób:
image

Widzimy, że z czujnika TH16_1_CWU poszedł zapis do bazy z wartością -1000 stopni C.

ROZWIĄZANIE:

0. UWAGA!!! Przed modyfikacją bazy danych WYKONAJ KOPIĘ ZAPASOWĄ i pobierz ją sobie na komputer

  1. Instalujemy i uruchamiamy dodatek SQLite Web (Home Assistant Community Add-on: SQLite Web - Home Assistant OS - Home Assistant Community)

  2. Z menu po lewej wybieramy “states” i przechodzimy do zakładki “Query”

image

  1. Domyślnie mamy wpisane zapytanie (Query) które pokaże nam wszystkie rekordy w tej tabeli.

SELECT *
FROM “states”

Kliknięcie przycisku “Execute” wyświetli nam rekordy z tej tabeli.

  1. Możemy przeglądać zapisy ale nas interesują konkretne encje i konkretne zakresy wartości więc wpisujemy:

SELECT * FROM “states” where entity_id like “%th16%” and state between “-%” and “30”

Zapis ten mniej więcej oznacza:
Wyświetl (SELECT) wszystko () z tabeli “states” (FROM “states”) gdzie kolumna o nazwie “entity_id” (where entity_id) zawiera słowo w którym występuje ciąg th16 przed i za którym może być dowolny ciąg znakó (“%th16%”) a wartość w kolumnie “state” (and state) mieści się pomiędzy “-dowolny_ciąg_znaków” a “30”.

Znak “%” oznacza dowolny ciąg znaków. Wrzuciłem go też do “state” gdyż podanie np. od -2000 do 30 nie wyświetlało mi wartości -1000. Sry ale z SQL miałem styczność dość dawno i nie będę zagłębiał się dlaczego to nie działa :wink:

Wartość “30” czy też “th16” (bo moje encje od czujników to np.: sensor.th16_4_temp, switch.sonoff_th16_3, sensor.sonoff_th16_2_temp można dowolnie zmieniać.

Np zmiana z

%th16%

na

%th16%temp

wyświetli mi encje które zawierają th16 ale bezwzględnie kończą się na “temp”

Efekt tego zapytania wygląda tak:

  1. Woda nie może mieć zero lub -1000 stopni więc usuńmy te rekordy:

DELETE FROM “states” where entity_id like “%th16_temp” and state between “-%” and “2”

Usunąłem tutaj WSZYSTKIE zapisy które w tabeli “states” w kolumnie “entity_id” zaczynały się dowolnym ciągiem znaków ALE kończyły się dokładnie na “th16_temp” a ich wartość w kolumnie “state” wynosiła między “minus dowolny ciąg znaków” a “2”.

Otrzymałem komunikat

Rows modified: 2

  1. Sprawdzam sobie za pomocą

SELECT * FROM “states” where entity_id like “%th16%” and state between “-%” and “30”

i widzę wynik

Empty result set.

a mój wykres nie zawiera już przekłamanych wartości

image

4 polubienia