FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andre070 am 13 September 2017, 19:57:36

Titel: Wert in SQLite und DBLog lässt sich nicht löschen?
Beitrag von: andre070 am 13 September 2017, 19:57:36
Hallo zusammen,

ich habe ein Quobino Einbauthermostat in Fhem eingerichtet geloggt wird mit Dblog auf SQLITE nach Anleitung des Wiki, was auch bestens funktioniert!


Leider, warum auch immer, meldet das Thermostat  2-3 mal am Tag einen fehlerhaften Eintrag für den Energieverbrauch.
Warum muss ich mal weiter erforschen.

In der Zeit hat KEIN Schaltvorgang stattgefunden, also kein Verbraucher wurde über das Thermostat eingeschaltet.


Hier ein Beispiel:


2017-09-12 04:37:43|Thermostat_HZ_Klein|ZWAVE|energy:  4.3 kWh|energy|4.3|kWh
2017-09-12 04:37:45|Thermostat_HZ_Klein|ZWAVE|energy:  13111.5 kWh|energy|13111.5|kWh
2017-09-12 04:57:34|Thermostat_HZ_Klein|ZWAVE|energy:  4.3 kWh|energy|4.3|kWh
2017-09-12 05:02:35|Thermostat_HZ_Klein|ZWAVE|energy:  4.3 kWh|energy|4.3|kWh


Im Moment dachte ich mir, bis das endgültig geklärt ist, lösche das automatisch über ein Script in SQLite einmal am Tag:

delete from HISTORY where DEVICE='Thermostat_HZ_Klein' and READING='energy' and VALUE>100;

Das geht nicht. Ich kann Werte löschen bis genau 99, ab >100 bzw. scheinbar dreistellig geht es nicht mehr, es kommt keine Fehlermeldung von SQLITE zurück.

Nach einem erneuten Select, ist der Wert immer noch vorhanden.


Ich kann diesen nur löschen mit:

delete from HISTORY where DEVICE='Thermostat_HZ_Klein' and READING='energy' and VALUE=13111.5;


Meine Vermutung ist, dass das Feld für den Wert vielleicht gar nicht so groß ist?

Ich kenne mich aber mit SQL nicht aus.


Ich wäre für einen Tipp sehr dankbar!

Aktuell wird dadurch natürlich das ganze Chart für die Auswertung "zerfetzt".


Andre

Titel: Antw:Wert in SQLite und DBLog lässt sich nicht löschen?
Beitrag von: Frank_Huber am 13 September 2017, 20:11:35
Das hängt glaube ich damit zusammen wie er selektiert. Ob das als Text oder Zahl gewertet wird.
Ich muss mal suchen, hab mir das irgendwo gespeichert.
hatte das Problem vor einer Weile auch schon mal.

EDIT:
"select * from HISTORY where DEVICE like "Thermostat_HZ_Klein" and READING = "energy" and convert(NUMERIC, VALUE) >1000;"
Titel: Antw:Wert in SQLite und DBLog lässt sich nicht löschen?
Beitrag von: andre070 am 13 September 2017, 22:19:46
Hallo Frank,

ok, das werde ich mal probieren. Habe gerade eben das log mit "=" bereinigt.

Werde morgen aber wieder Werte drin haben.


Habe es dennoch mal ausgeführt und bekomme das zurück:

Error: no such column: NUMERIC

Titel: Antw:Wert in SQLite und DBLog lässt sich nicht löschen?
Beitrag von: Frank_Huber am 13 September 2017, 22:34:25
Hi,
Ich Kuck mir das nochmal an. Kann sein dass das NUMERIC anderst muss.
Ist schon ne Weile her dass ich das gemacht hab...

EDIT:
Ich lag etwas falsch, das convert heisst  bei SQL "CAST". so gehts:
select * from HISTORY where DEVICE like "%_rH" and READING = "rH" and cast(VALUE as Integer) >100;

also in deinem Fall:
select * from HISTORY where DEVICE = "Thermostat_HZ_Klein" and READING = "energy" and cast(VALUE as Integer) >1000;
Titel: Antw:Wert in SQLite und DBLog lässt sich nicht löschen?
Beitrag von: andre070 am 17 September 2017, 18:30:16
So, heute hatte ich wieder den Fall!

Mit dem "cast" hat es hervorragend Funktioniert!

Danke :-) :-)