Erneuten Logeintrag mit aktuellen Status erzwingen. Geht das?

Begonnen von Zephyr, 02 April 2014, 22:01:04

Vorheriges Thema - Nächstes Thema

Zephyr

Hallo zusammen,

ich möchte einen Plot erzeugen, der ein Modul auswertet (ROOMMATES), dessen Status sich nur selten ändert. In diesem Fall ist es der Anwesenheitsstatus von einzelnen Bewohnern. Da sich der aber nur alle paar Stunden ändert, gibt es in den Tagesplots Lücken am Anfang und Ende des Tages. Siehe auch das angehängte Bild eines beispielhaften Tages. Am Anfang und Endes des Tages schlafe ich natürlich. Aber da in dem Ausschnitt dieses Tages kein Wert in der Datenbank steht, zeigt der Plot auch keinen entsprechenden Wert an.
Das könnte an umgehen indem man in das Log (ich benutze zum Loggen DbLog) jeweils kurz vor 00:00 und kurz nach 00:00 den aktuellen Status eines Bewohners schreibt.

Behelfen kann ich mir im Moment damit, dass ich folgende Funktion mit einem AT aufrufe:

###### atTriggerResidentStatus ######
# Die Funktion ist dafür gedacht, dass sie den aktuellen Status des Residents oder Roommates
# erneut in die Datenbank loggt. Der Roommate bzw Resident wird der Funktion übergeben.
# Die Funktion nimmt sich den aktuellen Status und sorgt über den Befehl "trigger"
# dafür, dass der aktuelle Status erneut in der Datenbank geloggt wird.
# Funktionsweise: triggerResidentState("rr_Karsten")
#####################################
sub triggerResidentState($) {
    my $resident = $_[0];
    my $status = ReadingsVal($resident,"state",0);
    fhem("trigger $resident $status")
}


Tjaaa, wie ihr euch denken könnt, löst das fhem("trigger $resident $status) daran anknüpfende Trigger aus. Das ist nicht immer gewollt.

Gibt es einen anderen Weg, den aktuellen Status eines Device' in die Datenbank zu loggen?


Für Ideen bin ich natürlich dankbar.

Grüße
Zephyr
FHEM 5.5 auf Fritz!Box 7390 und Beagle Bone black mit RFXtrx433

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Zephyr

Welches Addlog?
Verzeihung, allein damit komme ich gerade nicht weiter.
FHEM 5.5 auf Fritz!Box 7390 und Beagle Bone black mit RFXtrx433

marvin78

Im Wiki zu FHEM gibt es eine Beschreibung zur User-Funktion addLog. Bitte hier im Forum oder eben im Wiki mal nach dem Begriff addLog suchen. Dann findest du alles, was du brauchst.

Zephyr

Oh weh.
Danke.
Bin noch auf die Idee gekommen, im Forum danach zu suchen. Habe aber -komisch- nur diesen Thread zurückgeliefert bekommen. Aber das Wiki liefert den Artikel, ja.

addLog tut genau das, was ich mir selbst bereits zusammengebastelt habe. Und auch Addlog nutzt einen Trigger, der dann damit zusammenhängende Events auslöst.
Vermutlich ist es günstiger, wenn ich eine stored procedure in mySQL einbaue, die den letzten Status eines Device kurz vor und kurz nach zwölf neu schreibt.

Vielen Dank aber für den Hinweis.

Zephyr
FHEM 5.5 auf Fritz!Box 7390 und Beagle Bone black mit RFXtrx433