dbRep variabler Reading-Name

Begonnen von pqrst, 05 Januar 2017, 16:51:58

Vorheriges Thema - Nächstes Thema

pqrst

Hallo Gemeinde,

vielleicht kann mir jemand bei meinem Anfängerproblem unter die Arme greifen. Über das dbRep-Modul möchte ich mir täglich die Laufzeiten meiner Heizung berechnen lassen um diese dann zu loggen. Soweit so gut, nur ändert sich bei jeder Abfrage der Name des Readings. Für spätere Datenbankabfragen wäre es aber einfacher immer den gleichen Namen des Readings zu haben. Also wollte ich dies über ein UserReading lösen - und damit haben die Problem begonnen.
Wie kann ich ein UserReadings basteln, dass auf variablen Reading-Namen reagiert?

Name des Reading: <2017-01-04_07-39-53__counterHoursHotWater__DIFF__all_between_timestamps>

Meine Definition ist folgende:

define WP.counter.Water.day DbRep logdb
attr WP.counter.Water.day DbLogInclude count
attr WP.counter.Water.day reading counterHoursHotWater
attr WP.counter.Water.day timeDiffToNow 86400
attr WP.counter.Water.day userReadings count { ReadingsVal("WP.counter.Water.day",$READING ,0) } ##Das hat nicht funktioniert :(
define WP.counter.at at *23:59:59 set WP.counter.* diffValue

Für jede Hilfe bin ich dankbar, hab es nicht so mit Perl!

VG
Marco

rabehd

Genau auf diese Frage suche ich auch eine Antwort
Auch funktionierende Lösungen kann man hinterfragen.

welle

Auch ich habe das gleiche Problem.
Es muß doch eine Möglichkeit geben, per ReadingsVal den Wert auszulesen. Eine Idee wäre ja per RegEx aber das funktioniert ja leider auch nicht.

DS_Starter

Hallo zusammen,

Das was ihr wollt könnt ihr wahrscheinlich über den Zwischenschritt eines Dummies erreichen. Es gibt im Wiki zu DbRep einen Beitrag https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Reading_von_DbRep_nach_Dummy_.C3.BCbertragen

Die in dem Dummy erzeugten Readings können dann immer den gleichen von euch gewählten Namen erhalten, entsprechend weiterverarbeitet und geloggt werden.
Probierte Mal aus ... Sollte klappen um euer Ziel zu erreichen.

VG
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

welle

Der Tipp hat geholfen, Danke :)
Lösung:
1. Ein Dummy für das Reading anlegen, das dann später in anderen Funktionen per ReadingsVal ausgelesen werden kann.

#dummy für das Reading aus dbrep
define Dum.DbAbfrage dummy
attr Dum.DbAbfrage room DbLog


2.mit einem Notify auf dem dbRep device, das Ergebnis der Abfrage in dem vorher erstellten Dummy mit brauchbaren Reading-Namen sichern
#notify damit der Wert aus repRegen ind ein brauchbares Reading kommt
define n.repRegen notify repRegen:(\d).* { fhem "setreading Dum.DbAbfrage SummeWasser"." $EVTPART1"}
attr n.repRegen room DbLog


Jetzt kann ich das Reading problemlos auslesen

pqrst


rabehd

@DS-Starter: Ich bin kurz vor dir auf den Hinweis gestoßen und war gerade beim Probieren.

Hier mein Fazit bei FHEM und Datenbank auf einen Raspberry 2 B.
Die Bildung des Durchschnittes dauert meist 12 Sekunden, ab und an auch 22.
Während der Zeit wird das System ganz schön langsam. Ich habe deshalb diese Lösung wieder deaktiviert.

Meine Lösung ist jetzt: https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen
Zitatgreift auf beliebige File- oder DbLogs zurück
Auch funktionierende Lösungen kann man hinterfragen.