Guten Abend,
ich verwende DbRep zum Löschen von Einträgen, die älter als 31 Tage sind:
defmod Loeschen31TageHeizungRegelm DbRep WhngDB
attr Loeschen31TageHeizungRegelm allowDeletion 1
attr Loeschen31TageHeizungRegelm comment 09.03.2018: löscht Daten der Heizungs-, Solaranlage älter als 31 Tage
attr Loeschen31TageHeizungRegelm devStateIcon connected:10px-kreis-gelb .*disconnect:10px-kreis-rot .*done:10px-kreis-gruen
attr Loeschen31TageHeizungRegelm device Heizung_Solar
attr Loeschen31TageHeizungRegelm executeAfterProc set WhngDB reopen
attr Loeschen31TageHeizungRegelm executeBeforeProc set WhngDB reopen 1200
attr Loeschen31TageHeizungRegelm reading Temp-Abgas-Ist,Brennerstatus,Fehler%,Neigung,Niveau,Oelverbrauch-Codierung,Solar-Waermemenge,Geraetekennung,state,state_party,state_spar,UpdateTime,SystemZeit,HeizkreispumpeM2,Sammelstoerung,Solar-Betriebsstunden,Solarpumpe,Speicherladepumpe,Temp-Kessel-Ist,Temp-Kessel-Soll,Temp-Kollektor-Ist,Temp-Raum-Soll,Temp-Ruecklauf-Ist,Temp-Speicher-Ist,Temp-Vorlauf-Ist,Zirkulationspumpe
attr Loeschen31TageHeizungRegelm room DB
attr Loeschen31TageHeizungRegelm timeOlderThan 2678400
setstate Loeschen31TageHeizungRegelm Warning - delEntries finished, but command message after delEntries appeared
setstate Loeschen31TageHeizungRegelm 2019-06-24 03:00:01 Heizung_Solar--Temp-Abgas-Ist/Brennerstatus/Fehler//Neigung/Niveau/Oelverbrauch-Codierung/Solar-Waermemenge/Geraetekennung/state/state_party/state_spar/UpdateTime/SystemZeit/HeizkreispumpeM2/Sammelstoerung/Solar-Betriebsstunden/Solarpumpe/Speicherladepumpe/Temp-Kessel-Ist/Temp-Kessel-Soll/Temp-Kollektor-Ist/Temp-Raum-Soll/Temp-Ruecklauf-Ist/Temp-Speicher-Ist/Temp-Vorlauf-Ist/Zirkulationspumpe----DELETED_ROWS_HISTORY-- 8560
setstate Loeschen31TageHeizungRegelm 2019-06-24 03:00:01 afterdelEntries_message Reopen executed.
setstate Loeschen31TageHeizungRegelm 2019-06-24 03:00:01 state Warning - delEntries finished, but command message after delEntries appeared
Im attr reading gibt es innerhalb der durch Kommas getrennten Aufzählung ein reading 'Fehler%' weil es die readings Fehler01, Fehler02 usw. gibt. Wird diese oben gezeigte Definition ausgeführt, 'wirkt' der Wildcard % nicht. Erzeuge ich ein neues DbRep, das im attr reading nur 'Fehler%' enthält, scheint es zu funktionieren.
Was mache ich falsch? Danke.
Wolfgang
Hallo Wolfgang,
die Commandref zum Attribut "reading" sagt:
reading - Abgrenzung der DB-Selektionen auf ein bestimmtes oder mehrere Readings sowie exkludieren von Readings. Mehrere Readings werden als Komma separierte Liste angegeben. SQL Wildcard (%) wird in einer Liste als normales ASCII-Zeichen gewertet.
Bedeutet, es wird nach einem String "Fehler%" gesucht.
LG,
Heiko
Hallo Heiko,
danke für die schnelle Antwort. Den Satz habe ich in der Commandref gelesen, aber dann falsch interpretiert. Im Klartext heißt das, dass in einer redings Liste keine Wildcards möglich sind. Richtig?
Danke
Wolfgang
Ja, richtig Wolfgang.
Du könntest das Device kopieren und dort das reading nur auf "Fehler%" setzen was deinen Zweck dann erfüllen würde.
LG,
Heiko
Aber ich nehme es mal auf meine ToDo Liste. Vielleicht habe ich eine Idee die ich in einem kommenden Release von DbRep umsetzen kann damit das dann auch funktioniert. :)
Grüße,
Heiko
Hallo Wolfgang,
ich habe mir meine ToDo bzgl. DbRep vorgenommen und angefangen deine Anregung umzusetzen.
Zunächst ist die Möglichkeit SQL-Wildcards in Listenangaben anzugeben, für das attr device gegeben.
Näheres hier: https://forum.fhem.de/index.php/topic,53584.msg971175.html#msg971175
In einem zweiten Schritt nehme ich mir das Attr readings vor, um welches es dir ja eigentlich ging.
Grüße,
Heiko
Hallo Wolgang,
in einer Reading-Liste sind nun auch SQL Wildcards möglich und werden als solche ausgewertet -> https://forum.fhem.de/index.php/topic,53584.msg971529.html#msg971529
LG