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.