Passen Sie die Werte in der Domoticz-Datenbank an

Passen Sie die Werte in der Domoticz-Datenbank an

8. Mai 2021 6 Von Björn Meijer

Domoticz läuft auf einer SQLite3-Datenbank. Um Änderungen an der Datenbank vorzunehmen, muss sqlite3 installiert sein.

Bevor Sie Änderungen an der Datenbank vornehmen, sollten Sie Domoticz vorübergehend stoppen und eine Sicherungskopie der Datenbank erstellen.

Um Domoticz zu stoppen, geben Sie den folgenden Befehl im Terminal ein:

sudo-Dienst domoticz.sh beendet

Um eine Sicherungskopie der Domoticz-Datenbank zu erstellen, geben Sie die folgenden Befehle ein:

cd ~/domoticz
cp domoticz.db domoticz.db.bak

Starten Sie SQLite3 und melden Sie sich mit dem folgenden Befehl bei der Domoticz-Datenbank an:

sqlite3-domoticz.db

Praktische Befehle, wenn Sie Änderungen an der Datenbank vornehmen möchten.
.header-on
.Fashion-Kolumne
.Tabellen
.entsorgen

.Kopfzeile an

Aktiviert oder deaktiviert die Anzeige von Kopfzeilen

Die Spaltenbeschriftungen, die in den ersten beiden Ausgabezeilen erscheinen, können mit dem Punktbefehl „.header“ ein- und ausgeschaltet werden. Im folgenden Beispiel sind die Spaltenbezeichnungen deaktiviert.

sqlite> .headers off sqlite> SELECT * VON Ärzten; 210 dr. John Linga MD211Dr. Peter Halle MBBS 212 Dr. Ke Gee MD213Dr. Pat Fay MD

Hier im obigen Beispiel wird keine Kopfzeile für die Arzttabelle angezeigt. Wenn wir die Kopfzeile der Tabellenspalten sehen möchten, sollte der folgende Befehl ausgeführt werden.

sqlite> .headers auf sqlite> SELECT * VON Ärzten; arzt_id arztname grad ---------- -------------- ---------- 210 dr. John Linga MD211Dr. Peter Halle MBBS 212 Dr. Ke Gee MD213Dr. Pat Fay MD

.Fashion-Kolumne

Das Programm sqlite3 kann die Ergebnisse einer Abfrage in acht verschiedenen Formaten anzeigen: „csv“, „column“, „html“, „insert“, „line“, „list“, „tabs“ und „tcl“. Mit dem Befehl .Mode es kann ausgewählt werden, wie das Ausgabeformat angezeigt wird.

Wenn der Modus eingestellt ist als Säule, wird jeder Datensatz in einer separaten Zeile angezeigt, wobei die Daten in Spalten angeordnet sind, um die Lesbarkeit zu verbessern.

sqlite> .mode Spalte sqlite> select * from table1; wählen Sie * aus Tabelle1; 1 Beschreibung1 2 Beschreibung2

.Tabellen

Gibt alle Tabellen in der Datenbank zurück.

sqlite> .tables BackupLog MobileDevices Scenes Cameras MultiMeter SetpointTimers CamerasActiveDevices MultiMeter_Calendar SharedDevices CustomImages MySensors Temperature DeviceStatus MySensorsChilds Temperature_Calendar DeviceToPlansMap MySensorsVars TimerPlans EnoceanSensors Notifications Timers EventMaster Percentage ToonDevices EventRules Percentage_Calendar UV Fan Plans UV_Calendar Fan_Calendar Preferences UserSessions Floorplans PushLink UserVariables Hardware Rain Users LightSubDevices Rain_Calendar WOLNodes LightingLog SceneDevices Wind Meter SceneLog Wind_Calendar Meter_Calendar SceneTimers ZWaveNodes

.entsorgen

Sichert die Datenbank in einem SQL-Textformat. Wenn der Tabellenname angegeben ist, werden nur Tabellen ausgegeben, die dem LIKE-Muster TABLE entsprechen.

sqlite> .dump Fan PRAGMA Foreign_keys=OFF; TRANSAKTION BEGINNEN; CREATE TABLE [Fan] ([DeviceRowID] BIGINT(10) NOT NULL, [Speed] INTEGER NOT NULL, [Date] DATETIME DEFAULT (datetime('now','localtime'))); CREATE INDEX f_id_idx auf Fan(DeviceRowID); CREATE INDEX f_id_date_idx auf Fan(DeviceRowID, Date); BEGEHEN;

In der Tabelle „Temperatur“ werden die Temperaturen des aktuellen Tages gespeichert. Die historischen Werte werden in der Tabelle „Temperature_Calendar“ gespeichert.

Die Aussage SELECT * FROM Temperatur_Kalender; zeigt alle Temperaturen in der Tabelle „Temperature_Calendar“.

Die Aussage SELECT * FROM Temperature_Calendar WHERE [Datum] = '2021-05-04'; die Temperaturen vom 4. Mai 2021 zulassen.

Wenn Sie alle Temperaturen für den 5. Mai 2021 sehen möchten, verwenden Sie die Anweisung SELECT * FROM Temperature_Calendar WHERE [Datum] < '2021-05-04';

Um die Werte eines bestimmten Geräts zurückzugeben, benötigen wir die korrekte DeviceRowID. Sie finden diese in der Domoticz-Oberfläche, indem Sie die Diagramme öffnen. In der Adressleiste Ihres Browsers sehen Sie die ID (idx) des Geräts. Mit der unten stehenden Aussage können Sie sich die Temperaturwerte des jeweiligen Gerätes anzeigen lassen.

SELECT * FROM Temperature_Calendar WO [DeviceRowID] = 8;

Alte Werte können mit folgender Anweisung aus der Datenbank entfernt werden:

DELETE FROM Temperature_Calendar WHERE [DeviceRowID] = 8 AND [Date] < '2021-05-04';

Mit der UPDATE-Anweisung können Sie bestimmte Werte ändern. Angenommen, wir möchten die maximale Temperatur vom 4. Mai 2021 des Geräts mit idx 8 von 20,9 auf 12,3 anpassen. Dazu verwenden wir die Aussage:

UPDATE Temperature_Calendar SET [Temp_Max] = 12.3 WO [DeviceRowID] = 8 AND [Date] = '2021-05-04';

Wenn Sie die maximalen, minimalen und durchschnittlichen Temperaturen vom 4. Mai 2021 mit einer Anweisung anpassen möchten, verwenden Sie die folgende Anweisung:

UPDATE Temperature_Calendar SET [Temp_Max] = 12,3, [Temp_min] = 5,3, [Temp_avg] = 7,5 WO [DeviceRowID] = 8 AND [Date] = '2021-05-04';

Um SQLite3 zu beenden, verwenden Sie den Befehl .Verlassen Danach kehren Sie zum Terminal zurück.

Starten Sie Domoticz neu, um das Ergebnis der Änderungen mit dem folgenden Befehl anzuzeigen:

sudo-Dienst domoticz.sh starten