Korekta błędnej temperatury w bazie danych Domoticz

Jakiś czas temu zorientowałem się, że odczytywana temperatura ze sterownika Vaillant jest zaniżona o 1,5℃ ponieważ sam kiedyś ustawiłem taką korektę i o tym zapomniałem. Przez jakiś czas Domoticz zapisywał w bazie zaniżoną temperaturę co spowodowało u mnie dyskomfort psychiczny.

Znalazłem sposób na poprawę tej sytuacji poprzez edycję zapisanej temperatury bezpośrednio na bazie danych systemu Domoticz.

Sposób edycji bazy danych opisałem wcześniej w artykule pod tytułem Łatwa edycja bazy danych systemu Domoticz

Przedstawie tu, jak w określonym zakresie czasu „podnieść” w bazie danych temperaturę o 1,5℃.

Zaczynamy od zrobienia kopii zapasowej bazy danych aby mieć szansę cofnąć się do momentu przed potencjalnym zepsuciem sobie bazy danych 😉

Według tej instrukcji otwieramy bazę danych do edycji.

Potrzebujemy idx urządzenia, odpowiedzialnego za temperaturę. Można go wyszukać na liście urządzeń w Domoticz w menu Konfiguracja > Urządzenia lub odszukując go w tabeli bazy danych o nazwie „Temperature” filtrując pole „Name” i odczytując pole „DeviceRowId”

W moim przypadku idx=201 a data i godzina do której chcę skorygować temperaturę to 2018-07-10 22:40:01.

Mając te dane mogę teraz napisać zapytanie SQL, które taką zmianę wykona hurtowo na wszystkich rekordach do daty 2018-07-10 22:40:01.

Będziemy modyfikować (podnosić o 1,5℃) pole tabeli „Temperature” o tej samej nazwie „Temperature”  gdzie DeviceRowID=201 (DeviceRowID to idx) i „Date” < 2018-07-10 22:40:01

Takie zapytanie powinno wyglądać tak:

UPDATE Temperature
SET Temperature = Temperature + 1.5
WHERE DeviceRowID = 201 AND Date < '2018-07-10 22:40:01'

Wklejamy go teraz do programu DB Browser for SQLite w zakładce Execute SQL

i wykonujemy go za pomocą przycisku „Play”.

Poprawnie wykonane zapytanie w okienku poniżej powinno zwrócić odpowiednie informacje:

Query executed successfully: UPDATE Temperature
SET Temperature = Temperature + 1.5
WHERE DeviceRowID = 201 AND Date < '2018-07-10 22:40:01' (took 1ms, 51 rows affected)

Tym sposobem zmieniliśmy dane w dziennych raportach. Jeśli chcemy zmienić także w historycznych zapisach tygodniowych, miesięcznych i rocznych to musimy wykonać dodatkowe zapytanie na innej tabeli, o nazwie „Temperature_Calendar”. Tu musimy zmodyfikować kilka wartości, gdyż ta tabela przechowuje temperaturę minimalną, średnią i maksymalną – wszystkie te wartości musimy podnieść o 1,5℃.

UPDATE Temperature_Calendar
SET Temp_min = Temp_min + 1.5, Temp_max = Temp_max + 1.5, Temp_avg = Temp_avg + 1.5 
WHERE DeviceRowID = 201 AND Date < '2018-07-10 22:40:01'

Wykonujemy to zapytanie tak samo jak poprzednie i gotowe, zrobiliśmy korektę temperatury z błędnie raportującego czujnika i możemy być dumni z prawidłowych wartości w bazie danych Domoticz i na wykresach.