Morgen,
habe im Forum gesucht aber nix gefunden. Ich habe jetzt auch auf dbLog, sqlite umgestellt. Vorgegangen nach Anleitung in fhem-wiki.
Was mich ein wenig stört ist dass das Feld 'VALUE' als varchar angelegt wird. Das macht natürlich Probleme bei der Sortierung wenn man Temperaturwerte auf- oder asteigend sortiert. Daher meine Frage: könnte man dieses Feld auch als float anlegen, oder haut's dann alles durcheinander? Ich könnte es ja mal probieren, aber da jetzt erstmal soweit alles läuft dachte ich ich frag mal lieber...
hier das besagte create:
CREATE TABLE 'history' (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
es gibt in fhem nicht nur numerische values von readings die gespeichert werden wollen, somit mach die festlegung von value auf float generell keinen sinn.
wenn du natürlich eine extra log-db nur für temperaturwerte hast kannst du das bei dir auf float ändern
Zitat von: chris1284 am 15 Februar 2016, 06:27:18
kannst du das bei dir auf float ändern
Ich würde es trotzdem nicht tun.
Bis in ein paar Wochen hast du das vergessen und irgendwann treten dann "ganz plötzlich" merkwürdige Fehler auf.
ok Danke.
Bin mir sicher dass ich nur numerische Daten logen werde, also werde ich es mal versuchen,sobald ich sicher raus habe wie ich wirklich nur die Daten logge die ich möchte.
Aber was anderes. dbLog ist nicht sonderlich dokumentiert finde ich. Bei set deleteOldDays nehme ich an es erwartet Anzahl der zu löschenden Tage als Parameter, aber was macht/erwartet reduceLog?
Edit: hab's gefunden, alles klar
Zitat von: ernst1024 am 15 Februar 2016, 13:26:25
sobald ich sicher raus habe wie ich wirklich nur die Daten logge die ich möchte.
recht einfach, hier mal mein beispiel:
ein notify welches bei neuen devices immer das logging in die db abstellt
define nft_globalDefined global:DEFINED.* attr $EVTPART1 DbLogExclude .*
dann gehe ich zu den devices die ich loggen will , entferne das attribut und arbeite mit DbLogInclude / DbLogExclude um redings ins logging aufzunehmen.
wenn du zb nur temprature mit rein nimmst solllte nur die temp gelogged werden
wenn du dann noch event-min-interval und event-on-change-reading rein nimmst kannst du auch die masse der einträge beinflussen
Und noch viel einfacher ist das ganze mit klarer Benennung der Devices und einer gut durchdachten Regex in der DbLog Definition.
mi meinen devices habe ich da auch keine Probleme. Das sind 3 Temeperaturfühler und da habe ich gesorgt dass die readings 'temperature' heissen und im folgenden auch gelogt werden. Probleme habe ich noch mit den readings aus dem weather module. Hier möchte ich auch nur temperature, Luftdruck, Luftfeuchte und Wind loggen. Das ist kein Problem bei temperature und humidity da diese jeweils nur einmal vorkommen. Wind kommt zwar ein paarmal vor lässt sich aber eingrenzen.
Bleibt als einziges Problem wie isoliere ich 'pressure' aus den readings: pressure, pressure_trend, pressure_trend_sym, pressure_trend_txt? Irgendwas mit regexp schätze ich mal aber noch keinen Plan wie ..... Evtl auch über den Umweg mit readingProxy und dass dann loggen......
define logdb DbLog ./db.conf .*:(temperature|pressure|humidity|wind_speed|wind_chill).*