FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: pqrst am 05 Januar 2017, 16:51:58

Titel: dbRep variabler Reading-Name
Beitrag von: pqrst am 05 Januar 2017, 16:51:58
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
Titel: Antw:dbRep variabler Reading-Name
Beitrag von: rabehd am 05 April 2017, 16:12:02
Genau auf diese Frage suche ich auch eine Antwort
Titel: Antw:dbRep variabler Reading-Name
Beitrag von: welle am 20 April 2017, 13:02:25
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.
Titel: Antw:dbRep variabler Reading-Name
Beitrag von: DS_Starter am 20 April 2017, 14:25:24
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
Titel: Antw:dbRep variabler Reading-Name
Beitrag von: welle am 22 April 2017, 11:04:04
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
Titel: Antw:dbRep variabler Reading-Name
Beitrag von: pqrst am 22 April 2017, 20:00:53
Super, vielen Dank!

Marco
Titel: Antw:dbRep variabler Reading-Name
Beitrag von: rabehd am 25 April 2017, 13:38:44
@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 (https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen)
Zitatgreift auf beliebige File- oder DbLogs zurück