SQL History-Datenbank
Auf dieser Seite kann die History-Datenbank mit SQL-Anweisungen bearbeitet werden. Dabei können alle Felder der Datensätze angezeigt werden, Inhalte geändert und Datensätze gelöscht werden.
Dazu werden die SQL-Anweisungen SELECT, UPDATE und DELETE benutzt.
Die Datenbank beinhaltet für jeden Datensatz folgende Felder:
TimeStamp = Zeit in Sekunden seit 1.1.1970, wird als Datum und Uhrzeit eingegeben und für die Ausgabe auch in Datum und Uhrzeit umgerechnet. Der Zeitraum wird in der Abfrage nicht explizit angegeben, sondern automatisch aus den ausgefüllten Eingabefeldern für den Zeitraum eingefügt.
ObjName = Name eines Objekts oder einer Variablen
ValType = Typ bei Objekten (N=numerisch, U=Zustand (z.B. aus/an, offen/geschlossen)
Typ bei Variablen, Spezieller Code z.B. 3=Temperatur, 4=Luftfeuchtigkeit
Value = numerischer Wert (wichtig wenn in Bedingungen kleiner/grösser abgefragt wird)
ValStr = Wert als Text, bei Zahlen mit Komma als Dezimalzeichen, bei Typ U Text z.B. aus/an
Source = Quelle, von der der Wert gesetzt wurde
1 = Wertänderung über Programmierung
2 = Hardware-Bedienung
3 = Status-Meldung von Hardware
4 = Zeittabelle
5 = spezielle Zeitkontrolle (nur c-comatic)
6 = Fensterkontakt (durch Anweisung TEMPERATURABSENKUNG)
7,8 = externer Zugriff über Webserver oder App
9 = aus Wertedatei (z.B. bei Programmstart)
10 = Temperatursteuerung über binäre Schaltaktoren (z.B. Fussbodenheizung)
State.= Status des Datensatzes, Wert kann Ziffer oder Buchstabe sein, wenn ein "X" in State steht werden diese Datensätze bei den Historyansichten im Menüpunkt Projekt ignoriert.
Anweisung SELECT:
Mit dieser Anweisung werden Datensätze aus der Datenbank angezeigt.
Die Syntax ist:
select * from history where <Bedingungen> order by <Feldname>
Bedingungen können mit or und and verknüpft werden, es können Klammern zur Verschachtelung benutzt werden, der Operator order by ist optional, wenn dieser nicht angegeben wird erfolgt die Sortierung immer nach Zeit.
SQL- Anweisungen sind nicht case-sensitive. es kann also Klein und/oder Grossschreibung benutzt werden. Für Text-Werte in Bedingungen muss die exakte Schreibweise benutzt werden, Objektnamen und Variablennamen müssen grundsätzlich immer in doppeltem Hochkomma und Grossbuchstaben geschrieben werden.
Beispiel:
select * from history where objname = "WTWOHNEN" and value < 21 order by value
Diese Anweisung bewrikt, dass alle Datensätze des Objekts WTWOHNEN angezeigt werden, bei denen der Wert kleiner 21 ist, die Sortierung erfolgt hier nach Wert, nicht nach Zeit,
Anstelle des Operators * können auch die Feldnamen die angezeigt werden sollen getrennt durch Komma angegeben werden, dann muss allerdings immer TimeStamp als erstes Feld angegeben werden damit die Zeit in der Ausgabe korrekt ausgegeben wird.
Beispiel: select TimeStamp, ObjName, ValueStr, Source from history where ObjName = "LICHTDIELE"
Hier werden nur die angegebenen Felder aller Datensätze im ausgewählten Zeitraum angezeigt.
Anweisung UPDATE:
Mit dieser Anweisung werden Werte in den Datensätzen geändert.
Die Syntax ist:
update history set <Feldname> = "Neuer Wert" where <Bedingungen>
Bedingungen können mit or und and verknüpft werden, es können Klammern zur Verschachtelung benutzt werden.
Beispiel:
update history set State = "X" where ObjName = "AUSSENTEMPERATUR" and Value < 0
Mit dieser Anweisung wird das Feld State in allen ausgewählten Datensätzen auf "X" gesetzt.
Anweisung DELETE:
Mit dieser Anweisung werden Datensätze der Datenbank gelöscht..
Die Syntax ist:
delete from history where <Bedingungen>
Beispiel:
delete from history where ObjName = "AUSSENTEMPERATUR" and Value > 60
Mit dieser Anweisung werden alle Werte des Objekts AUSSENTEMPERATUR gelöscht bei denen ein Wert > 60 eingetragen ist. Eine solche Aktion kann z.B sinnvoll sein wenn ein defekter Sensor falsche Werte gesendet hat..
Bitte unbedingt beachten:
Bei Benutzung der Anweisung SELECT können viele tausend Datensätze sehr schnell gelesen werden.
Bei den Anweisungen UPDATE und DELETE ist jedoch unbedingt zu beachten, dass die Ausführung bei grossen ausgewählten Zeiträumen bzw. Datenmengen sehr lange dauern kann (je nach Anzahl der Datensätze auch länger als 10 Minuten). Während der Ausführung ist kein Zugriff auf die Datenbank möglich, es können in dieser Zeit auch keine neuen Daten in die Datenbank geschrieben werden.
Wenn grössere Zeiträume bearbeitet werden müssen, sollte das daher möglichst in mehreren einzelnen Schritten mit kurzen Zeiträumen erfolgen.
.
|