Frage zu DBlog, Homematic Geräten und State für Plots

Begonnen von devil77, 05 November 2014, 13:39:08

Vorheriges Thema - Nächstes Thema

devil77

Bin gerade dabei von Filelog auf dblog umzusteigen und habe ein Kleines Problem. Von meinen Homematic Geräten (HM-CC-RT-DN und HM-WDS10-TH-O) wollte ich nur den state loggen lassen. Funktioniert ansich ohne Probleme nur das in der Datenbank die Werte flasch eingeordnet werden oder besser gesagt es werden nicht beide Werte richtig eingeordnet. Event ist state mit z.Bsp. T:14.8 H: 75, Reading ist T, Value ist 14.8 H und Unit 75.
Gibt es dazu eine Lösung oder führt der Weg nur über getrenntes loggen der Werte aus dem state?

devil77

Ich versuche meine Frage selber zu Beantworten bzw. für mich zu lösen mit dem was ich im Forum gefunden habe.
Mit meinem Unwissen habe ich in der 93_Dblog.pm folgendes ergänzt

Code für CUL_HM vorher

# CUL_HM
  elsif ($type eq "CUL_HM") {
    # remove trailing % 
    $value=~ s/ \%$//;
  }


Code für CUL_HM nacher

# CUL_HM mit state
  elsif ($type eq "CUL_HM") {
if($event =~ m(T:.*)) { $reading= "state"; $value= $event; }
else {
# remove trailing % 
    $value=~ s/ \%$//; }
  }


Damit schreibt er mir jetzt in der Datenbank unter reading state und den Wert in Value. So wie ich es gerne möchte.
Meine zugehörige gplot Datei zum erstellen der Diagramme sieht dann für Temperatur und Luftfeuchte so aus


set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid
set ylabel "Luftfeuchte"
set y2label "Temperatur"

#DbLog <SPEC1>:state:::$val=~s/.*T..([\d.]*).*/$1/eg
#DbLog <SPEC1>:state:::$val=~s/.*H..([\d.]*).*/$1/eg

plot "<IN>" using 1:2 axes x1y2 title 'Temperatur' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Luftfeuchte' ls l2 lw 1 with lines


Dann habe ich den zugehörigen Graph für Temperatur und Luftfeuchte.
Mit dem eintragen der state Werte spare ich mir jede Menge Logeinträge in die Datenbank, z. Bsp. beim Außensensor genau die Hälfte weil nur ein Wert erfasst werden muss.
Für Verbesserungsvorschläge bin ich gerne offen da ich nicht genau weiß ob das anpassen der 93_DbLog.pm so "sauber" ist.