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?
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.