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.

Łatwa edycja bazy danych systemu Domoticz

Konfiguracja systemu Domoticz, oraz wszelkie zgromadzone dane z czujników, zdarzenia, itp. znajdują się w pliku bazy danych o nazwie domoticz.db. Jest to relacyjna baza danych w popularnym formacie SQLite.

Poniżej przedstawię jak za pomocą wygodnego narzędzia o nazwie DB Browser for SQLite edytować dane w bazie Domoticz.

Uwaga! Zmiany bezpośrednio na bazie danych mogą wywołać nieoczekiwane błędy w działaniu systemu Domoticz. Zmiany na bazie są nieodwracalne i zawsze przed edycją zrób kopię pliku domoticz.db!

1. Instalujemy na Raspberry Pi program DB Browser for SQLite poleceniami w konsoli:

sudo apt update
sudo apt install sqlitebrowser

2. Wchodzimy w środowisko graficzne Raspbiana (podpięty monitor lub zdalnie przez VNC).
3. Wybieramy z menu Akcesoria > DB Browser for SQLite.

4. Tak wygląda uruchomiony program DB Browser for SQLite.

5. Otwieramy plik bazy danych poprzez menu File > Open Database i odszukanie go w systemie plików. Najczęściej instalacja jest w /home/pi/domoticz (moja instalacja Domoticz jest w /opt/domoticz, stąd różnica na obrazku). Klikamy „Otwórz”

6. Plik zostaje otwarty i widzimy tabele bazy danych. Wybieramy zakładkę „Browse Data” aby przejść do widoku zawartości tabeli.

7. Wybieramy tabelę, którą chcemy przeglądać lub edytować.

8. Edytujemy w sposób przedstawiony kolejno strzałkami poniżej.

Edycja z poziomu bazy danych może być niebezpieczna, dlatego zalecam ostrożność. Ten sposób daje nam jednak możliwość edycji danych, których z poziomu Domoticza nie można zmienić. Bardziej zaawansowani użytkownicy znający się na bazach danych mogą odkryć kolejny system zdarzeń i automatyzacji gdyż SQLite wspiera triggery 😉